Compare Revisions

The credentials to download the source code are:
 Username: svnusers
 Password: svnusers

Ignore whitespace Rev 2229 → Rev 2230

/trunk/data/gencerts.sh
0,0 → 1,55
#!/bin/sh
 
# Output path
# Path where certificates must be stored
OUTPATH=certificates
 
# IUT public key file
# Set it for IUTs which store private keys internally
# IUT_PUBLIC_KEY=<path>
 
# Certificate generator path
CERTGEN=../tools/itscertgen/build/itscertgen
#CERTGEN=../tools/itscertgen/build/msvc/Debug/itscertgen.exe
# ---------------------------------------------------------------
 
if ! [ -x "$CERTGEN" ]; then
echo "$CERTGEN: generator not found"
exit 1
fi
 
IUT_PARAMS=
if [ "x" != "x$IUT_PUBLIC_KEY" ]; then
[ -f "$IUT_PUBLIC_KEY" ] || ( echo "$IUT_PUBLIC_KEY: public key file not found" ; exit 1 )
IUT_PARAMS="-v \"$IUT_PUBLIC_KEY\""
fi
 
mkdir -p "$OUTPATH"
 
function generate()
{
echo "$1:"
"${CERTGEN}" -C gencerts.cfg -o "$OUTPATH" $IUT_PARAMS "$1" || exit 1
}
 
# Generate Generic Root certificates
ls -1 profiles/CERT_*_ROOT.xml 2>/dev/null | while read F; do generate "$F"; done
 
# Generate Generic authority certificates
ls -1 profiles/CERT_TS_?_CA.xml profiles/CERT_TS_??_CA.xml \
profiles/CERT_TS_?_EA.xml profiles/CERT_TS_??_EA.xml \
profiles/CERT_TS_?_AA.xml profiles/CERT_TS_??_AA.xml 2>/dev/null | while read F; do generate "$F"; done
 
# Generate Generic authorization tickets
ls -1 profiles/CERT_TS_?_AT.xml profiles/CERT_TS_??_AT.xml 2>/dev/null | while read F; do generate "$F"; done
 
# Generate various valid or invalid authority certificates
ls -1 profiles/CERT_*_BO_CA.xml profiles/CERT_*_BV_CA.xml 2>/dev/null | while read F; do generate "$F"; done
ls -1 profiles/CERT_*_BO_AA.xml profiles/CERT_*_BV_AA.xml 2>/dev/null | while read F; do generate "$F"; done
ls -1 profiles/CERT_*_BO_EA.xml profiles/CERT_*_BV_EA.xml 2>/dev/null | while read F; do generate "$F"; done
ls -1 profiles/CERT_*_BO_EC.xml profiles/CERT_*_BV_EC.xml 2>/dev/null | while read F; do generate "$F"; done
ls -1 profiles/CERT_*_BO_AT.xml profiles/CERT_*_BV_AT.xml 2>/dev/null | while read F; do generate "$F"; done
 
# Generate IUT certificates
[ -n "$IUT_PUBLIC_KEY" ] && IUT_PARAMS="-v \"$IUT_PUBLIC_KEY\""
ls -1 profiles/CERT_IUT_*.xml 2>/dev/null | while read F; do generate "$F" ; done
/trunk/data/gencerts.bat
0,0 → 1,55
@echo off
 
REM Output path
REM Path where certificates must be stored
SET OUTPATH=certificates
 
REM IUT public key file
REM Set it for IUTs which store private keys internally
REM SET IUT_PUBLIC_KEY=<path>
 
REM Certificate generator path
REM Visual studio
SET CERTGEN=..\tools\itscertgen\build\msvc\Debug\itscertgen.exe
REM MINGW32
REM SET CERTGEN=..\tools\itscertgen\build\mingw32-d\itscertgen.exe
REM ---------------------------------------------------------------
 
if DEFINED IUT_PUBLIC_KEY (
IF NOT EXIST %IUT_PUBLIC_KEY% (^
echo %IUT_PUBLIC_KEY%: IUT public key file not found
exit 1
)
)
 
if not exist %OUTPATH% md %OUTPATH%
 
REM Generate Generic TS certificates
for %%f in ( profiles\CERT_*_ROOT.xml ^
profiles\CERT_TS_?_EA.xml profiles\CERT_TS_??_EA.xml ^
profiles\CERT_TS_?_AA.xml profiles\CERT_TS_??_AA.xml ^
profiles\CERT_TS_?_EC.xml profiles\CERT_TS_??_EC.xml ^
profiles\CERT_TS_?_AT.xml profiles\CERT_TS_??_AT.xml ) DO (
echo %%f:
%CERTGEN% -C gencerts.cfg -o %OUTPATH% %%f
)
 
REM Generate various valid or invalid TS certificates
for %%f in ( profiles\CERT_*_BO_CA.xml profiles\CERT_*_BV_CA.xml ^
profiles\CERT_*_BO_AA.xml profiles\CERT_*_BV_AA.xml ^
profiles\CERT_*_BO_EA.xml profiles\CERT_*_BV_EA.xml ^
profiles\CERT_*_BO_EC.xml profiles\CERT_*_BV_EC.xml ^
profiles\CERT_*_BO_AT.xml profiles\CERT_*_BV_AT.xml ) DO (
echo %%f:
%CERTGEN% -C gencerts.cfg -o %OUTPATH% %%f
)
 
REM Generate IUT certificates
for %%f in (profiles\CERT_IUT_*.xml) DO (
echo %%f:
if DEFINED IUT_PUBLIC_KEY (
%CERTGEN% -C gencerts.cfg -o %OUTPATH% -v %IUT_PUBLIC_KEY% %%f
) ELSE (
%CERTGEN% -C gencerts.cfg -o %OUTPATH% %%f
)
)
/trunk/data/gencerts.cfg
0,0 → 1,11
# Reuse already existing private and public keys if exists
reuse=yes
 
# Certificates and keys are provided as hexadecimal streams
format=hex
 
# Reference time point. The begining of the current year is used by default
#reftime=2015-01-01
 
# location of the IUT position
reflocation=51.4744200:5.6240500
/trunk/data/profiles/CERT_TS_08_02_BV_AT.xml
0,0 → 1,34
<!-- AT valid cert with smaller rectangular region than in the issuing AA cert -->
<certificate name="CERT_TS_08_02_BV_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_D_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<polygon>
<location latitude="0.044949" longitude="-0.062157"/>
<location latitude="0.044949" longitude="0.062064"/>
<location latitude="-0.044983" longitude="0.062064"/>
<location latitude="-0.044983" longitude="-0.062157"/>
</polygon>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_08_03_BO_AT.xml
0,0 → 1,29
<!-- An invalid AT cert without region restriction signed with cert with polygonal region restriction -->
<certificate name="CERT_TS_08_03_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_D_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_08_04_BO_AT.xml
0,0 → 1,32
<!-- An invalid AT cert with polygonal restriction containing only two point -->
<certificate name="CERT_TS_08_04_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_D_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<polygon>
<location latitude="0.044949" longitude="-0.062157"/>
<location latitude="0.044949" longitude="0.062064"/>
</polygon>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_06_04_BO_AA.xml
0,0 → 1,32
<!-- Authorization authority certificate with a circular region restriction
Center: main coordinate - 20km to the west
Radius: 10 km
-->
<certificate name="CERT_TS_06_04_BO_AA">
<version>2</version>
<signer type="digest" name="CERT_TEST_ROOT"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<circle latitude="-0.000269" longitude="0.0" radius="10000"/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_IUT_B_AT.xml
0,0 → 1,28
<certificate name="CERT_IUT_B_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_B_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="0">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<circle latitude="0.0" longitude="0.0" radius="5000"/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_IUT_C_AT.xml
0,0 → 1,34
<!-- Authorization ticket certificate with a rectangular region restriction
centered in ETSI coordinates and having a side length of 10 km
-->
<certificate name="CERT_IUT_C_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_C_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="0">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<rectangle>
<location latitude="0.044949" longitude="-0.062157"/>
<location latitude="-0.044983" longitude="0.062064" />
</rectangle>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_IUT_D_AT.xml
0,0 → 1,36
<!-- Authorization ticket certificate with a polygonal region restriction
representing a square centered at ETSI coordinates and having a side length of 10km
-->
<certificate name="CERT_IUT_D_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_D_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="0">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<polygon>
<location latitude="0.044949" longitude="-0.062157"/>
<location latitude="0.044949" longitude="0.062064"/>
<location latitude="-0.044983" longitude="0.062064"/>
<location latitude="-0.044983" longitude="-0.062157"/>
</polygon>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_IUT_E_AT.xml
0,0 → 1,28
<certificate name="CERT_IUT_E_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_E_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="0">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<id dictionary="iso_3166_1" id="528" local="0"/> <!-- NL -->
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_01_01_BO_AT.xml
0,0 → 1,28
<certificate name="CERT_TS_01_01_BO_AT">
<version>3</version>
<signer type="digest" name="CERT_TS_A_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_01_02_BO_AT.xml
0,0 → 1,28
<certificate name="CERT_TS_01_02_BO_AT">
<version>1</version>
<signer type="digest" name="CERT_TS_A_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_01_03_BO_AT.xml
0,0 → 1,28
<certificate name="CERT_TS_01_03_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_01_03_BO_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_01_04_BO_AT.xml
0,0 → 1,28
<certificate name="CERT_TS_01_04_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_01_04_BO_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_02_01_BO_AT.xml
0,0 → 1,29
<!-- AT certificate signed by EA cert -->
<certificate name="CERT_TS_02_01_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_A_EA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_02_02_BO_AT.xml
0,0 → 1,29
<!-- AT certificate signed by AA which is signed by EA -->
<certificate name="CERT_TS_02_02_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_02_02_BO_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_03_01_BO_AA.xml
0,0 → 1,29
<!-- AT certificate used to sign other AT cert -->
<certificate name="CERT_TS_03_01_BO_AA">
<version>2</version>
<signer type="digest" name="CERT_TS_A_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_03_01_BO_AT.xml
0,0 → 1,29
<!-- AT certificate signed by other AT certificate -->
<certificate name="CERT_TS_03_01_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_03_01_BO_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_03_02_BO_AT.xml
0,0 → 1,29
<!-- AT certificate signed by AA cert which is signed by other AT certificate -->
<certificate name="CERT_TS_03_02_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_03_02_BO_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_03_02_BO_CA.xml
0,0 → 1,29
<!-- AT certificate used to sign AA cert -->
<certificate name="CERT_TS_03_02_BO_CA">
<version>2</version>
<signer type="digest" name="CERT_TS_A_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_04_01_BO_AT.xml
0,0 → 1,29
<!-- AT certificate signed by AA cert which is signed by other AA certificate -->
<certificate name="CERT_TS_04_01_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_04_01_BO_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_06_01_BV_AT.xml
0,0 → 1,29
<!-- AT cert with the same circular region like issuing AA certificate -->
<certificate name="CERT_TS_06_01_BV_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_B_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<circle latitude="0.0" longitude="0.0" radius="10000"/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_06_02_BV_AT.xml
0,0 → 1,29
<!-- AT cert with smaller curcular region than issuing AA cert -->
<certificate name="CERT_TS_06_02_BV_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_B_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<circle latitude="0.0" longitude="0.0" radius="5000"/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_06_03_BO_AT.xml
0,0 → 1,29
<!-- AT cert without region restriction signed with cert with circular region restriction -->
<certificate name="CERT_TS_06_03_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_B_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_06_04_BO_AT.xml
0,0 → 1,29
<!-- AT cert with curcular region outside the issuer region -->
<certificate name="CERT_TS_06_04_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_06_04_BO_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<circle latitude="0.0" longitude="0.0" radius="5000"/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_06_05_BO_AT.xml
0,0 → 1,29
<!-- AT cert with curcular region outside the issuer region -->
<certificate name="CERT_TS_06_05_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_06_05_BO_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<circle latitude="0.0" longitude="0.0" radius="5000"/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_07_01_BV_AT.xml
0,0 → 1,32
<!-- AT cert with the same rectangular region as issuing AA cert -->
<certificate name="CERT_TS_07_01_BV_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_C_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<rectangle>
<location latitude="0.044949" longitude="-0.062157"/>
<location latitude="-0.044983" longitude="0.062064"/>
</rectangle>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_07_02_BV_AT.xml
0,0 → 1,32
<!-- AT cert with smaller rectangular region than issuing AA cert -->
<certificate name="CERT_TS_07_02_BV_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_C_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<rectangle>
<location latitude="0.022479" longitude="-0.031067"/>
<location latitude="-0.022487" longitude="0.031044"/>
</rectangle>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_07_03_BO_AT.xml
0,0 → 1,29
<!-- AT cert without region restriction signed with cert with restangular region restriction -->
<certificate name="CERT_TS_07_03_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_C_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_07_04_BO_AT.xml
0,0 → 1,32
<!-- AT cert with rectangular region restriction outside of the region of the issuer -->
<certificate name="CERT_TS_07_04_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_07_04_BO_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<rectangle>
<location latitude="0.022479" longitude="-0.031067"/>
<location latitude="-0.022487" longitude="0.031044"/>
</rectangle>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_07_05_BO_AT.xml
0,0 → 1,32
<!-- AT cert with rectangular region restriction outside of the region of the issuer -->
<certificate name="CERT_TS_07_05_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_07_05_BO_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<rectangle>
<location latitude="0.022479" longitude="-0.031067"/>
<location latitude="-0.022487" longitude="0.031044"/>
</rectangle>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_08_01_BV_AT.xml
0,0 → 1,34
<!-- AT cert with the same polygonal region as in the issuing AA cert -->
<certificate name="CERT_TS_08_01_BV_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_D_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<polygon>
<location latitude="0.089865" longitude="-0.124407"/>
<location latitude="0.089865" longitude="0.124036"/>
<location latitude="-0.089999" longitude="0.124036"/>
<location latitude="-0.089999" longitude="-0.124407"/>
</polygon>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_08_05_BO_AT.xml
0,0 → 1,34
<!-- AT cert with smaller rectangular region than in the issuing AA cert -->
<certificate name="CERT_TS_08_05_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_08_05_BO_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<polygon>
<location latitude="0.044949" longitude="-0.062157"/>
<location latitude="0.044949" longitude="0.062064"/>
<location latitude="-0.044983" longitude="0.062064"/>
<location latitude="-0.044983" longitude="-0.062157"/>
</polygon>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_08_06_BO_AT.xml
0,0 → 1,34
<!-- AT cert intersecting with the polygonal region of the issuing AA cert -->
<certificate name="CERT_TS_08_06_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_08_06_BO_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<polygon>
<location latitude="0.044949" longitude="-0.062157"/>
<location latitude="0.044949" longitude="0.062064"/>
<location latitude="-0.044983" longitude="0.062064"/>
<location latitude="-0.044983" longitude="-0.062157"/>
</polygon>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_09_01_BV_AT.xml
0,0 → 1,32
<!-- The valid AT certificate, signed with CERT_TS_E_AA and containing
the same region restriction like the issuing certificate
without local region definition
-->
<certificate name="CERT_TS_09_01_BV_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_E_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<id dictionary="iso_3166_1" id="250" local="0"/> <!-- France -->
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_09_02_BV_AT.xml
0,0 → 1,32
<!-- The valid AT certificate, signed with CERT_TS_E_AA and containing
the same region restriction like the issuing certificate
without local region definition
-->
<certificate name="CERT_TS_09_02_BV_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_E_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<id dictionary="iso_3166_1" id="250" local="1"/> <!-- France -->
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_09_03_BV_AT.xml
0,0 → 1,32
<!-- The valid AT certificate, signed with CERT_TS_E_AA and containing
the same region restriction like the issuing certificate
without local region definition
-->
<certificate name="CERT_TS_09_03_BV_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_09_03_BV_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<id dictionary="un_stats" id="250" local="0"/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_09_04_BO_AT.xml
0,0 → 1,29
<!-- AT cert without region restriction signed with cert with polygonal region restriction -->
<certificate name="CERT_TS_09_04_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_E_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_09_05_BO_AT.xml
0,0 → 1,30
<!-- The AT certificate, containing other identified region than issuing cert
-->
<certificate name="CERT_TS_09_05_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_09_05_BO_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<id dictionary="iso_3166_1" id="250" local="0"/> <!-- France -->
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_09_06_BO_AT.xml
0,0 → 1,30
<!-- The AT certificate, containing other identified region than issuing cert
-->
<certificate name="CERT_TS_09_06_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_09_06_BO_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<id dictionary="iso_3166_1" id="250" local="0"/> <!-- France -->
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_10_01_BO_AT.xml
0,0 → 1,30
<!-- The AT certificate signed with CERT_TS_A_AA and not containing
validity restriction of type ‘time_start_and_end’
-->
<certificate name="CERT_TS_10_01_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_A_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_10_02_BO_AT.xml
0,0 → 1,32
<!-- The AT certificate signed with CERT_TS_A_AA and containing
validity restrictions of type ‘time_start_and_end’ and ‘time_ end’
-->
<certificate name="CERT_TS_10_02_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_A_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="time" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_10_03_BO_AT.xml
0,0 → 1,32
<!-- The AT certificate signed with CERT_TS_A_AA and containing
validity restrictions of types ‘time_start_and_end’ and ‘time_start_and_duration’
-->
<certificate name="CERT_TS_10_03_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_A_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="time" start="2015-01-01" duration="365d"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_11_01_BO_AT.xml
0,0 → 1,33
<!-- The AT certificate signed with CERT_TS_A_AA and
containing validity restriction of type ‘time_start_and_end’
which ends after the end time of CERT_TS_A_AA
-->
<certificate name="CERT_TS_11_01_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_A_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<!-- Ends one day after AA cert -->
<restriction type="time" start="2015-01-01" end="2015-05-01"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_11_02_BO_AT.xml
0,0 → 1,33
<!-- The AT certificate signed with CERT_TS_A_AA and
containing validity restriction of type ‘time_start_and_end’
which ends after the end time of CERT_TS_A_AA
-->
<certificate name="CERT_TS_11_02_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_A_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<!-- Starts one day before the AA cert -->
<restriction type="time" start="2014-12-31" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_11_03_BO_AT.xml
0,0 → 1,30
<!-- The AT certificate signed with the expired CERT_TS_11_03_BO_AA
-->
<certificate name="CERT_TS_11_03_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_11_03_BO_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_11_04_BO_AT.xml
0,0 → 1,30
<!-- The AT certificate signed with the not yet valid CERT_TS_11_04_BO_AA
-->
<certificate name="CERT_TS_11_04_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_11_04_BO_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_12_02_BO_AT.xml
0,0 → 1,29
<!-- The AT certificate not containing CAM record in subject attribute 'its_aid_ssp_list'
-->
<certificate name="CERT_TS_12_02_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_A_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_12_03_BO_AT.xml
0,0 → 1,29
<!-- The AT certificate not containing DENM record in subject attribute 'its_aid_ssp_list'
-->
<certificate name="CERT_TS_12_03_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_A_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_13_01_BO_AT.xml
0,0 → 1,28
<certificate name="CERT_TS_13_01_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_13_01_BO_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_13_02_BO_AT.xml
0,0 → 1,28
<certificate name="CERT_TS_13_02_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_13_02_BO_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_A_AT.xml
0,0 → 1,28
<certificate name="CERT_TS_A_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_A_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#x01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#x01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_A_EC.xml
0,0 → 1,28
<certificate name="CERT_TS_A_EC">
<version>2</version>
<signer type="digest" name="CERT_TS_A_EA"/>
<subject type="EC" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#x01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#x01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_B_AT.xml
0,0 → 1,28
<certificate name="CERT_TS_B_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_A_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#x01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#x01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<circle latitude="0.0" longitude="0.0" radius="5000"/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_C_AT.xml
0,0 → 1,34
<!-- Authorization ticket certificate with a rectangular region restriction
centered in ETSI coordinates and having a side length of 10 km
-->
<certificate name="CERT_TS_C_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_A_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#x01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#x01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<rectangle>
<location latitude="0.044949" longitude="-0.062157"/>
<location latitude="-0.044983" longitude="0.062064"/>
</rectangle>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_D_AT.xml
0,0 → 1,36
<!-- Authorization ticket certificate with a polygonal region restriction
representing a square centered at ETSI coordinates and having a side length of 10km
-->
<certificate name="CERT_TS_D_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_A_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#x01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#x01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<polygon>
<location latitude="0.044949" longitude="-0.062157"/>
<location latitude="0.044949" longitude="0.062064"/>
<location latitude="-0.044983" longitude="0.062064"/>
<location latitude="-0.044983" longitude="-0.062157"/>
</polygon>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_E_AT.xml
0,0 → 1,28
<certificate name="CERT_TS_E_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_A_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#x01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#x01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<id dictionary="iso_3166_1" id="528" local="0"/> <!-- NL -->
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_F_AT.xml
0,0 → 1,28
<certificate name="CERT_TS_F_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_A_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#x01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#x01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/Makefile
0,0 → 1,78
outdir=../certificates/plu
installdir=C:\Users\filatov\Documents\Dropbox\Yann\certificates\PLU
distzip=$(outdir)/plu_ts_certificates.zip
 
# Do not forget to point it to the proper IUT public key
# in order to generate IUT certificates using existing key pairs.
#IUT_PUBLIC_KEY := IUT.key
 
depdir=.deps
keydir=$(outdir)
GENOPTS := -C plu.cfg
 
itscertgen="../itscertgen.exe"
profiles := $(wildcard CERT_*.xml)
profiles_iut_at := $(wildcard CERT_IUT_*AT.xml)
profiles_other := $(filter-out $(profiles_iut_at), $(profiles))
 
certificates_iut_at := $(patsubst %.xml, $(outdir)/%.crt, $(profiles_iut_at))
certificates_other := $(patsubst %.xml, $(outdir)/%.crt, $(profiles_other))
certificates := $(certificates_iut_at) $(certificates_other)
 
depends := $(patsubst %.xml, $(depdir)/%.d, $(profiles))
dirs := $(sort $(outdir) $(keydir) $(depdir))
 
distfiles := $(certificates_other) \
$(wildcard $(patsubst %.crt, %.vkey, $(filter %_AT.crt %_EC.crt, $(certificates_other)))) \
$(wildcard $(patsubst %.crt, %.ekey, $(filter %_AT.crt %_EC.crt, $(certificates_other))))
 
vendor_certs := $(wildcard vendors/*.zip)
vendors := $(foreach z, $(patsubst vendors/%,%,$(vendor_certs)), $(firstword $(subst _, ,$(z))))
vendor_dirs := $(addprefix $(outdir)/, $(vendors))
 
 
ifneq ($(sort $(IUT_PUBLIC_KEY)),)
AT_GENOPTS = $(GENOPTS) -v $(IUT_PUBLIC_KEY)
else
AT_GENOPTS = $(GENOPTS)
endif
 
all: $(dirs) $(certificates_iut_at) $(certificates_other)
 
install: all $(installdir) $(installs)
$(installs): $(installdir)/% : $(outdir)/%
cp -f $< [email protected]
$(dirs) $(installdir): %:
mkdir -p [email protected]
 
echo:
echo $(vendors)
clean:
rm -f $(outdir)/* $(keydir)/* $(depdir)/*
 
dist: all vendors $(distzip)
 
vendors: $(vendor_dirs)
$(vendor_dirs): $(outdir)/%:
mkdir -p [email protected]
-rm -rf [email protected]/*
echo $<
unzip -uo vendors/$**.zip -d [email protected]
 
$(distzip): $(distfiles)
zip -o -j [email protected] $^
 
$(certificates_other): $(outdir)/%.crt : %.xml
$(itscertgen) -o $(outdir) $(GENOPTS) $<
 
$(certificates_iut_at): $(outdir)/%.crt : %.xml
$(itscertgen) -o $(outdir) $(AT_GENOPTS) $<
 
$(depends): $(depdir)/%.d : %.xml
@echo "Create $*.d"
@mkdir -p $(depdir)
@echo -n "$(outdir)/$*.crt: " > [email protected]
@cat $< | grep '<signer.*digest' | sed -e 's|^.*name="\([^"]*\)".*|$(outdir)/\1.crt|g' >> [email protected]
 
include $(depends)
/trunk/data/profiles/CERT_IUT_A_AT.xml
0,0 → 1,28
<certificate name="CERT_IUT_A_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_A_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="0">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="36">&#01;&#xFF;&#xFF;</ssp> <!-- CAM -->
<ssp aid="37">&#01;&#xFF;&#xFF;&#xFF;</ssp> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TEST_ROOT.xml
0,0 → 1,28
<certificate name="CERT_TEST_ROOT" keep-existing="yes">
<version>2</version>
<signer type="self"></signer>
<subject type="ROOT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="6" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2016-01-01"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_01_03_BO_AA.xml
0,0 → 1,29
<!-- Authorization authority certificate with version = 3 -->
<certificate name="CERT_TS_01_03_BO_AA">
<version>3</version>
<signer type="digest" name="CERT_TEST_ROOT"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_01_04_BO_AA.xml
0,0 → 1,29
<!-- Authorization authority certificate with version = 1 -->
<certificate name="CERT_TS_01_04_BO_AA">
<version>1</version>
<signer type="digest" name="CERT_TEST_ROOT"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_02_02_BO_AA.xml
0,0 → 1,29
<!-- AA certificate signed by EA cert -->
<certificate name="CERT_TS_02_02_BO_AA">
<version>2</version>
<signer type="digest" name="CERT_TS_A_EA"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_03_02_BO_AA.xml
0,0 → 1,29
<!-- AA certificate signed by AT cert -->
<certificate name="CERT_TS_03_02_BO_AA">
<version>2</version>
<signer type="digest" name="CERT_TS_03_02_BO_CA"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_04_01_BO_AA.xml
0,0 → 1,29
<!-- AA certificate signed by other AA cert -->
<certificate name="CERT_TS_04_01_BO_AA">
<version>2</version>
<signer type="digest" name="CERT_TS_A_AA"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_06_05_BO_AA.xml
0,0 → 1,32
<!-- Authorization authority certificate with a circular region restriction
Center: ETSI coordinates - 10km to the west
Radius: 10 km
-->
<certificate name="CERT_TS_06_05_BO_AA">
<version>2</version>
<signer type="digest" name="CERT_TEST_ROOT"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<circle latitude="-0.000067" longitude="-0.124221" radius="10000"/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_07_04_BO_AA.xml
0,0 → 1,35
<!-- Authorization authority certificate with a rectangular region restriction
Center: ETSI coordinates - 20km to the west
Side length: 20 km
-->
<certificate name="CERT_TS_07_04_BO_AA">
<version>2</version>
<signer type="digest" name="CERT_TEST_ROOT"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<rectangle>
<location latitude="0.089596" longitude="-0.372848"/>
<location latitude="-0.090268" longitude="-0.124406"/>
</rectangle>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_07_05_BO_AA.xml
0,0 → 1,35
<!-- Authorization authority certificate with a rectangular region restriction
Center: ETSI coordinates - 10km to the west
Side length: 20 km
-->
<certificate name="CERT_TS_07_05_BO_AA">
<version>2</version>
<signer type="digest" name="CERT_TEST_ROOT"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<rectangle>
<location latitude="0.17946" longitude="-0.497442"/>
<location latitude="-0.000404" longitude="-0.248628"/>
</rectangle>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_08_05_BO_AA.xml
0,0 → 1,37
<!-- Authorization authority certificate with a polygonal region restriction
representing a square centered on 20km to the West from ETSI
and having a side length of 20 km
-->
<certificate name="CERT_TS_08_05_BO_AA">
<version>2</version>
<signer type="digest" name="CERT_TEST_ROOT"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<polygon>
<location latitude="0.089596" longitude="-0.372848"/>
<location latitude="0.089596" longitude="-0.124406"/>
<location latitude="-0.090268" longitude="-0.124406"/>
<location latitude="-0.090268" longitude="-0.372848"/>
</polygon>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_08_06_BO_AA.xml
0,0 → 1,37
<!-- Authorization authority certificate with a polygonal region restriction
representing a square centered on 10km to the West from ETSI
and having a side length of 20 km
-->
<certificate name="CERT_TS_08_06_BO_AA">
<version>2</version>
<signer type="digest" name="CERT_TEST_ROOT"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<polygon>
<location latitude="0.17946" longitude="-0.497442"/>
<location latitude="0.17946" longitude="-0.248628"/>
<location latitude="-0.000404" longitude="-0.248628"/>
<location latitude="-0.000404" longitude="-0.497442"/>
</polygon>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_09_03_BV_AA.xml
0,0 → 1,28
<certificate name="CERT_TS_09_03_BV_AA">
<version>2</version>
<signer type="digest" name="CERT_TEST_ROOT"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<id dictionary="un_stats" id="150" local="0"/> <!-- Europe -->
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_09_05_BO_AA.xml
0,0 → 1,30
<!-- The valid AA certificate containing identified region other then subordinate cert -->
 
<certificate name="CERT_TS_09_05_BO_AA">
<version>2</version>
<signer type="digest" name="CERT_TEST_ROOT"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<id dictionary="iso_3166_1" id="56" local="0"/> <!-- Belgium -->
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_09_06_BO_AA.xml
0,0 → 1,30
<!-- The valid AA certificate containing the same identified region as subordinate cert but other local area definition -->
 
<certificate name="CERT_TS_09_06_BO_AA">
<version>2</version>
<signer type="digest" name="CERT_TEST_ROOT"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<id dictionary="iso_3166_1" id="250" local="1"/> <!-- France -->
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_11_03_BO_AA.xml
0,0 → 1,29
<!-- The expired AA certificate -->
<certificate name="CERT_TS_11_03_BO_AA">
<version>2</version>
<signer type="digest" name="CERT_TEST_ROOT"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-03-01"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_11_04_BO_AA.xml
0,0 → 1,29
<!-- The not yet valid AA certificate -->
<certificate name="CERT_TS_11_04_BO_AA">
<version>2</version>
<signer type="digest" name="CERT_TEST_ROOT"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-04-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_12_01_BO_AT.xml
0,0 → 1,25
<!-- The AT certificate not containing subject attribute 'its_aid_ssp_list'
-->
<certificate name="CERT_TS_12_01_BO_AT">
<version>2</version>
<signer type="digest" name="CERT_TS_A_AA"/>
<subject type="AT" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="3"/>
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_13_01_BO_AA.xml
0,0 → 1,28
<!-- Authorization authority certificate without CAM AID in the AID list -->
<certificate name="CERT_TS_13_01_BO_AA">
<version>2</version>
<signer type="digest" name="CERT_TEST_ROOT"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="37"/> <!--DENM-->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_13_02_BO_AA.xml
0,0 → 1,28
<!-- Authorization authority certificate without DENM AID in the AID list -->
<certificate name="CERT_TS_13_02_BO_AA">
<version>2</version>
<signer type="digest" name="CERT_TEST_ROOT"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!--CAM-->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_A_AA.xml
0,0 → 1,29
<!-- Authorization authority certificate without any region restriction -->
<certificate name="CERT_TS_A_AA" keep-existing="yes">
<version>2</version>
<signer type="digest" name="CERT_TEST_ROOT"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!--CAM--> <!-- CAM -->
<aid value="37"/> <!--DENM--> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_A_EA.xml
0,0 → 1,28
<certificate name="CERT_TS_A_EA">
<version>2</version>
<signer type="digest" name="CERT_TEST_ROOT"/>
<subject type="EA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<none/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_B_AA.xml
0,0 → 1,32
<!-- Authorization authority certificate without with a circular region restriction
Center: ETSI coordinates
Radius: 10 km
-->
<certificate name="CERT_TS_B_AA">
<version>2</version>
<signer type="digest" name="CERT_TEST_ROOT"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<circle latitude="0.0" longitude="0.0" radius="10000"/>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_C_AA.xml
0,0 → 1,34
<!-- Authorization authority certificate with a rectangular region restriction
with a square centered at ETSI coordinates and having a side length of 20km
-->
<certificate name="CERT_TS_C_AA">
<version>2</version>
<signer type="digest" name="CERT_TEST_ROOT"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<rectangle>
<location latitude="0.044949" longitude="-0.062157"/>
<location latitude="-0.044983" longitude="0.062064"/>
</rectangle>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_D_AA.xml
0,0 → 1,36
<!-- Authorization authority certificate with a polygonal region restriction
representing a square centered at ETSI coordinates and having a side length of 10km
-->
<certificate name="CERT_TS_D_AA">
<version>2</version>
<signer type="digest" name="CERT_TEST_ROOT"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<polygon>
<location latitude="0.089865" longitude="-0.124407"/>
<location latitude="0.089865" longitude="0.124036"/>
<location latitude="-0.089999" longitude="0.124036"/>
<location latitude="-0.089999" longitude="-0.124407"/>
</polygon>
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_E0_AA.xml
0,0 → 1,28
<certificate name="CERT_TS_E0_AA">
<version>2</version>
<signer type="digest" name="CERT_TEST_ROOT"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<id dictionary="un_stats" id="150" local="0"/> <!-- Europe -->
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_E1_AA.xml
0,0 → 1,28
<certificate name="CERT_TS_E1_AA">
<version>2</version>
<signer type="digest" name="CERT_TEST_ROOT"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256" ref="CERT_TS.vkey">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<id dictionary="iso_3166_1" id="528" local="1"/> <!-- NL -->
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/CERT_TS_E_AA.xml
0,0 → 1,28
<certificate name="CERT_TS_E_AA">
<version>2</version>
<signer type="digest" name="CERT_TEST_ROOT"/>
<subject type="AA" name="">
<!-- verification_key -->
<attribute type="verification_key">
<public_key algorythm="ecdsa_nistp256_with_sha256">
<ecc_point type="uncompressed"/>
</public_key>
</attribute>
<!-- assurance_level -->
<attribute type="assurance_level">
<assurance level="4" confidence="0"/>
</attribute>
<!-- its_aid_list -->
<attribute type="its_aid_list">
<aid value="36"/> <!-- CAM -->
<aid value="37"/> <!-- DENM -->
</attribute>
</subject>
<validity>
<restriction type="time" start="2015-01-01" end="2015-04-30"/>
<restriction type="region">
<id dictionary="iso_3166_1" id="528" local="0"/> <!-- NL -->
</restriction>
</validity>
<signature algorithm="0"/>
</certificate>
/trunk/data/profiles/plu.cfg
0,0 → 1,3
reuse=yes
format=hex
reflocation=51.4744200:5.6240500
/trunk/data/profiles
Property changes:
Added: svn:ignore
## -0,0 +1 ##
+.deps
Index: javasrc/adapter/org/etsi/its/adapter/TlsHelper.java
===================================================================
--- javasrc/adapter/org/etsi/its/adapter/TlsHelper.java (revision 2229)
+++ javasrc/adapter/org/etsi/its/adapter/TlsHelper.java (nonexistent)
@@ -1,77 +0,0 @@
-/**
- * @author ETSI / STF481 / Yann Garcia
- * @version $URL$
- * $Id$
- */
-package org.etsi.its.adapter;
-
-import java.io.ByteArrayInputStream;
-
-import org.etsi.common.ByteHelper;
-
-public class TlsHelper {
-
- private static TlsHelper Instance = new TlsHelper();
-
- public static TlsHelper getInstance() { return Instance; }
-
- private TlsHelper() {
- }
-
- public byte[] size2tls(final int length) {
- byte[] result = null;
- if (length < 128) { // One byte length
- result = new byte[] { (byte)length };
- } else {
- long lv = length;
- long bitLen = bitLength(lv);
- long byteLen = byteLength(bitLen);
- long flags = (long) ((byteLen | 1) << (byteLen * Byte.SIZE - bitLength(byteLen) - 1));
- long len = (long) (byteLen << (byteLen * Byte.SIZE - bitLength(byteLen) - 1));
- if ((flags & lv) != 0) { // We can encode the length on the MSB part
- byteLen += 1;
- len = (long) (byteLen << (byteLen * Byte.SIZE - bitLength(byteLen)) - 1);
- }
- result = ByteHelper.longToByteArray((long)(lv | len), (int) byteLen);
- }
-
- return result;
- }
-
- public long tls2size(final ByteArrayInputStream buf) {
- // Sanity check
- if (buf.available() == 0) {
- return 0;
- }
-
- // Read the first byte
- byte msb = (byte) buf.read();
- if ((msb & 0x80) == 0x00) { // Integer < 128
- return msb;
- } else {
- // Decode the length. The encoding of the length shall use at most 7 bits set to 1 (see Draft ETSI TS 103 097 V1.1.14 Clause 4.1 Presentation Language Table 1/8)
- byte bit;
- byte byteLen = 1;
- do {
- bit = (byte) ((byte) (msb << byteLen++) & 0x80);
- } while (bit != 0x00);
- // Set the IntX length
- byte[] data = new byte[byteLen - 1];
- buf.read(data, 0, byteLen - 1);
- byte[] length = ByteHelper.concat(new byte[] { msb }, data);
- length[0] &= (byte)(Math.pow(2.0, 8 - byteLen + 1) - 1);
- long lv = ByteHelper.byteArrayToLong(length);
- return lv;
- }
- }
-
- public long bitLength(final long value) {
- return (long) Math.ceil(Math.log(value) / Math.log(2));
- }
-
- public long byteLength(final long value) {
- double d = value; // Convert int to double
- return (long) Math.ceil(d / Byte.SIZE);
- }
-
-} // End of class TlsHelper
/javasrc/adapter/org/etsi/its/adapter/TlsHelper.java
Property changes:
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-URL Id
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/plain
\ No newline at end of property
Index: javasrc/adapter/org/etsi/its/adapter/IManagementLayers.java
===================================================================
--- javasrc/adapter/org/etsi/its/adapter/IManagementLayers.java (revision 2229)
+++ javasrc/adapter/org/etsi/its/adapter/IManagementLayers.java (revision 2230)
@@ -93,8 +93,17 @@
public void unsetSecuredMode();
/**
+ * In case TA shall fully support secured mode, security checks shall be applied
+ * Otherwise the Security ATS shall manage the security checks as part of testing
+ * @return true if secured mode is set, false otherwise
+ */
+ public boolean isEnforceSecuredModeSet();
+
+ /**
* Gets the secured mode status
* @return true if secured mode is set, false otherwise
+ *
+ * @remark When the secured mode status is set, the TA shall at least filter secured packet to extract SOPV, LS_REQUEST and so on
*/
public boolean isSecuredModeSet();
@@ -130,4 +139,9 @@
*/
byte[] getAtCertificateDigest();
+ /**
+ * Requests ITS-AID for other profile
+ */
+ int getItsAidOther();
+
}
/trunk/javasrc/adapter/org/etsi/its/adapter/Management.java
81,6 → 81,11
private static final String TsSecuredConfiId = ((CharstringValue)TERFactory.getInstance().getTaParameter("TsSecuredConfiId")).getString();
/**
* ITS-AID for Secure other profile
*/
private static final String TsItsAidOther = ((CharstringValue)TERFactory.getInstance().getTaParameter("TsItsAidOther")).getString();
/**
* Link-layer address of Component
*/
private byte[] linkLayerAddress = null;
103,7 → 108,7
/**
* The certificate identifier to used
*/
private String certificateId = "TA_CERT_A";
private String certificateId = "CERT_TS_A_AT";
/**
* The AT certificate
367,6 → 372,11
}
@Override
public boolean isEnforceSecuredModeSet() {
return TsSecuredMode.equals("true");
}
@Override
public boolean isSecuredModeSet() {
return securedMode;
}
396,6 → 406,11
return atCertificateDigest;
}
@Override
public int getItsAidOther() {
return new Integer(TsItsAidOther).intValue();
}
/**
* @desc This method setup secured mode according to the Test adapter settings (@see TsSecuredMode flags).
* The secured mode could be overrided by test case secured mode configuration through AC primitives
402,7 → 417,8
* @remark This method shall be called by the constructor only
*/
private void setupSecuredMode() {
// System.out.println(System.getProperty("user.dir"));
// System.out.println(">>> setupSecuredMode: " + certificateId);
securedMode = true;
ICertificatesIO _certCache = CertificatesIOFactory.getInstance();
if (!_certCache.loadCertificates(TsSecuredRootPath, TsSecuredConfiId)) {
409,30 → 425,29
securedMode = false;
} else {
ByteArrayOutputStream certificate = new ByteArrayOutputStream();
_certCache.readCertificate(certificateId + ".AT_CERT", certificate);
_certCache.readCertificate(certificateId, certificate);
// Extract public keys
atCertificate = certificate.toByteArray();
// System.out.println("Management.setupSecuredModeFromTaConfig: certificate=" + ByteHelper.byteArrayToString(value));
// System.out.println("Management.setupSecuredModeFromTaConfig: certificate=" + ByteHelper.byteArrayToString(atCertificate));
// Compute AT certificate digest
byte[] atHash = CryptoLib.hashWithSha256(atCertificate);
atCertificateDigest = ByteHelper.extract(atHash, atHash.length - 8, 8);
// System.out.println("Management.setupSecuredModeFromTaConfig: atCertificateDigest=" + ByteHelper.byteArrayToString(atCertificateDigest));
int offset = 18;
// System.out.println("Management.setupSecuredModeFromTaConfig: atCertificateDigest=" + ByteHelper.byteArrayToString(atCertificateDigest));
int offset = 16; // FIXME To be enhanced
// KeyX
signingPublicKeyX = new byte[32];
System.arraycopy(atCertificate, offset, signingPublicKeyX, 0, 32);
offset += 32;
// System.out.println("Management.setupSecuredModeFromTaConfig: certificate=" + ByteHelper.byteArrayToString(signingPublicKeyX));
// System.out.println("Management.setupSecuredModeFromTaConfig: signingPublicKeyX=" + ByteHelper.byteArrayToString(signingPublicKeyX));
// KeyY
signingPublicKeyY = new byte[32];
System.arraycopy(atCertificate, offset, signingPublicKeyY, 0, 32);
// System.out.println("Management.setupSecuredModeFromTaConfig: certificate=" + ByteHelper.byteArrayToString(signingPublicKeyY));
// System.out.println("Management.setupSecuredModeFromTaConfig: signingPublicKeyY=" + ByteHelper.byteArrayToString(signingPublicKeyY));
// Extract private keys
ByteArrayOutputStream signingPrivateKey = new ByteArrayOutputStream();
ByteArrayOutputStream encryptPrivateKey = new ByteArrayOutputStream();
_certCache.readPrivateKeys(certificateId + ".PRIVATE_KEYS", signingPrivateKey, encryptPrivateKey);
_certCache.readSigningKey(certificateId, signingPrivateKey);
this.signingPrivateKey = signingPrivateKey.toByteArray().clone();
// System.out.println("Management.setupSecuredModeFromTaConfig: signingPrivateKey=" + ByteHelper.byteArrayToString(this.signingPrivateKey));
// System.out.println("Management.setupSecuredModeFromTaConfig: signingPrivateKey=" + ByteHelper.byteArrayToString(this.signingPrivateKey));
// TODO Add support of encryption
}
}
/trunk/javasrc/adapter/org/etsi/its/adapter/SecurityHelper.java
0,0 → 1,698
/**
* @author ETSI / STF481 / Yann Garcia
* @version $URL$
* $Id$
*/
package org.etsi.its.adapter;
 
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
 
import org.etsi.common.ByteHelper;
 
import de.fraunhofer.sit.c2x.CryptoLib;
 
public class SecurityHelper {
private static SecurityHelper Instance = new SecurityHelper();
public static SecurityHelper getInstance() { return Instance; }
/**
* Storage for received certificates
*/
private Map<Long, ByteArrayOutputStream> _neighborsCertificates = null;
private SecurityHelper() {
_neighborsCertificates = new HashMap<Long, ByteArrayOutputStream>();
}
public byte[] size2tls(final int length) {
byte[] result = null;
if (length < 128) { // One byte length
result = new byte[] { (byte)length };
} else {
long lv = length;
long bitLen = bitLength(lv);
long byteLen = byteLength(bitLen);
long flags = (long) ((byteLen | 1) << (byteLen * Byte.SIZE - bitLength(byteLen) - 1));
long len = (long) (byteLen << (byteLen * Byte.SIZE - bitLength(byteLen) - 1));
if ((flags & lv) != 0) { // We can encode the length on the MSB part
byteLen += 1;
len = (long) (byteLen << (byteLen * Byte.SIZE - bitLength(byteLen)) - 1);
}
result = ByteHelper.longToByteArray((long)(lv | len), (int) byteLen);
}
return result;
}
public long tls2size(final ByteArrayInputStream buf) {
// Sanity check
if (buf.available() == 0) {
return 0;
}
// Read the first byte
byte msb = (byte) buf.read();
if ((msb & 0x80) == 0x00) { // Integer < 128
return msb;
} else {
// Decode the length. The encoding of the length shall use at most 7 bits set to 1 (see Draft ETSI TS 103 097 V1.1.14 Clause 4.1 Presentation Language Table 1/8)
byte bit;
byte byteLen = 1;
do {
bit = (byte) ((byte) (msb << byteLen++) & 0x80);
} while (bit != 0x00);
// Set the IntX length
byte[] data = new byte[byteLen - 1];
buf.read(data, 0, byteLen - 1);
byte[] length = ByteHelper.concat(new byte[] { msb }, data);
length[0] &= (byte)(Math.pow(2.0, 8 - byteLen + 1) - 1);
long lv = ByteHelper.byteArrayToLong(length);
return lv;
}
}
public long bitLength(final long value) {
return (long) Math.ceil(Math.log(value) / Math.log(2));
}
public long byteLength(final long value) {
double d = value; // Convert int to double
return (long) Math.ceil(d / Byte.SIZE);
}
public byte[] checkSecuredProfileAndExtractPayload(final byte[] p_message, final int p_offset, final boolean p_enforceSecurityCheck, final int p_itsAidOther) {
// System.out.println(">>> SecurityHelper.checkSecuredProfileAndExtractPayload: " + ByteHelper.byteArrayToString(p_message));
ByteArrayInputStream decvalue = new ByteArrayInputStream(p_message, p_offset, p_message.length - p_offset);
// Check version
if (decvalue.read() != 2) {
System.err.println("SecurityHelper.checkSecuredProfileAndExtractPayload: Drop packet - Wrong version number");
if (p_enforceSecurityCheck) {
// Drop it
return null;
}
}
// Extract header fields length and header fields
long headerFieldsLength = tls2size(decvalue);
// System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: headerFieldsLength:" + headerFieldsLength);
byte[] headerFields = new byte[(int) headerFieldsLength];
decvalue.read(headerFields, 0, (int) headerFieldsLength);
ByteArrayOutputStream certificateKeys = new ByteArrayOutputStream();
if (!checkHeaderfields(headerFields, certificateKeys, p_enforceSecurityCheck, p_itsAidOther)) {
System.err.println("SecurityHelper.checkSecuredProfileAndExtractPayload: Drop packet - Wrong Headerfields");
if (p_enforceSecurityCheck) {
// Drop it
return null;
}
}
byte[] aaSigningPublicKeyX, aaSigningPublicKeyY;
aaSigningPublicKeyX = ByteHelper.extract(certificateKeys.toByteArray(), 0, 32);
// System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: aaSigningPublicKeyX:" + ByteHelper.byteArrayToString(aaSigningPublicKeyX));
aaSigningPublicKeyY = ByteHelper.extract(certificateKeys.toByteArray(), 32, 32);
// System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: aaSigningPublicKeyX:" + ByteHelper.byteArrayToString(aaSigningPublicKeyX));
// System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: headerFields:" + ByteHelper.byteArrayToString(headerFields));
// Extract payload, decvalue is updated with the payload
if (decvalue.read() != 1) {
System.err.println("SecurityHelper.checkSecuredProfileAndExtractPayload: Drop packet - Wrong Payload type");
if (p_enforceSecurityCheck) {
// Drop it
return null;
}
}
long payloadLength = tls2size(decvalue);
// System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: payloadLength:" + payloadLength);
byte[] payload = new byte[(int) payloadLength];
decvalue.read(payload, 0, (int) payloadLength);
// System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: payload:" + ByteHelper.byteArrayToString(payload));
if (p_enforceSecurityCheck) { // Extract Secure Trailer
long secureTrailerLength = tls2size(decvalue);
byte[] secureTrailer = new byte[(int) secureTrailerLength];
decvalue.read(secureTrailer, 0, secureTrailer.length);
ByteArrayOutputStream signature = new ByteArrayOutputStream();
if (!extractMessageSignature(secureTrailer, signature)) {
// Drop it
System.err.println("SecurityHelper.checkSecuredProfileAndExtractPayload: Drop packet - Wrong Signatures");
return null;
}
// // System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: signature:" + ByteHelper.byteArrayToString(signature.toByteArray()));
// Build signed data
byte[] toBeVerifiedData = ByteHelper.extract(
p_message,
p_offset,
p_message.length - (int)(p_offset + secureTrailerLength - 1 /* Exclude signature structure but keep signature type and signature length */)
);
// // System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload:" + ByteHelper.byteArrayToString(toBeVerifiedData));
// Calculate Digest digest from the buffer toBeVerifiedData
byte[] hash = CryptoLib.hashWithSha256(toBeVerifiedData);
boolean result;
try {
result = CryptoLib.verifyWithEcdsaNistp256WithSha256(
hash,
signature.toByteArray(),
aaSigningPublicKeyX,
aaSigningPublicKeyY
);
// // System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: Verify signature: " + new Boolean(result));
if (!result) {
// Drop packet
// System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: toBeVerifiedData :" + ByteHelper.byteArrayToString(toBeVerifiedData));
// System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: Hash :" + ByteHelper.byteArrayToString(hash));
// System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: signature :" + ByteHelper.byteArrayToString(signature.toByteArray()));
// System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: aaSigningPublicKeyX:" + ByteHelper.byteArrayToString(aaSigningPublicKeyX));
// System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: aaSigningPublicKeyY:" + ByteHelper.byteArrayToString(aaSigningPublicKeyY));
System.err.println("SecurityHelper.checkSecuredProfileAndExtractPayload: Drop packet - Invalid signature");
return null;
}
return payload;
} catch (Exception e) {
e.printStackTrace();
}
// Drop packet
System.err.println("<<< SecurityHelper.checkSecuredProfileAndExtractPayload: dropped");
return null;
}
return payload;
}
public boolean checkHeaderfields(final byte[] p_headerfields, final ByteArrayOutputStream p_keys, final boolean p_enforceSecurityCheck, final int p_itsAidOther) {
// System.out.println(">>> SecurityHelper.checkHeaderfields: " + ByteHelper.byteArrayToString(p_headerfields));
// Sanity check
if (p_headerfields.length == 0) {
System.err.println("SecurityHelper.checkHeaderfields: Drop packet - Invalid header fields");
return false;
}
// Extract digest or certificate
int signerInfoTypeIndex = 0;
if (
((p_headerfields[signerInfoTypeIndex] & 0x80) != 0x80) || // SignerInfo Type: certificate digest with ecdsap256 (1)
(
(p_headerfields[signerInfoTypeIndex + 1] != 0x01) && // SignerInfo Type: certificate digest with ecdsap256 (1)
(p_headerfields[signerInfoTypeIndex + 1] != 0x02) && // SignerInfo Type: certificate (2)
(p_headerfields[signerInfoTypeIndex + 1] != 0x03) // SignerInfo Type: certificate chain (3)
)
) {
System.err.println("SecurityHelper.checkHeaderfields: Drop packet - Certificate");
if (p_enforceSecurityCheck) {
// Drop it
return false;
}
}
signerInfoTypeIndex += 1;
if (p_headerfields[signerInfoTypeIndex] == 0x02) { // SignerInfo Type: Certificate (2)
signerInfoTypeIndex += 1;
// Extract certificate because of it is an Other message profile
byte[] certificate = decodeCertificate(p_headerfields, signerInfoTypeIndex, p_keys);
if (certificate == null) {
System.err.println("SecurityHelper.checkHeaderfields: Drop packet - Certificate not decoded");
if (p_enforceSecurityCheck) {
// Drop it
return false;
}
}
// System.out.println("SecurityHelper.checkHeaderfields: Certificate=" + ByteHelper.byteArrayToString(certificate));
// Add it in our map
Long lKey = ByteHelper.byteArrayToLong(calculateDigestFromCertificate(certificate));
if (!_neighborsCertificates.containsKey(lKey)) {
// System.out.println("SecurityHelper.checkHeaderfields: Add keys for " + ByteHelper.byteArrayToString(calculateDigestFromCertificate(certificate)) + " / " + lKey);
_neighborsCertificates.put(lKey, p_keys);
}
signerInfoTypeIndex += certificate.length;
} else if (p_headerfields[signerInfoTypeIndex] == 0x01) { // SignerInfo Type: certificate digest with SHA256 (1)
signerInfoTypeIndex += 1;
byte[] hashedid8 = ByteHelper.extract(p_headerfields, signerInfoTypeIndex, Long.SIZE / Byte.SIZE);
signerInfoTypeIndex += (Long.SIZE / Byte.SIZE);
Long lKey = ByteHelper.byteArrayToLong(hashedid8);
// System.out.println("SecurityHelper.checkHeaderfields: Certificate digest with SHA256=" + lKey + "/ " + ByteHelper.byteArrayToString(hashedid8));
if (!_neighborsCertificates.containsKey(lKey) || (_neighborsCertificates.get(lKey) == null)) {
System.err.println("SecurityHelper.checkHeaderfields: Drop packet - Unknown HahedId8");
if (p_enforceSecurityCheck) {
// Drop it
return false;
}
}
try {
p_keys.write(_neighborsCertificates.get(lKey).toByteArray());
} catch (Exception e) {
// Drop it
e.printStackTrace();
if (p_enforceSecurityCheck) {
// Drop it
return false;
}
}
} else { // TODO Add certchain support
signerInfoTypeIndex += 1;
ByteArrayInputStream ba = new ByteArrayInputStream(ByteHelper.extract(p_headerfields, signerInfoTypeIndex, p_headerfields.length - signerInfoTypeIndex));
int certChainLength = (int) this.tls2size(ba);
// System.out.println("SecurityHelper.checkHeaderfields: Certchain length = " + certChainLength);
signerInfoTypeIndex += this.size2tls(certChainLength).length;
ByteArrayOutputStream keys;
do {
// Extract certificate because of it is an Other message profile
keys = new ByteArrayOutputStream();
byte[] certificate = decodeCertificate(p_headerfields, signerInfoTypeIndex, keys);
if (certificate == null) {
// Drop it
System.err.println("SecurityHelper.checkHeaderfields: Drop packet - Failed to decode chain of certificate");
return false;
}
// System.out.println("SecurityHelper.checkHeaderfields: Certificate=" + ByteHelper.byteArrayToString(certificate));
// Add it in our map
Long lKey = ByteHelper.byteArrayToLong(calculateDigestFromCertificate(certificate));
if (!_neighborsCertificates.containsKey(lKey)) {
// System.out.println("SecurityHelper.checkHeaderfields: Add keys for " + ByteHelper.byteArrayToString(calculateDigestFromCertificate(certificate)) + " / " + lKey);
_neighborsCertificates.put(lKey, p_keys);
}
certChainLength -= certificate.length;
signerInfoTypeIndex += certificate.length;
// System.out.println("SecurityHelper.checkHeaderfields: Extracted certificate = " + ByteHelper.byteArrayToString(certificate));
} while (certChainLength > 0);
}
if (p_headerfields[signerInfoTypeIndex++] != 0x00) { // Header Field: Generation Time (0)
if (p_enforceSecurityCheck) {
// Drop it
System.err.println("SecurityHelper.checkHeaderfields: Drop packet - GenerationTime not found");
return false;
}
}
// Check generation time
long generationTime = ByteHelper.byteArrayToLong(ByteHelper.extract(p_headerfields, signerInfoTypeIndex, Long.SIZE / Byte.SIZE));
// System.out.println("SecurityHelper.checkHeaderfields: generationTime=" + ByteHelper.byteArrayToString(ByteHelper.extract(p_headerfields, signerInfoTypeIndex, Long.SIZE / Byte.SIZE)));
if (Math.abs(System.currentTimeMillis() - generationTime) < 1000) {
System.err.println("SecurityHelper.checkHeaderfields: Drop packet - GenerationTime out of range");
if (p_enforceSecurityCheck) {
// Drop it
return false;
}
}
signerInfoTypeIndex += (Long.SIZE / Byte.SIZE);
if (signerInfoTypeIndex < p_headerfields.length) {
// System.out.println("SecurityHelper.checkHeaderfields: dump #1=" + ByteHelper.byteArrayToString(ByteHelper.extract(p_headerfields, signerInfoTypeIndex, p_headerfields.length - signerInfoTypeIndex)));
if (p_headerfields[signerInfoTypeIndex] == 0x03) { // Header Field: Generation Location (3)
signerInfoTypeIndex += 1;
byte[] lat = ByteHelper.extract(p_headerfields, signerInfoTypeIndex, 4);
signerInfoTypeIndex += 4;
// System.out.println("SecurityHelper.checkHeaderfields: latitude=" + ByteHelper.byteArrayToString(lat));
byte[] lon = ByteHelper.extract(p_headerfields, signerInfoTypeIndex, 4);
signerInfoTypeIndex += 4;
// System.out.println("SecurityHelper.checkHeaderfields: longitude=" + ByteHelper.byteArrayToString(lon));
byte[] ele = ByteHelper.extract(p_headerfields, signerInfoTypeIndex, 2);
signerInfoTypeIndex += 2;
// System.out.println("SecurityHelper.checkHeaderfields: elevation=" + ByteHelper.byteArrayToString(ele));
}
}
if (signerInfoTypeIndex < p_headerfields.length) {
// System.out.println("SecurityHelper.checkHeaderfields: dump #2=" + ByteHelper.byteArrayToString(ByteHelper.extract(p_headerfields, signerInfoTypeIndex, p_headerfields.length - signerInfoTypeIndex)));
if (p_headerfields[signerInfoTypeIndex] == 0x05) { // Header Field: Its AID (5)
signerInfoTypeIndex += 1;
// Check ItsAid
if ((p_headerfields[signerInfoTypeIndex] & 0x80) == 0x00) { // Short integer
if (
(p_headerfields[signerInfoTypeIndex] != 0x24) && // CAM
(p_headerfields[signerInfoTypeIndex] != 0x25) && // DENM
(p_headerfields[signerInfoTypeIndex] != p_itsAidOther)
) {
System.err.println("SecurityHelper.checkHeaderfields: Drop packet - Unknown ItsAid value");
if (p_enforceSecurityCheck) {
// Drop it
return false;
}
}
// System.out.println("SecurityHelper.checkHeaderfields: ItsAid=" + p_headerfields[signerInfoTypeIndex]);
signerInfoTypeIndex += 1;
} else {
// FIXME to be continued
}
}
}
if (signerInfoTypeIndex < p_headerfields.length) {
// TODO check other fields
// System.out.println("SecurityHelper.checkHeaderfields: dump #3=" + ByteHelper.byteArrayToString(ByteHelper.extract(p_headerfields, signerInfoTypeIndex, p_headerfields.length - signerInfoTypeIndex)));
}
return true;
}
public byte[] decodeCertificate(final byte[] p_headerfields, final int p_offset, final ByteArrayOutputStream p_keys) {
// System.out.println(">>> SecurityHelper.decodeCertificate: " + ByteHelper.byteArrayToString(ByteHelper.extract(p_headerfields, p_offset, p_headerfields.length - p_offset)));
ByteArrayInputStream headerfields = new ByteArrayInputStream(p_headerfields, p_offset, p_headerfields.length - p_offset);
// System.out.println("SecurityHelper.decodeCertificate: headerfields length=" + headerfields.available());
ByteArrayOutputStream cert = new ByteArrayOutputStream(); // FIXME To be removed
try {
// Version
cert.write((byte)headerfields.read());
if (cert.toByteArray()[0] != 0x02) {
System.err.println("SecurityHelper.decodeCertificate: Wrong version number");
return null;
}
// SignerInfo type
byte signerInfoType = (byte)headerfields.read();
cert.write(signerInfoType);
switch (signerInfoType) {
case 0x01:
byte[] digest = new byte[8];
headerfields.read(digest, 0, digest.length);
// System.out.println("SecurityHelper.decodeCertificate: hashedid8=" + ByteHelper.byteArrayToString(digest));
cert.write(digest);
break;
// FIXME To be continued
} // End of 'switch' statement
// SubjectInfo type
byte subjectInfoType = (byte)headerfields.read();
if (
(subjectInfoType != 0x01) && // Subject Info: authorization ticket (1)
(subjectInfoType != 0x02) // Subject Info: authorization authority (2)
) {
System.err.println("SecurityHelper.decodeCertificate: Subject Info: authorization authority/ticket expected - " + ByteHelper.byteArrayToString(cert.toByteArray()));
return null;
}
cert.write(subjectInfoType);
long length = tls2size(headerfields);
if (length != 0) {
cert.write(size2tls((int) length));
byte[] subjectInfo = new byte[(int) length];
headerfields.read(subjectInfo, 0, subjectInfo.length);
cert.write(subjectInfo);
// System.out.println("SecurityHelper.decodeCertificate: subjectInfo: " + ByteHelper.byteArrayToString(subjectInfo));
} else {
cert.write(0x00);
}
// Subject Attributes length
length = tls2size(headerfields);
cert.write(size2tls((int) length));
// Subject Attributes
byte[] b = new byte[(int) length];
headerfields.read(b, 0, b.length);
cert.write(b);
// System.out.println("SecurityHelper.decodeCertificate: Subject Attributes length=" + length + " / " + headerfields.available());
ByteArrayInputStream subjectAttributes = new ByteArrayInputStream(b);
if (subjectAttributes.read() == 0x00) { // Subject Attribute: verification key (0) - Mandatory
if (subjectAttributes.read() == 0x00) { // Public Key Alg: ecdsa nistp256 with sha256 (0)
if (subjectAttributes.read() == 0x04) { // ECC Point Type: uncompressed (4)
byte[] key = new byte[32];
subjectAttributes.read(key, 0, 32);
p_keys.write(key);
// System.out.println("SecurityHelper.decodeCertificate: Verification key1=" + ByteHelper.byteArrayToString(key));
subjectAttributes.read(key, 0, 32);
// System.out.println("SecurityHelper.decodeCertificate: Verification key2=" + ByteHelper.byteArrayToString(key));
p_keys.write(key);
} // FIXME To be continued
} // FIXME To be continued
} // FIXME To be continued
// Read the next header
byte v = (byte) subjectAttributes.read();
if (v == 0x01) { // // Subject Attribute: encryption key (1)
if (subjectAttributes.read() == 0x01) { // Public Key Alg: ecdsa nistp256 (1)
if (subjectAttributes.read() == 0x00) { // Symmetric Algorithm: aes 128 ccm (0)
if (subjectAttributes.read() == 0x04) { // ECC Point Type: uncompressed (4)
byte[] key = new byte[32];
subjectAttributes.read(key, 0, 32);
// System.out.println("SecurityHelper.decodeCertificate: Encryption key1=" + ByteHelper.byteArrayToString(key));
//p_keys.write(key);
subjectAttributes.read(key, 0, 32);
// System.out.println("SecurityHelper.decodeCertificate: Encryption key2=" + ByteHelper.byteArrayToString(key));
//p_keys.write(key);
} // FIXME To be continued
} // FIXME To be continued
} // FIXME To be continued
// Read the next header
v = (byte) subjectAttributes.read();
} // FIXME To be continued
// Assurance level
if (v != 0x02) {
System.err.println("SecurityHelper.decodeCertificate: Assurance level expected - " + ByteHelper.byteArrayToString(cert.toByteArray()));
return null;
}
v = (byte) subjectAttributes.read(); // Skip assurance level value
// System.out.println("SecurityHelper.decodeCertificate: assurance level value=" + v);
if (subjectInfoType == 0x01) { // Authorization Ticket
if (subjectAttributes.read() != 0x21) { // Subject Attribute: its aid ssp list (33)
System.err.println("SecurityHelper.decodeCertificate: Its aid ssp list expected - " + ByteHelper.byteArrayToString(cert.toByteArray()));
return null;
}
length = tls2size(subjectAttributes);
// System.out.println("SecurityHelper.decodeCertificate: Its aid ssp length=" + length);
byte[] its_aid_ssp_list = new byte[(int) length];
subjectAttributes.read(its_aid_ssp_list, 0, (int) length);
// System.out.println("SecurityHelper.decodeCertificate: its_aid_list=" + ByteHelper.byteArrayToString(its_aid_ssp_list));
// TODO Process ATS AID list
} else if (subjectInfoType == 0x02) { // Authorization Authority
if (subjectAttributes.read() != 0x20) { // Subject Attribute: its aid ssp (32)
System.err.println("SecurityHelper.decodeCertificate: Its aid list expected - " + ByteHelper.byteArrayToString(cert.toByteArray()));
return null;
}
length = tls2size(subjectAttributes);
// System.out.println("SecurityHelper.decodeCertificate: its_aid_list length=" + length);
byte[] its_aid_list = new byte[(int) length];
subjectAttributes.read(its_aid_list, 0, (int) length);
// System.out.println("SecurityHelper.decodeCertificate: its_aid_list=" + ByteHelper.byteArrayToString(its_aid_list));
// TODO Process ATS AID list
} else {
System.err.println("SecurityHelper.decodeCertificate: Unknown subjectInfoType - " + subjectInfoType);
return null;
}
// Validity restrictions
length = tls2size(headerfields);
// System.out.println("SecurityHelper.decodeCertificate: Length=" + length + " / " + headerfields.available());
cert.write(size2tls((int)length));
v = (byte)headerfields.read();
if (v == 0x00) { // Validity Restriction: time end (0)
cert.write(v);
byte[] time = new byte[4];
headerfields.read(time, 0, 4);
cert.write(time);
int endTime = ByteHelper.byteArrayToInt(time);
// System.out.println("SecurityHelper.decodeCertificate: Validity Restriction: endTime=" + endTime);
// Check times
long currentTime = (System.currentTimeMillis() - 1072915200000L) / 1000L;
if (currentTime > endTime) {
System.err.println("SecurityHelper.decodeCertificate: Validity Restriction: time end not matched");
return null;
}
v = (byte)headerfields.read();
}
if (v == 0x01) { // Validity Restriction: time start and end (1)
cert.write(v);
byte[] time = new byte[4];
headerfields.read(time, 0, 4);
cert.write(time);
int startTime = ByteHelper.byteArrayToInt(time);
// System.out.println("SecurityHelper.decodeCertificate: Validity Restriction: startTime=" + startTime);
headerfields.read(time, 0, 4);
cert.write(time);
int endTime = ByteHelper.byteArrayToInt(time);
// System.out.println("SecurityHelper.decodeCertificate: Validity Restriction: endTime=" + endTime);
// Check times
long currentTime = (System.currentTimeMillis() - 1072915200000L) / 1000L;
// System.out.println("SecurityHelper.decodeCertificate: Validity Restriction: currentTime=" + currentTime);
if ((currentTime < startTime) || (currentTime > endTime)) {
System.err.println("SecurityHelper.decodeCertificate: Validity Restriction: time start and end not matched");
return null;
}
v = (byte)headerfields.read();
}
if (v == 0x02) { // Validity Restriction: time start and duration (2)
cert.write(v);
byte[] time = new byte[4];
headerfields.read(time, 0, 4);
cert.write(time);
int startTime = ByteHelper.byteArrayToInt(time);
// System.out.println("SecurityHelper.decodeCertificate: Validity Restriction: startTime=" + startTime);
byte[] dur = new byte[2];
headerfields.read(dur, 0, 2);
cert.write(dur);
short duration = ByteHelper.byteArrayToShort(dur);
// System.out.println("SecurityHelper.decodeCertificate: Validity Restriction: duration=" + duration);
int unit = (duration & 0xe0000) >>> 13;
// System.out.println("SecurityHelper.decodeCertificate: Validity Restriction: unit=" + unit);
long value = (duration & 0x1fff);
switch (unit) {
case 0:
// Nothing to do
break;
case 1:
value *= 60;
break;
case 2:
value *= 3600;
break;
default:
System.err.println("SecurityHelper.decodeCertificate: Validity Restriction: time start and duration not processed");
value = Long.MAX_VALUE;
} // End of 'switch' statement
// System.out.println("SecurityHelper.decodeCertificate: Validity Restriction: value=" + value);
// Check times
long currentTime = (System.currentTimeMillis() - 1072915200000L) / 1000L;
if ((currentTime < startTime) || (currentTime > (startTime + value))) {
System.err.println("SecurityHelper.decodeCertificate: Validity Restriction: time start and duration not matched");
return null;
}
v = (byte)headerfields.read();
}
if (v == 0x03) { // region (3)
cert.write(v);
// Region type
v = (byte)headerfields.read();
cert.write(v);
if (v == 0x00) { // none (0)
// Nothing to do
} else if (v == 0x01) { // circle (1)
byte[] lat = new byte[4];
headerfields.read(lat, 0, lat.length);
cert.write(lat);
// System.out.println("SecurityHelper.decodeCertificate: Circle lat=" + ByteHelper.byteArrayToString(lat));
byte[] lon = new byte[4];
headerfields.read(lon, 0, lon.length);
cert.write(lon);
// System.out.println("SecurityHelper.decodeCertificate: Circle lon=" + ByteHelper.byteArrayToString(lon));
byte[] rad = new byte[2];
headerfields.read(rad, 0, rad.length);
cert.write(rad);
// System.out.println("SecurityHelper.decodeCertificate: Circle rad=" + ByteHelper.byteArrayToInt(rad));
} else if (v == 0x02) { // rectangle (2)
int rlength = (int) tls2size(headerfields);
cert.write(size2tls(rlength));
while (rlength > 0) {
byte[] ulat = new byte[4];
headerfields.read(ulat, 0, ulat.length);
cert.write(ulat);
byte[] ulon = new byte[4];
headerfields.read(ulon, 0, ulon.length);
cert.write(ulon);
byte[] llat = new byte[4];
headerfields.read(llat, 0, llat.length);
cert.write(llat);
byte[] llon = new byte[4];
headerfields.read(llon, 0, llon.length);
cert.write(llon);
// System.out.println("SecurityHelper.decodeCertificate: Rectangle ulat=" + ByteHelper.byteArrayToString(ulat));
// System.out.println("SecurityHelper.decodeCertificate: Rectangle ulon=" + ByteHelper.byteArrayToString(ulon));
// System.out.println("SecurityHelper.decodeCertificate: Rectangle llat=" + ByteHelper.byteArrayToString(llat));
// System.out.println("SecurityHelper.decodeCertificate: Rectangle llon=" + ByteHelper.byteArrayToString(llon));
rlength -= 4 * 4;
}
} else if (v == 0x03) { // polygon (3)
int plength = (int) tls2size(headerfields);
cert.write(size2tls((int) plength));
byte[] polygonalRegion = new byte[plength];
while (plength > 0) {
byte[] lat = new byte[4];
headerfields.read(lat, 0, lat.length);
cert.write(lat);
byte[] lon = new byte[4];
headerfields.read(lon, 0, lon.length);
cert.write(lon);
// System.out.println("SecurityHelper.decodeCertificate: poly point lat=" + ByteHelper.byteArrayToString(lat));
// System.out.println("SecurityHelper.decodeCertificate: poly point lon=" + ByteHelper.byteArrayToString(lon));
plength -= 2 * 4;
}
headerfields.read(polygonalRegion, 0, polygonalRegion.length);
cert.write(polygonalRegion);
// TODO Process Validity Restriction
// System.out.println("SecurityHelper.decodeCertificate: polygonal=" + ByteHelper.byteArrayToString(polygonalRegion));
} else if (v == 0x04) { // id (4)
v = (byte)headerfields.read();
cert.write(v);
byte[] ri = new byte[2];
headerfields.read(ri, 0, ri.length);
cert.write(ri);
int lr = (int) tls2size(headerfields);
cert.write(size2tls((int) lr));
// TODO Process Validity Restriction
// System.out.println("SecurityHelper.decodeCertificate: Region t=" + v);
// System.out.println("SecurityHelper.decodeCertificate: Region ri=" + ByteHelper.byteArrayToString(ri));
// System.out.println("SecurityHelper.decodeCertificate: Region lr=" + lr);
} else {
System.err.println("SecurityHelper.decodeCertificate: Unexpected geographical region");
return null;
}
}
// System.out.println("SecurityHelper.decodeCertificate: Before signature: " + ByteHelper.byteArrayToString(cert.toByteArray()));
// Signature
byte publicKeyAlg = (byte)headerfields.read();
cert.write(publicKeyAlg);
switch (publicKeyAlg) {
case 0x00: // ecdsa nistp256 with sha256
byte eccPointType = (byte)headerfields.read();
cert.write(eccPointType);
switch (eccPointType) {
case 0x00: // ECC Point Type: x-coordinate only
byte[] key = new byte[64];
headerfields.read(key, 0, key.length);
cert.write(key);
// System.out.println("SecurityHelper.decodeCertificate: Signature=" + ByteHelper.byteArrayToString(key));
break;
} // End of 'switch' statement
break;
} // End of 'switch' statement
// TODO Check certificate signature
// System.out.println("SecurityHelper.decodeCertificate: Processed cert=" + ByteHelper.byteArrayToString(cert.toByteArray()));
return cert.toByteArray();
} catch (IOException e) {
e.printStackTrace();
}
System.err.println("SecurityHelper.decodeCertificate: Unsupported certificate - " + ByteHelper.byteArrayToString(cert.toByteArray()));
return null;
}
public boolean extractMessageSignature(final byte[] p_secureTrailer, final ByteArrayOutputStream p_signature) {
// System.out.println(">>> SecurityHelper.extractMessageSignature: " + ByteHelper.byteArrayToString(p_secureTrailer));
// Sanity check
if (p_secureTrailer.length == 0) {
return false;
}
// Extract digest or certificate
int secureTrailerIndex = 0;
if (p_secureTrailer[secureTrailerIndex++] == 0x01) { // Trailer Type: signature (1)
if (p_secureTrailer[secureTrailerIndex++] == 0x00) { // Public Key Alg: ecdsa nistp256 with sha256 (0)
if (p_secureTrailer[secureTrailerIndex++] == 0x02) { // ECC Point Type: compressed lsb y-0 (2)
if (p_secureTrailer.length == (3 + 2 * 32)) {
// Build the signature vector
try {
p_signature.write(new byte[] { (byte)0x00, (byte)0x00 });
p_signature.write(ByteHelper.extract(p_secureTrailer, 3, 64));
// System.out.println("<<< SecurityHelper.extractMessageSignature: true");
return true;
} catch (IOException e) {
e.printStackTrace();
}
} // FIXME To be continued
} // FIXME To be continued
} // FIXME To be continued
} // FIXME To be continued
// Else, drop it
System.err.println("SecurityHelper.extractMessageSignature: Drop packet - Wrong signature");
return false;
}
public byte[] calculateDigestFromCertificate(final byte[] p_toBeHashedData) {
// System.out.println("SecurityHelper.calculateDigestFromCertificate: " + ByteHelper.byteArrayToString(p_toBeHashedData));
byte[] hash = CryptoLib.hashWithSha256(p_toBeHashedData);
// System.out.println("SecurityHelper.calculateDigestFromCertificate: " + ByteHelper.byteArrayToString(hash));
return ByteHelper.extract(hash, hash.length - 8, 8);
}
} // End of class SecurityHelper
Property changes:
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+URL Id
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: javasrc/adapter/org/etsi/its/adapter/TestAdapter.java
===================================================================
--- javasrc/adapter/org/etsi/its/adapter/TestAdapter.java (revision 2229)
+++ javasrc/adapter/org/etsi/its/adapter/TestAdapter.java (revision 2230)
@@ -123,6 +123,9 @@
// Force port unmapping
compPortMgr.removeAllPorts();
+ // Load certificates
+ org.etsi.certificates.CertificatesIOFactory.getInstance().loadCertificates(((CharstringValue)TERFactory.getInstance().getTaParameter("TsSecuredRootPath")).getString(), ((CharstringValue)TERFactory.getInstance().getTaParameter("TsSecuredConfiId")).getString());
+
return required.getTriStatus(TriStatus.TRI_OK);
}
/trunk/javasrc/adapter/org/etsi/its/adapter/layers/BtpLayer.java
99,9 → 99,9
}
 
// Update params
if(lowerLayerName != null && lowerLayerName.equals("GN")) {
params.put(GnLayer.GN_NEXTHEADER, "BTP-A");
}
// if(lowerLayerName != null && lowerLayerName.equals("GN")) {
// params.put(GnLayer.GN_NEXTHEADER, "BTP-A"); // TODO Alex to confirm removal
// }
return super.send(ByteHelper.concat(encapsulated, message), params);
}
/trunk/javasrc/adapter/org/etsi/its/adapter/layers/GnLayer.java
16,6 → 16,7
import org.etsi.adapter.TERFactory;
import org.etsi.common.ByteHelper;
import org.etsi.its.adapter.IManagementLayers;
import org.etsi.its.adapter.SecurityHelper;
import org.etsi.ttcn.tci.CharstringValue;
 
import de.fraunhofer.sit.c2x.CryptoLib;
165,9 → 166,12
* LS-Reply sub-type for LS messages
*/
public static final int HST_LSREPLY = 1;
 
/**
* UTC ITS time reference: 01/01/2004 00:00:00 GMT
*/
private static final long ITS_REF_TIME = 1072915200000L;
 
/**
* Constructor
* @param management Layer management instance
233,6 → 237,7
*/
@Override
public boolean send(byte[] message, Map<String, Object> params) {
System.out.println(">>> GnLayer.send: " + ByteHelper.byteArrayToString(message));
byte [] extHdr = null;
int ht;
294,6 → 299,7
toBeSent = createSecuredMessage(basicHdr, commonHdr, extHdr, message);
}
System.out.println("<<< GnLayer.send: " + ByteHelper.byteArrayToString(toBeSent));
return super.send(toBeSent, params);
}
302,18 → 308,18
*/
@Override
public void receive(byte[] message, Map<String, Object> lowerInfo) {
// System.out.println(">>> GnLayer.receive: " + ByteHelper.byteArrayToString(message));
System.out.println(">>> GnLayer.receive: " + ByteHelper.byteArrayToString(message));
byte[] basicHdr = new byte[4];
System.arraycopy(message, 4, basicHdr, 0, 4);
System.arraycopy(message, 0, basicHdr, 0, 4);
byte[] versionNh = new byte[1];
System.arraycopy(basicHdr, 0, versionNh, 0, 1);
byte nextHeader = (byte)(versionNh[0] & (byte)0x0F);
int lt_multiplier = (int)(basicHdr[2] & (byte)0xFC) >> 2;
int lt_base = (int)(basicHdr[2] & (byte)0x03);
int lt_multiplier = ((basicHdr[2] & (byte)0xFC) >> 2)&0x3F;
int lt_base = basicHdr[2] & (byte)0x03;
int lifetime = computeGnLifeTime(lt_multiplier, lt_base);
if (!management.isSecuredModeSet()) { // Secure mode disabled
if (nextHeader == 0x01) { // Common header - Secure mode disabled
byte[] commonHdr = new byte[8];
System.arraycopy(message, 4, commonHdr, 0, 8);
nextHeader = (byte)((commonHdr[0] & (byte)0xF0) >> 4);
344,6 → 350,7
params.put(GN_DEPV, depv);
params.put(GN_TYPE, HT_LS);
params.put(GN_SUBTYPE, HST_LSREPLY);
System.out.println("GnLayer.receive: Send LS_REPLAY in unsecured mode");
send(null, params);
}
}
364,55 → 371,13
super.receive(payload, lowerInfo);
}
}
} else {
if ((basicHdr[0] & 0x0f) == 0x02) { // Secured tag
int offset = basicHdr.length + 1; // Version fields
int signerInfoTypeIndex = 0;
// Extract Header length (IntX type)
if ((message[offset] & 0x80) == 0x80) { // Integer >= 128
byte msb = message[offset]; // TODO Create a method decodeIntX
byte bit;
byte byteLen = 1;
do {
bit = (byte) ((byte) (msb << byteLen++) & 0x80);
} while (bit != 0x00);
// Set the IntX length
byte[] newBuf = ByteHelper.extract(message, offset, byteLen);
// Remove the length from the real integer value
newBuf[0] &= (byte)(Math.pow(2.0, 8 - byteLen + 1) - 1);
signerInfoTypeIndex = offset + byteLen;
offset += byteLen + ByteHelper.byteArrayToInt(newBuf);
} else {
signerInfoTypeIndex = offset + 1;
offset += message[offset] + 1;
}
offset += 1; // Skip Payload Type
// Extract Data Payload length (IntX type)
if ((message[offset] & 0x80) == 0x80) { // Integer >= 128
byte msb = message[offset];
byte bit;
byte byteLen = 1;
do {
bit = (byte) ((byte) (msb << byteLen++) & 0x80);
} while (bit != 0x00);
offset += byteLen;
} else {
offset +=1;
}
// Sanity check: Verify SignerInfo field
if (
((message[signerInfoTypeIndex] & 0x80) != 0x80) || // SignerInfo Type: certificate digest with ecdsap256 (1)
(
(message[signerInfoTypeIndex + 1] != 0x01) && // SignerInfo Type: certificate digest with ecdsap256 (1)
(message[signerInfoTypeIndex + 1] != 0x02) // SignerInfo Type: certificate (2)
)
) {
// Drop it
return;
}
} else if (nextHeader == 0x02) { // Secured tag
byte[] payload = SecurityHelper.getInstance().checkSecuredProfileAndExtractPayload(message, basicHdr.length, management.isEnforceSecuredModeSet(), management.getItsAidOther());
if (payload != null) {
// System.out.println("GnLayer.receive: payload=" + ByteHelper.byteArrayToString(payload));
byte[] commonHdr = new byte[8];
System.arraycopy(message, offset, commonHdr, 0, 8);
// System.out.println("GnLayer.receive: commonHdr: " + ByteHelper.byteArrayToString(commonHdr));
System.arraycopy(payload, 0, commonHdr, 0, 8);
// System.out.println("GnLayer.receive: commonHdr=" + ByteHelper.byteArrayToString(commonHdr));
nextHeader = (byte)((commonHdr[0] & (byte)0xF0) >> 4);
int trafficClass = (int)(commonHdr[2]);
424,11 → 389,12
byte[] pl = new byte[2];
System.arraycopy(commonHdr, 4, pl , 0, 2);
int payloadLength = ByteHelper.byteArrayToInt(pl);
// System.out.println("GnLayer.receive: Message payload length=" + payloadLength);
if(headerType == HT_LS) {
// Process LS messages
if(headerSubType == HST_LSREQUEST) {
int sopvPos = offset + commonHdr.length + 3 + 8 + 3 * 4 + 2 * 2;
int sopvPos = commonHdr.length + 3 + 8 + 3 * 4 + 2 * 2; // FIXME To be changed
byte[] gnAddress = new byte[8];
System.arraycopy(message, sopvPos, gnAddress, 0, 8);
byte[] mid = new byte[6];
436,12 → 402,13
if(Arrays.equals(mid, management.getLinkLayerAddress()) == true) {
// Send LS Reply
byte[] depv = new byte[20];
System.arraycopy(message, sopvPos, depv, 0, 20); // FIXME Check indexes
System.arraycopy(payload, sopvPos, depv, 0, 20); // FIXME Check indexes
Map<String, Object> params = new HashMap<String, Object>();
params.put(GN_DEPV, depv);
params.put(GN_TYPE, HT_LS);
params.put(GN_SUBTYPE, HST_LSREPLY);
System.out.println("GnLayer.receive: Send LS_REPLAY in secured mode");
send(null, params);
}
} else {
450,16 → 417,21
} else {
// Other messages
if(payloadLength > 0) {
byte[] payload = new byte[payloadLength];
System.arraycopy(message, message.length - payloadLength - 68, payload, 0, payloadLength);
byte[] mpayload = new byte[payloadLength];
System.arraycopy(payload, commonHdr.length + 28/*Topology-Scoped Broadcast*/, mpayload, 0, payloadLength);
// System.out.println("GnLayer.receive: Message =" + ByteHelper.byteArrayToString(mpayload));
lowerInfo.put(GN_NEXTHEADER, nextHeader);
lowerInfo.put(GN_TYPE, headerType);
lowerInfo.put(GN_SUBTYPE, headerSubType);
lowerInfo.put(GN_LIFETIME, lifetime);
lowerInfo.put(GN_TRAFFICCLASS, trafficClass);
super.receive(payload, lowerInfo);
super.receive(mpayload, lowerInfo);
}
}
} else {
// Drop it
System.err.println("GnLayer.receive: Invalid basic header type");
return;
}
}
} // End of method receive
466,18 → 438,18
/**
* Computes GN lifetime value
* @param lt_multiplier GN LT multiplier
* @param lt_base GN LT base
* @return GN lifetime value in ms
* @param lt_multiplier GN LT multiplier
* @param lt_base GN LT base
* @return GN lifetime value in ms
*/
private int computeGnLifeTime(int lt_multiplier, int lt_base) {
final int[] base = {50, 1000, 10000, 100000};
return base[lt_base] * lt_multiplier;
}
final int[] base = {50, 1000, 10000, 100000};
return base[lt_base] * lt_multiplier;
}
 
/**
/**
* Builds encoded Basic Header
* @return Encoded Basic Header
*/
502,7 → 474,7
byte[] lifetime = new byte[]{(byte)0x2B};
// RHL 1 byte
byte[] rhl = new byte[]{(byte)0x0A};
byte[] rhl = new byte[]{(byte)0x01};
return ByteHelper.concat(versionNh, reserved, lifetime, rhl);
}
662,6 → 634,8
}
private byte[] createSecuredMessage(final byte[] basicHdr, final byte[] commonHdr, final byte[] extHdr, final byte[] message) {
System.out.println(">>> GnLayer.createSecuredMessage: "+ ByteHelper.byteArrayToString(message));
// SecuredMessage payload length
int payloadLength = commonHdr.length + extHdr.length + message.length;
668,7 → 642,7
// Build the generation time value
long curtime = System.currentTimeMillis();
byte[] generationTime = ByteHelper.longToByteArray((long)(curtime - 1072915200000L) * 1000L, Long.SIZE / Byte.SIZE); // In microseconds
// System.out.println("GnLayer.createSecuredMessage: generationTime=" + ByteHelper.byteArrayToString(generationTime));
System.out.println("GnLayer.createSecuredMessage: generationTime=" + ByteHelper.byteArrayToString(generationTime));
// Build the payload to be signed
byte[] headersField = ByteHelper.concat(
ByteHelper.concat( // SecuredMessage HeaderFields
683,16 → 657,12
generationTime // Time64 value
)
);
if ((commonHdr[0] & 0xF0) == 0x00) { // Next header = Any
// Nothing to do
} else if ((commonHdr[0] & 0xF0) == 0x01) { // Next header = Btp-A
if ((commonHdr[0] & 0xF0) == 0x01) { // Next header = Btp-A
headersField = ByteHelper.concat(
headersField,
new byte[] {
(byte)0x05, // its-aid
(byte)0xC0,
(byte)0x40,
(byte)0x80 // 16512 = CAM
(byte)0x24 // 36 = CAM
}
);
} else if ((commonHdr[0] & 0xF0) == 0x02) { // Next header = Btp-B
706,11 → 676,34
new byte[] { (byte)0x00, (byte)0x00 }, // Elevation
new byte[] {
(byte)0x05, // its-aid
(byte)0xC0,
(byte)0x40,
(byte)0x81 // 16513 = DENM
(byte)0x25 // 37 = DENM
}
);
} else { // Add Its-Aid for Other profile
int itsAid = management.getItsAidOther();
byte[] b;
if (itsAid < 128) {
b = new byte[] { (byte)itsAid };
} else if (itsAid < Short.MAX_VALUE) {
b = ByteHelper.intToByteArray(itsAid, Short.SIZE / Byte.SIZE);
b = ByteHelper.concat(
SecurityHelper.getInstance().size2tls(b.length),
b
);
} else {
b = ByteHelper.intToByteArray(itsAid, Integer.SIZE / Integer.SIZE);
b = ByteHelper.concat(
SecurityHelper.getInstance().size2tls(b.length),
b
);
}
headersField = ByteHelper.concat(
headersField,
new byte[] {
(byte)0x05 // Its-aid
},
b
);
}
byte[] toBeSignedData = ByteHelper.concat(
new byte[] { // SecuredMessage version
728,14 → 721,16
new byte[] { (byte)0x01 }, // Signature
new byte[] { (byte)0x43 } // Signature length
);
// System.out.println("GnLayer.createSecuredMessage: toBeSignedData=" + ByteHelper.byteArrayToString(toBeSignedData));
System.out.println("GnLayer.createSecuredMessage: toBeSignedData=" + ByteHelper.byteArrayToString(toBeSignedData));
byte[] toBeSent = null;
try {
// Calculate the hash
byte[] hash = CryptoLib.hashWithSha256(toBeSignedData);
System.out.println("GnLayer.createSecuredMessage: hash=" + ByteHelper.byteArrayToString(hash));
// Signed the hash
byte[] signatureBytes = CryptoLib.signWithEcdsaNistp256WithSha256(hash, management.getSigningPrivateKey());
System.out.println("GnLayer.createSecuredMessage: signatureBytes=" + ByteHelper.byteArrayToString(signatureBytes));
// Add signature
toBeSent = ByteHelper.concat(
basicHdr,
747,7 → 742,7
e.printStackTrace();
}
// System.out.println("GnLayer.createSecuredMessage: toBeSent=" + ByteHelper.byteArrayToString(toBeSent));
System.out.println("GnLayer.createSecuredMessage: toBeSent=" + ByteHelper.byteArrayToString(toBeSent));
return toBeSent;
}
/trunk/javasrc/adapter/org/etsi/its/adapter/ports/BtpPort.java
8,31 → 8,72
*/
package org.etsi.its.adapter.ports;
 
import java.util.HashMap;
import java.util.Map;
 
import org.etsi.common.ByteHelper;
import org.etsi.its.adapter.layers.BtpLayer;
import org.etsi.its.adapter.layers.GnLayer;
 
/**
* BTP port implementation
*/
public class BtpPort extends ProtocolPort {
 
/**
* Constructor
/**
* Constructor
* @param portName Name of the port
* @param componentName Name of the component owning this port instance
* @param lowerStackDesc Description of the port's lower stack in the form "Layer/Layer/Layer/..."
* @param linkLayerAddress Link-layer address to be used by this port as source address (null if not applicable)
*/
public BtpPort(String portName, String componentName, String lowerStackDesc, String linkLayerAddress) {
super(portName, componentName, lowerStackDesc, linkLayerAddress);
}
*/
public BtpPort(String portName, String componentName, String lowerStackDesc, String linkLayerAddress) {
super(portName, componentName, lowerStackDesc, linkLayerAddress);
}
 
/* (non-Javadoc)
* @see org.etsi.its.adapter.ports.ProtocolPort#receive(byte[])
*/
@Override
public void receive(byte[] message, Map<String, Object> lowerInfo) {
//(Integer)(lowerInfo.get(GnLayer.GN_NEXTHEADER)) == 1/*FIXME*/)
super.receive(message, lowerInfo);
}
/* (non-Javadoc)
* @see org.etsi.its.adapter.ports.ProtocolPort#receive(byte[])
*/
@Override
public void receive(byte[] message, Map<String, Object> lowerInfo) {
// Encode with GN next header info - BTP A or BTP B
byte[] msgInd = ByteHelper.concat(
new byte[] { (byte) lowerInfo.get(GnLayer.GN_NEXTHEADER) },
message
);
super.receive(msgInd, lowerInfo);
}
/* (non-Javadoc)
* @see org.etsi.its.adapter.ports.IPort#send(byte[])
*/
@Override
public boolean send(byte[] message) {
HashMap<String, Object> params = new HashMap<String, Object>();
switch (message[0]) {
case 1:
params.put(BtpLayer.BTP_TYPE, BtpLayer.TYPE_A);
params.put(GnLayer.GN_NEXTHEADER, "BTP-A");
break;
case 2:
params.put(BtpLayer.BTP_TYPE, BtpLayer.TYPE_B);
params.put(GnLayer.GN_NEXTHEADER, "BTP-B");
break;
default:
//otherwise GN next header is ANY
break;
}
params.put(BtpLayer.BTP_DSTPORT, 2001);
params.put(BtpLayer.BTP_SRCPORT, 500);
params.put(GnLayer.GN_TYPE, GnLayer.HT_TSB);
params.put(GnLayer.GN_SUBTYPE, GnLayer.HST_MULTIHOP);
byte[] msg2sent = new byte[message.length-1];
//cut the next header indication byte
System.arraycopy(message, 1, msg2sent, 0, msg2sent.length);
return send(msg2sent, params);
}
}
/trunk/javasrc/adapter/org/etsi/its/adapter/ports/CamPort.java
20,7 → 20,7
*/
public class CamPort extends ProtocolPort {
 
/**
/**
* Constructor
* @param portName Name of the port
* @param componentName Name of the component owning this port instance
27,42 → 27,49
* @param lowerStackDesc Description of the port's lower stack in the form "Layer/Layer/Layer/..."
* @param linkLayerAddress Link-layer address to be used by this port as source address (null if not applicable)
*/
public CamPort(String portName, String componentName, String lowerStackDesc, String linkLayerAddress) {
super(portName, componentName, lowerStackDesc, linkLayerAddress);
}
public CamPort(String portName, String componentName, String lowerStackDesc, String linkLayerAddress) {
super(portName, componentName, lowerStackDesc, linkLayerAddress);
}
/* (non-Javadoc)
* @see org.etsi.its.adapter.ports.ProtocolPort#receive(byte[], java.util.Map)
*/
@Override
public void receive(byte[] message, Map<String, Object> lowerInfo) {
 
public void receive(byte[] message, Map<String, Object> lowerInfo) {
// System.out.println(">>> denmPort.receive: " + ByteHelper.byteArrayToString(message));
if (message[1] != 0x02) { // Check that received packet has CAM message id
System.err.println("camPort.receive: drop packet " + ByteHelper.byteArrayToString(message));
return; // Drop it
}
// Encode with CAM indication header
byte[] msgInd = ByteHelper.concat(
message,
(byte[])lowerInfo.get(GnLayer.GN_NEXTHEADER),
(byte[])lowerInfo.get(GnLayer.GN_TYPE),
(byte[])lowerInfo.get(GnLayer.GN_SUBTYPE),
(byte[])lowerInfo.get(GnLayer.GN_LIFETIME),
(byte[])lowerInfo.get(GnLayer.GN_TRAFFICCLASS),
(byte[])lowerInfo.get(BtpLayer.BTP_DSTPORT),
(byte[])lowerInfo.get(BtpLayer.BTP_DSTPORTINFO));
message,
new byte[] { (byte) lowerInfo.get(GnLayer.GN_NEXTHEADER) },
ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_TYPE), 1),
ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_SUBTYPE), 1),
ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_LIFETIME), Integer.SIZE / Byte.SIZE),
ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_TRAFFICCLASS), 1),
(byte[]) lowerInfo.get(BtpLayer.BTP_DSTPORT),
(byte[]) lowerInfo.get(BtpLayer.BTP_DSTPORTINFO)
);
super.receive(msgInd, lowerInfo);
}
/* (non-Javadoc)
}
/* (non-Javadoc)
* @see org.etsi.its.adapter.ports.IPort#send(byte[])
*/
@Override
public boolean send(byte[] message) {
HashMap<String, Object> params = new HashMap<String, Object>();
params.put(BtpLayer.BTP_TYPE, BtpLayer.TYPE_B);
params.put(BtpLayer.BTP_DSTPORT, 2001);
params.put(BtpLayer.BTP_SRCPORT, 500);
params.put(GnLayer.GN_TYPE, GnLayer.HT_TSB);
params.put(GnLayer.GN_SUBTYPE, GnLayer.HST_MULTIHOP);
params.put(GnLayer.GN_NEXTHEADER, "BTP-B");
HashMap<String, Object> params = new HashMap<String, Object>();
params.put(BtpLayer.BTP_TYPE, BtpLayer.TYPE_B);
params.put(BtpLayer.BTP_DSTPORT, 2001);
params.put(BtpLayer.BTP_SRCPORT, 500);
params.put(GnLayer.GN_TYPE, GnLayer.HT_TSB);
params.put(GnLayer.GN_SUBTYPE, GnLayer.HST_SINGLEHOP);
params.put(GnLayer.GN_NEXTHEADER, "BTP-B");
return send(message, params);
}
}
}
/trunk/javasrc/adapter/org/etsi/its/adapter/ports/DenmPort.java
27,30 → 27,37
* @param lowerStackDesc Description of the port's lower stack in the form "Layer/Layer/Layer/..."
* @param linkLayerAddress Link-layer address to be used by this port as source address (null if not applicable)
*/
public DenmPort(String portName, String componentName, String lowerStackDesc, String linkLayerAddress) {
super(portName, componentName, lowerStackDesc, linkLayerAddress);
}
public DenmPort(String portName, String componentName, String lowerStackDesc, String linkLayerAddress) {
super(portName, componentName, lowerStackDesc, linkLayerAddress);
}
/* (non-Javadoc)
* @see org.etsi.its.adapter.ports.ProtocolPort#receive(byte[], java.util.Map)
*/
@Override
public void receive(byte[] message, Map<String, Object> lowerInfo) {
 
// Encode with CAM indication header
public void receive(byte[] message, Map<String, Object> lowerInfo) {
// System.out.println(">>> denmPort.receive: " + ByteHelper.byteArrayToString(message));
if (message[1] != 0x01) { // Check that received packet has DENM message id
System.err.println("denmPort.receive: drop packet " + ByteHelper.byteArrayToString(message));
return; // Drop it
}
// Encode with DENM indication header
byte[] msgInd = ByteHelper.concat(
message,
(byte[])lowerInfo.get(GnLayer.GN_NEXTHEADER),
(byte[])lowerInfo.get(GnLayer.GN_TYPE),
(byte[])lowerInfo.get(GnLayer.GN_SUBTYPE),
(byte[])lowerInfo.get(GnLayer.GN_LIFETIME),
(byte[])lowerInfo.get(GnLayer.GN_TRAFFICCLASS),
(byte[])lowerInfo.get(BtpLayer.BTP_DSTPORT),
(byte[])lowerInfo.get(BtpLayer.BTP_DSTPORTINFO));
message,
new byte[] { (byte) lowerInfo.get(GnLayer.GN_NEXTHEADER) },
ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_TYPE), 1),
ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_SUBTYPE), 1),
ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_LIFETIME), Integer.SIZE / Byte.SIZE),
ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_TRAFFICCLASS), 1),
(byte[]) lowerInfo.get(BtpLayer.BTP_DSTPORT),
(byte[]) lowerInfo.get(BtpLayer.BTP_DSTPORTINFO)
);
super.receive(msgInd, lowerInfo);
}
}
/* (non-Javadoc)
/* (non-Javadoc)
* @see org.etsi.its.adapter.ports.IPort#send(byte[])
*/
@Override
60,17 → 67,17
params.put(BtpLayer.BTP_TYPE, BtpLayer.TYPE_B);
params.put(BtpLayer.BTP_DSTPORT, 2002);
params.put(BtpLayer.BTP_SRCPORT, 500);
params.put(GnLayer.GN_TYPE, GnLayer.HT_TSB);
params.put(GnLayer.GN_SUBTYPE, GnLayer.HST_SINGLEHOP);
// params.put(GnLayer.GN_TYPE, GnLayer.HT_TSB);
// params.put(GnLayer.GN_SUBTYPE, GnLayer.HST_SINGLEHOP);
params.put(GnLayer.GN_NEXTHEADER, "BTP-B");
// params.put(GnLayer.GN_TYPE, GnLayer.HT_GEOBROADCAST);
// params.put(GnLayer.GN_SUBTYPE, GnLayer.HST_ELIPSE);
// params.put(GnLayer.GN_LATITUDE, 517860110L);
// params.put(GnLayer.GN_LONGITUDE, 60152120L);
// params.put(GnLayer.GN_DISTANCEA, 200);
// params.put(GnLayer.GN_DISTANCEB, 200);
// params.put(GnLayer.GN_ANGLE, 0);
params.put(GnLayer.GN_TYPE, GnLayer.HT_GEOBROADCAST);
params.put(GnLayer.GN_SUBTYPE, GnLayer.HST_ELIPSE);
params.put(GnLayer.GN_LATITUDE, ByteHelper.byteArrayToLong(management.getLatitude()));
params.put(GnLayer.GN_LONGITUDE, ByteHelper.byteArrayToLong(management.getLongitude()));
params.put(GnLayer.GN_DISTANCEA, 200);
params.put(GnLayer.GN_DISTANCEB, 200);
params.put(GnLayer.GN_ANGLE, 0);
//
return send(message, params);
}
/trunk/javasrc/adapter/org/etsi/its/adapter/ports/GnPort.java
13,7 → 13,7
 
import org.etsi.adapter.TERFactory;
import org.etsi.common.ByteHelper;
import org.etsi.its.adapter.TlsHelper;
import org.etsi.its.adapter.SecurityHelper;
import org.etsi.its.adapter.layers.EthernetLayer;
import org.etsi.its.adapter.layers.IEthernetSpecific;
import org.etsi.ttcn.tci.CharstringValue;
32,7 → 32,6
private static final int HT_TSB = 5;
private static final int HST_SHB = 0;
/**
* Constructor
* @param portName Name of the port
93,29 → 92,23
if(beaconHeader != null) {
long modulo = (long)Math.pow(2,32);
Map<String, Object> params = new HashMap<String, Object>();
long triggerTime = System.currentTimeMillis();
boolean sendDigest = false;
// long triggerTime = System.currentTimeMillis();
while(running) {
// Update timestamp. Timestamp is 1s older than current time to avoid sending beacons coming from the future (time sync between nodes)
long currentTime = System.currentTimeMillis();
byte[] tst = ByteHelper.intToByteArray((int)(((currentTime - 1072915200000L) % modulo) - 3000), 4);
System.arraycopy(tst, 0, beaconHeader, 20, 4);
if (!management.isSecuredModeSet()) { // Secure mode disabled
// TODO Uncomment to get secured beacon if (!management.isSecuredModeSet()) { // Secure mode disabled
send(beaconHeader, params);
/* TODO Uncomment to get secured beacon
} else { // Send a secured beacon
// Retrieve the secured data template
sendDigest = (boolean)((currentTime - triggerTime) < 1000);
byte[] securedBeaconHeader;
if (sendDigest) {
securedBeaconHeader = buildSecuredBeacon(beaconHeader, tst, currentTime, sendDigest);
} else {
securedBeaconHeader = buildSecuredBeacon(beaconHeader, tst, currentTime, sendDigest);
}
triggerTime = currentTime;
byte[] securedBeaconHeader = buildSecuredBeacon(beaconHeader, tst, currentTime, false);
// triggerTime = currentTime;
// Send the secured beacon
// System.out.println("GnPort: Call send " + ByteHelper.byteArrayToString(securedBeaconHeader));
System.out.println("GnPort: Call send " + ByteHelper.byteArrayToString(securedBeaconHeader));
send(securedBeaconHeader, params);
}
TODO Uncomment to get secured beacon*/
try {
Thread.sleep(management.getGnBeaconInterval());
} catch (InterruptedException e) {
126,7 → 119,7
}
private byte[] buildSecuredBeacon(final byte[] p_beacon, byte[] p_tst, final long p_currentTime, final boolean p_sendDigest) {
// System.out.println("GnPort.buildSecuredBeacon (1): " + ByteHelper.byteArrayToString(p_beacon));
System.out.println("GnPort.buildSecuredBeacon (1): " + ByteHelper.byteArrayToString(p_beacon));
byte[] basicHeader = ByteHelper.extract(p_beacon, 0, 4);
basicHeader[0] &= 0xFE;
138,10 → 131,10
p_tst, // Update the timestamp field
ByteHelper.extract(p_beacon, 20, p_beacon.length - 4 - 20) // Add remaining bytes
);
// System.out.println("GnPort.buildSecuredBeacon (2): " + ByteHelper.byteArrayToString(beacon));
System.out.println("GnPort.buildSecuredBeacon (2): " + ByteHelper.byteArrayToString(beacon));
// Prepare the message to be signed
byte[] toBeSignedData = buildToBeSignedData(beacon, p_currentTime, p_sendDigest);
// System.out.println("GnPort.buildSecuredBeacon: toBeSignedData " + ByteHelper.byteArrayToString(toBeSignedData));
System.out.println("GnPort.buildSecuredBeacon: toBeSignedData " + ByteHelper.byteArrayToString(toBeSignedData));
// Sign the message
byte[] securedBeaconHeader = signSecuredMessage(toBeSignedData);
150,7 → 143,7
}
private byte[] buildToBeSignedData(final byte[] p_beacon, final long p_currentTime, final boolean p_sendDigest) {
// System.out.println("GnPort.buildToBeSignedData: " + ByteHelper.byteArrayToString(p_beacon));
System.out.println("GnPort.buildToBeSignedData: " + ByteHelper.byteArrayToString(p_beacon));
// Build the SignerInfo field
byte[] signerInfo = null;
174,7 → 167,7
// Build the generation time value
byte[] generationTime = ByteHelper.longToByteArray((long)(p_currentTime - 1072915200000L) * 1000L, Long.SIZE / Byte.SIZE); // In microseconds
// System.out.println("GnPort.buildToBeSignedData: generationTime=" + ByteHelper.byteArrayToString(generationTime));
System.out.println("GnPort.buildToBeSignedData: generationTime=" + ByteHelper.byteArrayToString(generationTime));
byte[] headersField = ByteHelper.concat(
ByteHelper.concat( // SecuredMessage HeaderFields
signerInfo, // signerInfo
184,8 → 177,33
generationTime // Time64 value
)
);
byte[] headersFieldLength = TlsHelper.getInstance().size2tls(headersField.length);
// System.out.println("GnPort.buildToBeSignedData: headersField=" + ByteHelper.byteArrayToString(headersField));
// Add Its-Aid for Other profile
int itsAid = management.getItsAidOther();
byte[] b;
if (itsAid < 128) {
b = new byte[] { (byte)itsAid };
} else if (itsAid < Short.MAX_VALUE) {
b = ByteHelper.intToByteArray(itsAid, Short.SIZE / Byte.SIZE);
b = ByteHelper.concat(
SecurityHelper.getInstance().size2tls(b.length),
b
);
} else {
b = ByteHelper.intToByteArray(itsAid, Integer.SIZE / Integer.SIZE);
b = ByteHelper.concat(
SecurityHelper.getInstance().size2tls(b.length),
b
);
}
headersField = ByteHelper.concat(
headersField,
new byte[] {
(byte)0x05 // Its-aid
},
b
);
byte[] headersFieldLength = SecurityHelper.getInstance().size2tls(headersField.length);
System.out.println("GnPort.buildToBeSignedData: headersField=" + ByteHelper.byteArrayToString(headersField));
byte[] toBeSignedData = ByteHelper.concat(
new byte[] { // SecuredMessage version
(byte)0x02 // version
200,23 → 218,23
new byte[] { (byte)0x43 }, // Signature length
new byte[] { (byte)0x01 } // Signature
);
// System.out.println("GnPort.buildToBeSignedData: toBeSignedData=" + ByteHelper.byteArrayToString(toBeSignedData));
System.out.println("GnPort.buildToBeSignedData: toBeSignedData=" + ByteHelper.byteArrayToString(toBeSignedData));
return toBeSignedData;
}
private byte[] signSecuredMessage(final byte[] p_toBeSignedData) {
// System.out.println("GnPort.signSecuredMessage: toBeSignedData: " + ByteHelper.byteArrayToString(p_toBeSignedData));
System.out.println("GnPort.signSecuredMessage: toBeSignedData: " + ByteHelper.byteArrayToString(p_toBeSignedData));
// Calculate the hash
byte[] hash = CryptoLib.hashWithSha256(p_toBeSignedData);
// System.out.println("GnPort.signSecuredMessage: hash=" + ByteHelper.byteArrayToString(hash));
System.out.println("GnPort.signSecuredMessage: hash=" + ByteHelper.byteArrayToString(hash));
byte[] securedBeaconHeader = null;
// Signed the hash
byte[] signatureBytes;
try {
signatureBytes = CryptoLib.signWithEcdsaNistp256WithSha256(hash, management.getSigningPrivateKey());
// System.out.println("GnPort.signSecuredMessage: signatureBytes=" + ByteHelper.byteArrayToString(signatureBytes));
System.out.println("GnPort.signSecuredMessage: signatureBytes=" + ByteHelper.byteArrayToString(signatureBytes));
// Add signature
securedBeaconHeader = ByteHelper.concat(
p_toBeSignedData,
227,7 → 245,13
ByteHelper.extract(signatureBytes, 2, signatureBytes.length - 2)
);
// System.out.println("<<< GnPort.signSecuredMessage: sendBeacon: " + ByteHelper.byteArrayToString(securedBeaconHeader));
/* boolean result = CryptoLib.verifyWithEcdsaNistp256WithSha256(p_toBeSignedData, signatureBytes, management.getSigningPublicKeyX(), management.getSigningPublicKeyY());
System.out.println("GnPort.signSecuredMessage: Verify signature: pubX" + ByteHelper.byteArrayToString(management.getSigningPublicKeyX()));
System.out.println("GnPort.signSecuredMessage: Verify signature: pubY" + ByteHelper.byteArrayToString(management.getSigningPublicKeyY()));
System.out.println("GnPort.signSecuredMessage: Verify signature: " + new Boolean(result));*/
System.out.println("<<< GnPort.signSecuredMessage: sendBeacon: " + ByteHelper.byteArrayToString(securedBeaconHeader));
return securedBeaconHeader;
} catch (Exception e) {
e.printStackTrace();
241,8 → 265,9
*/
@Override
public boolean send(byte[] message) {
System.out.println(">>> GnPort.send: " + ByteHelper.byteArrayToString(message));
HashMap<String, Object> params = new HashMap<String, Object>();
// ByteHelper.dump(">>> GnPort.send", message);
byte[] destMacAddress = ByteHelper.extract(message, message.length - 6, 6);
message = ByteHelper.extract(message, 0, message.length - 6);
250,7 → 275,9
if (management.isSecuredModeSet()) { // Secure mode disabled
message = createSecuredMessage(message);
}
// ByteHelper.dump("GnPort.send", message);
System.out.println("\n\n");
return send(message, params);
}
259,7 → 286,7
*/
@Override
public void receive(byte[] message, Map<String, Object> lowerInfo) {
// System.out.println(">>> GnPort.receive: " + ByteHelper.byteArrayToString(message));
System.out.println(">>> GnPort.receive: " + ByteHelper.byteArrayToString(message));
byte[] basicHdr = new byte[4];
System.arraycopy(message, 0, basicHdr, 0, 4);
266,7 → 293,7
int headerType = -1;
int headerSubType = -1;
byte[] sopv = new byte[24];
if (!management.isSecuredModeSet()) { // Secure mode disabled
if ((basicHdr[0] & 0x0f) == 0x01) { // Common header - Secure mode disabled
byte[] commonHdr = new byte[8];
System.arraycopy(message, 4, commonHdr, 0, 8);
byte[] htHst = new byte[1];
279,70 → 306,34
sopvPos += 4;
}
System.arraycopy(message, sopvPos, sopv, 0, 24);
} else {
if ((basicHdr[0] & 0x0f) == 0x02) { // Secured tag
int offset = basicHdr.length + 1; // Skip version
int signerInfoTypeIndex = 0;
// Extract Header length (IntX type)
if ((message[offset] & 0x80) == 0x80) { // Integer >= 128
byte msb = message[offset]; // TODO Create a method decodeIntX
byte bit;
byte byteLen = 1;
do {
bit = (byte) ((byte) (msb << byteLen++) & 0x80);
} while (bit != 0x00);
// Set the IntX length
byte[] newBuf = ByteHelper.extract(message, offset, byteLen);
// Remove the length from the real integer value
newBuf[0] &= (byte)(Math.pow(2.0, 8 - byteLen + 1) - 1);
signerInfoTypeIndex = offset + byteLen;
offset += byteLen + ByteHelper.byteArrayToInt(newBuf);
} else {
signerInfoTypeIndex = offset + 1;
offset += message[offset] + 1;
}
offset += 1; // Skip Payload Type
// Extract Data Payload length (IntX type)
if ((message[offset] & 0x80) == 0x80) { // Integer >= 128
byte msb = message[offset];
byte bit;
byte byteLen = 1;
do {
bit = (byte) ((byte) (msb << byteLen++) & 0x80);
} while (bit != 0x00);
offset += byteLen;
} else {
offset +=1;
}
// Sanity check: Verify SignerInfo field
if (
((message[signerInfoTypeIndex] & 0x80) != 0x80) || // SignerInfo Type: certificate digest with ecdsap256 (1)
(
(message[signerInfoTypeIndex + 1] != 0x01) && // SignerInfo Type: certificate digest with ecdsap256 (1)
(message[signerInfoTypeIndex + 1] != 0x02) && // SignerInfo Type: certificate (2)
(message[signerInfoTypeIndex + 1] != 0x03) // SignerInfo Type: certificate chain (3)
)
) {
// Drop it
return;
}
} else if ((basicHdr[0] & 0x0f) == 0x02) { // Secured tag
byte[] payload = SecurityHelper.getInstance().checkSecuredProfileAndExtractPayload(message, basicHdr.length, management.isEnforceSecuredModeSet(), management.getItsAidOther());
if (payload != null) {
// System.out.println("GnPort.receive: payload=" + ByteHelper.byteArrayToString(payload));
byte[] commonHdr = new byte[8];
System.arraycopy(message, offset, commonHdr, 0, 8);
System.arraycopy(payload, 0, commonHdr, 0, 8);
// System.out.println("GnPort.receive: commonHdr=" + ByteHelper.byteArrayToString(commonHdr));
byte[] htHst = new byte[1];
System.arraycopy(commonHdr, 1, htHst, 0, 1);
headerType = (int)(htHst[0] >> 4);
headerSubType = (int)(htHst[0] & 0x000000000F);
// Update LPV table
int sopvPos = offset + commonHdr.length;
int sopvPos = commonHdr.length;
if(headerType != HT_BEACON && !(headerType == HT_TSB && headerSubType == HST_SHB) ) {
sopvPos += 4;
}
System.arraycopy(message, sopvPos, sopv, 0, 24);
System.arraycopy(payload, sopvPos, sopv, 0, 24);
} else {
// Drop it
System.err.println("GnPort.receive: Invalid packet");
return;
}
} else {
// Drop it
System.err.println("GnPort.receive: Invalid basic header type");
return;
}
System.out.println("GnPort.receive: sopv=" + ByteHelper.byteArrayToString(sopv));
byte[] gn = new byte[8];
System.arraycopy(sopv, 0, gn, 0, 8);
369,7 → 360,7
super.receive(msgInd, lowerInfo);
}
}
 
/* (non-Javadoc)
* @see org.etsi.its.adapter.ports.ProtocolPort#dispose()
*/
387,7 → 378,7
}
private byte[] createSecuredMessage(final byte[] message) {
// System.out.println(">>> GnPort.createSecuredMessage:" + ByteHelper.byteArrayToString(message));
System.out.println(">>> GnPort.createSecuredMessage: " + ByteHelper.byteArrayToString(message));
// Extract and update the basicHeader
byte[] basicHdr = ByteHelper.extract(message, 0, 4);
397,11 → 388,11
// Set nextHeader to secured
basicHdr[0] &= 0xFE;
basicHdr[0] |= 0x02;
// System.out.println("GnPort.createSecuredMessage: basicHdr=" + ByteHelper.byteArrayToString(basicHdr));
System.out.println("GnPort.createSecuredMessage: basicHdr=" + ByteHelper.byteArrayToString(basicHdr));
// Extract and update the basicHeader
byte[] commonHdr = ByteHelper.extract(message, 4, 8);
// System.out.println("GnPort.createSecuredMessage: commonHdr=" + ByteHelper.byteArrayToString(commonHdr));
System.out.println("GnPort.createSecuredMessage: commonHdr=" + ByteHelper.byteArrayToString(commonHdr));
// Extract SecuredMessage payload
byte[] securedPayload = ByteHelper.extract(message, 4, message.length - 4);
417,7 → 408,7
(byte)0x80, // signerInfo
(byte)0x01 // Certificate digest with ecdsap256
},
management.getAtCertificateDigest(), // Hashed8
management.getAtCertificateDigest(), // HashedId8
new byte[] {
(byte)0x00, // generationTime
},
424,16 → 415,12
generationTime // Time64 value
)
);
if ((commonHdr[0] & 0xF0) == 0x00) { // Next header = Any
// Nothing to do
} else if ((commonHdr[0] & 0xF0) == 0x10) { // Next header = Btp-A
if ((commonHdr[0] & 0xF0) == 0x10) { // Next header = Btp-A
headersField = ByteHelper.concat(
headersField,
new byte[] {
(byte)0x05, // its-aid
(byte)0xC0,
(byte)0x40,
(byte)0x80 // 16512 = CAM
(byte)0x24 // 26 = CAM
}
);
} else if ((commonHdr[0] & 0xF0) == 0x20) { // Next header = Btp-B
447,11 → 434,34
new byte[] { (byte)0x00, (byte)0x00 }, // Elevation
new byte[] {
(byte)0x05, // its-aid
(byte)0xC0,
(byte)0x40,
(byte)0x81 // 16513 = DENM
(byte)0x25 // 27 = DENM
}
);
} else { // Add Its-Aid for Other profile
int itsAid = management.getItsAidOther();
byte[] b;
if (itsAid < 128) {
b = new byte[] { (byte)itsAid };
} else if (itsAid < Short.MAX_VALUE) {
b = ByteHelper.intToByteArray(itsAid, Short.SIZE / Byte.SIZE);
b = ByteHelper.concat(
SecurityHelper.getInstance().size2tls(b.length),
b
);
} else {
b = ByteHelper.intToByteArray(itsAid, Integer.SIZE / Integer.SIZE);
b = ByteHelper.concat(
SecurityHelper.getInstance().size2tls(b.length),
b
);
}
headersField = ByteHelper.concat(
headersField,
new byte[] {
(byte)0x05 // Its-aid
},
b
);
}
byte[] toBeSignedData = ByteHelper.concat(
new byte[] { // SecuredMessage version
464,16 → 474,19
(byte)payloadLength, // Data payload length
},
securedPayload,
new byte[] { (byte)0x01 } // Signature
new byte[] { (byte)0x01 }, // Signature
new byte[] { (byte)0x43 } // Signature length
);
// System.out.println("GnPort.createSecuredMessage: toBeSignedData=" + ByteHelper.byteArrayToString(toBeSignedData));
System.out.println("GnPort.createSecuredMessage: toBeSignedData=" + ByteHelper.byteArrayToString(toBeSignedData));
byte[] toBeSent = null;
try {
// Calculate the hash
byte[] hash = CryptoLib.hashWithSha256(toBeSignedData);
System.out.println("GnPort.createSecuredMessage: hash=" + ByteHelper.byteArrayToString(hash));
// Signed the hash
byte[] signatureBytes = CryptoLib.signWithEcdsaNistp256WithSha256(hash, management.getSigningPrivateKey());
System.out.println("GnPort.createSecuredMessage: signatureBytes=" + ByteHelper.byteArrayToString(signatureBytes));
// Add signature
toBeSent = ByteHelper.concat(
basicHdr,
485,7 → 498,8
e.printStackTrace();
}
// System.out.println("GnPort.createSecuredMessage: toBeSent=" + ByteHelper.byteArrayToString(toBeSent));
System.out.println("GnPort.createSecuredMessage: toBeSent=" + ByteHelper.byteArrayToString(toBeSent));
System.out.println("\n\n");
return toBeSent;
}
/trunk/javasrc/adapter/org/etsi/its/adapter/ports/MapSpatPort.java
0,0 → 1,66
package org.etsi.its.adapter.ports;
 
import java.util.HashMap;
import java.util.Map;
 
import org.etsi.common.ByteHelper;
import org.etsi.its.adapter.layers.BtpLayer;
import org.etsi.its.adapter.layers.GnLayer;
 
public class MapSpatPort extends ProtocolPort {
 
/**
* Constructor
* @param portName Name of the port
* @param componentName Name of the component owning this port instance
* @param lowerStackDesc Description of the port's lower stack in the form "Layer/Layer/Layer/..."
* @param linkLayerAddress Link-layer address to be used by this port as source address (null if not applicable)
*/
public MapSpatPort(String portName, String componentName, String lowerStackDesc, String linkLayerAddress) {
super(portName, componentName, lowerStackDesc, linkLayerAddress);
}
/* (non-Javadoc)
* @see org.etsi.its.adapter.ports.ProtocolPort#receive(byte[], java.util.Map)
*/
@Override
public void receive(byte[] message, Map<String, Object> lowerInfo) {
// Encode with CAM indication header
byte[] msgInd = ByteHelper.concat(
message,
new byte[] { (byte) lowerInfo.get(GnLayer.GN_NEXTHEADER) },
ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_TYPE), 1),
ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_SUBTYPE), 1),
ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_LIFETIME), Integer.SIZE / Byte.SIZE),
ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_TRAFFICCLASS), 1),
(byte[]) lowerInfo.get(BtpLayer.BTP_DSTPORT),
(byte[]) lowerInfo.get(BtpLayer.BTP_DSTPORTINFO)
);
super.receive(msgInd, lowerInfo);
}
/* (non-Javadoc)
* @see org.etsi.its.adapter.ports.IPort#send(byte[])
*/
@Override
public boolean send(byte[] message) {
HashMap<String, Object> params = new HashMap<String, Object>();
params.put(BtpLayer.BTP_TYPE, BtpLayer.TYPE_B);
if (message[1] == 0x5) {
params.put(BtpLayer.BTP_DSTPORT, 2003);
}
else {
params.put(BtpLayer.BTP_DSTPORT, 2004);
}
params.put(BtpLayer.BTP_SRCPORT, 500);
params.put(GnLayer.GN_TYPE, GnLayer.HT_TSB);
params.put(GnLayer.GN_SUBTYPE, GnLayer.HST_MULTIHOP);
params.put(GnLayer.GN_LATITUDE, ByteHelper.byteArrayToLong(management.getLatitude()));
params.put(GnLayer.GN_LONGITUDE, ByteHelper.byteArrayToLong(management.getLongitude()));
params.put(GnLayer.GN_NEXTHEADER, "BTP-B");
return send(message, params);
}
} // End of class MapSpatPort
 
Property changes:
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+"URL Id"
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: javasrc/adapter/org/etsi/its/adapter/ports/ProtocolPortFactory.java
===================================================================
--- javasrc/adapter/org/etsi/its/adapter/ports/ProtocolPortFactory.java (revision 2229)
+++ javasrc/adapter/org/etsi/its/adapter/ports/ProtocolPortFactory.java (revision 2230)
@@ -34,10 +34,13 @@
// Register the ports - Refer to TTCN-3 component LibIts_TestSystem.ItsSystem for ports name
ports.put("camPort", CamPort.class);
ports.put("denmPort", DenmPort.class);
+ ports.put("mapSpatPort", MapSpatPort.class);
ports.put("btpPort", BtpPort.class);
ports.put("geoNetworkingPort", GnPort.class);
ports.put("ipv6OverGeoNetworkingPort", Gn6Port.class);
- ports.put("v2gPort", V2GPort.class);
+ try {
+ ports.put("v2gPort", Class.forName( "org.etsi.its.adapter.ports.V2GPort" ).asSubclass(ProtocolPort.class));
+ } catch( ClassNotFoundException e ) {}
}
/**
@@ -58,16 +61,17 @@
*/
public ProtocolPort createPort(String portName, String componentName, String lowerStackDesc, String linkLayerAddress) {
// System.out.println(">>> ProtocolPortFactory.createPort: " + portName + ", " + componentName + ", " + lowerStackDesc + ", " + linkLayerAddress);
+
ProtocolPort port = null;
Class<?>[] ctorParams = {portName.getClass(), componentName.getClass(), lowerStackDesc.getClass(), linkLayerAddress.getClass()};
try {
Class<? extends ProtocolPort> cls = ports.get(portName);
-
+
if (cls == null) {
throw new RuntimeException("No class registered under " + portName);
}
-
+
Constructor<? extends ProtocolPort> ctor = cls.getConstructor(ctorParams);
port = ctor.newInstance(portName, componentName, lowerStackDesc, linkLayerAddress);
} catch (Exception ex) {
/trunk/javasrc/adapter/org/etsi/its/adapter/ports/UpperTesterPort.java
8,7 → 8,10
*/
package org.etsi.its.adapter.ports;
 
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
17,9 → 20,13
import java.util.regex.Pattern;
 
import org.etsi.adapter.TERFactory;
import org.etsi.certificates.CertificatesIOFactory;
import org.etsi.common.ByteHelper;
import org.etsi.its.adapter.SecurityHelper;
import org.etsi.ttcn.tci.CharstringValue;
 
import de.fraunhofer.sit.c2x.CryptoLib;
 
/** This class implements behaviour for Upper Tester port
* The Upper tester entity in the SUT enables triggering Protocol functionalities by simulating primitives from
* application or LDM entities
27,10 → 34,38
* resulting from upper layer primitives
*/
public class UpperTesterPort extends AdapterPort implements IPort, IObservable {
 
private static final String SETTINGS_PATTERN = "(\\S+)\\:(\\d+)";
 
private static final String CertificateId = "CERT_UT";
/**
* Secured mode status
*/
private String _utSecuredMode = null;
/**
* Secured root path to access certificates & private keys
*/
private String _utSecuredRootPath = null;
/**
* Secured configuration identifier
*/
private String _utSecuredConfiId = null;
/**
* Secured mode status
*/
private boolean _isSecuredMode = false;
private ByteArrayOutputStream _certificate;
private ByteArrayOutputStream _hashedId8;
private ByteArrayOutputStream _signingPrivateKey;
/**
* Constructor
* @param portName Name of the port
* @param componentName Name of the component owning this port instance
41,6 → 76,9
super(portName, componentName);
 
// UDP connection parameters
_utSecuredMode = ((CharstringValue)TERFactory.getInstance().getTaParameter("UtSecuredMode")).getString();
_utSecuredRootPath = ((CharstringValue)TERFactory.getInstance().getTaParameter("TsSecuredRootPath")).getString();
_utSecuredConfiId = ((CharstringValue)TERFactory.getInstance().getTaParameter("TsSecuredConfiId")).getString();
String settings = ((CharstringValue)TERFactory.getInstance().getTaParameter("UpperTesterSettings")).getString();
Matcher matcher = settingsPattern.matcher(settings);
if (matcher.find()) {
51,13 → 89,30
}
utPeerPort = Integer.parseInt(matcher.group(2));
} else {
// FIXME
}
if ((_utSecuredMode != null) && _utSecuredMode.equals("true")) {
// Load certificate
_certificate = new ByteArrayOutputStream();
CertificatesIOFactory.getInstance().loadCertificates(_utSecuredRootPath, _utSecuredConfiId);
if (CertificatesIOFactory.getInstance().readCertificate(CertificateId, _certificate)) {
// System.out.println("UpperTesterPort.UpperTesterPort: _certificate=" + ByteHelper.byteArrayToString(_certificate.toByteArray()));
_hashedId8 = new ByteArrayOutputStream();
_signingPrivateKey = new ByteArrayOutputStream();
CertificatesIOFactory.getInstance().readCertificateDigest(CertificateId, _hashedId8);
// System.out.println("UpperTesterPort.UpperTesterPort: _hashedId8=" + ByteHelper.byteArrayToString(_hashedId8.toByteArray()));
CertificatesIOFactory.getInstance().readSigningKey(CertificateId, _signingPrivateKey);
// System.out.println("UpperTesterPort.UpperTesterPort: _signingPrivateKey=" + ByteHelper.byteArrayToString(_signingPrivateKey.toByteArray()));
_isSecuredMode = true;
}
}
// UDP socket for communication with UT
running = true;
 
// UDP socket for communication with UT
try {
utSocket = new DatagramSocket();
utSocket = new DatagramSocket();
utThread = new UdpThread(utSocket);
utThread.start();
} catch (Exception e) {
69,7 → 124,7
public boolean send(final byte[] message) {
/* FIXME: For debug only. Uncomment if no UT
try {
Thread.sleep(5000);
Thread.sleep(500);
} catch (InterruptedException e) {
// Do nothing, we do not care
}
80,8 → 135,24
case 0x00:
rsp = new byte[]{(byte)0x01, (byte)0x01};
break;
case 0x02: // UtChangePosition
// No break;
case 0x03:
// No break;
case 0x04:
// No break;
case 0x05:
rsp = new byte[]{(byte)0x24, (byte)0x01};
break;
case 0x10: // UtDenmTrigger
rsp = new byte[]{(byte)0x11, (byte)0x01};
break;
default:
rsp = new byte[]{(byte)0x41, (byte)0x01};
if ((message[0] >= 0x30) && (message[0] <= 0x3F)) { // UtCamTrigger_xxx
rsp = new byte[]{(byte)0x21, (byte)0x01};
} else {
rsp = new byte[]{(byte)0x41, (byte)0x01};
}
break;
}
notifyObservers(new PortEvent(rsp, getPortName(), getComponentName()));
88,14 → 159,27
if(true)
return true;
*/
DatagramPacket packet = new DatagramPacket(message, message.length, utPeerAddress, utPeerPort);
try {
ByteArrayOutputStream dataToSent = new ByteArrayOutputStream();
dataToSent.write(message);
if (_isSecuredMode) { // Send a secured message
// Build the secured message
ByteArrayOutputStream toBeSignedData = new ByteArrayOutputStream();
buildToBeSignedData(dataToSent, toBeSignedData);
// Sign data
dataToSent = new ByteArrayOutputStream();
signSecuredMessage(toBeSignedData, dataToSent);
}
byte[] output = dataToSent.toByteArray();
DatagramPacket packet = new DatagramPacket(output, output.length, utPeerAddress, utPeerPort);
utSocket.send(packet);
} catch (IOException e) {
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
return false;
}
 
@Override
143,15 → 227,385
// receive packet
DatagramPacket packet = new DatagramPacket(buf, buf.length);
taSocket.receive(packet);
 
if (_isSecuredMode) { // Secure mode enabled
byte[] message = ByteHelper.extract(packet.getData(), packet.getOffset(), packet.getLength());
byte[] payload = checkSecuredOtherProfileAndExtractPayload(message);
if (payload != null) { // Notify received payload
setChanged();
notifyObservers(new PortEvent(payload, getPortName(), getComponentName()));
} // else, packet was dropped
} else { // Notify received payload
setChanged();
notifyObservers(new PortEvent(ByteHelper.extract(packet.getData(), packet.getOffset(), packet.getLength()), getPortName(), getComponentName()));
}
} catch (IOException e) {
running = false;
}
}
taSocket.close();
}
}
} // End of class UdpThread
private byte[] checkSecuredOtherProfileAndExtractPayload(final byte[] p_message) {
System.out.println(">>> UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: " + ByteHelper.byteArrayToString(p_message));
ByteHelper.dump("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: ", p_message);
ByteArrayInputStream decvalue = new ByteArrayInputStream(p_message);
// Check version
if (decvalue.read() != 2) {
// Drop it
System.err.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: Drop packet - Wrong version number");
return null;
}
// Extract header fields length and header fields
long headerFieldsLength = SecurityHelper.getInstance().tls2size(decvalue);
System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: headerFieldsLength:" + headerFieldsLength);
byte[] headerFields = new byte[(int) headerFieldsLength];
decvalue.read(headerFields, 0, (int) headerFieldsLength);
ByteArrayOutputStream certificateKeys = new ByteArrayOutputStream();
if (!checkHeaderfields(headerFields, certificateKeys)) {
// Drop it
System.err.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: Drop packet - Wrong Headerfields");
return null;
}
byte[] aaSigningPublicKeyX, aaSigningPublicKeyY;
aaSigningPublicKeyX = ByteHelper.extract(certificateKeys.toByteArray(), 0, 32);
System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: aaSigningPublicKeyX:" + ByteHelper.byteArrayToString(aaSigningPublicKeyX));
aaSigningPublicKeyY = ByteHelper.extract(certificateKeys.toByteArray(), 32, 32);
System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: aaSigningPublicKeyX:" + ByteHelper.byteArrayToString(aaSigningPublicKeyX));
System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: headerFields:" + ByteHelper.byteArrayToString(headerFields));
// Extract payload, decvalue is updated with the payload
if (decvalue.read() != 1) {
// Drop it
System.err.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: Drop packet - Wrong Payload type");
return null;
}
long payloadLength = SecurityHelper.getInstance().tls2size(decvalue);
System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: payloadLength:" + payloadLength);
byte[] payload = new byte[(int) payloadLength];
decvalue.read(payload, 0, (int) payloadLength);
System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: payload:" + ByteHelper.byteArrayToString(payload));
// Extract Secure Trailer
long secureTrailerLength = SecurityHelper.getInstance().tls2size(decvalue);
byte[] secureTrailer = new byte[(int) secureTrailerLength];
decvalue.read(secureTrailer, 0, secureTrailer.length);
ByteArrayOutputStream signature = new ByteArrayOutputStream();
if (!extractMessageSignature(secureTrailer, signature)) {
// Drop it
System.err.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: Drop packet - Wrong Signatures");
return null;
}
System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: signature:" + ByteHelper.byteArrayToString(signature.toByteArray()));
// Build signed data
byte[] toBeVerifiedData = ByteHelper.extract(
p_message,
0,
p_message.length - (int)(secureTrailerLength - 1 /* Exclude signature structure but keep signature type and signature length */)
);
System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload:" + ByteHelper.byteArrayToString(toBeVerifiedData));
// Calculate Digest digest from the buffer toBeVerifiedData
byte[] hash = CryptoLib.hashWithSha256(toBeVerifiedData);
boolean result;
try {
result = CryptoLib.verifyWithEcdsaNistp256WithSha256(
hash,
signature.toByteArray(),
aaSigningPublicKeyX,
aaSigningPublicKeyY
);
System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: Verify signature: " + new Boolean(result));
if (!result) {
// Drop packet
System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: toBeVerifiedData :" + ByteHelper.byteArrayToString(toBeVerifiedData));
System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: Hash :" + ByteHelper.byteArrayToString(hash));
System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: signature :" + ByteHelper.byteArrayToString(signature.toByteArray()));
System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: aaSigningPublicKeyX:" + ByteHelper.byteArrayToString(aaSigningPublicKeyX));
System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: aaSigningPublicKeyY:" + ByteHelper.byteArrayToString(aaSigningPublicKeyY));
System.err.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: Drop packet - Invalid signature");
return null;
}
return payload;
} catch (Exception e) {
e.printStackTrace();
}
// Drop packet
return null;
}
}
private boolean checkHeaderfields(byte[] p_headerfields, final ByteArrayOutputStream p_keys) { // TODO Common with GnLayer and UpperTester, to be grouped
System.out.println(">>> UpperTesterPort.checkHeaderfields: " + ByteHelper.byteArrayToString(p_headerfields));
// Sanity check
if (p_headerfields.length == 0) {
return false;
}
// Extract digest or certificate
int signerInfoTypeIndex = 0;
if (
((p_headerfields[signerInfoTypeIndex++] & 0x80) != 0x80) || // SignerInfo Type: certificate digest with ecdsap256 (1)
(p_headerfields[signerInfoTypeIndex++] != 0x02) // SignerInfo Type: certificate (2)
) {
// Drop it
System.err.println("UpperTesterPort.checkHeaderfields: Drop packet - Certificate");
return false;
}
// Extract certificate because of it is an Other message profile
byte[] certificate = decodeCertificate(p_headerfields, signerInfoTypeIndex, p_keys);
signerInfoTypeIndex += certificate.length;
System.out.println("UpperTesterPort.checkHeaderfields: Certificate:" + ByteHelper.byteArrayToString(certificate));
// TODO check other fields
return true;
}
private byte[] decodeCertificate(final byte[] p_headerfields, final int p_offset, final ByteArrayOutputStream p_keys) { // TODO Common with GnLayer and UpperTester, to be grouped
System.out.println("UpperTesterPort.decodeCertificate");
ByteArrayInputStream headerfields = new ByteArrayInputStream(p_headerfields, p_offset, p_headerfields.length - p_offset);
ByteArrayOutputStream cert = new ByteArrayOutputStream(); // FIXME To be removed
try {
// Version
cert.write((byte)headerfields.read());
if (cert.toByteArray()[0] != 0x02) {
System.out.println("UpperTesterPort.decodeCertificate: Wrong version number");
return null;
}
// SignerInfo type
byte signerInfoType = (byte)headerfields.read();
cert.write(signerInfoType);
switch (signerInfoType) {
case 0x01:
byte[] digest = new byte[8];
headerfields.read(digest, 0, digest.length);
cert.write(digest);
break;
// FIXME To be continued
} // End of 'switch' statement
// SubjectInfo type
byte subjectInfoType = (byte)headerfields.read();
cert.write(subjectInfoType);
long length = SecurityHelper.getInstance().tls2size(headerfields);
if (length != 0) {
// FIXME To be continued
} else {
cert.write(0x00);
}
// Subject Attributes length
length = SecurityHelper.getInstance().tls2size(headerfields);
byte[] b = SecurityHelper.getInstance().size2tls((int) length);
cert.write(b);
// Subject Attributes
b = new byte[(int) length];
headerfields.read(b, 0, b.length);
cert.write(b);
int offset = 0;
if (b[offset++] == 0x00) { // Subject Attribute: verification key (0)
if (b[offset++] == 0x00) { // Public Key Alg: ecdsa nistp256 with sha256 (0)
if (b[offset++] == 0x04) { // ECC Point Type: uncompressed (4)
p_keys.write(b, offset, 32);
offset += 32;
p_keys.write(b, offset, 32);
} // FIXME To be continued
} // FIXME To be continued
} // FIXME To be continued
// Validity Restriction
length = SecurityHelper.getInstance().tls2size(headerfields);
if (length != 0) {
b = SecurityHelper.getInstance().size2tls((int) length);
cert.write(b);
b = new byte[(int) length];
headerfields.read(b, 0, b.length);
cert.write(b);
} else {
cert.write((byte)0x00);
} // TODO Process Validity Restriction
// // Geographical region
// length = SecurityHelper.getInstance().tls2size(buf);
// if (length != 0) {
// b = SecurityHelper.getInstance().size2tls((int) length);
// cert.write(b);
// b = new byte[(int) length];
// buf.read(b, 0, b.length);
// cert.write(b);
// } else {
// cert.write((byte)0x00);
// } // TODO Process Geographical region
// Signature
byte publicKeyAlg = (byte)headerfields.read();
cert.write(publicKeyAlg);
switch (publicKeyAlg) {
case 0x00: // ecdsa nistp256 with sha256
byte eccPointType = (byte)headerfields.read();
cert.write(eccPointType);
switch (eccPointType) {
case 0x00: // ECC Point Type: x-coordinate only
byte[] key = new byte[64];
headerfields.read(key, 0, key.length);
cert.write(key);
break;
} // End of 'switch' statement
break;
} // End of 'switch' statement
// TODO Check certificate signature
return cert.toByteArray();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("UpperTesterPort.decodeCertificate: Unsupported certificate");
return null;
}
private boolean extractMessageSignature(final byte[] p_secureTrailer, final ByteArrayOutputStream p_signature) { // TODO Common with GnLayer and UpperTester, to be grouped
System.out.println(">>> UpperTesterPort.extractMessageSignature: " + ByteHelper.byteArrayToString(p_secureTrailer));
// Sanity check
if (p_secureTrailer.length == 0) {
return false;
}
// Extract digest or certificate
int secureTrailerIndex = 0;
if (p_secureTrailer[secureTrailerIndex++] == 0x01) { // Trailer Type: signature (1)
if (p_secureTrailer[secureTrailerIndex++] == 0x00) { // Public Key Alg: ecdsa nistp256 with sha256 (0)
if (p_secureTrailer[secureTrailerIndex++] == 0x02) { // ECC Point Type: compressed lsb y-0 (2)
if (p_secureTrailer.length == (3 + 2 * 32)) {
// Build the signature vector
try {
p_signature.write(new byte[] { (byte)0x00, (byte)0x00 });
p_signature.write(ByteHelper.extract(p_secureTrailer, 3, 64));
System.out.println("UpperTesterPort.extractMessageSignature: true");
return true;
} catch (IOException e) {
e.printStackTrace();
}
} // FIXME To be continued
} // FIXME To be continued
} // FIXME To be continued
} // FIXME To be continued
// Else, drop it
System.err.println("UpperTesterPort.extractMessageSignature: Drop packet - Wrong signature");
return false;
}
private void buildToBeSignedData(final ByteArrayOutputStream p_securedData, final ByteArrayOutputStream p_toBeSignedData) throws IOException {
// Build the SignerInfo field
byte[] signerInfo = null;
signerInfo = ByteHelper.concat(
new byte[] {
(byte)0x80, // signerInfo
(byte)0x02 // Certificate
},
_certificate.toByteArray() // Certificate value
);
// For debug purpose Extract signature from secured 'Other message'
byte[] aaSigningPublicKeyX = ByteHelper.extract(
_certificate.toByteArray(),
16, // Set position at the beginning of the public keys
32
);
// System.out.println("UpperTesterPort.DispatchMessage: aaSigningPublicKeyX:" + ByteHelper.byteArrayToString(aaSigningPublicKeyX));
byte[] aaSigningPublicKeyY = ByteHelper.extract(
_certificate.toByteArray(),
16 + 32,
32
);
// System.out.println("UpperTesterPort.DispatchMessage: aaSigningPublicKeyY:" + ByteHelper.byteArrayToString(aaSigningPublicKeyY));
// Build the generation time value
byte[] generationTime = ByteHelper.longToByteArray(
System.currentTimeMillis(),
Long.SIZE / Byte.SIZE
); // In microseconds
// System.out.println("UpperTesterPort.buildToBeSignedData: generationTime=" + ByteHelper.byteArrayToString(generationTime));
byte[] headersField = ByteHelper.concat(
ByteHelper.concat( // SecuredMessage HeaderFields
signerInfo, // signerInfo
new byte[] {
(byte)0x00, // generationTime
},
generationTime // Time64 value
)
);
// Add Its-Aid for Other profile
int itsAid = 0x38; // FIXME To be refined
byte[] b;
if (itsAid < 128) {
b = new byte[] { (byte)itsAid };
} else if (itsAid < Short.MAX_VALUE) {
b = ByteHelper.intToByteArray(itsAid, Short.SIZE / Byte.SIZE);
b = ByteHelper.concat(
SecurityHelper.getInstance().size2tls(b.length),
b
);
} else {
b = ByteHelper.intToByteArray(itsAid, Integer.SIZE / Integer.SIZE);
b = ByteHelper.concat(
SecurityHelper.getInstance().size2tls(b.length),
b
);
}
headersField = ByteHelper.concat(
headersField,
new byte[] {
(byte)0x05 // Its-aid
},
b
);
byte[] headersFieldLength = SecurityHelper.getInstance().size2tls(headersField.length);
// System.out.println("UpperTesterPort.buildToBeSignedData: headersField=" + ByteHelper.byteArrayToString(headersField));
byte[] payload = p_securedData.toByteArray();
byte[] toBeSignedData = ByteHelper.concat(
new byte[] { // SecuredMessage version
(byte)0x02 // version
},
headersFieldLength, // HeadersField length
headersField, // HeaderFields
new byte[] { // SecuredMessage Payloads
(byte)0x01, // Secured payload type: signed (1)
(byte)payload.length // Data payload length
},
payload, // End of SecuredMessage Payloads
new byte[] { (byte)0x43 }, // Signature length
new byte[] { (byte)0x01 } // Signature
);
// System.out.println("UpperTesterPort.buildToBeSignedData: toBeSignedData=" + ByteHelper.byteArrayToString(toBeSignedData));
p_toBeSignedData.write(toBeSignedData);
}
private void signSecuredMessage(final ByteArrayOutputStream p_toBeSignedData, final ByteArrayOutputStream p_securedMessage) throws Exception {
// System.out.println("UpperTesterPort.signSecuredMessage: toBeSignedData: " + ByteHelper.byteArrayToString(p_toBeSignedData.toByteArray()));
// Calculate the hash
byte[] hash = CryptoLib.hashWithSha256(p_toBeSignedData.toByteArray());
// System.out.println("UpperTesterPort.signSecuredMessage: hash=" + ByteHelper.byteArrayToString(hash));
byte[] securedBeaconHeader = null;
// Signed the hash
byte[] signatureBytes = CryptoLib.signWithEcdsaNistp256WithSha256(hash, new BigInteger(_signingPrivateKey.toByteArray()));
// System.out.println("UpperTesterPort.signSecuredMessage: signatureBytes=" + ByteHelper.byteArrayToString(signatureBytes));
// Add signature
securedBeaconHeader = ByteHelper.concat(
p_toBeSignedData.toByteArray(),
new byte[] {
(byte)0x00, // Public Key Alg: ecdsa nistp256 with sha256 (0)
(byte)0x02 // ECC Point Type: compressed lsb y-0 (2)
}, // Signature header
ByteHelper.extract(signatureBytes, 2, signatureBytes.length - 2)
);
p_securedMessage.write(securedBeaconHeader);
// System.out.println("<<< UpperTesterPort.signSecuredMessage: sendBeacon: " + ByteHelper.byteArrayToString(p_securedMessage.toByteArray()));
}
} // End of class UpperTesterPort
/trunk/javasrc/certificatesio/org/etsi/certificates/Helpers.java
86,14 → 86,16
@Override
public boolean accept(final File p_dirName, final String p_fileName) {
String name = p_fileName.toLowerCase();
if (!p_extension.isEmpty() && !name.endsWith(p_extension)) {
return false;
}
String name = p_fileName.toLowerCase();
// System.out.println("getFileListingNoSort: " + name + " - " + p_extension + " - " + name.endsWith(p_extension));
if (!p_extension.isEmpty() && !name.endsWith(p_extension)) {
return false;
}
if (p_excludedPatterns != null) {
for (String excludePattern : p_excludedPatterns) {
if (name.indexOf(excludePattern) != -1) {
// System.out.println("getFileListingNoSort: exclusion criteria=" + excludePattern);
return false;
}
}
/trunk/javasrc/certificatesio/org/etsi/certificates/io/CertificatesIO.java
10,6 → 10,7
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
22,19 → 23,19
public class CertificatesIO implements ICertificatesIO {
/**
* Relative path for to extract certificates
* Extension file for certificate
*/
private static final String CERTS_PATH = "/certs_store";
private static final String CERT_EXT = "crt";
/**
* Extension file for private keys
* Extension file for digests
*/
private static final String KEYS_EXT = "bin";
private static final String DIGESTS_EXT = "dgs";
/**
* Relative path for to extract private keys
* Excluded files while building the lists of certificates/private keys
*/
private static final String KEYS_PATH = "/priv_keys";
private static final String[] EXCLUDED_PATTERNS = new String[] { /*for debug: */".svn", "._.DS_Store", ".DS_Store"};
/**
* Full path to access certificate files
42,11 → 43,6
private String _fullPathCerts;
/**
* Full path to access key files
*/
private String _fullPathKeys;
/**
* Memory cache for the certificates
*/
private Map<String, byte[]> _cachedCertificates;
66,6 → 62,11
private Map<String, byte[]> _cachedEncryptPrivateKey;
/**
* Set to true if loadCertificates was already called
*/
private boolean _areCertificatesLoaded = false;
/**
* Default constructor
*/
public CertificatesIO() {
83,38 → 84,43
* @return true on success, false otherwise
*/
@Override
public boolean loadCertificates(final String rootDirectory, final String configId) { // E.g. <rootDirectory path>, cfg01
// Initialise the memory caches
unloadCertificates();
public boolean loadCertificates(final String p_rootDirectory, final String p_configId) { // E.g. <rootDirectory path>, cfg01
// System.out.println(">>> CertificatesIO.loadCertificates: " + p_rootDirectory + ", " + p_configId + " - " + _areCertificatesLoaded);
// Sanity check
if (_areCertificatesLoaded) {
return true;
}
// Build full path
if ((rootDirectory == null) || (rootDirectory.length() == 0)) {
if ((p_rootDirectory == null) || (p_rootDirectory.length() == 0)) {
_fullPathCerts = System.getProperty("user.dir").replace("\\", "/");
} else {
_fullPathCerts = rootDirectory.replace("\\", "/");
_fullPathCerts = p_rootDirectory.replace("\\", "/");
}
if (!_fullPathCerts.endsWith("/")) {
_fullPathCerts += "/";
}
if ((configId != null) && (configId.length() != 0)) {
_fullPathCerts += configId.replace('.', '/');
}
_fullPathCerts = _fullPathCerts.toLowerCase();
_fullPathKeys = _fullPathCerts + KEYS_PATH;
_fullPathCerts += CERTS_PATH;
// Check the paths
File keysPath = new File(_fullPathKeys);
if (!keysPath.exists()) {
System.err.println("CertificatesIO.readCertificate: path '" + _fullPathKeys + "' does not found");
return false;
}
File certsPath = new File(_fullPathCerts);
if (!certsPath.exists()) {
System.err.println("CertificatesIO.readCertificate: path '" + _fullPathCerts + "' does not found");
System.err.println("CertificatesIO.loadCertificates: path '" + _fullPathCerts + "' does not found");
return false;
}
return loadMemoryCache(keysPath); // Load certificates and keys and return
_areCertificatesLoaded = loadMemoryCache(certsPath); // Load certificates and keys and return
 
if ((p_configId != null) && (p_configId.length() != 0)) {
String path = new String(_fullPathCerts + "/" + p_configId);
certsPath = new File(path);
if (!certsPath.exists()) {
System.err.println("CertificatesIO.loadCertificates: path '" + path + "' does not found");
return false;
}
loadMemoryCache(certsPath); // Load certificates and keys and return
}
return _areCertificatesLoaded;
}
/**
123,7 → 129,7
*/
@Override
public boolean unloadCertificates() {
_fullPathKeys = null;
_areCertificatesLoaded = false;
_fullPathCerts = null;
_cachedCertificates.clear();
_cachedCertificatesDigest.clear();
142,18 → 148,24
*/
@Override
public boolean readCertificate(final String key, final ByteArrayOutputStream certificate) {
// Sanity check
if (!_cachedCertificates.containsKey(key)) {
System.err.println("CertificatesIO.readCertificate: key '" + key + "' not found");
return false;
// System.out.println(">>> CertificatesIO.readCertificate: " + key);
String certKey;
if (_cachedReverseCertificatesDigest.containsKey(key)) {
certKey = _cachedReverseCertificatesDigest.get(key);
}else{
certKey = key;
}
try {
certificate.write(_cachedCertificates.get(key));
return true;
} catch (IOException e) {
e.printStackTrace();
if (_cachedCertificates.containsKey(certKey)) {
try {
certificate.write(_cachedCertificates.get(certKey));
return true;
} catch (IOException e) {
e.printStackTrace();
}
}else{
System.err.println("CertificatesIO.readCertificate: key '" + key + "' not found");
}
return false;
}
160,19 → 172,19
@Override
public boolean readCertificateDigest(final String certificateId, final ByteArrayOutputStream digest) {
// System.out.println(">>> CertificatesIO.readCertificateDigest: " + certificateId);
// Sanity check
String key = certificateId + ".DIGEST";
if (!_cachedCertificatesDigest.containsKey(key)) {
System.err.println("CertificatesIO.readCertificate: key '" + key + "' not found");
if (!_cachedCertificatesDigest.containsKey(certificateId)) {
System.err.println("CertificatesIO.readCertificateDigest: key '" + certificateId + "' not found");
return false;
}
try {
digest.write(_cachedCertificatesDigest.get(key));
digest.write(_cachedCertificatesDigest.get(certificateId));
return true;
return true;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
179,25 → 191,26
}
/**
* @desc Read the private keys for the specified certificate
* @param keysId the keys identifier
* @param signingPrivateKey the signing private key
* @param encryptPrivateKey the encrypt private key
* @desc Read the signing private key for the specified certificate
* @param keysId the keys identifier
* @param key the signing private key
* @return true on success, false otherwise
*/
@Override
public boolean readPrivateKeys(final String key, final ByteArrayOutputStream signingPrivateKey, final ByteArrayOutputStream encryptPrivateKey) {
// Sanity check
if (!_cachedSigningPrivateKey.containsKey(key) || !_cachedEncryptPrivateKey.containsKey(key)) {
System.err.println("CertificatesIO.readPrivateKeys: key '" + key + "' not found");
return false;
}
public boolean readSigningKey(final String keyName, final ByteArrayOutputStream key) {
// System.out.println(">>> CertificatesIO.readSigningKey: " + keyName);
try {
signingPrivateKey.write(_cachedSigningPrivateKey.get(key));
encryptPrivateKey.write(_cachedEncryptPrivateKey.get(key));
return true;
String certKey;
if (_cachedReverseCertificatesDigest.containsKey(keyName)) {
certKey = _cachedReverseCertificatesDigest.get(keyName);
}else{
certKey = keyName;
}
if (_cachedSigningPrivateKey.containsKey(certKey)) {
key.write(_cachedSigningPrivateKey.get(certKey));
return true;
}
} catch (IOException e) {
e.printStackTrace();
}
205,6 → 218,31
}
/**
* @desc Read the encrypting private key for the specified certificate
* @param keysId the keys identifier
* @param key the signing private key
* @return true on success, false otherwise
*/
@Override
public boolean readEncryptingKey(final String keyName, final ByteArrayOutputStream key) {
String certKey;
try {
if (_cachedReverseCertificatesDigest.containsKey(keyName)) {
certKey = _cachedReverseCertificatesDigest.get(keyName);
}else{
certKey = keyName;
}
if (_cachedEncryptPrivateKey.containsKey(certKey)) {
key.write(_cachedEncryptPrivateKey.get(certKey));
return true;
}
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
/**
* @desc Load certificates based on existing keys file, excluding xxx_at.bin files
* @param p_keysPath path for private key files
* @param p_certsPath Path for certificate files
213,85 → 251,131
private boolean loadMemoryCache(final File p_keysPath) { // E.g. <path>/keys, <path>/certs
// Retrieve the list of the files in the p_keysPath
try {
List<File> files = Helpers.getInstance().getFileListing(p_keysPath, KEYS_EXT, new String[] { "_at", "_aa", /*for debug: */".svn", "._.DS_Store", ".DS_Store"});
List<File> files = Helpers.getInstance().getFileListing(p_keysPath, CERT_EXT, EXCLUDED_PATTERNS);
// Create the memory cache
for (File file : files) {
addItem(file);
try {
addCertItem(file);
}catch(FileNotFoundException e){}
} // End of 'for' statement
return true;
} catch (IOException e) {
e.printStackTrace();
}
 
// load digests
try {
List<File> files = Helpers.getInstance().getFileListing(p_keysPath, DIGESTS_EXT, EXCLUDED_PATTERNS);
// Create the memory cache
for (File file : files) {
try {
addDigestItem(file);
}catch(FileNotFoundException e){}
} // End of 'for' statement
} catch (IOException e) {
e.printStackTrace();
}
return false;
return true;
}
private void addItem(final File p_keysFile) throws FileNotFoundException, IOException {
// Sanity checks
if (p_keysFile.length() != 32) { // FIXME Should have both encrypt and singing keys
private void addDigestItem(final File p_file) throws FileNotFoundException, IOException {
String filename = p_file.getName();
String certName = filename.substring(0, filename.lastIndexOf(".")).toUpperCase();
 
// Load certificate
byte bytes[] = new byte[64];
FileInputStream fs = new FileInputStream(p_file);
int n = fs.read(bytes);
fs.close();
if(n == 32){
// take last 8 bytes
bytes = Arrays.copyOfRange(bytes, 24, 32);
}else if(n >= 64){
bytes = ByteHelper.hexStringToByteArray(new String(bytes).substring(48, 64));
}else if(n >= 16){
bytes = ByteHelper.hexStringToByteArray(new String(bytes).substring(0, 16));
}else if(n == 8){
bytes = Arrays.copyOfRange(bytes, 0, 8);
}else{
System.err.println("CertificatesIO: " + filename + ": wrong digest file length\n");
return;
}
_cachedCertificatesDigest.put(certName, bytes);
// System.out.println("CertificatesIO.addDigestItem: Store digest: " + ByteHelper.byteArrayToString(bytes) + " - " + certName);
}
private void addCertItem(final File p_certFile) throws FileNotFoundException, IOException {
// System.out.println(">>> CertificatesIO.addItem: " + p_certFile);
// Load the keys file name
String filename = p_keysFile.getName().toLowerCase();
String keysFileName = filename.substring(0, filename.indexOf("_ca"));
File caFile = new File(_fullPathCerts + "/" + keysFileName + "_ca.crt");
File aaFile = new File(_fullPathCerts + "/" + keysFileName + "_aa.crt");
File atFile = new File(_fullPathCerts + "/" + keysFileName + "_at.crt");
String filename = p_certFile.getName();
String certName = filename.substring(0, filename.lastIndexOf(".")).toUpperCase();
String key = keysFileName.toUpperCase();
if (!_cachedCertificates.containsKey(key)) {
// Open CA keys file
FileInputStream fsKeys = new FileInputStream(p_keysFile.getCanonicalPath());
// Load keys
byte bytes[] = new byte[(int) p_keysFile.length()];
fsKeys.read(bytes);
_cachedSigningPrivateKey.put(key + ".CA_PRIVATE_KEYS", ByteHelper.extract(bytes, 0, 32));
// FIXME Should have both encrypt and singing keys _cachedEncryptPrivateKey.put(key + ".PRIVATE_KEYS", ByteHelper.extract(bytes, 32, 32));
_cachedEncryptPrivateKey.put(key + ".CA_PRIVATE_KEYS", ByteHelper.extract(bytes, 0, 32));
// Close file stream
fsKeys.close();
// Open CA keys file
fsKeys = new FileInputStream(p_keysFile.getCanonicalPath().toLowerCase().replaceAll("_ca", "_at"));
// Load keys
bytes = new byte[(int) p_keysFile.length()];
fsKeys.read(bytes);
_cachedSigningPrivateKey.put(key + ".AT_PRIVATE_KEYS", ByteHelper.extract(bytes, 0, 32));
// FIXME Should have both encrypt and singing keys _cachedEncryptPrivateKey.put(key + ".PRIVATE_KEYS", ByteHelper.extract(bytes, 32, 32));
_cachedEncryptPrivateKey.put(key + ".AT_PRIVATE_KEYS", ByteHelper.extract(bytes, 0, 32));
// Close file stream
fsKeys.close();
// Open CA certificate
FileInputStream fsCaFile = new FileInputStream(caFile.getCanonicalPath());
bytes = new byte[(int) caFile.length()];
fsCaFile.read(bytes);
_cachedCertificates.put(key + ".CA_CERT", bytes);
// Close file streams
fsCaFile.close();
// Open AA certificate
FileInputStream fsAaFile = new FileInputStream(aaFile.getCanonicalPath());
bytes = new byte[(int) aaFile.length()];
fsAaFile.read(bytes);
_cachedCertificates.put(key + ".AA_CERT", bytes);
// Close file streams
fsAaFile.close();
// Open AT certificate
FileInputStream fsAtFile = new FileInputStream(atFile.getCanonicalPath());
bytes = new byte[(int) atFile.length()];
fsAtFile.read(bytes);
_cachedCertificates.put(key + ".AT_CERT", bytes);
byte[] digest = calculateDigestFromCertificate(bytes);
_cachedCertificatesDigest.put(key + ".AT_CERT.DIGEST", digest);
_cachedReverseCertificatesDigest.put(ByteHelper.byteArrayToString(digest), key + ".AT_CERT.DIGEST");
// Close file streams
fsAtFile.close();
} // else, ignore it
// Load certificate
byte bytes[] = new byte[(int) p_certFile.length()];
FileInputStream fsKeys = new FileInputStream(p_certFile);
fsKeys.read(bytes);
fsKeys.close();
bytes = ByteHelper.hexStringToByteArray(new String(bytes));
_cachedCertificates.put(certName, bytes);
// System.out.println("CertificatesIO.addItem: Store cert " + certName + " - " + ByteHelper.byteArrayToString(bytes));
// calculate digest
bytes = calculateDigestFromCertificate(bytes);
_cachedCertificatesDigest.put(certName, bytes);
// System.out.println("CertificatesIO.addItem: Store digest: " + ByteHelper.byteArrayToString(bytes) + " - " + certName);
_cachedReverseCertificatesDigest.put(ByteHelper.byteArrayToString(bytes), certName);
// System.out.println("CertificatesIO.addItem: Store reverse digest " + ByteHelper.byteArrayToString(bytes) + " - " + certName);
// Load Private Keys
filename = p_certFile.getPath();
filename = filename.substring(0, filename.lastIndexOf("."));
try {
File f = new File(filename+".vkey");
if(f.exists()){
long l = f.length();
if(l == 32 || l == 64){
bytes = new byte[64];
fsKeys = new FileInputStream(f);
l = fsKeys.read(bytes);
fsKeys.close();
if(l == 64){
bytes = ByteHelper.hexStringToByteArray(new String(bytes));
l = 32;
}
if(l != 32){
System.err.println("CertificatesIO: " + f.getName() + ": wrong data length[" + l + "\n");
}
if (!_cachedSigningPrivateKey.containsKey(certName)) {
_cachedSigningPrivateKey.put(certName, bytes);
}
}else{
System.err.println("CertificatesIO: " + f.getName() + ": wrong key file length\n");
}
}
}catch(FileNotFoundException e){}
try {
File f = new File(filename+".ekey");
if(f.exists()){
if(f.length() == 32 || f.length() == 64){
bytes = new byte[64];
fsKeys = new FileInputStream(f);
fsKeys.read(bytes);
fsKeys.close();
if(f.length() == 64){
bytes = ByteHelper.hexStringToByteArray(new String(bytes));
}
if (!_cachedEncryptPrivateKey.containsKey(certName)) {
_cachedEncryptPrivateKey.put(certName, bytes);
}
}
}
}catch(FileNotFoundException e){}
}
@Override
301,7 → 385,7
return null;
}
return _cachedReverseCertificatesDigest.get(key).substring(0, key.length() - 7/*.DIGEST*/);
return _cachedReverseCertificatesDigest.get(key).substring(0, _cachedReverseCertificatesDigest.get(key).length() - 7/*.DIGEST*/);
}
private byte[] calculateDigestFromCertificate(final byte[] p_toBeHashedData) {
/trunk/javasrc/certificatesio/org/etsi/certificates/io/ICertificatesIO.java
45,15 → 45,22
boolean readCertificateDigest(final String certificateId, final ByteArrayOutputStream digest);
/**
* @desc Read the private keys for the specified certificate
* @param keysId the keys identifier
* @param signingPrivateKey the signing private key
* @param encryptPrivateKey the encrypt private key
* @desc Read the signing private key for the specified certificate
* @param keysId the keys identifier
* @param key the signing private key
* @return true on success, false otherwise
*/
boolean readPrivateKeys(final String keysName, final ByteArrayOutputStream signingPrivateKey, final ByteArrayOutputStream encryptPrivateKey);
boolean readSigningKey(final String keysName, final ByteArrayOutputStream key);
 
/**
* @desc Read the encryption private key for the specified certificate
* @param keysId the keys identifier
* @param key the encrypt private key
* @return true on success, false otherwise
*/
boolean readEncryptingKey(final String keysName, final ByteArrayOutputStream key);
 
/**
* @desc Retrieve the key identifier associated to the Digest value
* @param p_hashedId8ToBeUsed the Digest value
* @return The key identifier
/trunk/javasrc/codec/org/etsi/codec/ITciCDWrapper.java
35,6 → 35,13
public IntegerValue setInteger(final Integer value);
 
/**
* Constructs and sets a basic TTCN-3 integer type
*
* See ETSI ES 201 873-6 V4.2.1 - 7.3.2.1.2 getInteger
*/
public void setInteger(IntegerValue intValue, final Integer value);
 
/**
* Constructs and returns a basic TTCN-3 big integer type
*
* @see ETSI ES 201 873-6 V4.2.1 - 7.3.2.1.2 getInteger
/trunk/javasrc/codec/org/etsi/ttcn/codec/CodecFactory.java
65,7 → 65,9
org.etsi.ttcn.codec.its.btp.Plugin.init();
org.etsi.ttcn.codec.its.security.Plugin.init();
org.etsi.ttcn.codec.its.facilities.Plugin.init();
}
org.etsi.ttcn.codec.its.mapspat.Plugin.init();
}
}
 
public TciCDProvided getExternalCodec(String encoding) {
/trunk/javasrc/codec/org/etsi/ttcn/codec/MainCodec.java
42,30 → 42,29
// ByteHelper.dump(">>> MainCodec.decode: ", buf.getBytes());
CodecFactory cf = CodecFactory.getInstance();
TciCDProvided extCodec = cf.getExternalCodec(decodingHypothesis.getTypeEncoding());
if(extCodec != null) {
try {
try {
TciCDProvided extCodec = cf.getExternalCodec(decodingHypothesis.getTypeEncoding());
if(extCodec != null) {
return extCodec.decode(new TriMessageImpl(buf.getBytes()), decodingHypothesis);
} else {
ICodec codec = cf.getCodec(
this,
decodingHypothesis.getTypeClass(),
decodingHypothesis.getTypeEncoding(),
decodingHypothesis.getName()
);
codec.preDecode(buf, decodingHypothesis);
// TODO To be removed, for debug purpose only
// Value decValue = codec.decode(buf, decodingHypothesis);
// System.out.println("<<< MainCodec.decode: " + decValue);
// return decValue;
return codec.decode(buf, decodingHypothesis);
}
catch(Exception e) {
return null;
}
} catch(Throwable e) {
e.printStackTrace();
return null;
}
else {
ICodec codec = cf.getCodec(
this,
decodingHypothesis.getTypeClass(),
decodingHypothesis.getTypeEncoding(),
decodingHypothesis.getName()
);
codec.preDecode(buf, decodingHypothesis);
// TODO To be removed, for debug purpose only
// Value decValue = codec.decode(buf, decodingHypothesis);
// System.out.println("<<< MainCodec.decode: " + decValue);
// return decValue;
return codec.decode(buf, decodingHypothesis);
}
}
 
@Override
/trunk/javasrc/codec/org/etsi/ttcn/codec/its/btp/BtpHeader.java
9,9 → 9,13
import org.etsi.ttcn.codec.MainCodec;
import org.etsi.ttcn.codec.generic.Union;
import org.etsi.ttcn.tci.Type;
import org.etsi.ttcn.tci.UnionValue;
 
public class BtpHeader extends Union {
 
private static final String BTP_A_HEADER = "btpAHeader";
private static final String BTP_B_HEADER = "btpBHeader";
 
public BtpHeader(MainCodec mainCodec) {
super(mainCodec);
setLengths();
24,23 → 28,56
 
@Override
protected void preEncode(CodecBuffer buf, UnionValue uv) {
//FIXME to support BTP standalone we need to know for GN later if it is BTP A or BTP B
boolean isIncludedInGn = false;
StackTraceElement[] stackTrace = new Exception().getStackTrace();
for (StackTraceElement stackTraceElement : stackTrace) {
String className = stackTraceElement.getClassName();
String methodName = stackTraceElement.getMethodName();
if (className.contains("GeoNetworkingPacket") || className.contains("GnNonSecuredPacket") || methodName.contains("encvalue")) {
isIncludedInGn = true;
break;
}
}
if (!isIncludedInGn) {
String variant = uv.getPresentVariantName();
if (variant.equals(BTP_A_HEADER)) {
buf.appendBytes(new byte[] {0x1});
}
else if (variant.equals(BTP_B_HEADER)) {
buf.appendBytes(new byte[] {0x2});
}
else {
buf.appendBytes(new byte[] {0x0});
}
}
super.preEncode(buf, uv);
}
@Override
protected void preDecode(CodecBuffer buf, Type decodingHypothesis) {
 
String nhHint = mainCodec.getHint("GnNextHeader");
String variant = "btpAHeader";
String variant = BTP_B_HEADER;
 
int nh;
if(nhHint != null) {
int nh = Integer.parseInt(nhHint);
switch(nh) {
nh = Integer.parseInt(nhHint);
}
else {
byte[] result = buf.readBytes(1);
nh = result[0];
}
switch (nh) {
case 1:
variant = "btpAHeader";
variant = BTP_A_HEADER;
break;
case 2:
variant = "btpBHeader";
variant = BTP_B_HEADER;
break;
default:
variant = "btpAHeader";
}
variant = BTP_B_HEADER;
}
mainCodec.setHint(decodingHypothesis.getName(), variant);
}
/trunk/javasrc/codec/org/etsi/ttcn/codec/its/facilities/FacilitiesInd.java
20,6 → 20,7
 
@Override
protected void preDecode(CodecBuffer buf, Type decodingHypothesis) {
// System.out.println(">>> FacilitiesInd.preDecode: " + decodingHypothesis);
int msgLen = buf.getNbBits() - 8 - 8 - 8 - 32 - 8 - 16 - 16;
int offset = 0;
36,7 → 37,8
@Override
protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) {
 
// System.out.println(">>> FacilitiesInd.preDecodeField: " + fieldName + " - " + decodingHypothesis);
if(fieldName.equals("gnNextHeader")) {
buf.overwriteWith(gnNh);
}
/trunk/javasrc/codec/org/etsi/ttcn/codec/its/facilities/Plugin.java
15,5 → 15,7
CodecFactory cf = CodecFactory.getInstance();
cf.setCodec(TciTypeClass.RECORD, "LibIts_Interface", "CamInd", FacilitiesInd.class);
cf.setCodec(TciTypeClass.RECORD, "LibIts_Interface", "DenmInd", FacilitiesInd.class);
cf.setCodec(TciTypeClass.RECORD, "LibIts_Interface", "MapInd", FacilitiesInd.class);
cf.setCodec(TciTypeClass.RECORD, "LibIts_Interface", "SpatInd", FacilitiesInd.class);
}
}
/trunk/javasrc/codec/org/etsi/ttcn/codec/its/mapspat/MapSpatIndReq.java
0,0 → 1,53
package org.etsi.ttcn.codec.its.mapspat;
 
import org.etsi.ttcn.codec.CodecBuffer;
import org.etsi.ttcn.codec.MainCodec;
import org.etsi.ttcn.codec.generic.Record;
import org.etsi.ttcn.tci.RecordValue;
import org.etsi.ttcn.tci.Type;
import org.etsi.ttcn.tci.Value;
 
public class MapSpatIndReq extends Record {
 
public MapSpatIndReq(MainCodec mainCodec) {
super(mainCodec);
}
 
@Override
protected void preDecode(CodecBuffer buf, Type decodingHypothesis) {
// System.out.println(">>> MapSpatIndReq.preDecode: " + decodingHypothesis);
int msgLen = buf.getNbBits() - 48;
messageBuffer = buf.getBuffer(0, msgLen);
macBuffer = buf.getBuffer(msgLen, 48);
}
@Override
protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) {
// System.out.println(">>> MapSpatIndReq.preDecodeField: " + fieldName + ", " + decodingHypothesis);
if(fieldName.equals("macDestinationAddress")) {
buf.overwriteWith(macBuffer);
}
else {
buf.overwriteWith(messageBuffer);
}
}
@Override
protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) {
// System.out.println(">>> MapSpatIndReq.postDecodeField: " + fieldName + ", " + decodingHypothesis);
}
@Override
public CodecBuffer encode(Value value) {
// System.out.println("MapSpatIndReq.encode: " + value);
return super.encode(value);
}
private CodecBuffer messageBuffer = null;
private CodecBuffer macBuffer = null;
} // End of class MapSpatIndReq
Property changes:
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+"URL Id"
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: javasrc/codec/org/etsi/ttcn/codec/its/mapspat/Plugin.java
===================================================================
--- javasrc/codec/org/etsi/ttcn/codec/its/mapspat/Plugin.java (nonexistent)
+++ javasrc/codec/org/etsi/ttcn/codec/its/mapspat/Plugin.java (revision 2230)
@@ -0,0 +1,19 @@
+/**
+ * @author ETSI / STF462 / Alexandre Berge
+ * @version $URL: https://forge.etsi.org/svn/ITS/branches/STF484_VALIDATION/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/Plugin.java $
+ * $Id: Plugin.java 1834 2014-11-20 09:19:30Z berge $
+ */
+package org.etsi.ttcn.codec.its.mapspat;
+
+import org.etsi.ttcn.tci.TciTypeClass;
+import org.etsi.ttcn.codec.CodecFactory;
+
+public class Plugin {
+
+ public static void init() {
+
+ CodecFactory cf = CodecFactory.getInstance();
+ cf.setCodec(TciTypeClass.RECORD, "LibIts_Interface", "MapReq", MapSpatIndReq.class);
+ cf.setCodec(TciTypeClass.RECORD, "LibIts_Interface", "SpatReq", MapSpatIndReq.class);
+ }
+}
\ No newline at end of file
/javasrc/codec/org/etsi/ttcn/codec/its/mapspat/Plugin.java
Property changes:
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+"URL Id"
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: javasrc/codec/org/etsi/ttcn/codec/its/security/EncryptionParameters.java
===================================================================
--- javasrc/codec/org/etsi/ttcn/codec/its/security/EncryptionParameters.java (revision 2229)
+++ javasrc/codec/org/etsi/ttcn/codec/its/security/EncryptionParameters.java (revision 2230)
@@ -3,11 +3,6 @@
* @version $URL$
* $Id$
*/
-/**
- * @author ETSI / STF481 / Yann Garcia
- * @version $URL$
- * $Id$
- */
package org.etsi.ttcn.codec.its.security;
import org.etsi.ttcn.codec.CodecBuffer;
/trunk/javasrc/codec/org/etsi/ttcn/codec/its/security/ItsAidSsp.java
8,6 → 8,7
import org.etsi.ttcn.codec.CodecBuffer;
import org.etsi.ttcn.codec.MainCodec;
import org.etsi.ttcn.codec.generic.Record;
import org.etsi.ttcn.tci.IntegerValue;
import org.etsi.ttcn.tci.RecordValue;
import org.etsi.ttcn.tci.Type;
 
29,7 → 30,7
if (fieldName.equals("service_specific_permissions")) {
CodecBuffer bufLen = new CodecBuffer(new byte[] { (byte)buf.getNbBytes() } );
System.out.println("ItsAidSsp.postEncodeField: bufLen = " + bufLen);
// System.out.println("ItsAidSsp.postEncodeField: bufLen = " + bufLen);
bufLen.append(buf);
buf.overwriteWith(bufLen);
}
51,6 → 52,18
@Override
protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) {
// System.out.println(">>> ItsAidSsp.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName());
if (fieldName.equals("its_aid")) {
//int itsaid = ((IntegerValue)(rv.getField(fieldName))).getInt();
int itsaid = mainCodec.getTciCDRequired().getInteger(((IntegerValue)(rv.getField(fieldName))));
if (itsaid == 36) {
mainCodec.setHint("ServiceSpecificPermissionsContainer", "sspCAM");
} else if (itsaid == 37) {
mainCodec.setHint("ServiceSpecificPermissionsContainer", "sspDENM");
} else {
mainCodec.setHint("ServiceSpecificPermissionsContainer", "opaque");
}
}
}
} // End of class ItsAidSsp
} // End of class ItsAidSsp
/trunk/javasrc/codec/org/etsi/ttcn/codec/its/security/Plugin.java
75,6 → 75,7
cf.setCodec(TciTypeClass.RECORD, "LibItsSecurity", "ValidityRestriction", ValidityRestriction.class);
cf.setCodec(TciTypeClass.RECORD, "LibItsSecurity", "ItsAidSsp", ItsAidSsp.class);
cf.setCodec(TciTypeClass.RECORD, "LibItsSecurity", "ServiceSpecificPermissions", ServiceSpecificPermissions.class);
cf.setCodec(TciTypeClass.RECORD, "LibItsSecurity", "SspCAM", SspCAM.class);
cf.setCodec(TciTypeClass.RECORD, "LibItsSecurity", "SspDENM", SspDENM.class);
cf.setCodec(TciTypeClass.RECORD, "LibItsSecurity", "CertificateWithAlgo", CertificateWithAlgo.class);
/trunk/javasrc/codec/org/etsi/ttcn/codec/its/security/SecPayload.java
42,8 → 42,8
if (fieldName.equals("type_")) {
mainCodec.setPresenceHint("data", buf.getBytes(0, 1)[0] != c_signed_external);
} else if (fieldName.equals("data") && (mainCodec.getPresenceHint("data") == true)) {
int len = buf.readBits(Byte.SIZE)[0]; // field_sizeLen is 1 bytes
System.out.println("SecPayload.preDecodeField: len = " + len);
int len = (int) TlsHelper.getInstance().tls2size(buf);
// System.out.println("SecPayload.preDecodeField: len = " + len);
mainCodec.setHint("octetstringLen", Integer.toString(len));
}
}
/trunk/javasrc/codec/org/etsi/ttcn/codec/its/security/ServiceSpecificPermissions.java
43,7 → 43,6
} else if (fieldName.equals("sspContainer")) {
if (mainCodec.getHint("version") != null) {
mainCodec.setPresenceHint(fieldName, true);
mainCodec.setHint("ServiceSpecificPermissionsContainer", "sspDENM");
} else {
mainCodec.setPresenceHint(fieldName, false);
/trunk/javasrc/codec/org/etsi/ttcn/codec/its/security/SspCAM.java
0,0 → 1,39
package org.etsi.ttcn.codec.its.security;
 
import org.etsi.ttcn.codec.CodecBuffer;
import org.etsi.ttcn.codec.MainCodec;
import org.etsi.ttcn.codec.generic.Record;
import org.etsi.ttcn.common.ByteHelper;
import org.etsi.ttcn.tci.RecordValue;
import org.etsi.ttcn.tci.Type;
 
public class SspCAM extends Record {
public SspCAM(MainCodec mainCodec) {
super(mainCodec);
setLengths();
}
 
private void setLengths() {
mainCodec.setHint("Bit1Len", "1");
}
@Override
protected void postEncodeField(String fieldName, CodecBuffer buf) {
// System.out.println(">>> SspCAM.postEncodeField: " + fieldName);
}
@Override
protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) {
// System.out.println(">>> SspCAM.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName());
}
@Override
protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) {
// System.out.println(">>> SspCAM.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName());
}
} // End of class SspCAM
Property changes:
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+URL Id
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: javasrc/codec/org/etsi/ttcn/codec/its/uppertester/Plugin.java
===================================================================
--- javasrc/codec/org/etsi/ttcn/codec/its/uppertester/Plugin.java (revision 2229)
+++ javasrc/codec/org/etsi/ttcn/codec/its/uppertester/Plugin.java (revision 2230)
@@ -19,11 +19,19 @@
cf.setCodec(TciTypeClass.BOOLEAN, "UpperTester", "", UtBoolean.class);
cf.setCodec(TciTypeClass.RECORD, "UpperTester", "SituationContainer", Record.class);
cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtDenmTrigger", UtDenmTrigger.class);
- cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtDenmUpdate", UtDenmTrigger.class);
+ cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtDenmUpdate", UtDenmUpdate.class);
cf.setCodec(TciTypeClass.RECORD, "UpperTester", "Payload", UtPayload.class);
+ cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtCamEventInd", UtEventInd.class);
+ cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtDenmEventInd", UtEventInd.class);
+ cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtGnEventInd", UtEventInd.class);
+ cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtMapEventInd", UtEventInd.class);
+ cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtSpatEventInd", UtEventInd.class);
cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtDenmTermination", UtDenmTermination.class);
cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtDenmTriggerResult", UtDenmTermination.class);
+ cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtDenmUpdateResult", UtDenmTermination.class);
cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtChangePosition", UtChangePosition.class);
+ cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtMapSpatTrigger", UtMapSpatTrigger.class);
+ cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtMapSpatTriggerResult", UtMapSpatTriggerResult.class);
cf.setCodec(TciTypeClass.UNION, "UpperTester", "UtCamTrigger", UtCamTrigger.class);
}
}
\ No newline at end of file
Index: javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtDenmTrigger.java
===================================================================
--- javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtDenmTrigger.java (revision 2229)
+++ javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtDenmTrigger.java (revision 2230)
@@ -51,11 +51,12 @@
mainCodec.setHint("StationIDLen", "32");
mainCodec.setHint("SequenceNumberLen", "16");
mainCodec.setHint("integerLen", "8");
+ mainCodec.setHint("AlacarteContainerLen", "8");
}
@Override
public CodecBuffer encode(Value value) {
-
+
RecordValue rv = (RecordValue)value;
String[] fields = rv.getFieldNames();
CodecBuffer buf = new CodecBuffer();
@@ -76,10 +77,10 @@
for(int j=0; j < lengthInBytes; j++) {
buf.appendBytes(new byte[]{0x00});
}
- }
+ }
}
}
-
+
return buf;
}
@@ -98,15 +99,6 @@
transmissionInterval(0x04),
repetitionInterval(0x02),
- /* DenmUpdate */
- //validityDuration(0x80),
- situation(0x40),
- relevanceDistance(0x20),
- relevanceTrafficDirection(0x10),
- trafficClass(0x08),
- //transmissionInterval(0x04),
- //repetitionInterval(0x02),
-
/* Reserved */
reserved(0x00);
/trunk/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtDenmUpdate.java
0,0 → 1,129
/**
* @author ETSI / STF462 / Alexandre Berge
* @version $URL: $
* $Id: UtDenmUpdate.java,v 1.1.2.1 2015/03/30 11:19:16 dte Exp $
*/
package org.etsi.ttcn.codec.its.uppertester;
 
import org.etsi.ttcn.codec.CodecBuffer;
import org.etsi.ttcn.codec.IMarkerCallback;
import org.etsi.ttcn.codec.MainCodec;
import org.etsi.ttcn.tci.RecordValue;
import org.etsi.ttcn.tci.Type;
import org.etsi.ttcn.tci.Value;
 
import java.util.HashMap;
import java.util.Map;
 
public class UtDenmUpdate extends UtRecord implements IMarkerCallback {
 
private byte flags = 0x00;
 
public UtDenmUpdate(MainCodec mainCodec) {
super(mainCodec);
}
 
@Override
public Value decode(CodecBuffer buf, Type decodingHypothesis) {
setLengths();
return super.decode(buf, decodingHypothesis);
}
 
@Override
public CodecBuffer preEncode(Value value) {
setLengths();
CodecBuffer buf = super.preEncode(value);
CodecBuffer bufFlags = new CodecBuffer();
bufFlags.setMarker("flags", 0, this);
buf.append(bufFlags);
return buf;
}
private void setLengths() {
mainCodec.setHint("TimestampItsLen", "48");
mainCodec.setHint("ValidityDurationLen", "24");
mainCodec.setHint("InformationQualityLen", "8");
mainCodec.setHint("CauseCodeTypeLen", "8");
mainCodec.setHint("SubCauseCodeTypeLen", "8");
mainCodec.setHint("RelevanceDistanceLen", "8");
mainCodec.setHint("RelevanceTrafficDirectionLen", "8");
mainCodec.setHint("TransmissionIntervalLen", "16");
mainCodec.setHint("StationIDLen", "32");
mainCodec.setHint("SequenceNumberLen", "16");
mainCodec.setHint("integerLen", "8");
mainCodec.setHint("AlacarteContainerLen", "8");
}
 
@Override
public CodecBuffer encode(Value value) {
RecordValue rv = (RecordValue)value;
String[] fields = rv.getFieldNames();
CodecBuffer buf = new CodecBuffer();
 
for(int i=0; i < fields.length; i++) {
Value fieldValue = rv.getField(fields[i]);
if(!fieldValue.notPresent()) {
CodecBuffer fieldBuf = mainCodec.encode(fieldValue);
postEncodeField(fields[i], fieldBuf);
buf.append(fieldBuf);
flags = (byte) (flags | (PresenceFlag.value(fields[i])).byteValue());
}
else {
String hint = mainCodec.getHint(fieldValue.getType().getName() + "Len");
if(hint != null) {
int lengthInBits = java.lang.Integer.parseInt(hint);
int lengthInBytes = lengthInBits / 8 + (((lengthInBits % 8) > 0)?1:0);
for(int j=0; j < lengthInBytes; j++) {
buf.appendBytes(new byte[]{0x00});
}
}
}
}
return buf;
}
@Override
public void run(String markerName, CodecBuffer leftBuf, CodecBuffer rightBuf) {
CodecBuffer bufFlags = new CodecBuffer(new byte[] {flags});
bufFlags.append(rightBuf);
rightBuf.setBytes(bufFlags.getBytes());
}
 
private enum PresenceFlag {
/* DenmUpdate */
//validityDuration(0x80),
situation(0x40),
relevanceDistance(0x20),
relevanceTrafficDirection(0x10),
trafficClass(0x08),
//transmissionInterval(0x04),
//repetitionInterval(0x02),
/* Reserved */
reserved(0x00);
private byte value;
private static final Map<String, Byte> PresenceFlags = new HashMap<String, Byte>();
private PresenceFlag(int value) {
this.value = (byte)value;
}
public static Byte value(String name) {
Byte res = PresenceFlags.get(name);
if(res == null) {
return value("reserved");
}
return res;
}
static {
for (PresenceFlag item : PresenceFlag.values()) {
PresenceFlags.put(item.name(), new Byte(item.value));
}
}
}
}
/trunk/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtEventInd.java
0,0 → 1,21
package org.etsi.ttcn.codec.its.uppertester;
 
import org.etsi.common.ByteHelper;
import org.etsi.ttcn.codec.CodecBuffer;
import org.etsi.ttcn.codec.MainCodec;
import org.etsi.ttcn.tci.RecordValue;
import org.etsi.ttcn.tci.Type;
 
public class UtEventInd extends UtRecord {
public UtEventInd(MainCodec mainCodec) {
super(mainCodec);
}
@Override
protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) {
int length = ByteHelper.byteArrayToInt(buf.readBytes(Short.SIZE / Byte.SIZE));
// TODO Check payload length
}
}
Property changes:
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+"URL Id"
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtMapSpatTrigger.java
===================================================================
--- javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtMapSpatTrigger.java (nonexistent)
+++ javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtMapSpatTrigger.java (revision 2230)
@@ -0,0 +1,16 @@
+package org.etsi.ttcn.codec.its.uppertester;
+
+import org.etsi.ttcn.codec.MainCodec;
+
+public class UtMapSpatTrigger extends UtRecord {
+
+ public UtMapSpatTrigger(MainCodec mainCodec) {
+ super(mainCodec);
+ setLengths();
+ }
+
+ private void setLengths() {
+ mainCodec.setHint("EventLen", "8");
+ }
+
+} // End of class UtMapSpatTrigger
/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtMapSpatTrigger.java
Property changes:
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+URL Id
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtMapSpatTriggerResult.java
===================================================================
--- javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtMapSpatTriggerResult.java (nonexistent)
+++ javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtMapSpatTriggerResult.java (revision 2230)
@@ -0,0 +1,16 @@
+package org.etsi.ttcn.codec.its.uppertester;
+
+import org.etsi.ttcn.codec.MainCodec;
+
+public class UtMapSpatTriggerResult extends UtRecord {
+
+ public UtMapSpatTriggerResult(MainCodec mainCodec) {
+ super(mainCodec);
+ setLengths();
+ }
+
+ private void setLengths() {
+ mainCodec.setHint("MsgCountLen", "8");
+ }
+
+} // End of class UtMapSpatTriggerResult
/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtMapSpatTriggerResult.java
Property changes:
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+URL Id
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtPduId.java
===================================================================
--- javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtPduId.java (revision 2229)
+++ javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtPduId.java (revision 2230)
@@ -53,12 +53,12 @@
//reserved(0x40),
UtGnTriggerResult(0x41),
//reserved(0x42),
- UtGnEventInd(0x43),
UtGnTrigger_geoUnicast(0x50),
UtGnTrigger_geoBroadcast(0x51),
UtGnTrigger_geoAnycast(0x52),
UtGnTrigger_shb(0x53),
UtGnTrigger_tsb(0x54),
+ UtGnEventInd(0x55),
/* From LibItsBtp_TypesAndValues */
//reserved(0x60),
@@ -65,8 +65,8 @@
UtBtpTriggerResult(0x61),
//reserved(0x62),
UtBtpEventInd(0x63),
- UtBtpTrigger_A(0x70),
- UtBtpTrigger_B(0x71),
+ UtBtpTrigger_btpA(0x70),
+ UtBtpTrigger_btpB(0x71),
/* From LibItsIpv6OverGeoNetworking_TypesAndValues */
UtGn6Trigger(0x80),
@@ -87,6 +87,8 @@
/* From LibItsMapSpat_TypesAndValues */
UtMapSpatTrigger(0xA0),
UtMapSpatTriggerResult(0xA1),
+ UtMapEventInd(0xA2),
+ UtSpatEventInd(0xA3),
/* Reserved */
reserved(0xFF);
/trunk/javasrc/common/org/etsi/common/ByteHelper.java
120,6 → 120,30
return new Integer(value);
} // End of method byteArrayToInt
/** Convert a byte array into a signed integer assuming that padding bits are in first byte
*
* @param b The byte array to convert
* @param significantBits number of significant bits in the array
* @return The integer value
*/
public static int byteArrayToSignedInt(final byte[] b, final int significantBits) {
 
int value = 0;
for (int i = 0; i < b.length; i++) {
value = (value << 8) + (b[i] & 0xff);
}
int shift = 32 - significantBits;
// Restore sign bit by shifting left and right
if(shift > 0) {
value <<= shift;
value >>= shift;
}
 
return new Integer(value);
}
 
public static Long byteArrayToLong(final byte[] b, ByteOrder byteOrder) {
if(byteOrder == ByteOrder.LITTLE_ENDIAN) {
return byteArrayToLong(changeEndianness(b));
261,7 → 285,7
 
if (nOffset % 16 == 0)
{
finalHexLine.append(String.format("%05x| ", nOffset));
finalHexLine.append((String)String.format("%05x| ", nOffset));
}
 
finalHexLine.append(fmtHex);
/trunk/javasrc/extfunc/org/etsi/its/extfunc/IItsExternalFunctionsProvider.java
242,14 → 242,28
*/
public BooleanValue fx_readCertificate(final CharstringValue p_certificateId, OctetstringValue p_certificate);
/**
* @desc Read the specified certificate digest
* @param p_certificateId the certificate identifier
* @param p_certificate the expected certificate
* @return true on success, false otherwise
*/
public BooleanValue fx_readCertificateDigest(final CharstringValue p_certificateId, OctetstringValue p_certificate);
/**
* @desc Read the private keys for the specified certificate
* @param p_keysId the keys identifier
* @param p_signingPrivateKey the signing private key
* @param p_encryptPrivateKey the encrypt private key
* @desc Read the signing private key for the specified certificate
* @param p_keysId the keys identifier
* @param p_key the signing private key
* @return true on success, false otherwise
*/
public BooleanValue fx_readPrivateKeys(final CharstringValue p_keysId, OctetstringValue p_signingPrivateKey, OctetstringValue p_encryptPrivateKey);
public BooleanValue fx_readSigningKey(final CharstringValue p_keysId, OctetstringValue p_key);
/**
* @desc Read the encrypting private key for the specified certificate
* @param p_keysId the keys identifier
* @param p_key the encrypt private key
* @return true on success, false otherwise
*/
public BooleanValue fx_readEncryptingKey(final CharstringValue p_keysId, OctetstringValue p_key);
 
} // End of interface IItsExternalFunctionsProvider
/trunk/javasrc/extfunc/org/etsi/its/extfunc/ItsExternalFunctionsProvider.java
85,7 → 85,7
/**
* This external function gets the current time
*
* @return The current time in Epoch format
* @return The current time in ITS format
*
* TTCN-3 signature: external function fx_getCurrentTime() return
* TimestampIts;
94,8 → 94,8
public synchronized IntegerValue fx_getCurrentTime() {
_logger.entering("ItsExternalFunctionsProvider", "fx_getCurrentTime");
String datestr="01/01/2004 00:00:00";
DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss");
String datestr="01/01/2004 00:00:00 +0000";
DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss Z");
IntegerValue now = null;
try {
// System.out.println("ItsExternalFunctionsProvider.fx_getCurrentTime: " + ((java.util.Date)formatter.parse(datestr)).getTime());
212,11 → 212,14
long2 = (long2 + 3 * Math.PI) % (2 * Math.PI) - Math.PI;
 
// convert to 1/10 of microdegrees
long rlat2 = Math.round(lat2 * 10000000 / Math.PI * 180);
long rlong2 = Math.round(long2 * 10000000 / Math.PI * 180);
Long rlat2 = Math.round(lat2 * 10000000 / Math.PI * 180);
Long rlong2 = Math.round(long2 * 10000000 / Math.PI * 180);
 
p_latitude = _tcicdWrapper.setInteger((int) rlat2);
p_longitude = _tcicdWrapper.setInteger((int) rlong2);
// The out parameter needs to be set on the object level
_tcicdWrapper.setInteger(p_latitude, rlat2.intValue());
_tcicdWrapper.setInteger(p_longitude, rlong2.intValue());
// p_latitude = _tcicdWrapper.setInteger((int) rlat2);
// p_longitude = _tcicdWrapper.setInteger((int) rlong2);
 
} // End of method fx_computePositionUsingDistance
 
429,6 → 432,8
} // End 'for' statement
byte[] signed;
try {
// System.out.println("fx_signWithEcdsaNistp256WithSha256: toBeSignedData=" + ByteHelper.byteArrayToString(toBeSignedData) + " - " + toBeSignedData.length);
// System.out.println("fx_signWithEcdsaNistp256WithSha256: ts103097SignatureEncodedAsByteArray=" + new BigInteger(privateKey));
signed = CryptoLib.signWithEcdsaNistp256WithSha256(toBeSignedData, new BigInteger(privateKey));
} catch (Exception e) {
e.printStackTrace();
474,6 → 479,10
ecdsaNistp256PublicKeyY[i] = (byte) p_ecdsaNistp256PublicKeyY.getOctet(i);
} // End 'for' statement
try {
// System.out.println("fx_verifyWithEcdsaNistp256WithSha256: toBeVerifiedData=" + ByteHelper.byteArrayToString(toBeVerifiedData) + " - " + toBeVerifiedData.length);
// System.out.println("fx_verifyWithEcdsaNistp256WithSha256: ts103097SignatureEncodedAsByteArray=" + ByteHelper.byteArrayToString(ts103097SignatureEncodedAsByteArray));
// System.out.println("fx_verifyWithEcdsaNistp256WithSha256: ecdsaNistp256PublicKeyX=" + ByteHelper.byteArrayToString(ecdsaNistp256PublicKeyX));
// System.out.println("fx_verifyWithEcdsaNistp256WithSha256: ecdsaNistp256PublicKeyY=" + ByteHelper.byteArrayToString(ecdsaNistp256PublicKeyY));
boolean ret = CryptoLib.verifyWithEcdsaNistp256WithSha256(toBeVerifiedData, ts103097SignatureEncodedAsByteArray, ecdsaNistp256PublicKeyX, ecdsaNistp256PublicKeyY);
result.setBoolean(ret);
} catch (Exception e) {
762,49 → 771,123
BooleanValue result = _tcicdWrapper.getBoolean();
ByteArrayOutputStream certificate = new ByteArrayOutputStream();
result.setBoolean(_certCache.readCertificate(p_certificateId.getString(), certificate));
boolean b = _certCache.readCertificate(p_certificateId.getString(), certificate);
result.setBoolean(b);
byte[] value = certificate.toByteArray();
p_certificate.setLength(value.length);
if (value.length != 0) {
for (int i = 0; i < value.length; i++) {
p_certificate.setOctet(i, value[i]);
} // End 'for' statement
if(b){
byte[] value = certificate.toByteArray();
p_certificate.setLength(value.length);
if (value.length != 0) {
for (int i = 0; i < value.length; i++) {
p_certificate.setOctet(i, value[i]);
} // End 'for' statement
}
}else{
p_certificate.setLength(0);
}
return result;
}
 
private static final byte[] ZERO32 = new byte[] {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
/**
* @desc Read the private keys for the specified certificate
* @param p_keysId the keys identifier
* @param p_signingPrivateKey the signing private key
* @param p_encryptPrivateKey the encrypt private key
* @desc Read the specified certificate digest
* @param p_certificateId the certificate identifier
* @param p_digest the expected certificate digest
* @return true on success, false otherwise
*/
@Override
public BooleanValue fx_readPrivateKeys(CharstringValue p_keysId, OctetstringValue p_signingPrivateKey, OctetstringValue p_encryptPrivateKey) {
public BooleanValue fx_readCertificateDigest(final CharstringValue p_certificateId, OctetstringValue p_digest) {
BooleanValue result = _tcicdWrapper.getBoolean();
ByteArrayOutputStream signingPrivateKey = new ByteArrayOutputStream();
ByteArrayOutputStream encryptPrivateKey = new ByteArrayOutputStream();
result.setBoolean(_certCache.readPrivateKeys(p_keysId.getString(), signingPrivateKey, encryptPrivateKey));
ByteArrayOutputStream digest = new ByteArrayOutputStream();
boolean b = _certCache.readCertificateDigest(p_certificateId.getString(), digest);
result.setBoolean(b);
byte[] value = signingPrivateKey.toByteArray();
p_signingPrivateKey.setLength(value.length);
if (value.length != 0) {
for (int i = 0; i < value.length; i++) {
p_signingPrivateKey.setOctet(i, value[i]);
} // End 'for' statement
p_digest.setLength(8);
byte[] value;
if(b){
value = digest.toByteArray();
if (value.length != 8) {
value = ZERO32;
}
}else{
value = ZERO32;
}
for (int i = 0; i < 8; i++) {
p_digest.setOctet(i, value[i]);
} // End 'for' statement
return result;
}
/**
* @desc Read the signing private key for the specified certificate
* @param p_keysId the keys identifier
* @param p_key the signing private key
* @return true on success, false otherwise
*/
@Override
public BooleanValue fx_readSigningKey(CharstringValue p_keysId, OctetstringValue p_key) {
BooleanValue result = _tcicdWrapper.getBoolean();
ByteArrayOutputStream key = new ByteArrayOutputStream();
boolean b = _certCache.readSigningKey(p_keysId.getString(), key);
result.setBoolean(b);
p_key.setLength(32);
 
byte[] value;
if(b){
value = key.toByteArray();
if(value.length != 32) {
value = ZERO32;
}
}else{
value = ZERO32;
}
value = encryptPrivateKey.toByteArray();
p_encryptPrivateKey.setLength(value.length);
if (value.length != 0) {
for (int i = 0; i < value.length; i++) {
p_encryptPrivateKey.setOctet(i, value[i]);
} // End 'for' statement
for (int i = 0; i < 32; i++) {
p_key.setOctet(i, value[i]);
}
return result;
}
/**
* @desc Read the encrypting private key for the specified certificate
* @param p_keysId the keys identifier
* @param p_key the encrypting private key
* @return true on success, false otherwise
*/
@Override
public BooleanValue fx_readEncryptingKey(CharstringValue p_keysId, OctetstringValue p_key) {
BooleanValue result = _tcicdWrapper.getBoolean();
ByteArrayOutputStream key = new ByteArrayOutputStream();
boolean b = _certCache.readEncryptingKey(p_keysId.getString(), key);
result.setBoolean(b);
p_key.setLength(32);
 
byte[] value;
if(b){
value = key.toByteArray();
if(value.length != 32) {
value = ZERO32;
}
}else{
value = ZERO32;
}
for (int i = 0; i < 32; i++) {
p_key.setOctet(i, value[i]);
}
return result;
}
/trunk/javasrc/geodesic/org/etsi/geodesic/WGS84.java
43,13 → 43,13
/**
* Constructor used to convert WGSLatitude/WGSLongitude value into decimal degrees value
* @param p_latitude Latiude integer value (significand length shall be 7 digits length)
* @param p_latitude Latiude integer value (significand length shall be 6 digits length)
* @param p_longitude Longitude integer value (significand length shall 6 digits length)
*/
public WGS84(final long p_latitude, final long p_longitude) {
setValue(
(double)p_latitude / 10000000,
(double)p_longitude / 1000000,
(double)p_longitude / 10000000,
0.0
);
} // End of WGS84 ctor
/trunk/javasrc/tool/org/etsi/its/tool/elvior/BuiltInCodec.java
37,6 → 37,8
_encodingName = "DENM_PDU_Descriptions";
} else if (encodingName.equals("LibItsCam_asn1")) {
_encodingName = "CAM_PDU_Descriptions";
} else if (encodingName.equals("LibItsMapSpat_asn1")) {
_encodingName = "MAP_SPAT_ETSI";
} else if (encodingName.equals("LibItsCALMmsap_asn1")) {
_encodingName = "CALMmsap";
} else if (encodingName.equals("LibItsCALMllsap_asn1")) {
47,6 → 49,8
_encodingName = "CALMfsap";
} else if (encodingName.equals("LibItsIicp_asn1")) {
_encodingName = "CALMiitsscu";
} else if (encodingName.equals("LibItsMapSpat_asn1")) {
_encodingName = "MAP_SPAT_ETSI";
} else {
_encodingName = "";
}
/trunk/javasrc/tool/org/etsi/its/tool/elvior/LibItsMapSpat_asn1.java
0,0 → 1,38
package org.etsi.its.tool.elvior;
 
import org.etsi.ttcn.tci.Type;
import org.etsi.ttcn.tci.Value;
import org.etsi.ttcn.tri.TriMessage;
 
 
/**
*
* Note that "Enable Internal Codec" field shall be set to true
*
*/
public class LibItsMapSpat_asn1 extends LibIts_asn1 {
/**
* Constructor
*/
public LibItsMapSpat_asn1() {
_logger.entering("LibItsMapSpat_asn1", "LibItsMapSpat_asn1");
_encodingName = "MAP_SPAT_ETSI";
}
@Override
public Value decode(final TriMessage message, final Type decodingHypothesis) {
_logger.entering("LibItsMapSpat_asn1", "decode", decodingHypothesis.getName());
if (decodingHypothesis.getName().endsWith("msgMap")) {
Type type = getTypeForName("MAP_SPAT_ETSI.MAP_PDU");
return super.decode(message, type);
} else if (decodingHypothesis.getName().endsWith("msgSpat")) {
Type type = getTypeForName("MAP_SPAT_ETSI.SPAT_PDU");
return super.decode(message, type);
}
return super.decode(message, decodingHypothesis);
}
} // End of class LibItsMapSpat_asn1
Property changes:
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+URL Id
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: javasrc/tool/org/etsi/its/tool/elvior/PluginAdapter.java
===================================================================
--- javasrc/tool/org/etsi/its/tool/elvior/PluginAdapter.java (revision 2229)
+++ javasrc/tool/org/etsi/its/tool/elvior/PluginAdapter.java (revision 2230)
@@ -303,8 +303,12 @@
exec_unloadCertificates(parameterList, returnValue);
} else if (functionId.getFunctionName().endsWith("fx_readCertificate") && (parameterList.size() == 2)) {
exec_readCertificate(parameterList, returnValue);
- } else if (functionId.getFunctionName().endsWith("fx_readPrivateKeys") && (parameterList.size() == 3)) {
- exec_readPrivateKeys(parameterList, returnValue);
+ } else if (functionId.getFunctionName().endsWith("fx_readCertificateDigest") && (parameterList.size() == 2)) {
+ exec_readCertificateDigest(parameterList, returnValue);
+ } else if (functionId.getFunctionName().endsWith("fx_readSigningKey") && (parameterList.size() == 2)) {
+ exec_readSigningKey(parameterList, returnValue);
+ } else if (functionId.getFunctionName().endsWith("fx_readEncryptingKey") && (parameterList.size() == 2)) {
+ exec_readEncryptingKey(parameterList, returnValue);
} else {
_logger.severe("Unprocessed external function");
result = m_triKO;
@@ -1144,7 +1148,7 @@
_logger.entering("PluginAdapter", "exec_readCertificate");
// Decode parameter
-// ByteHelper.dump("exec_readPrivateKeys: ", parameterList.get(0).getEncodedParameter());
+// ByteHelper.dump("exec_readCertificate: ", parameterList.get(0).getEncodedParameter());
CharstringValue certificateId = TciCDWrapperFactory.getTciCDInstance().getCharstringValue();
String str = new String(parameterList.get(0).getEncodedParameter());
certificateId.setString(str);
@@ -1169,35 +1173,84 @@
_logger.exiting("PluginAdapter", "exec_readCertificate", ByteHelper.byteArrayToString(returnValue.getEncodedParameter()));
} // End of method exec_parseIpv6Address
- private void exec_readPrivateKeys(TriParameterList parameterList, TriParameter returnValue) {
- _logger.entering("PluginAdapter", "exec_readPrivateKeys");
+ private void exec_readCertificateDigest(TriParameterList parameterList, TriParameter returnValue) {
+ _logger.entering("PluginAdapter", "exec_readCertificateDigest");
// Decode parameter
-// ByteHelper.dump("exec_readPrivateKeys: ", parameterList.get(0).getEncodedParameter());
+// ByteHelper.dump("exec_readCertificate: ", parameterList.get(0).getEncodedParameter());
+ CharstringValue certificateId = TciCDWrapperFactory.getTciCDInstance().getCharstringValue();
+ String str = new String(parameterList.get(0).getEncodedParameter());
+ certificateId.setString(str);
+
+ OctetstringValue digest = TciCDWrapperFactory.getTciCDInstance().getOctetstring();
+
+ // Execute the function
+ BooleanValue result = _extfuncsImpl.fx_readCertificateDigest(certificateId, digest);
+
+ parameterList.get(1).setNumberOfBits(digest.getLength() * Byte.SIZE);
+ byte[] value = new byte[digest.getLength()];
+ for (int i = 0; i < value.length; i++) {
+ value[i] = (byte) digest.getOctet(i);
+ }// End of 'for'statement
+ parameterList.get(1).setEncodedParameter(value);
+
+ // Return code
+ returnValue.setParameterPassingMode(TriParameterPassingMode.TRI_OUT);
+ returnValue.setNumberOfBits(Byte.SIZE);
+ returnValue.setEncodedParameter(new byte[] { (byte)((result.getBoolean() == true) ? 0x01 : 0x00) });
+
+ _logger.exiting("PluginAdapter", "exec_readCertificateDigest", ByteHelper.byteArrayToString(returnValue.getEncodedParameter()));
+ } // End of method exec_readCertificateDigest
+
+ private void exec_readSigningKey(TriParameterList parameterList, TriParameter returnValue) {
+ _logger.entering("PluginAdapter", "exec_readSigningKeys");
+
+ // Decode parameter
+// ByteHelper.dump("exec_readSigningKeys: ", parameterList.get(0).getEncodedParameter());
CharstringValue keysId = TciCDWrapperFactory.getTciCDInstance().getCharstringValue();
String str = new String(parameterList.get(0).getEncodedParameter());
keysId.setString(str);
+ OctetstringValue privateKey = TciCDWrapperFactory.getTciCDInstance().getOctetstring();
- OctetstringValue signingPrivateKey = TciCDWrapperFactory.getTciCDInstance().getOctetstring();
- OctetstringValue encryptPrivateKey = TciCDWrapperFactory.getTciCDInstance().getOctetstring();
-
// Execute the function
- BooleanValue result = _extfuncsImpl.fx_readPrivateKeys(keysId, signingPrivateKey, encryptPrivateKey);
+ BooleanValue result = _extfuncsImpl.fx_readSigningKey(keysId, privateKey);
- parameterList.get(1).setNumberOfBits(signingPrivateKey.getLength() * Byte.SIZE);
- byte[] value = new byte[signingPrivateKey.getLength()];
+ parameterList.get(1).setNumberOfBits(privateKey.getLength() * Byte.SIZE);
+ byte[] value = new byte[privateKey.getLength()];
for (int i = 0; i < value.length; i++) {
- value[i] = (byte) signingPrivateKey.getOctet(i);
+ value[i] = (byte) privateKey.getOctet(i);
}// End of 'for'statement
parameterList.get(1).setEncodedParameter(value);
- parameterList.get(2).setNumberOfBits(encryptPrivateKey.getLength() * Byte.SIZE);
- value = new byte[encryptPrivateKey.getLength()];
+ // Return code
+ returnValue.setParameterPassingMode(TriParameterPassingMode.TRI_OUT);
+ returnValue.setNumberOfBits(Byte.SIZE);
+ returnValue.setEncodedParameter(new byte[] { (byte)((result.getBoolean() == true) ? 0x01 : 0x00) });
+
+ _logger.exiting("PluginAdapter", "exec_readSigningKeys", ByteHelper.byteArrayToString(returnValue.getEncodedParameter()));
+ } // End of method exec_readSigningKeys
+
+ private void exec_readEncryptingKey(TriParameterList parameterList, TriParameter returnValue) {
+ _logger.entering("PluginAdapter", "exec_readEncryptingKey");
+
+ // Decode parameter
+// ByteHelper.dump("exec_readEncryptingKey: ", parameterList.get(0).getEncodedParameter());
+ CharstringValue keysId = TciCDWrapperFactory.getTciCDInstance().getCharstringValue();
+ String str = new String(parameterList.get(0).getEncodedParameter());
+ keysId.setString(str);
+
+ OctetstringValue privateKey = TciCDWrapperFactory.getTciCDInstance().getOctetstring();
+
+ // Execute the function
+ BooleanValue result = _extfuncsImpl.fx_readEncryptingKey(keysId, privateKey);
+
+ parameterList.get(1).setNumberOfBits(privateKey.getLength() * Byte.SIZE);
+ byte[] value = new byte[privateKey.getLength()];
for (int i = 0; i < value.length; i++) {
- value[i] = (byte) encryptPrivateKey.getOctet(i);
+ value[i] = (byte) privateKey.getOctet(i);
}// End of 'for'statement
- parameterList.get(2).setEncodedParameter(value);
+ parameterList.get(1).setEncodedParameter(value);
// Return code
returnValue.setParameterPassingMode(TriParameterPassingMode.TRI_OUT);
@@ -1204,8 +1257,8 @@
returnValue.setNumberOfBits(Byte.SIZE);
returnValue.setEncodedParameter(new byte[] { (byte)((result.getBoolean() == true) ? 0x01 : 0x00) });
- _logger.exiting("PluginAdapter", "exec_readPrivateKeys", ByteHelper.byteArrayToString(returnValue.getEncodedParameter()));
- } // End of method exec_parseIpv6Address
+ _logger.exiting("PluginAdapter", "exec_readSigningKeys", ByteHelper.byteArrayToString(returnValue.getEncodedParameter()));
+ } // End of method exec_readSigningKeys
private void exec_parseIpv6Address(TriParameterList parameterList, TriParameter returnValue) {
_logger.entering("PluginAdapter", "exec_parseIpv6Address");
/trunk/javasrc/tool/org/etsi/its/tool/elvior/res/codec.properties
1,7 → 1,8
# Debug level - Authorized values: OFF, ALL, INFO, SEVERE
DEBUG_ENABLED=OFF
DEBUG_ENABLED=ALL
 
ASN.1Codecs=CAM,DENM,CDD
ASN.1Codecs=CAM,DENM,CDD,MAP_SPaT
CAM=LibItsCam_asn1,org.etsi.its.tool.elvior.LibItsCam_asn1
DENM=LibItsDenm_asn1,org.etsi.its.tool.elvior.LibItsDenm_asn1
CDD=LibItsContainer_asn1,org.etsi.its.tool.elvior.LibItsContainer_asn1
MAP_SPaT=LibItsMapSpat_asn1,org.etsi.its.tool.elvior.LibItsMapSpat_asn1
/trunk/javasrc/tool/org/etsi/its/tool/elvior/res/ta.properties
17,41 → 17,43
fsapPort=FSAP/UdpIp
fsapPort=FSAP/UdpIp
 
#UpperTesterSettings=192.168.1.44:1501
UpperTesterSettings=172.28.0.33:1501
#UpperTesterSettings=192.168.42.1:12345
UpperTesterSettings=10.7.6.76:12345
 
# Peer ITS station
LinkLayer_Peer=BABEBABE0099
LinkLayer_Peer=8BADF00D0099
 
# Define the MAC address of the Ethernet interface connected to the IUT device
# Home laptop VMWare MAC address
#LocalEthernetMAC=005056C00008
# Home laptop MAC address
LocalEthernetMAC=4C80938EDB27
#LocalEthernetMAC=4C80938EDB27
# ETSI computer MAC address
#LocalEthernetMAC=0022191B7FDB
# G5 bridge connected on USB3/Ethernet
LocalEthernetMAC=0023545C8218
# Define the Ethernet type value used by the IUT
IutEthernetTypeValue=0x8947
# Node Ethernet addresses
LinkLayer_MTC=BABEBABE0000
LinkLayer_MTC=8BADF00D0000
# Link-Layer address of component NodeA
LinkLayer_NodeA=BABEBABE0001
LinkLayer_NodeA=8BADF00D0001
# Link-Layer address of component NodeB
LinkLayer_NodeB=BABEBABE0002
LinkLayer_NodeB=8BADF00D0002
# Link-Layer address of component NodeC
LinkLayer_NodeC=BABEBABE0003
LinkLayer_NodeC=8BADF00D0003
# Link-Layer address of component NodeD
LinkLayer_NodeD=BABEBABE0004
LinkLayer_NodeD=8BADF00D0004
# Interval between each beacon sent by TS (ms)
TsBeaconInterval=1000
# Latitude of Test System
TsLatitude=7000
TsLatitude=514787010
# Longitude of Test System
TsLongitude=520000
TsLongitude=56547460
# Secured mode status
TsSecuredMode=false
# Secured root path to access certificates and private keys
TsSecuredPath=""
# Secured configuration identifier
TsSecuredConfiId=cfg01
TsSecuredConfiId=data/certificates
 
/trunk/javasrc/tool/org/etsi/its/tool/testingtech/ExternalFunctionsPluginProvider.java
289,8 → 289,18
}
 
@Override
public BooleanValue fx_readPrivateKeys(CharstringValue p_certificateName, OctetstringValue p_signingPrivateKey, OctetstringValue p_encryptPrivateKey) {
return _externalFunctionsPluginProvider.fx_readPrivateKeys(p_certificateName, p_signingPrivateKey, p_encryptPrivateKey);
public BooleanValue fx_readCertificateDigest(CharstringValue p_certificateName, OctetstringValue p_digest) {
return _externalFunctionsPluginProvider.fx_readCertificateDigest(p_certificateName, p_digest);
}
 
@Override
public BooleanValue fx_readSigningKey(CharstringValue p_certificateName, OctetstringValue p_privateKey) {
return _externalFunctionsPluginProvider.fx_readSigningKey(p_certificateName, p_privateKey);
}
 
@Override
public BooleanValue fx_readEncryptingKey(CharstringValue p_certificateName, OctetstringValue p_privateKey) {
return _externalFunctionsPluginProvider.fx_readEncryptingKey(p_certificateName, p_privateKey);
}
}
/trunk/javasrc/tool/org/etsi/its/tool/testingtech/Its_CodecProvider.java
39,6 → 39,7
TTWBCodecSupport cs = new TTWBCodecSupport(rb);
cf.setExternalCodec("LibItsCam_asn1", cs.getCodec("LibItsCam_asn1"));
cf.setExternalCodec("LibItsDenm_asn1", cs.getCodec("LibItsDenm_asn1"));
cf.setExternalCodec("LibItsMapSpat_asn1", cs.getCodec("LibItsMapSpat_asn1"));
//TODO: add V2G external codecs (xsd)
//TODO: Yann add CALM external codecs (ASN.1)
return new Codec();
/trunk/javasrc/tool/org/etsi/tool/elvior/TciCDWrapper.java
143,4 → 143,9
return (RecordOfValue)_tciFactory.getTypeForName(typeName).newInstance();
}
 
@Override
public void setInteger(IntegerValue intValue, final Integer value) {
intValue.setInteger(value);
}
} // End of class TciCDWrapper
/trunk/javasrc/tool/org/etsi/tool/testingtech/TTWBCodecSupport.java
9,6 → 9,7
import org.etsi.ttcn.tci.TciCDProvided;
 
import com.testingtech.ttcn.extension.CodecProvider;
import com.testingtech.ttcn.tri.AbstractPlugin;
import com.testingtech.util.plugin.IPlugin;
import com.testingtech.util.plugin.IPluginParameter;
import com.testingtech.util.plugin.PluginInitException;
55,7 → 56,11
try {
CodecProvider codecProvider = (CodecProvider) plugin.instantiate(CodecProvider.class.getName(), parameters, _rb.getExternalLoader());
try {
return codecProvider.getCodec(_rb, encodingName);
TciCDProvided codec = codecProvider.getCodec(_rb, encodingName);
if (codec!=null && codec instanceof AbstractPlugin) {
((AbstractPlugin) codec).initAbstractPlugin(_rb);
}
return codec;
} catch (PluginInitException e) {
e.printStackTrace();
}
64,7 → 69,11
e.printStackTrace();
}
} else {
return _rb.TestAdapter.getCodec(encodingName);
TciCDProvided codec = _rb.TestAdapter.getCodec(encodingName);
if (codec!=null && codec instanceof AbstractPlugin) {
((AbstractPlugin) codec).initAbstractPlugin(_rb);
}
return codec;
}
 
return null;
/trunk/javasrc/tool/org/etsi/tool/testingtech/TciCDWrapper.java
56,6 → 56,11
}
 
@Override
public void setInteger(IntegerValue intValue, final Integer value) {
intValue.setInt(value);
}
 
@Override
public void setInteger(BigInteger value, IntegerValue setInt) {
setInt.setBigInt(value);
}
/trunk/ne-countries-50m.json
0,0 → 1,245
{"type":"FeatureCollection",
"features":[
{"type":"Feature","properties":{"name":"Aruba","iso_a2":"AW","iso_a3":"ABW","iso_n3":"533"},"geometry":{"type":"Polygon","coordinates":[[[-69.9,12.45],[-69.9,12.42],[-69.94,12.44],[-70,12.5],[-70.07,12.55],[-70.05,12.6],[-70.04,12.61],[-69.97,12.57],[-69.91,12.48],[-69.9,12.45]]]}},
{"type":"Feature","properties":{"name":"Afghanistan","iso_a2":"AF","iso_a3":"AFG","iso_n3":"004"},"geometry":{"type":"Polygon","coordinates":[[[74.89,37.23],[74.84,37.23],[74.77,37.25],[74.74,37.29],[74.73,37.29],[74.67,37.27],[74.56,37.24],[74.37,37.16],[74.38,37.14],[74.5,37.06],[74.53,37.03],[74.54,37.02],[74.43,36.98],[74.19,36.9],[74.04,36.83],[74,36.82],[73.91,36.85],[73.77,36.89],[73.73,36.89],[73.41,36.88],[73.12,36.87],[72.99,36.85],[72.77,36.84],[72.62,36.83],[72.53,36.8],[72.43,36.77],[72.33,36.74],[72.25,36.73],[72.16,36.7],[72.1,36.63],[71.92,36.53],[71.82,36.49],[71.77,36.43],[71.72,36.43],[71.62,36.44],[71.55,36.38],[71.46,36.29],[71.31,36.17],[71.23,36.12],[71.19,36.04],[71.22,36],[71.34,35.94],[71.4,35.88],[71.43,35.83],[71.48,35.71],[71.52,35.6],[71.57,35.55],[71.59,35.46],[71.6,35.41],[71.57,35.37],[71.55,35.33],[71.55,35.29],[71.58,35.25],[71.61,35.21],[71.62,35.18],[71.6,35.15],[71.55,35.1],[71.52,35.05],[71.46,34.97],[71.36,34.91],[71.29,34.87],[71.23,34.78],[71.11,34.68],[71.07,34.6],[71.02,34.55],[70.97,34.53],[70.98,34.49],[71.02,34.43],[71.1,34.37],[71.09,34.27],[71.09,34.2],[71.09,34.12],[71.05,34.05],[70.85,33.98],[70.65,33.95],[70.42,33.95],[70.33,33.96],[70.25,33.98],[69.99,34.05],[69.89,34.01],[69.87,33.9],[70.06,33.72],[70.13,33.62],[70.22,33.45],[70.28,33.37],[70.26,33.29],[70.09,33.2],[69.92,33.11],[69.7,33.09],[69.57,33.06],[69.5,33.02],[69.45,32.83],[69.4,32.76],[69.41,32.68],[69.36,32.59],[69.29,32.53],[69.24,32.43],[69.26,32.25],[69.28,31.94],[69.19,31.84],[69.08,31.74],[68.97,31.67],[68.87,31.63],[68.78,31.65],[68.71,31.71],[68.67,31.76],[68.6,31.8],[68.52,31.79],[68.44,31.75],[68.32,31.77],[68.21,31.81],[68.16,31.8],[68.13,31.76],[68.02,31.68],[67.74,31.55],[67.63,31.54],[67.58,31.51],[67.6,31.45],[67.65,31.41],[67.73,31.38],[67.74,31.34],[67.66,31.31],[67.6,31.28],[67.45,31.23],[67.29,31.22],[67.12,31.24],[67.03,31.3],[66.92,31.31],[66.83,31.26],[66.73,31.19],[66.62,31.05],[66.6,31.02],[66.57,31],[66.5,30.96],[66.4,30.91],[66.35,30.8],[66.29,30.61],[66.3,30.5],[66.31,30.32],[66.28,30.19],[66.24,30.11],[66.25,30.04],[66.31,29.97],[66.29,29.92],[66.23,29.87],[66.18,29.84],[65.96,29.78],[65.67,29.7],[65.47,29.65],[65.18,29.58],[65.1,29.56],[64.92,29.55],[64.83,29.56],[64.7,29.57],[64.52,29.56],[64.39,29.54],[64.27,29.51],[64.17,29.46],[64.12,29.41],[64.1,29.39],[63.97,29.43],[63.57,29.5],[62.48,29.41],[62.37,29.43],[62,29.53],[61.52,29.67],[61.22,29.75],[60.84,29.86],[61.1,30.13],[61.33,30.36],[61.56,30.6],[61.78,30.83],[61.81,30.91],[61.81,31.07],[61.76,31.29],[61.66,31.38],[61.35,31.42],[61.11,31.45],[60.85,31.48],[60.82,31.5],[60.79,31.66],[60.8,31.73],[60.79,31.88],[60.79,31.99],[60.83,32.17],[60.83,32.25],[60.71,32.6],[60.64,32.79],[60.58,32.99],[60.56,33.06],[60.56,33.14],[60.72,33.32],[60.77,33.36],[60.86,33.46],[60.92,33.51],[60.91,33.54],[60.81,33.56],[60.65,33.56],[60.57,33.59],[60.51,33.64],[60.49,33.71],[60.53,33.84],[60.49,34.09],[60.57,34.22],[60.64,34.31],[60.89,34.32],[60.8,34.42],[60.76,34.48],[60.74,34.49],[60.73,34.52],[60.74,34.54],[60.8,34.55],[60.85,34.59],[60.91,34.63],[60.95,34.65],[60.96,34.71],[60.99,34.75],[61.04,34.8],[61.08,34.86],[61.07,34.92],[61.11,35],[61.12,35.05],[61.15,35.09],[61.13,35.16],[61.11,35.21],[61.1,35.27],[61.14,35.29],[61.19,35.31],[61.2,35.36],[61.23,35.42],[61.25,35.47],[61.28,35.51],[61.28,35.55],[61.26,35.62],[61.34,35.63],[61.38,35.59],[61.42,35.55],[61.54,35.46],[61.62,35.43],[61.72,35.42],[61.84,35.43],[61.94,35.45],[61.98,35.44],[62.09,35.38],[62.21,35.29],[62.25,35.25],[62.27,35.19],[62.31,35.17],[62.39,35.23],[62.46,35.25],[62.53,35.24],[62.61,35.23],[62.69,35.26],[62.72,35.27],[62.86,35.35],[62.98,35.41],[63.06,35.45],[63.08,35.57],[63.12,35.64],[63.17,35.68],[63.15,35.73],[63.13,35.77],[63.11,35.82],[63.13,35.85],[63.18,35.86],[63.3,35.86],[63.52,35.91],[63.7,35.97],[63.86,36.01],[63.94,36.02],[64.01,36.01],[64.04,36.03],[64.05,36.07],[64.09,36.11],[64.18,36.15],[64.36,36.23],[64.51,36.34],[64.57,36.43],[64.6,36.55],[64.67,36.75],[64.75,36.96],[64.78,37.06],[64.82,37.13],[64.95,37.19],[65.09,37.24],[65.3,37.25],[65.55,37.25],[65.61,37.37],[65.64,37.47],[65.68,37.52],[65.74,37.56],[65.77,37.57],[65.9,37.51],[66.11,37.41],[66.35,37.37],[66.47,37.34],[66.52,37.35],[66.83,37.37],[67.07,37.33],[67.2,37.24],[67.32,37.21],[67.44,37.26],[67.52,37.27],[67.55,37.24],[67.61,37.22],[67.7,37.23],[67.75,37.2],[67.76,37.17],[67.77,37.14],[67.83,37.06],[67.96,36.97],[68.07,36.95],[68.21,37.02],[68.26,37.01],[68.28,37.04],[68.3,37.09],[68.39,37.14],[68.55,37.18],[68.64,37.22],[68.67,37.26],[68.72,37.27],[68.78,37.26],[68.82,37.27],[68.84,37.3],[68.86,37.32],[68.89,37.33],[68.91,37.33],[68.96,37.33],[69.05,37.27],[69.18,37.16],[69.26,37.11],[69.3,37.12],[69.35,37.15],[69.41,37.21],[69.43,37.29],[69.4,37.4],[69.42,37.49],[69.49,37.55],[69.63,37.59],[69.82,37.61],[69.94,37.6],[69.98,37.57],[70.04,37.55],[70.12,37.54],[70.19,37.58],[70.25,37.66],[70.25,37.77],[70.2,37.89],[70.21,37.92],[70.24,37.94],[70.31,37.98],[70.42,38.08],[70.52,38.19],[70.62,38.33],[70.74,38.42],[70.88,38.46],[71.05,38.42],[71.26,38.31],[71.33,38.17],[71.28,38.01],[71.28,37.92],[71.32,37.9],[71.39,37.91],[71.49,37.93],[71.55,37.93],[71.58,37.91],[71.58,37.86],[71.55,37.8],[71.51,37.6],[71.48,37.44],[71.45,37.27],[71.43,37.13],[71.47,37.02],[71.53,36.85],[71.6,36.73],[71.67,36.7],[71.73,36.68],[71.8,36.69],[71.94,36.77],[72.15,36.9],[72.36,36.98],[72.66,37.03],[72.76,37.17],[72.9,37.27],[73.21,37.41],[73.38,37.46],[73.48,37.47],[73.6,37.45],[73.63,37.44],[73.66,37.43],[73.72,37.42],[73.73,37.38],[73.72,37.33],[73.65,37.29],[73.63,37.26],[73.65,37.24],[73.75,37.23],[73.95,37.28],[74.08,37.32],[74.17,37.33],[74.2,37.37],[74.26,37.42],[74.35,37.42],[74.44,37.4],[74.52,37.38],[74.66,37.39],[74.73,37.36],[74.83,37.29],[74.88,37.24],[74.89,37.23]]]}},
{"type":"Feature","properties":{"name":"Angola","iso_a2":"AO","iso_a3":"AGO","iso_n3":"024"},"geometry":{"type":"MultiPolygon","coordinates":[[[[14.19,-5.88],[14.4,-5.89],[14.66,-5.89],[14.75,-5.88],[15.09,-5.87],[15.43,-5.87],[15.73,-5.86],[16.06,-5.86],[16.32,-5.87],[16.43,-5.9],[16.54,-5.97],[16.59,-6.03],[16.61,-6.05],[16.64,-6.11],[16.7,-6.16],[16.72,-6.24],[16.7,-6.35],[16.71,-6.47],[16.74,-6.62],[16.81,-6.77],[16.92,-6.93],[16.97,-7.06],[16.95,-7.16],[16.98,-7.26],[17.06,-7.36],[17.12,-7.42],[17.16,-7.46],[17.25,-7.62],[17.41,-7.88],[17.54,-8.08],[17.58,-8.1],[17.64,-8.09],[17.78,-8.07],[17.91,-8.07],[18.01,-8.11],[18.05,-8.1],[18.19,-8.02],[18.33,-8],[18.48,-7.97],[18.56,-7.94],[18.65,-7.94],[18.9,-8],[18.94,-8],[19.14,-8],[19.34,-7.97],[19.37,-7.71],[19.37,-7.66],[19.42,-7.56],[19.48,-7.47],[19.49,-7.39],[19.48,-7.28],[19.53,-7.14],[19.66,-7.04],[19.88,-6.99],[20,-6.98],[20.19,-6.95],[20.48,-6.92],[20.59,-6.92],[20.6,-6.94],[20.54,-7.12],[20.54,-7.18],[20.56,-7.24],[20.61,-7.28],[20.91,-7.28],[21.19,-7.28],[21.51,-7.3],[21.75,-7.31],[21.78,-7.31],[21.81,-7.33],[21.84,-7.42],[21.83,-7.6],[21.78,-7.87],[21.8,-8.11],[21.9,-8.34],[21.91,-8.69],[21.87,-8.9],[21.83,-9.17],[21.81,-9.47],[21.86,-9.59],[21.95,-9.73],[22.09,-9.86],[22.2,-10.04],[22.27,-10.26],[22.3,-10.4],[22.28,-10.45],[22.28,-10.55],[22.31,-10.69],[22.28,-10.78],[22.2,-10.83],[22.18,-10.89],[22.22,-11.01],[22.23,-11.12],[22.26,-11.16],[22.28,-11.19],[22.31,-11.2],[22.39,-11.16],[22.49,-11.09],[22.56,-11.06],[22.67,-11.06],[22.81,-11.08],[23.08,-11.09],[23.16,-11.07],[23.4,-10.98],[23.46,-10.97],[23.56,-10.98],[23.7,-11.01],[23.83,-11.01],[23.9,-10.98],[23.91,-10.94],[23.93,-10.89],[23.97,-10.87],[23.99,-11],[24.01,-11.18],[24.03,-11.32],[24.04,-11.37],[24.05,-11.41],[24.03,-11.44],[24.01,-11.52],[23.99,-11.59],[23.97,-11.64],[23.98,-11.73],[23.97,-11.85],[23.96,-11.99],[23.96,-12.12],[24,-12.35],[23.99,-12.42],[23.94,-12.54],[23.91,-12.64],[23.89,-12.74],[23.88,-12.8],[23.97,-12.96],[23.96,-12.99],[23.9,-13],[23.84,-13],[23.64,-13],[23.34,-13],[23.04,-13],[22.74,-13],[22.47,-13],[22.21,-13],[21.98,-13],[21.98,-13.16],[21.98,-13.48],[21.98,-13.8],[21.98,-14.12],[21.98,-14.44],[21.98,-14.76],[21.98,-15.08],[21.98,-15.4],[21.98,-15.72],[21.98,-15.96],[22.04,-16.26],[22.15,-16.6],[22.19,-16.63],[22.31,-16.69],[22.46,-16.82],[22.55,-16.91],[22.72,-17.08],[22.96,-17.29],[23.18,-17.47],[23.38,-17.64],[23.07,-17.7],[22.62,-17.78],[22.32,-17.84],[21.96,-17.91],[21.72,-17.95],[21.42,-18],[21.37,-18],[21.29,-17.96],[21.11,-17.96],[20.91,-18.01],[20.75,-18.02],[20.63,-18],[20.51,-17.95],[20.39,-17.89],[20.19,-17.86],[19.91,-17.88],[19.64,-17.87],[19.38,-17.83],[19.19,-17.81],[19.08,-17.82],[18.96,-17.8],[18.83,-17.77],[18.72,-17.7],[18.59,-17.57],[18.49,-17.44],[18.46,-17.42],[18.43,-17.41],[18.4,-17.4],[18.11,-17.4],[17.84,-17.39],[17.68,-17.39],[17.3,-17.39],[16.91,-17.39],[16.53,-17.39],[16.15,-17.39],[15.77,-17.39],[15.38,-17.39],[15,-17.39],[14.62,-17.39],[14.41,-17.39],[14.23,-17.4],[14.02,-17.41],[13.99,-17.4],[13.94,-17.39],[13.9,-17.36],[13.79,-17.29],[13.69,-17.23],[13.56,-17.14],[13.48,-17.04],[13.4,-17.01],[13.28,-16.99],[13.18,-16.97],[13.1,-16.97],[12.96,-17.02],[12.86,-17.06],[12.79,-17.11],[12.66,-17.16],[12.55,-17.21],[12.36,-17.21],[12.32,-17.21],[12.21,-17.21],[12.11,-17.16],[12.01,-17.17],[11.9,-17.23],[11.74,-17.25],[11.78,-16.87],[11.82,-16.7],[11.82,-16.5],[11.8,-15.99],[11.77,-15.92],[11.75,-15.83],[11.85,-15.77],[11.9,-15.72],[11.97,-15.63],[12.02,-15.51],[12.07,-15.25],[12.28,-14.64],[12.38,-14.04],[12.5,-13.76],[12.55,-13.44],[12.9,-13.03],[12.98,-12.78],[13.16,-12.65],[13.42,-12.52],[13.6,-12.29],[13.69,-12.12],[13.79,-11.81],[13.78,-11.49],[13.85,-11.05],[13.83,-10.93],[13.74,-10.76],[13.72,-10.63],[13.63,-10.51],[13.54,-10.42],[13.5,-10.26],[13.33,-10],[13.29,-9.83],[13.21,-9.7],[13.2,-9.55],[13.16,-9.39],[13.08,-9.23],[13,-9.05],[13,-8.99],[13.05,-8.92],[13.09,-8.9],[13.08,-8.93],[13.05,-8.98],[13.05,-9.01],[13.36,-8.69],[13.38,-8.62],[13.37,-8.55],[13.37,-8.47],[13.38,-8.37],[13.09,-7.78],[12.86,-7.23],[12.82,-6.95],[12.52,-6.59],[12.4,-6.35],[12.33,-6.19],[12.28,-6.12],[12.3,-6.09],[12.38,-6.08],[12.55,-6.05],[12.79,-6],[13.01,-5.91],[13.07,-5.86],[13.18,-5.86],[13.3,-5.88],[13.35,-5.86],[13.37,-5.86],[13.65,-5.86],[13.76,-5.86],[13.98,-5.86],[14.11,-5.87],[14.19,-5.88]]],[[[12.26,-5.75],[12.21,-5.76],[12.2,-5.73],[12.16,-5.63],[12.18,-5.54],[12.21,-5.47],[12.18,-5.32],[12.11,-5.2],[12.04,-5.04],[12.02,-5],[12.08,-4.95],[12.17,-4.84],[12.2,-4.78],[12.31,-4.77],[12.35,-4.72],[12.37,-4.66],[12.38,-4.62],[12.5,-4.59],[12.64,-4.53],[12.72,-4.47],[12.8,-4.43],[12.85,-4.43],[12.88,-4.45],[12.97,-4.55],[13.05,-4.62],[13.07,-4.63],[13.06,-4.65],[12.95,-4.7],[12.83,-4.74],[12.67,-4.91],[12.6,-4.98],[12.57,-5],[12.5,-5.04],[12.45,-5.07],[12.45,-5.09],[12.49,-5.11],[12.52,-5.15],[12.52,-5.42],[12.5,-5.7],[12.48,-5.72],[12.39,-5.73],[12.26,-5.75]]]]}},
{"type":"Feature","properties":{"name":"Anguilla","iso_a2":"AI","iso_a3":"AIA","iso_n3":"660"},"geometry":{"type":"Polygon","coordinates":[[[-63,18.22],[-63.16,18.17],[-63.15,18.2],[-63.03,18.27],[-62.98,18.26],[-63,18.22]]]}},
{"type":"Feature","properties":{"name":"Albania","iso_a2":"AL","iso_a3":"ALB","iso_n3":"008"},"geometry":{"type":"Polygon","coordinates":[[[20.06,42.55],[20.1,42.52],[20.19,42.43],[20.24,42.34],[20.35,42.31],[20.41,42.27],[20.49,42.22],[20.52,42.17],[20.58,42.01],[20.58,41.92],[20.57,41.87],[20.55,41.86],[20.51,41.71],[20.52,41.63],[20.52,41.57],[20.48,41.55],[20.45,41.52],[20.49,41.39],[20.49,41.34],[20.49,41.27],[20.57,41.13],[20.61,41.08],[20.66,41.06],[20.71,40.93],[20.74,40.91],[20.87,40.92],[20.93,40.9],[20.96,40.87],[20.96,40.85],[20.96,40.78],[20.99,40.72],[21.03,40.66],[21.03,40.62],[21,40.56],[20.95,40.49],[20.88,40.47],[20.81,40.45],[20.77,40.39],[20.75,40.33],[20.72,40.29],[20.7,40.25],[20.66,40.15],[20.66,40.12],[20.61,40.08],[20.53,40.07],[20.46,40.07],[20.41,40.05],[20.38,40.02],[20.34,39.99],[20.31,39.98],[20.31,39.95],[20.34,39.89],[20.38,39.84],[20.38,39.8],[20.36,39.79],[20.31,39.8],[20.29,39.78],[20.29,39.74],[20.27,39.7],[20.25,39.68],[20.21,39.65],[20.13,39.66],[20.06,39.7],[20.02,39.71],[20,39.71],[20,39.8],[19.96,39.87],[19.85,40.04],[19.48,40.21],[19.4,40.28],[19.36,40.35],[19.32,40.41],[19.36,40.41],[19.39,40.39],[19.44,40.38],[19.46,40.41],[19.44,40.47],[19.34,40.62],[19.34,40.66],[19.38,40.79],[19.46,40.93],[19.46,41.11],[19.48,41.24],[19.45,41.32],[19.44,41.42],[19.5,41.56],[19.55,41.6],[19.58,41.64],[19.58,41.79],[19.47,41.86],[19.34,41.87],[19.35,41.92],[19.36,42],[19.35,42.02],[19.36,42.07],[19.33,42.13],[19.28,42.17],[19.33,42.25],[19.4,42.34],[19.47,42.42],[19.54,42.49],[19.6,42.57],[19.65,42.63],[19.7,42.65],[19.73,42.63],[19.74,42.61],[19.74,42.53],[19.75,42.5],[19.79,42.48],[19.86,42.49],[19.94,42.51],[20.05,42.55],[20.06,42.55]]]}},
{"type":"Feature","properties":{"name":"Aland","iso_a2":"AX","iso_a3":"ALA","iso_n3":"248"},"geometry":{"type":"MultiPolygon","coordinates":[[[[20.61,60.04],[20.6,60.02],[20.52,60.01],[20.49,60.03],[20.41,60.03],[20.4,60.04],[20.43,60.06],[20.49,60.07],[20.57,60.07],[20.61,60.04]]],[[[19.66,60.19],[19.67,60.16],[19.63,60.17],[19.6,60.16],[19.58,60.14],[19.54,60.14],[19.52,60.18],[19.55,60.24],[19.63,60.25],[19.66,60.19]]],[[[19.99,60.35],[20.02,60.35],[20.03,60.36],[20.09,60.35],[20.17,60.31],[20.18,60.29],[20.24,60.28],[20.26,60.26],[20.19,60.19],[20.16,60.19],[20.13,60.2],[20.07,60.19],[20.04,60.18],[20.03,60.15],[20.03,60.09],[19.8,60.08],[19.75,60.1],[19.67,60.23],[19.69,60.27],[19.74,60.28],[19.78,60.29],[19.79,60.21],[19.85,60.22],[19.87,60.27],[19.87,60.3],[19.85,60.32],[19.81,60.33],[19.79,60.35],[19.82,60.39],[19.89,60.41],[19.94,60.36],[19.99,60.35]]]]}},
{"type":"Feature","properties":{"name":"Andorra","iso_a2":"AD","iso_a3":"AND","iso_n3":"020"},"geometry":{"type":"Polygon","coordinates":[[[1.71,42.5],[1.68,42.5],[1.59,42.46],[1.53,42.44],[1.49,42.43],[1.45,42.44],[1.43,42.46],[1.43,42.5],[1.42,42.53],[1.41,42.55],[1.43,42.6],[1.46,42.62],[1.5,42.64],[1.57,42.64],[1.71,42.6],[1.74,42.58],[1.74,42.56],[1.71,42.53],[1.71,42.5]]]}},
{"type":"Feature","properties":{"name":"United Arab Emirates","iso_a2":"AE","iso_a3":"ARE","iso_n3":"784"},"geometry":{"type":"MultiPolygon","coordinates":[[[[53.93,24.18],[53.93,24.14],[53.83,24.15],[53.8,24.14],[53.72,24.15],[53.63,24.17],[53.69,24.21],[53.83,24.26],[53.89,24.22],[53.93,24.18]]],[[[52.62,24.29],[52.6,24.28],[52.58,24.34],[52.58,24.35],[52.63,24.38],[52.66,24.33],[52.62,24.29]]],[[[53.33,24.26],[53.26,24.25],[53.19,24.29],[53.33,24.34],[53.37,24.36],[53.41,24.41],[53.45,24.37],[53.41,24.31],[53.38,24.28],[53.33,24.26]]],[[[54.47,24.44],[54.46,24.42],[54.43,24.43],[54.36,24.44],[54.33,24.47],[54.38,24.5],[54.4,24.51],[54.43,24.47],[54.47,24.44]]],[[[56.18,25.64],[56.25,25.63],[56.28,25.63],[56.3,25.65],[56.36,25.57],[56.37,25.02],[56.39,24.98],[56.35,24.97],[56.31,24.93],[56.27,24.87],[56.2,24.83],[56.15,24.8],[56.11,24.75],[56.06,24.74],[56.01,24.8],[55.97,24.86],[55.98,24.87],[56.01,24.88],[56.02,24.91],[56,24.95],[55.96,24.97],[55.92,24.97],[55.87,24.95],[55.82,24.91],[55.8,24.87],[55.79,24.78],[55.8,24.68],[55.8,24.64],[55.78,24.58],[55.77,24.49],[55.79,24.42],[55.8,24.38],[55.81,24.35],[55.76,24.24],[55.8,24.22],[55.93,24.22],[55.97,24.14],[55.99,24.09],[55.99,24.06],[55.89,24.04],[55.78,24.02],[55.7,24.02],[55.55,23.99],[55.47,23.94],[55.49,23.91],[55.52,23.89],[55.53,23.82],[55.51,23.72],[55.47,23.63],[55.41,23.52],[55.35,23.39],[55.27,23.19],[55.2,23.03],[55.19,22.92],[55.19,22.85],[55.19,22.7],[55.12,22.62],[55.1,22.62],[55.03,22.63],[55,22.63],[54.92,22.64],[54.8,22.66],[54.65,22.68],[54.47,22.7],[54.27,22.72],[54.05,22.75],[53.83,22.78],[53.61,22.8],[53.39,22.83],[53.19,22.85],[53.01,22.88],[52.86,22.9],[52.74,22.91],[52.67,22.92],[52.64,22.92],[52.56,22.93],[52.51,22.99],[52.45,23.05],[52.4,23.12],[52.34,23.18],[52.29,23.25],[52.23,23.31],[52.18,23.38],[52.12,23.45],[52.07,23.51],[52.01,23.58],[51.96,23.64],[51.9,23.71],[51.85,23.77],[51.79,23.84],[51.74,23.9],[51.68,23.97],[51.63,24.04],[51.59,24.08],[51.57,24.13],[51.57,24.26],[51.57,24.29],[51.61,24.34],[51.62,24.3],[51.66,24.25],[51.73,24.26],[51.77,24.25],[51.79,24.07],[51.84,24.01],[51.91,23.99],[52.12,23.97],[52.25,24],[52.51,24.11],[52.65,24.15],[53.03,24.15],[53.33,24.1],[53.8,24.07],[53.89,24.08],[54.15,24.17],[54.3,24.25],[54.4,24.28],[54.46,24.36],[54.5,24.46],[54.53,24.53],[54.58,24.56],[54.62,24.62],[54.66,24.72],[54.75,24.81],[55.1,25.04],[55.3,25.24],[55.32,25.3],[55.43,25.39],[55.52,25.5],[55.94,25.79],[56.03,25.92],[56.07,26.05],[56.08,26.06],[56.12,26.07],[56.17,26.05],[56.17,25.95],[56.15,25.85],[56.15,25.75],[56.14,25.69],[56.18,25.64]],[[56.21,25.21],[56.24,25.21],[56.28,25.24],[56.29,25.28],[56.28,25.3],[56.23,25.3],[56.22,25.27],[56.21,25.21]]]]}},
{"type":"Feature","properties":{"name":"Argentina","iso_a2":"AR","iso_a3":"ARG","iso_n3":"032"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-64.55,-54.72],[-64.44,-54.74],[-64.22,-54.72],[-64.11,-54.72],[-64.05,-54.73],[-64.03,-54.74],[-63.88,-54.72],[-63.82,-54.73],[-63.83,-54.77],[-63.97,-54.81],[-64.03,-54.79],[-64.32,-54.8],[-64.45,-54.84],[-64.51,-54.84],[-64.64,-54.9],[-64.73,-54.86],[-64.76,-54.83],[-64.69,-54.77],[-64.63,-54.77],[-64.58,-54.75],[-64.55,-54.72]]],[[[-68.28,-52.98],[-68.24,-53.08],[-68.33,-53.02],[-68.43,-53.06],[-68.48,-53.11],[-68.52,-53.18],[-68.52,-53.22],[-68.49,-53.26],[-68.39,-53.29],[-68.16,-53.31],[-68.14,-53.32],[-68.01,-53.56],[-67.94,-53.62],[-67.86,-53.66],[-67.68,-53.79],[-67.5,-53.92],[-67.29,-54.05],[-67.07,-54.15],[-66.87,-54.22],[-66.67,-54.31],[-66.46,-54.44],[-66.24,-54.53],[-65.99,-54.6],[-65.75,-54.65],[-65.37,-54.63],[-65.25,-54.64],[-65.18,-54.68],[-65.25,-54.79],[-65.35,-54.88],[-65.47,-54.91],[-65.6,-54.93],[-65.72,-54.93],[-65.84,-54.91],[-65.95,-54.92],[-66.06,-54.96],[-66.17,-54.98],[-66.29,-54.98],[-66.4,-55.01],[-66.51,-55.03],[-66.63,-55.01],[-66.93,-54.92],[-67.13,-54.9],[-67.79,-54.87],[-68.01,-54.85],[-68.22,-54.82],[-68.33,-54.82],[-68.49,-54.84],[-68.62,-54.83],[-68.65,-54.85],[-68.65,-54.63],[-68.64,-54.32],[-68.64,-54.05],[-68.64,-53.79],[-68.64,-53.52],[-68.63,-53.24],[-68.63,-52.95],[-68.63,-52.65],[-68.57,-52.69],[-68.34,-52.9],[-68.28,-52.98]]],[[[-61.88,-39.17],[-61.87,-39.23],[-61.92,-39.23],[-62.04,-39.17],[-62.08,-39.11],[-62.09,-39.09],[-61.97,-39.11],[-61.91,-39.14],[-61.88,-39.17]]],[[[-65.77,-22.1],[-65.69,-22.11],[-65.52,-22.09],[-65.48,-22.1],[-65.06,-22.1],[-64.99,-22.11],[-64.84,-22.14],[-64.76,-22.17],[-64.7,-22.19],[-64.61,-22.23],[-64.52,-22.37],[-64.48,-22.49],[-64.45,-22.59],[-64.37,-22.76],[-64.33,-22.83],[-64.31,-22.8],[-64.27,-22.6],[-64.21,-22.49],[-64.13,-22.37],[-63.98,-22.07],[-63.92,-22.03],[-63.86,-22.01],[-63.82,-22.01],[-63.78,-22.03],[-63.72,-22.03],[-63.68,-22],[-63.27,-22],[-62.84,-22],[-62.83,-22],[-62.82,-22.05],[-62.74,-22.16],[-62.67,-22.22],[-62.65,-22.23],[-62.63,-22.26],[-62.63,-22.29],[-62.54,-22.35],[-62.37,-22.44],[-62.21,-22.61],[-62.07,-22.87],[-61.93,-23.06],[-61.8,-23.18],[-61.68,-23.27],[-61.57,-23.32],[-61.51,-23.36],[-61.51,-23.39],[-61.4,-23.46],[-61.21,-23.56],[-61.08,-23.66],[-61.03,-23.76],[-60.84,-23.86],[-60.51,-23.96],[-60.26,-24.01],[-60.11,-24.01],[-59.89,-24.09],[-59.61,-24.27],[-59.44,-24.39],[-59.37,-24.45],[-59.19,-24.56],[-58.72,-24.79],[-58.52,-24.84],[-58.42,-24.89],[-58.37,-24.96],[-58.31,-24.98],[-58.25,-24.95],[-58.14,-24.98],[-57.96,-25.05],[-57.82,-25.14],[-57.64,-25.33],[-57.59,-25.41],[-57.56,-25.47],[-57.57,-25.53],[-57.63,-25.6],[-57.73,-25.67],[-57.75,-25.7],[-57.76,-25.73],[-57.78,-25.78],[-57.87,-25.91],[-57.89,-25.96],[-57.89,-26.01],[-57.94,-26.05],[-58.08,-26.14],[-58.11,-26.18],[-58.12,-26.22],[-58.14,-26.25],[-58.15,-26.26],[-58.18,-26.31],[-58.2,-26.38],[-58.21,-26.48],[-58.19,-26.59],[-58.19,-26.63],[-58.22,-26.65],[-58.24,-26.68],[-58.25,-26.73],[-58.27,-26.77],[-58.32,-26.8],[-58.33,-26.82],[-58.32,-26.86],[-58.36,-26.89],[-58.44,-26.92],[-58.49,-26.97],[-58.5,-27.03],[-58.55,-27.08],[-58.62,-27.13],[-58.64,-27.2],[-58.6,-27.31],[-58.17,-27.27],[-57.81,-27.32],[-57.39,-27.43],[-57.11,-27.47],[-56.97,-27.44],[-56.87,-27.44],[-56.81,-27.48],[-56.72,-27.49],[-56.6,-27.47],[-56.51,-27.49],[-56.44,-27.55],[-56.37,-27.54],[-56.31,-27.44],[-56.24,-27.37],[-56.16,-27.32],[-56.07,-27.31],[-55.95,-27.33],[-55.86,-27.36],[-55.79,-27.42],[-55.71,-27.41],[-55.63,-27.36],[-55.59,-27.29],[-55.6,-27.21],[-55.56,-27.15],[-55.5,-27.12],[-55.45,-27.07],[-55.43,-27.01],[-55.35,-26.97],[-55.21,-26.96],[-55.14,-26.93],[-55.13,-26.89],[-55.09,-26.84],[-55.01,-26.81],[-54.96,-26.76],[-54.93,-26.7],[-54.89,-26.67],[-54.83,-26.65],[-54.76,-26.53],[-54.68,-26.31],[-54.63,-26.01],[-54.62,-25.58],[-54.54,-25.58],[-54.5,-25.61],[-54.44,-25.62],[-54.38,-25.59],[-54.33,-25.57],[-54.25,-25.57],[-54.21,-25.53],[-54.15,-25.52],[-54.12,-25.55],[-54.09,-25.57],[-54.01,-25.58],[-53.95,-25.65],[-53.89,-25.67],[-53.86,-25.75],[-53.82,-25.96],[-53.75,-26.08],[-53.67,-26.23],[-53.67,-26.29],[-53.71,-26.35],[-53.72,-26.44],[-53.74,-26.67],[-53.75,-26.75],[-53.73,-26.8],[-53.72,-26.88],[-53.76,-26.98],[-53.84,-27.12],[-53.92,-27.16],[-53.94,-27.16],[-54.04,-27.24],[-54.11,-27.27],[-54.16,-27.25],[-54.21,-27.29],[-54.26,-27.38],[-54.33,-27.42],[-54.45,-27.45],[-54.48,-27.46],[-54.55,-27.45],[-54.62,-27.48],[-54.67,-27.53],[-54.72,-27.54],[-54.78,-27.53],[-54.83,-27.55],[-54.88,-27.6],[-54.9,-27.65],[-54.91,-27.71],[-54.96,-27.75],[-55.04,-27.77],[-55.07,-27.8],[-55.06,-27.84],[-55.1,-27.87],[-55.24,-27.9],[-55.35,-27.96],[-55.41,-28.04],[-55.48,-28.09],[-55.58,-28.12],[-55.73,-28.2],[-55.75,-28.26],[-55.69,-28.3],[-55.67,-28.34],[-55.69,-28.38],[-55.73,-28.39],[-55.81,-28.36],[-55.86,-28.35],[-55.89,-28.37],[-55.91,-28.4],[-55.9,-28.44],[-55.93,-28.47],[-55.98,-28.49],[-56.02,-28.52],[-56.03,-28.58],[-56.1,-28.65],[-56.23,-28.74],[-56.32,-28.85],[-56.39,-29],[-56.48,-29.09],[-56.57,-29.14],[-56.64,-29.2],[-56.67,-29.29],[-56.77,-29.42],[-56.94,-29.59],[-57.09,-29.72],[-57.22,-29.78],[-57.3,-29.86],[-57.32,-29.94],[-57.41,-30.03],[-57.56,-30.14],[-57.61,-30.19],[-57.65,-30.23],[-57.65,-30.3],[-57.71,-30.38],[-57.83,-30.5],[-57.87,-30.59],[-57.82,-30.71],[-57.81,-30.86],[-57.83,-30.92],[-57.89,-30.94],[-57.9,-30.98],[-57.87,-31.03],[-57.87,-31.1],[-57.89,-31.2],[-57.95,-31.3],[-58.03,-31.42],[-58.05,-31.49],[-58.01,-31.53],[-57.99,-31.58],[-57.99,-31.62],[-58.01,-31.68],[-58.04,-31.77],[-58.1,-31.83],[-58.17,-31.87],[-58.19,-31.92],[-58.16,-31.99],[-58.16,-32.05],[-58.18,-32.12],[-58.16,-32.18],[-58.12,-32.25],[-58.12,-32.32],[-58.2,-32.47],[-58.22,-32.56],[-58.17,-32.96],[-58.2,-33.01],[-58.25,-33.08],[-58.31,-33.08],[-58.38,-33.07],[-58.42,-33.11],[-58.45,-33.29],[-58.55,-33.66],[-58.53,-33.75],[-58.46,-33.9],[-58.43,-33.99],[-58.41,-34.06],[-58.39,-34.19],[-58.44,-34.25],[-58.48,-34.26],[-58.53,-34.3],[-58.47,-34.46],[-58.42,-34.53],[-58.28,-34.68],[-57.76,-34.89],[-57.55,-35.02],[-57.3,-35.19],[-57.17,-35.36],[-57.16,-35.51],[-57.35,-35.72],[-57.38,-35.9],[-57.34,-36.03],[-57.26,-36.14],[-57.08,-36.3],[-56.94,-36.35],[-56.75,-36.35],[-56.72,-36.39],[-56.7,-36.43],[-56.67,-36.74],[-56.67,-36.85],[-56.73,-36.96],[-57.09,-37.45],[-57.4,-37.74],[-57.51,-37.91],[-57.55,-38.09],[-57.65,-38.17],[-58.18,-38.44],[-59.01,-38.67],[-59.68,-38.8],[-59.83,-38.84],[-60.9,-38.97],[-61.11,-38.99],[-61.38,-38.98],[-61.6,-39],[-61.85,-38.96],[-62.07,-38.92],[-62.19,-38.81],[-62.33,-38.8],[-62.37,-38.85],[-62.3,-38.99],[-62.34,-39.15],[-62.3,-39.24],[-62.21,-39.26],[-62.13,-39.31],[-62.05,-39.37],[-62.18,-39.38],[-62.13,-39.43],[-62.08,-39.46],[-62.08,-39.57],[-62.13,-39.83],[-62.25,-39.88],[-62.29,-39.9],[-62.32,-39.95],[-62.4,-40.2],[-62.43,-40.36],[-62.39,-40.46],[-62.25,-40.67],[-62.3,-40.81],[-62.4,-40.89],[-62.8,-41.05],[-62.96,-41.11],[-63.21,-41.15],[-63.62,-41.16],[-63.77,-41.15],[-64.12,-41.01],[-64.38,-40.92],[-64.62,-40.85],[-64.85,-40.81],[-64.82,-40.79],[-64.8,-40.76],[-64.87,-40.74],[-64.92,-40.73],[-65.07,-40.81],[-65.13,-40.88],[-65.15,-40.95],[-65.15,-41.11],[-65.13,-41.24],[-65.02,-41.57],[-65.01,-41.75],[-65.06,-41.97],[-64.99,-42.1],[-64.9,-42.16],[-64.7,-42.22],[-64.62,-42.26],[-64.54,-42.25],[-64.51,-42.27],[-64.52,-42.3],[-64.57,-42.36],[-64.57,-42.42],[-64.42,-42.43],[-64.26,-42.42],[-64.1,-42.4],[-64.06,-42.35],[-64.06,-42.27],[-64.25,-42.25],[-64.23,-42.22],[-64.08,-42.18],[-63.89,-42.12],[-63.8,-42.11],[-63.73,-42.15],[-63.68,-42.19],[-63.63,-42.28],[-63.6,-42.41],[-63.59,-42.56],[-63.62,-42.7],[-63.64,-42.75],[-63.69,-42.81],[-64.03,-42.88],[-64.13,-42.86],[-64.22,-42.76],[-64.25,-42.65],[-64.32,-42.57],[-64.49,-42.51],[-64.65,-42.53],[-64.81,-42.63],[-64.97,-42.67],[-65.03,-42.76],[-64.63,-42.91],[-64.44,-42.95],[-64.38,-42.95],[-64.32,-42.97],[-64.38,-43.02],[-64.43,-43.06],[-64.72,-43.14],[-64.84,-43.19],[-64.99,-43.29],[-65.19,-43.52],[-65.25,-43.57],[-65.28,-43.63],[-65.3,-43.79],[-65.24,-44.05],[-65.31,-44.16],[-65.27,-44.28],[-65.29,-44.36],[-65.36,-44.48],[-65.65,-44.66],[-65.7,-44.8],[-65.6,-44.88],[-65.61,-44.95],[-65.64,-45.01],[-65.76,-45.01],[-66.19,-44.96],[-66.35,-45.03],[-66.49,-45.12],[-66.53,-45.16],[-66.59,-45.18],[-66.88,-45.23],[-66.94,-45.26],[-67.26,-45.58],[-67.39,-45.78],[-67.56,-45.97],[-67.6,-46.05],[-67.61,-46.17],[-67.59,-46.27],[-67.56,-46.35],[-67.51,-46.44],[-67.39,-46.55],[-66.78,-47.01],[-66.65,-47.05],[-66,-47.09],[-65.85,-47.16],[-65.77,-47.26],[-65.74,-47.34],[-65.78,-47.57],[-65.81,-47.64],[-65.89,-47.7],[-66.04,-47.78],[-66.23,-47.83],[-66.17,-47.86],[-66.1,-47.85],[-65.93,-47.83],[-65.86,-47.85],[-65.81,-47.94],[-65.91,-47.98],[-65.94,-48.02],[-66.02,-48.08],[-66.39,-48.34],[-66.6,-48.42],[-66.78,-48.52],[-67.03,-48.63],[-67.13,-48.69],[-67.26,-48.81],[-67.47,-48.95],[-67.68,-49.25],[-67.69,-49.3],[-67.66,-49.34],[-67.78,-49.86],[-67.83,-49.92],[-67.91,-49.98],[-68.15,-50.09],[-68.26,-50.1],[-68.4,-50.04],[-68.49,-49.98],[-68.57,-49.87],[-68.67,-49.75],[-68.67,-49.79],[-68.64,-49.86],[-68.66,-49.94],[-68.91,-49.97],[-68.98,-50],[-68.75,-49.99],[-68.6,-50.01],[-68.53,-50.04],[-68.47,-50.09],[-68.42,-50.16],[-68.47,-50.19],[-68.59,-50.23],[-68.75,-50.28],[-68.94,-50.38],[-69.04,-50.5],[-69.09,-50.58],[-69.14,-50.75],[-69.15,-50.86],[-69.24,-50.95],[-69.36,-51.03],[-69.35,-51.05],[-69.27,-51.01],[-69.2,-50.99],[-69.14,-51.1],[-69.07,-51.3],[-69.03,-51.45],[-69.04,-51.49],[-69.06,-51.55],[-69.22,-51.56],[-69.36,-51.56],[-69.47,-51.58],[-69.41,-51.61],[-69.31,-51.6],[-69.18,-51.66],[-69.03,-51.64],[-68.97,-51.68],[-68.92,-51.71],[-68.69,-52.01],[-68.49,-52.2],[-68.39,-52.31],[-68.44,-52.36],[-68.46,-52.29],[-68.59,-52.27],[-68.72,-52.26],[-68.92,-52.21],[-69.21,-52.14],[-69.49,-52.14],[-69.71,-52.08],[-69.96,-52.01],[-70.48,-52],[-70.94,-52],[-71.41,-51.99],[-71.72,-51.99],[-71.92,-51.99],[-71.97,-51.96],[-71.95,-51.88],[-72.03,-51.82],[-72.14,-51.74],[-72.27,-51.69],[-72.33,-51.62],[-72.41,-51.54],[-72.37,-51.47],[-72.3,-51.3],[-72.3,-51.22],[-72.36,-51.17],[-72.38,-51.1],[-72.36,-51.06],[-72.31,-51.03],[-72.28,-50.91],[-72.3,-50.79],[-72.34,-50.68],[-72.39,-50.63],[-72.46,-50.61],[-72.51,-50.61],[-72.62,-50.65],[-72.8,-50.64],[-72.87,-50.65],[-72.96,-50.7],[-73.08,-50.76],[-73.15,-50.74],[-73.17,-50.67],[-73.22,-50.61],[-73.25,-50.56],[-73.27,-50.47],[-73.31,-50.36],[-73.39,-50.23],[-73.5,-50.13],[-73.51,-50.03],[-73.53,-49.91],[-73.47,-49.79],[-73.5,-49.7],[-73.58,-49.58],[-73.55,-49.46],[-73.48,-49.4],[-73.46,-49.31],[-73.14,-49.3],[-73.15,-49.19],[-73.09,-49.1],[-73.03,-49.01],[-72.98,-48.98],[-72.87,-48.94],[-72.73,-48.9],[-72.65,-48.84],[-72.61,-48.79],[-72.59,-48.73],[-72.59,-48.66],[-72.61,-48.52],[-72.58,-48.48],[-72.5,-48.42],[-72.35,-48.37],[-72.29,-48.23],[-72.33,-48.11],[-72.41,-48.02],[-72.51,-47.97],[-72.52,-47.88],[-72.47,-47.78],[-72.41,-47.69],[-72.34,-47.57],[-72.35,-47.49],[-72.28,-47.45],[-72.1,-47.34],[-72.04,-47.24],[-71.98,-47.21],[-71.9,-47.2],[-71.9,-47.14],[-71.95,-47.09],[-71.96,-47.02],[-71.96,-46.94],[-71.94,-46.83],[-71.86,-46.79],[-71.73,-46.71],[-71.7,-46.65],[-71.7,-46.58],[-71.73,-46.43],[-71.76,-46.32],[-71.78,-46.28],[-71.83,-46.21],[-71.88,-46.16],[-71.81,-46.1],[-71.68,-46.04],[-71.63,-45.95],[-71.68,-45.88],[-71.75,-45.84],[-71.77,-45.72],[-71.75,-45.58],[-71.69,-45.53],[-71.51,-45.51],[-71.49,-45.44],[-71.35,-45.33],[-71.35,-45.23],[-71.44,-45.17],[-71.53,-45.07],[-71.6,-44.98],[-71.81,-44.93],[-72.04,-44.9],[-72.07,-44.82],[-72.06,-44.77],[-71.96,-44.79],[-71.78,-44.77],[-71.65,-44.77],[-71.56,-44.76],[-71.46,-44.75],[-71.36,-44.79],[-71.26,-44.76],[-71.22,-44.63],[-71.16,-44.56],[-71.15,-44.49],[-71.21,-44.44],[-71.33,-44.42],[-71.82,-44.38],[-71.84,-44.33],[-71.83,-44.24],[-71.81,-44.15],[-71.81,-44.11],[-71.77,-44.07],[-71.72,-43.98],[-71.68,-43.93],[-71.72,-43.86],[-71.79,-43.75],[-71.74,-43.7],[-71.73,-43.65],[-71.75,-43.59],[-71.83,-43.53],[-71.9,-43.44],[-71.9,-43.35],[-71.82,-43.32],[-71.76,-43.29],[-71.75,-43.24],[-71.78,-43.17],[-71.9,-43.15],[-72.05,-43.1],[-72.1,-43.07],[-72.15,-42.99],[-72.11,-42.78],[-72.13,-42.65],[-72.14,-42.58],[-72.11,-42.52],[-72.05,-42.47],[-72.08,-42.36],[-72.12,-42.3],[-72.11,-42.25],[-72.06,-42.21],[-72.03,-42.15],[-71.99,-42.13],[-71.94,-42.17],[-71.86,-42.15],[-71.76,-42.1],[-71.75,-42.05],[-71.77,-41.97],[-71.84,-41.77],[-71.91,-41.65],[-71.9,-41.61],[-71.87,-41.56],[-71.89,-41.39],[-71.89,-41.29],[-71.88,-40.99],[-71.87,-40.89],[-71.94,-40.79],[-71.93,-40.69],[-71.88,-40.62],[-71.84,-40.52],[-71.8,-40.44],[-71.77,-40.4],[-71.71,-40.38],[-71.7,-40.34],[-71.72,-40.3],[-71.8,-40.24],[-71.82,-40.18],[-71.8,-40.12],[-71.76,-40.09],[-71.7,-40.09],[-71.66,-40.02],[-71.65,-39.93],[-71.64,-39.89],[-71.67,-39.83],[-71.7,-39.71],[-71.72,-39.64],[-71.69,-39.61],[-71.65,-39.59],[-71.59,-39.61],[-71.54,-39.6],[-71.53,-39.56],[-71.53,-39.52],[-71.51,-39.5],[-71.47,-39.4],[-71.42,-39.29],[-71.41,-39.21],[-71.43,-38.99],[-71.4,-38.94],[-71.35,-38.89],[-71.29,-38.85],[-71.2,-38.81],[-71.09,-38.76],[-70.95,-38.74],[-70.9,-38.68],[-70.86,-38.6],[-70.85,-38.54],[-70.9,-38.5],[-70.97,-38.45],[-71,-38.31],[-71.02,-38.19],[-71.03,-38.04],[-71.1,-37.91],[-71.17,-37.76],[-71.19,-37.63],[-71.16,-37.56],[-71.13,-37.45],[-71.16,-37.39],[-71.2,-37.3],[-71.16,-37.23],[-71.12,-37.11],[-71.12,-37.06],[-71.16,-36.92],[-71.19,-36.84],[-71.16,-36.76],[-71.11,-36.69],[-71.07,-36.64],[-71.07,-36.58],[-71.06,-36.52],[-70.98,-36.49],[-70.91,-36.42],[-70.85,-36.41],[-70.79,-36.41],[-70.75,-36.39],[-70.73,-36.34],[-70.72,-36.28],[-70.62,-36.21],[-70.56,-36.15],[-70.46,-36.13],[-70.4,-36.06],[-70.4,-35.97],[-70.42,-35.88],[-70.38,-35.77],[-70.42,-35.61],[-70.42,-35.52],[-70.46,-35.45],[-70.45,-35.38],[-70.47,-35.33],[-70.53,-35.31],[-70.56,-35.25],[-70.53,-35.22],[-70.47,-35.19],[-70.39,-35.15],[-70.34,-34.92],[-70.31,-34.85],[-70.29,-34.77],[-70.29,-34.73],[-70.25,-34.67],[-70.21,-34.58],[-70.14,-34.49],[-70.1,-34.43],[-70.06,-34.35],[-70.05,-34.3],[-70,-34.28],[-69.95,-34.27],[-69.88,-34.25],[-69.85,-34.22],[-69.86,-34.18],[-69.86,-34.08],[-69.88,-33.93],[-69.89,-33.73],[-69.88,-33.6],[-69.84,-33.47],[-69.8,-33.4],[-69.81,-33.34],[-69.82,-33.28],[-69.9,-33.25],[-69.97,-33.28],[-70.02,-33.27],[-70.08,-33.2],[-70.1,-33.13],[-70.09,-33.03],[-70.04,-32.96],[-70.02,-32.88],[-70.05,-32.86],[-70.12,-32.81],[-70.18,-32.63],[-70.17,-32.47],[-70.23,-32.43],[-70.26,-32.31],[-70.32,-32.27],[-70.34,-32.18],[-70.36,-32.08],[-70.36,-32.04],[-70.29,-32.03],[-70.25,-31.96],[-70.28,-31.92],[-70.33,-31.88],[-70.39,-31.88],[-70.45,-31.84],[-70.53,-31.67],[-70.59,-31.57],[-70.57,-31.43],[-70.55,-31.32],[-70.53,-31.22],[-70.52,-31.15],[-70.47,-31.11],[-70.43,-31.13],[-70.39,-31.12],[-70.35,-31.06],[-70.31,-31.02],[-70.31,-30.99],[-70.34,-30.96],[-70.35,-30.9],[-70.32,-30.83],[-70.27,-30.68],[-70.19,-30.5],[-70.16,-30.44],[-70.17,-30.39],[-70.15,-30.36],[-70.1,-30.39],[-69.96,-30.36],[-69.91,-30.28],[-69.89,-30.21],[-69.84,-30.18],[-69.86,-30.12],[-69.92,-30.1],[-69.96,-30.08],[-69.95,-30.02],[-69.92,-29.87],[-69.93,-29.77],[-69.98,-29.55],[-70.03,-29.32],[-70,-29.25],[-69.9,-29.15],[-69.83,-29.1],[-69.81,-29.05],[-69.74,-28.78],[-69.73,-28.64],[-69.69,-28.56],[-69.66,-28.41],[-69.53,-28.29],[-69.49,-28.2],[-69.44,-28.19],[-69.41,-28.17],[-69.34,-28.07],[-69.25,-27.97],[-69.17,-27.92],[-69.16,-27.85],[-69.12,-27.74],[-69.04,-27.57],[-69,-27.45],[-68.94,-27.41],[-68.88,-27.25],[-68.85,-27.15],[-68.77,-27.12],[-68.71,-27.1],[-68.65,-27.15],[-68.59,-27.14],[-68.54,-27.09],[-68.41,-27.05],[-68.35,-27.03],[-68.32,-26.97],[-68.32,-26.88],[-68.37,-26.81],[-68.49,-26.67],[-68.58,-26.52],[-68.59,-26.47],[-68.59,-26.42],[-68.58,-26.35],[-68.53,-26.28],[-68.41,-26.15],[-68.43,-26.07],[-68.51,-25.74],[-68.54,-25.65],[-68.6,-25.49],[-68.59,-25.42],[-68.54,-25.24],[-68.5,-25.16],[-68.43,-25.15],[-68.4,-25.12],[-68.38,-25.09],[-68.43,-25.05],[-68.45,-25],[-68.47,-24.93],[-68.53,-24.9],[-68.56,-24.84],[-68.56,-24.75],[-68.51,-24.63],[-68.45,-24.6],[-68.42,-24.55],[-68.36,-24.5],[-68.3,-24.46],[-68.25,-24.39],[-68.05,-24.31],[-67.89,-24.24],[-67.57,-24.12],[-67.36,-24.03],[-67.34,-23.97],[-67.32,-23.93],[-67.22,-23.63],[-67.09,-23.25],[-67.01,-23],[-67.19,-22.82],[-67.16,-22.77],[-67.06,-22.65],[-67.03,-22.55],[-66.99,-22.51],[-66.8,-22.41],[-66.77,-22.34],[-66.75,-22.27],[-66.71,-22.22],[-66.64,-22.21],[-66.51,-22.16],[-66.37,-22.11],[-66.32,-22.05],[-66.28,-21.95],[-66.25,-21.83],[-66.22,-21.8],[-66.17,-21.81],[-66.1,-21.84],[-66.06,-21.88],[-65.86,-22.02],[-65.77,-22.1]]]]}},
{"type":"Feature","properties":{"name":"Armenia","iso_a2":"AM","iso_a3":"ARM","iso_n3":"051"},"geometry":{"type":"MultiPolygon","coordinates":[[[[45.55,40.62],[45.51,40.6],[45.48,40.61],[45.48,40.65],[45.5,40.66],[45.53,40.66],[45.56,40.65],[45.55,40.62]]],[[[45.08,41.2],[45.15,41.18],[45.19,41.15],[45.19,41.13],[45.07,41.1],[45.06,41.09],[45.07,41.08],[45.11,41.07],[45.27,41.01],[45.37,41],[45.42,40.99],[45.44,40.95],[45.52,40.9],[45.59,40.85],[45.59,40.83],[45.58,40.8],[45.4,40.71],[45.38,40.67],[45.38,40.64],[45.45,40.53],[45.57,40.42],[45.74,40.33],[45.96,40.23],[45.97,40.17],[45.93,40.1],[45.9,40.06],[45.89,40.02],[45.86,40.01],[45.63,40.01],[45.6,40],[45.58,39.99],[45.58,39.98],[45.66,39.96],[45.79,39.88],[45.86,39.81],[45.94,39.78],[46.03,39.72],[46.09,39.66],[46.2,39.59],[46.32,39.62],[46.48,39.56],[46.49,39.51],[46.48,39.48],[46.38,39.43],[46.37,39.42],[46.37,39.4],[46.38,39.38],[46.44,39.35],[46.51,39.3],[46.58,39.22],[46.55,39.2],[46.48,39.2],[46.42,39.21],[46.4,39.19],[46.4,39.17],[46.48,39.11],[46.49,39.07],[46.49,39],[46.49,38.91],[46.32,38.91],[46.17,38.87],[46.11,38.88],[46.08,38.95],[46.05,39.02],[45.95,39.18],[45.98,39.24],[45.93,39.28],[45.8,39.35],[45.77,39.38],[45.78,39.42],[45.8,39.49],[45.78,39.55],[45.75,39.56],[45.69,39.56],[45.61,39.55],[45.46,39.49],[45.35,39.53],[45.29,39.57],[45.25,39.6],[45.17,39.57],[45.15,39.58],[45.15,39.66],[45.12,39.7],[45.08,39.74],[45.03,39.77],[44.87,39.72],[44.77,39.7],[44.73,39.75],[44.56,39.89],[44.4,40],[44.29,40.04],[44.18,40.04],[44.01,40.01],[43.94,40.02],[43.79,40.07],[43.67,40.13],[43.68,40.15],[43.71,40.17],[43.68,40.24],[43.61,40.36],[43.62,40.39],[43.59,40.44],[43.57,40.48],[43.67,40.57],[43.71,40.65],[43.72,40.72],[43.7,40.79],[43.63,40.93],[43.59,40.97],[43.52,41],[43.46,41.06],[43.44,41.11],[43.49,41.12],[43.65,41.12],[43.79,41.13],[43.91,41.16],[44.08,41.18],[44.15,41.2],[44.23,41.21],[44.47,41.19],[44.56,41.21],[44.84,41.21],[44.85,41.22],[44.81,41.25],[44.81,41.26],[44.98,41.28],[45,41.29],[45.02,41.25],[45.08,41.2]],[[44.97,41.03],[45,41.02],[45.02,41.03],[45.03,41.05],[45.02,41.08],[44.99,41.09],[44.96,41.08],[44.96,41.05],[44.97,41.03]]]]}},
{"type":"Feature","properties":{"name":"American Samoa","iso_a2":"AS","iso_a3":"ASM","iso_n3":"016"},"geometry":{"type":"Polygon","coordinates":[[[-170.73,-14.35],[-170.77,-14.36],[-170.82,-14.31],[-170.72,-14.28],[-170.69,-14.26],[-170.57,-14.27],[-170.64,-14.28],[-170.73,-14.35]]]}},
{"type":"Feature","properties":{"name":"Antarctica","iso_a2":"AQ","iso_a3":"ATA","iso_n3":"010"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-161.99,-83.12],[-162.3,-83.14],[-163.05,-83.1],[-163.24,-83.06],[-163.35,-83.02],[-163.55,-82.99],[-163.6,-82.97],[-163.6,-82.93],[-163.63,-82.9],[-163.7,-82.88],[-163.74,-82.86],[-163.8,-82.84],[-162.8,-82.86],[-162.41,-82.9],[-162.34,-82.92],[-161.64,-83.03],[-161.83,-83.04],[-161.99,-83.12]]],[[[-157.99,-82.1],[-158.08,-82.11],[-158.15,-82.06],[-158.55,-81.95],[-158.77,-81.88],[-158.93,-81.82],[-158.99,-81.78],[-158.91,-81.78],[-158.35,-81.9],[-158.26,-81.95],[-157.83,-82.03],[-157.99,-82.1]]],[[[-160.47,-81.59],[-160.57,-81.6],[-163.25,-81.48],[-163.77,-81.44],[-163.89,-81.42],[-163.94,-81.4],[-163.95,-81.39],[-163.93,-81.35],[-163.87,-81.32],[-163.2,-81.28],[-162.46,-81.31],[-161.56,-81.4],[-160.94,-81.46],[-160.62,-81.52],[-160.49,-81.57],[-160.47,-81.59]]],[[[-153.93,-80.03],[-154.11,-80.04],[-154.35,-80.03],[-154.53,-80],[-154.94,-79.97],[-155.04,-79.9],[-155.53,-79.85],[-155.75,-79.83],[-155.67,-79.77],[-155.16,-79.85],[-154.54,-79.94],[-154.03,-79.99],[-153.93,-80.03]]],[[[-59.73,-80.34],[-59.77,-80.56],[-59.77,-80.66],[-59.83,-80.73],[-59.93,-80.77],[-60.12,-80.84],[-60.27,-80.88],[-60.58,-80.95],[-62.02,-80.89],[-62.67,-80.83],[-62.94,-80.77],[-62.99,-80.73],[-63.07,-80.63],[-63.14,-80.59],[-63.71,-80.62],[-64.07,-80.65],[-64.13,-80.67],[-64.22,-80.73],[-64.27,-80.75],[-65.2,-80.61],[-66.18,-80.44],[-66.59,-80.36],[-66.73,-80.32],[-66.77,-80.29],[-66.68,-80.26],[-66.59,-80.24],[-66.48,-80.22],[-66.38,-80.22],[-66.3,-80.23],[-66.22,-80.26],[-66.17,-80.35],[-66.12,-80.36],[-65.98,-80.38],[-62.52,-80.37],[-62.23,-80.37],[-61.63,-80.34],[-61.31,-80.31],[-61.19,-80.26],[-61.48,-80.24],[-61.6,-80.21],[-61.69,-80.13],[-61.72,-80.07],[-61.68,-80.02],[-61.3,-80],[-61.25,-79.98],[-61.35,-79.95],[-61.34,-79.89],[-61.11,-79.86],[-61.03,-79.81],[-60.58,-79.74],[-59.87,-79.78],[-59.71,-79.88],[-59.75,-79.94],[-59.79,-80],[-59.79,-80.1],[-59.5,-80.12],[-59.41,-80.15],[-59.32,-80.2],[-59.43,-80.2],[-59.53,-80.21],[-59.61,-80.26],[-59.68,-80.32],[-59.73,-80.34]]],[[[-31.12,-79.8],[-30.99,-79.82],[-30.84,-79.77],[-30.86,-79.73],[-30.78,-79.65],[-30.66,-79.73],[-29.87,-79.82],[-29.61,-79.91],[-29.72,-79.93],[-29.8,-79.93],[-30.03,-79.94],[-30.42,-80.01],[-30.84,-79.94],[-31.59,-79.89],[-31.82,-79.85],[-32,-79.73],[-31.68,-79.63],[-31.6,-79.64],[-31.12,-79.8]]],[[[-32.34,-79.67],[-32.51,-79.68],[-32.58,-79.66],[-32.5,-79.59],[-32.38,-79.53],[-32.15,-79.53],[-31.93,-79.57],[-31.96,-79.6],[-32,-79.61],[-32.34,-79.67]]],[[[-66.17,-80.08],[-66.27,-80.08],[-66.32,-80.08],[-66.37,-80.05],[-66.41,-79.97],[-66.9,-79.91],[-66.96,-79.87],[-66.99,-79.79],[-67.08,-79.76],[-67.72,-79.62],[-67.77,-79.59],[-67.81,-79.55],[-67.69,-79.53],[-67.44,-79.56],[-66.98,-79.57],[-66.88,-79.58],[-66.79,-79.61],[-66.27,-79.61],[-66.01,-79.62],[-65.87,-79.74],[-65.58,-79.77],[-65.54,-79.84],[-65.5,-79.95],[-65.9,-80.04],[-65.99,-80.05],[-66.17,-80.08]]],[[[-67.26,-79.45],[-67.43,-79.5],[-68.16,-79.48],[-68.41,-79.46],[-68.55,-79.44],[-68.42,-79.33],[-68.32,-79.3],[-68.23,-79.28],[-68.03,-79.23],[-67.71,-79.21],[-67.47,-79.22],[-67.07,-79.27],[-67.17,-79.31],[-67.24,-79.33],[-67.3,-79.39],[-67.26,-79.45]]],[[[-33.93,-79.32],[-34.05,-79.36],[-36.48,-79.29],[-36.6,-79.28],[-36.57,-79.21],[-36.24,-79.2],[-36.05,-79.18],[-35.79,-79.15],[-35.6,-79.09],[-35.53,-79.09],[-34.39,-79.22],[-33.99,-79.28],[-33.95,-79.31],[-33.93,-79.32]]],[[[-159.05,-79.81],[-160.3,-79.84],[-160.81,-79.81],[-161.87,-79.7],[-163.32,-79.5],[-163.71,-79.44],[-163.97,-79.39],[-164.23,-79.32],[-164.28,-79.25],[-164.24,-79.14],[-164.2,-79.05],[-164.13,-79],[-163.81,-78.93],[-163.66,-78.86],[-163.35,-78.78],[-163.26,-78.72],[-163.12,-78.72],[-162.87,-78.73],[-162.62,-78.74],[-162.39,-78.76],[-162.16,-78.79],[-161.64,-78.9],[-161.28,-79.01],[-160.76,-79.13],[-160.25,-79.27],[-159.96,-79.32],[-159.68,-79.4],[-159.42,-79.51],[-159.37,-79.55],[-159.26,-79.59],[-159.19,-79.64],[-159.12,-79.67],[-159.05,-79.69],[-159,-79.74],[-159.01,-79.78],[-159.05,-79.81]]],[[[-70.33,-79.68],[-70.55,-79.68],[-70.98,-79.67],[-71.41,-79.64],[-71.53,-79.62],[-71.69,-79.57],[-71.74,-79.54],[-71.78,-79.5],[-71.78,-79.44],[-71.67,-79.25],[-71.45,-79.13],[-71.25,-79.06],[-70.63,-78.9],[-70.54,-78.88],[-69.97,-78.81],[-69.75,-78.77],[-69.4,-78.69],[-67.48,-78.36],[-67.04,-78.32],[-66.84,-78.35],[-66.73,-78.38],[-66.79,-78.42],[-67.05,-78.51],[-67.17,-78.57],[-67.48,-78.68],[-68.16,-78.87],[-68.64,-79.01],[-69.25,-79.21],[-69.39,-79.28],[-69.69,-79.44],[-69.63,-79.52],[-69.73,-79.62],[-70.12,-79.67],[-70.33,-79.68]]],[[[167.64,-78.14],[167.52,-78.22],[167.38,-78.25],[166.94,-78.22],[166.63,-78.28],[166.28,-78.31],[166.12,-78.27],[166.05,-78.21],[166.01,-78.13],[166.01,-78.1],[166.11,-78.09],[166.57,-78.15],[166.76,-78.2],[166.86,-78.2],[167.14,-78.13],[167.36,-78.05],[167.42,-78.01],[167.5,-77.99],[167.59,-78.02],[167.64,-78.11],[167.64,-78.14]]],[[[-45.22,-78.81],[-45.09,-78.81],[-44.57,-78.8],[-44.04,-78.81],[-43.72,-78.82],[-43.63,-78.85],[-43.54,-78.9],[-43.45,-78.99],[-43.36,-79.08],[-43.27,-79.16],[-43.21,-79.3],[-43.12,-79.35],[-42.97,-79.48],[-42.94,-79.58],[-42.99,-79.8],[-43.07,-79.89],[-43.27,-79.98],[-43.5,-79.97],[-43.6,-79.97],[-43.7,-79.99],[-43.74,-80],[-43.76,-80.02],[-43.49,-80.1],[-43.46,-80.12],[-43.45,-80.16],[-43.49,-80.18],[-43.53,-80.19],[-49.19,-80.64],[-49.41,-80.67],[-49.63,-80.71],[-49.7,-80.75],[-49.77,-80.78],[-54.16,-80.87],[-54.2,-80.86],[-54.24,-80.85],[-54.35,-80.76],[-54.37,-80.62],[-54.35,-80.57],[-54.13,-80.52],[-54.04,-80.49],[-53.68,-80.28],[-53.48,-80.19],[-53.39,-80.11],[-53.35,-80.11],[-53.18,-80.16],[-53.05,-80.18],[-52.81,-80.16],[-52.57,-80.1],[-52.46,-80.07],[-52.36,-80.08],[-52.34,-80.13],[-52.3,-80.14],[-51.71,-79.99],[-51.18,-79.82],[-50.66,-79.63],[-50.4,-79.51],[-50.34,-79.48],[-50.29,-79.43],[-50.33,-79.38],[-50.38,-79.34],[-50.42,-79.32],[-50.46,-79.31],[-50.73,-79.28],[-50.65,-79.23],[-50.57,-79.17],[-50.52,-79.1],[-50.5,-79.02],[-50.51,-78.98],[-50.5,-78.95],[-50.38,-78.92],[-50.3,-78.88],[-50.24,-78.83],[-50.34,-78.82],[-50.38,-78.78],[-50.29,-78.7],[-50.22,-78.61],[-50.14,-78.56],[-49.94,-78.46],[-49.35,-78.22],[-49.14,-78.09],[-49.08,-78.05],[-47.69,-77.84],[-47.46,-77.82],[-47.03,-77.79],[-46.83,-77.79],[-46.26,-77.8],[-45.99,-77.83],[-45.53,-77.88],[-44.85,-77.99],[-44.59,-78.04],[-44.34,-78.09],[-44.09,-78.17],[-43.85,-78.26],[-43.81,-78.29],[-43.78,-78.34],[-43.78,-78.39],[-43.79,-78.43],[-43.85,-78.53],[-43.95,-78.6],[-45.07,-78.66],[-45.21,-78.69],[-45.29,-78.74],[-45.35,-78.79],[-45.22,-78.81]]],[[[-149.22,-77.34],[-148.93,-77.39],[-149.44,-77.37],[-149.66,-77.3],[-149.52,-77.27],[-149.38,-77.28],[-149.25,-77.32],[-149.22,-77.34]]],[[[-150.4,-77.37],[-150.47,-77.37],[-151.34,-77.3],[-151.51,-77.27],[-151.22,-77.23],[-151.02,-77.22],[-150.5,-77.34],[-150.36,-77.35],[-150.4,-77.37]]],[[[167.08,-77.32],[167.46,-77.39],[168.45,-77.39],[169.28,-77.45],[169.35,-77.52],[169.12,-77.56],[168.75,-77.65],[168.52,-77.68],[168.32,-77.68],[167.92,-77.64],[167.39,-77.65],[167.28,-77.7],[167.03,-77.76],[166.73,-77.85],[166.65,-77.77],[166.53,-77.7],[166.24,-77.55],[166.22,-77.52],[166.38,-77.49],[166.46,-77.44],[166.63,-77.38],[166.61,-77.34],[166.47,-77.29],[166.41,-77.25],[166.51,-77.19],[166.72,-77.16],[166.99,-77.19],[167.11,-77.27],[167.08,-77.31],[167.08,-77.32]]],[[[-148.6,-77.01],[-149.01,-77.02],[-149.24,-76.99],[-149.3,-76.92],[-149.24,-76.9],[-148.7,-76.94],[-148.51,-76.95],[-148.44,-76.98],[-148.47,-77],[-148.6,-77.01]]],[[[-149.23,-77.12],[-149.29,-77.14],[-149.73,-77.13],[-149.82,-77.11],[-149.86,-77.1],[-150.46,-77.08],[-150.74,-77],[-150.79,-76.98],[-150.68,-76.95],[-150.48,-76.93],[-150.39,-76.9],[-149.87,-76.87],[-149.79,-76.89],[-149.74,-76.93],[-149.51,-77],[-149.44,-77.05],[-149.42,-77.08],[-149.29,-77.09],[-149.23,-77.12]]],[[[-146.61,-76.96],[-146.98,-77.01],[-147.08,-76.99],[-147.04,-76.93],[-147.1,-76.89],[-147.12,-76.87],[-147.09,-76.84],[-146.87,-76.84],[-146.24,-76.88],[-146.16,-76.95],[-146.61,-76.96]]],[[[-149.33,-76.72],[-148.93,-76.73],[-148.66,-76.72],[-148.38,-76.74],[-148.32,-76.77],[-148.37,-76.79],[-148.67,-76.8],[-148.81,-76.84],[-148.98,-76.85],[-149.24,-76.82],[-149.47,-76.76],[-149.33,-76.72]]],[[[-150.23,-76.78],[-150.66,-76.79],[-150.83,-76.76],[-150.87,-76.74],[-150.84,-76.71],[-150.18,-76.69],[-150.1,-76.72],[-150.08,-76.74],[-150.23,-76.78]]],[[[-147.59,-76.65],[-147.58,-76.66],[-147.73,-76.65],[-147.95,-76.6],[-148,-76.58],[-147.9,-76.56],[-147.77,-76.58],[-147.65,-76.61],[-147.59,-76.65]]],[[[-146.79,-76.63],[-146.91,-76.71],[-147.22,-76.67],[-147.36,-76.62],[-147.28,-76.55],[-147.14,-76.53],[-146.95,-76.55],[-146.88,-76.56],[-146.79,-76.63]]],[[[-146.69,-76.25],[-146.89,-76.26],[-147.15,-76.2],[-147.35,-76.15],[-147.41,-76.1],[-147.42,-76.09],[-147.42,-76.07],[-147.36,-76.06],[-146.95,-76.1],[-146.69,-76.25]]],[[[162.97,-75.57],[162.79,-75.7],[162.66,-75.69],[162.59,-75.67],[162.72,-75.6],[162.84,-75.57],[162.92,-75.56],[162.97,-75.57]]],[[[-145.24,-75.71],[-145.35,-75.72],[-145.54,-75.69],[-146.04,-75.61],[-146.15,-75.57],[-146.08,-75.53],[-145.9,-75.5],[-145.76,-75.51],[-145.42,-75.59],[-145.32,-75.64],[-145.25,-75.68],[-145.24,-75.71]]],[[[163.98,-74.83],[163.84,-74.83],[163.76,-74.8],[163.74,-74.73],[163.74,-74.71],[164,-74.63],[164.21,-74.61],[164.1,-74.73],[164.06,-74.75],[163.98,-74.83]]],[[[-132.39,-74.44],[-132.55,-74.5],[-132.86,-74.46],[-132.83,-74.42],[-132.55,-74.39],[-132.36,-74.41],[-132.39,-74.44]]],[[[-131.07,-74.58],[-131.18,-74.6],[-131.6,-74.55],[-131.84,-74.54],[-131.95,-74.51],[-132.03,-74.49],[-132.05,-74.46],[-132.16,-74.43],[-131.94,-74.35],[-131.76,-74.32],[-131.59,-74.33],[-131.56,-74.37],[-131.23,-74.41],[-130.98,-74.41],[-130.96,-74.46],[-130.97,-74.52],[-131.07,-74.58]]],[[[-127.37,-74.62],[-127.52,-74.64],[-127.82,-74.57],[-127.92,-74.54],[-128,-74.49],[-128.07,-74.48],[-128.1,-74.47],[-128.13,-74.33],[-128.04,-74.31],[-127.85,-74.33],[-127.49,-74.41],[-127.23,-74.43],[-127.15,-74.48],[-127.23,-74.58],[-127.37,-74.62]]],[[[-116.74,-74.17],[-117.23,-74.19],[-117.36,-74.16],[-117.4,-74.12],[-117.38,-74.08],[-116.38,-73.87],[-116.2,-73.9],[-116.15,-73.91],[-116.45,-74.02],[-116.58,-74.06],[-116.61,-74.07],[-116.53,-74.08],[-116.51,-74.1],[-116.57,-74.13],[-116.74,-74.17]]],[[[-119.55,-74.11],[-119.76,-74.12],[-119.82,-74.12],[-119.89,-74.1],[-119.91,-74.08],[-119.8,-74.03],[-119.69,-74.01],[-119.66,-73.99],[-119.8,-73.81],[-119.67,-73.81],[-119.52,-73.77],[-119.22,-73.78],[-118.96,-73.81],[-118.91,-73.83],[-118.88,-73.88],[-118.99,-73.97],[-119.06,-74],[-119.45,-74.08],[-119.55,-74.11]]],[[[-120.56,-73.76],[-120.38,-73.86],[-120.31,-73.92],[-120.27,-73.99],[-120.99,-74.16],[-121.02,-74.17],[-121.05,-74.26],[-121.04,-74.28],[-121,-74.29],[-121,-74.33],[-121.06,-74.34],[-122.29,-74.4],[-122.86,-74.34],[-122.94,-74.3],[-122.96,-74.24],[-122.89,-74.23],[-122.76,-74.22],[-122.79,-74.19],[-122.88,-74.14],[-122.88,-74.1],[-122.71,-73.99],[-122.62,-73.97],[-122.95,-73.87],[-122.99,-73.84],[-123.03,-73.84],[-123.19,-73.85],[-123.35,-73.84],[-123.29,-73.8],[-123.25,-73.74],[-123.11,-73.68],[-123.01,-73.67],[-122.91,-73.68],[-122.44,-73.68],[-121.97,-73.71],[-121.5,-73.73],[-120.72,-73.75],[-120.56,-73.76]]],[[[-20.61,-73.89],[-20.65,-74.1],[-20.64,-74.15],[-20.6,-74.2],[-20.42,-74.32],[-20.41,-74.41],[-20.42,-74.44],[-20.49,-74.49],[-20.74,-74.48],[-20.82,-74.45],[-20.85,-74.44],[-20.98,-74.23],[-21.05,-74.18],[-21.17,-74.13],[-21.61,-74.09],[-22.04,-74.11],[-21.93,-74.06],[-21.29,-73.99],[-21.13,-73.94],[-21.02,-73.88],[-20.98,-73.79],[-20.87,-73.68],[-20.69,-73.63],[-20.58,-73.62],[-20.52,-73.71],[-20.52,-73.8],[-20.61,-73.89]]],[[[169.84,-73.6],[169.71,-73.63],[169.52,-73.56],[169.48,-73.54],[169.66,-73.42],[169.65,-73.38],[169.67,-73.35],[169.74,-73.32],[169.78,-73.32],[169.89,-73.46],[169.96,-73.51],[169.86,-73.57],[169.84,-73.6]]],[[[-126.33,-73.29],[-126.07,-73.31],[-125.98,-73.36],[-125.86,-73.39],[-125.74,-73.41],[-125.63,-73.45],[-125.56,-73.54],[-125.5,-73.56],[-125.33,-73.62],[-125.26,-73.67],[-125.28,-73.69],[-125.61,-73.71],[-125.72,-73.7],[-125.83,-73.72],[-125.86,-73.75],[-125.86,-73.78],[-125.8,-73.8],[-125.67,-73.82],[-125.55,-73.82],[-125.33,-73.8],[-125.22,-73.8],[-125.11,-73.83],[-124.99,-73.83],[-124.69,-73.75],[-124.62,-73.74],[-124.54,-73.74],[-124.13,-73.83],[-124.04,-73.88],[-124.1,-73.91],[-124.15,-73.94],[-124.13,-73.97],[-123.93,-74.01],[-123.85,-74.06],[-123.8,-74.08],[-123.81,-74.12],[-123.84,-74.17],[-123.84,-74.23],[-123.94,-74.26],[-123.98,-74.26],[-124.2,-74.23],[-124.87,-74.21],[-125.09,-74.18],[-125.42,-74.07],[-125.55,-74.06],[-125.68,-74.04],[-125.89,-73.95],[-126.24,-73.89],[-126.47,-73.81],[-126.47,-73.75],[-126.5,-73.7],[-126.54,-73.68],[-126.58,-73.67],[-126.71,-73.65],[-126.84,-73.66],[-126.9,-73.68],[-127.01,-73.73],[-127.12,-73.73],[-127.21,-73.72],[-127.23,-73.71],[-127.23,-73.59],[-127.33,-73.57],[-127.41,-73.52],[-127.43,-73.45],[-127.39,-73.38],[-127.27,-73.3],[-127.12,-73.29],[-126.98,-73.31],[-126.83,-73.29],[-126.6,-73.28],[-126.33,-73.29]]],[[[-73.88,-73.36],[-73.97,-73.38],[-74.04,-73.37],[-74.15,-73.32],[-74.13,-73.28],[-74.08,-73.25],[-74.05,-73.22],[-73.83,-73.11],[-73.67,-73.1],[-73.54,-73.12],[-73.68,-73.23],[-73.72,-73.3],[-73.88,-73.36]]],[[[-104.54,-73.17],[-104.66,-73.21],[-104.88,-73.2],[-105.05,-73.13],[-105.12,-73.03],[-105.13,-72.99],[-105.08,-72.97],[-104.97,-72.94],[-104.54,-73.17]]],[[[-74.35,-73.1],[-74.5,-73.23],[-74.52,-73.24],[-74.67,-73.28],[-74.62,-73.31],[-74.58,-73.33],[-74.55,-73.37],[-74.47,-73.43],[-74.37,-73.46],[-74.45,-73.57],[-74.57,-73.61],[-75.9,-73.33],[-76,-73.29],[-76.05,-73.25],[-76.09,-73.2],[-76.1,-73.15],[-76.06,-73.11],[-76.02,-73.09],[-75.9,-73.06],[-75.77,-73.05],[-75.51,-73.11],[-75.47,-73.1],[-75.42,-73.05],[-75.28,-73.05],[-75.24,-73.01],[-75.44,-72.99],[-75.6,-72.95],[-75.7,-72.91],[-75.73,-72.88],[-75.38,-72.82],[-74.47,-72.89],[-74.34,-72.92],[-74.28,-72.95],[-74.22,-73],[-74.35,-73.1]]],[[[-93.8,-72.92],[-93.97,-72.92],[-94.08,-72.88],[-94.11,-72.86],[-94.05,-72.82],[-94,-72.82],[-93.8,-72.88],[-93.76,-72.91],[-93.8,-72.92]]],[[[-91.16,-73.18],[-91.34,-73.21],[-91.51,-73.2],[-91.45,-72.97],[-91.36,-72.91],[-91.38,-72.87],[-91.55,-72.75],[-91.67,-72.62],[-91.61,-72.59],[-91.3,-72.55],[-90.95,-72.56],[-90.81,-72.61],[-90.76,-72.68],[-90.78,-72.73],[-90.9,-72.82],[-90.78,-72.85],[-90.75,-72.92],[-90.78,-72.99],[-90.89,-73.08],[-91,-73.14],[-91.16,-73.18]]],[[[-95.03,-72.67],[-95.22,-72.67],[-95.27,-72.65],[-95.22,-72.6],[-94.75,-72.52],[-94.57,-72.47],[-94.54,-72.48],[-94.51,-72.49],[-94.43,-72.59],[-94.43,-72.61],[-95.03,-72.67]]],[[[-16.1,-72.68],[-16.17,-72.7],[-16.32,-72.7],[-16.45,-72.65],[-16.51,-72.58],[-16.52,-72.53],[-16.46,-72.47],[-16.36,-72.46],[-16.3,-72.48],[-16.17,-72.6],[-16.1,-72.68]]],[[[68.46,-72.3],[68.41,-72.3],[68.44,-72.26],[68.57,-72.19],[68.67,-72.1],[68.73,-72.09],[68.84,-72.17],[68.82,-72.23],[68.67,-72.28],[68.46,-72.3]]],[[[-12.51,-72.17],[-12.59,-72.2],[-12.72,-72.19],[-12.89,-72.14],[-12.94,-72.1],[-12.96,-72.06],[-12.91,-72.01],[-12.88,-72],[-12.79,-72.01],[-12.64,-72.07],[-12.53,-72.14],[-12.51,-72.17]]],[[[69.92,-71.92],[69.79,-72.05],[69.74,-72.04],[69.69,-71.97],[69.74,-71.92],[69.8,-71.89],[69.9,-71.91],[69.92,-71.92]]],[[[-98.09,-71.91],[-98.18,-72.02],[-98.17,-72.12],[-97.92,-72.12],[-97.82,-71.92],[-97.58,-71.88],[-97.47,-72],[-97.58,-72.1],[-97.53,-72.15],[-97.46,-72.19],[-97.35,-72.19],[-97.24,-72.13],[-97.2,-72.09],[-97.15,-72.05],[-97.09,-71.94],[-96.87,-71.85],[-96.38,-71.84],[-96.13,-71.9],[-96.3,-72.05],[-96.71,-72.13],[-96.98,-72.22],[-96.89,-72.25],[-96.8,-72.26],[-96.72,-72.26],[-96.48,-72.21],[-95.91,-72.12],[-95.69,-72.06],[-95.61,-72.07],[-95.61,-72.18],[-95.53,-72.25],[-95.58,-72.41],[-95.83,-72.44],[-96.08,-72.45],[-96.01,-72.52],[-96.03,-72.55],[-96.05,-72.58],[-96.69,-72.55],[-96.8,-72.56],[-96.91,-72.58],[-97.03,-72.57],[-97.25,-72.52],[-97.37,-72.52],[-97.6,-72.55],[-97.83,-72.56],[-98.16,-72.56],[-98.41,-72.55],[-98.64,-72.49],[-98.88,-72.47],[-99.15,-72.47],[-99.43,-72.41],[-99.67,-72.38],[-100.01,-72.31],[-100.1,-72.29],[-100.2,-72.27],[-100.36,-72.28],[-101.6,-72.18],[-101.78,-72.18],[-101.9,-72.19],[-102.02,-72.18],[-102.26,-72.14],[-102.31,-72.08],[-102.29,-72.03],[-102.24,-72.01],[-102.13,-71.99],[-100.4,-71.87],[-100.22,-71.83],[-100.08,-71.84],[-99.99,-71.94],[-99.83,-72.05],[-99.78,-72.04],[-99.73,-72.03],[-99.56,-71.94],[-99.25,-71.97],[-99.08,-71.93],[-98.96,-71.85],[-98.62,-71.76],[-98.39,-71.78],[-98.19,-71.82],[-98.09,-71.91]]],[[[-2.95,-71.21],[-3.06,-71.24],[-3.2,-71.23],[-3.31,-71.2],[-3.39,-71.14],[-3.4,-71.12],[-3.39,-71.08],[-3.4,-71.06],[-3.26,-71.05],[-3.21,-71.08],[-3.19,-71.09],[-2.95,-71.21]]],[[[-60.55,-71.05],[-60.65,-71.06],[-60.79,-71.04],[-60.91,-71.01],[-60.95,-70.97],[-60.89,-70.93],[-60.78,-70.91],[-60.61,-70.92],[-60.53,-70.96],[-60.52,-71],[-60.54,-71.04],[-60.55,-71.05]]],[[[-2.53,-70.77],[-2.42,-70.8],[-2.26,-70.8],[-2.09,-70.82],[-2.12,-70.86],[-2.21,-70.9],[-2.29,-71],[-2.37,-71.04],[-2.61,-71.14],[-2.78,-71.17],[-2.83,-71.11],[-2.82,-71.06],[-2.81,-71.01],[-2.8,-70.98],[-2.96,-70.94],[-2.97,-70.88],[-3.01,-70.85],[-3.49,-70.74],[-3.57,-70.7],[-3.54,-70.68],[-3.04,-70.67],[-2.75,-70.69],[-2.53,-70.77]]],[[[-73.71,-70.64],[-73.55,-70.72],[-73.69,-70.79],[-74.21,-70.92],[-74.5,-70.97],[-74.81,-71.01],[-76.18,-71.13],[-76.27,-71.13],[-76.36,-71.12],[-76.42,-71.09],[-76.51,-70.99],[-76.5,-70.94],[-76.38,-70.89],[-76.25,-70.86],[-76.03,-70.84],[-75.21,-70.77],[-75.13,-70.75],[-75.06,-70.71],[-75.04,-70.65],[-75.01,-70.61],[-74.95,-70.59],[-74.9,-70.59],[-74.79,-70.63],[-74.59,-70.79],[-74.53,-70.77],[-74.47,-70.73],[-74.46,-70.59],[-74.4,-70.58],[-74.22,-70.61],[-74.11,-70.66],[-74.11,-70.58],[-74.04,-70.55],[-73.96,-70.56],[-73.88,-70.58],[-73.71,-70.64]]],[[[-60.74,-70.71],[-60.83,-70.71],[-60.9,-70.69],[-60.96,-70.63],[-60.98,-70.6],[-60.94,-70.53],[-60.88,-70.52],[-60.55,-70.51],[-60.45,-70.54],[-60.45,-70.6],[-60.49,-70.65],[-60.74,-70.71]]],[[[-5.89,-70.55],[-6.16,-70.61],[-6.18,-70.59],[-6.27,-70.55],[-6.44,-70.45],[-6.24,-70.45],[-6.07,-70.4],[-5.97,-70.42],[-5.95,-70.43],[-5.89,-70.55]]],[[[3.04,-70.6],[2.7,-70.62],[2.62,-70.59],[2.58,-70.53],[2.63,-70.5],[3.07,-70.38],[3.19,-70.39],[3.23,-70.4],[3.26,-70.45],[3.22,-70.52],[3.17,-70.55],[3.04,-70.6]]],[[[-3.28,-70.53],[-3.44,-70.54],[-3.49,-70.51],[-3.5,-70.49],[-3.29,-70.34],[-3.17,-70.31],[-2.95,-70.28],[-2.81,-70.29],[-2.71,-70.32],[-2.68,-70.38],[-2.68,-70.46],[-2.74,-70.51],[-3.28,-70.53]]],[[[-71.7,-70.27],[-71.65,-70.3],[-71.43,-70.27],[-71.35,-70.3],[-71.34,-70.32],[-71.44,-70.39],[-71.55,-70.44],[-71.68,-70.44],[-71.78,-70.32],[-71.8,-70.29],[-71.7,-70.27]]],[[[72,-70.63],[71.93,-70.63],[71.84,-70.62],[71.73,-70.55],[71.66,-70.5],[71.64,-70.44],[71.65,-70.34],[71.71,-70.28],[71.8,-70.26],[71.84,-70.31],[71.85,-70.37],[71.88,-70.41],[72,-70.46],[72.06,-70.5],[72.07,-70.52],[72.1,-70.57],[72.08,-70.61],[72,-70.63]]],[[[4.53,-70.48],[4.37,-70.5],[4.18,-70.45],[4.13,-70.42],[4.08,-70.33],[4.07,-70.29],[4.11,-70.27],[4.26,-70.24],[4.5,-70.25],[4.59,-70.29],[4.62,-70.37],[4.59,-70.43],[4.53,-70.48]]],[[[26.86,-70.38],[26.79,-70.42],[26.61,-70.41],[26.47,-70.45],[26.36,-70.43],[26.01,-70.37],[25.96,-70.29],[25.95,-70.26],[25.98,-70.2],[26.3,-70.07],[26.43,-70.06],[26.6,-70.08],[26.69,-70.11],[26.74,-70.19],[26.87,-70.33],[26.86,-70.38]]],[[[1.3,-70.26],[1.21,-70.38],[1.16,-70.38],[1.1,-70.3],[0.99,-70.22],[0.95,-70.17],[0.95,-70.09],[1.03,-70.05],[1.31,-70.02],[1.41,-70.04],[1.46,-70.14],[1.3,-70.26]]],[[[-61.16,-69.98],[-61.31,-69.98],[-61.38,-69.95],[-61.4,-69.93],[-61.39,-69.89],[-61.33,-69.86],[-61.15,-69.88],[-61.11,-69.96],[-61.16,-69.98]]],[[[-74.99,-69.73],[-74.81,-69.75],[-74.55,-69.86],[-74.47,-69.92],[-74.44,-69.95],[-74.46,-69.97],[-74.58,-70],[-74.67,-70.13],[-74.85,-70.18],[-75.27,-70.15],[-75.73,-70.1],[-75.76,-70.09],[-75.8,-70.04],[-75.81,-69.98],[-75.76,-69.92],[-75.68,-69.88],[-75.34,-69.84],[-75.31,-69.82],[-75.26,-69.75],[-75.18,-69.74],[-75.14,-69.74],[-74.99,-69.73]]],[[[16.22,-70.01],[16.16,-70.07],[15.84,-69.98],[15.66,-69.96],[15.61,-69.94],[15.57,-69.88],[15.56,-69.86],[15.6,-69.83],[15.7,-69.77],[15.91,-69.73],[16.25,-69.7],[16.57,-69.72],[16.63,-69.75],[16.32,-69.84],[16.22,-70.01]]],[[[-71.99,-69.7],[-72.2,-69.74],[-72.34,-69.71],[-72.78,-69.65],[-72.96,-69.53],[-72.94,-69.47],[-72.86,-69.43],[-72.73,-69.41],[-72.46,-69.45],[-72.33,-69.49],[-71.99,-69.7]]],[[[-62,-69.72],[-62.09,-69.73],[-62.17,-69.64],[-62.22,-69.49],[-62.5,-69.29],[-62.57,-69.18],[-62.52,-69.15],[-62.44,-69.15],[-62.24,-69.18],[-62.12,-69.21],[-61.98,-69.3],[-61.82,-69.38],[-61.78,-69.44],[-61.81,-69.51],[-61.91,-69.53],[-61.91,-69.59],[-61.97,-69.69],[-62,-69.72]]],[[[-70.05,-69.19],[-70.08,-69.31],[-69.91,-69.27],[-69.85,-69.28],[-69.71,-69.32],[-69.42,-69.58],[-69.35,-69.67],[-69.23,-69.91],[-69.09,-70.09],[-68.73,-70.41],[-68.55,-70.58],[-68.46,-70.68],[-68.45,-70.82],[-68.34,-70.86],[-68.31,-70.91],[-68.28,-71.1],[-68.25,-71.31],[-68.23,-71.73],[-68.24,-71.82],[-68.39,-71.98],[-68.46,-72.09],[-68.54,-72.16],[-68.64,-72.21],[-69.15,-72.43],[-69.21,-72.53],[-70.06,-72.63],[-70.54,-72.66],[-70.73,-72.62],[-70.92,-72.61],[-71.16,-72.63],[-71.85,-72.64],[-72.37,-72.67],[-72.43,-72.66],[-72.48,-72.62],[-72.53,-72.59],[-72.67,-72.6],[-72.78,-72.58],[-72.89,-72.55],[-73.01,-72.48],[-73.06,-72.45],[-73.09,-72.41],[-72.85,-72.3],[-72.74,-72.28],[-72.62,-72.28],[-72.38,-72.3],[-72.13,-72.33],[-71.61,-72.36],[-70.87,-72.37],[-70.67,-72.36],[-70.43,-72.32],[-70.21,-72.23],[-70.31,-72.19],[-70.42,-72.17],[-70.53,-72.16],[-70.64,-72.17],[-70.95,-72.23],[-71.18,-72.26],[-71.41,-72.28],[-71.66,-72.25],[-71.89,-72.15],[-71.9,-72.12],[-71.11,-72.05],[-71.03,-72.03],[-70.89,-71.99],[-70.84,-71.95],[-70.82,-71.91],[-71.35,-71.84],[-71.46,-71.84],[-71.57,-71.85],[-71.82,-71.82],[-72.05,-71.74],[-72.26,-71.64],[-72.34,-71.63],[-72.41,-71.66],[-72.93,-71.92],[-72.97,-71.92],[-73.17,-71.9],[-73.41,-71.85],[-73.63,-71.83],[-73.78,-71.85],[-73.83,-71.87],[-73.69,-71.93],[-73.57,-71.98],[-73.54,-72.02],[-73.9,-72.15],[-74,-72.17],[-74.15,-72.16],[-74.21,-72.14],[-74.32,-72.07],[-74.43,-72.06],[-74.66,-72.07],[-74.79,-72.06],[-74.91,-72.03],[-75.02,-71.99],[-75.13,-71.96],[-75.26,-71.91],[-75.35,-71.88],[-75.38,-71.83],[-75.37,-71.78],[-75.33,-71.75],[-75.32,-71.73],[-75.35,-71.68],[-75.34,-71.65],[-75.29,-71.61],[-75.1,-71.56],[-74.86,-71.54],[-74.64,-71.62],[-74.49,-71.64],[-74.42,-71.64],[-74.39,-71.64],[-74.37,-71.62],[-74.38,-71.58],[-74.42,-71.51],[-74.43,-71.46],[-74.37,-71.41],[-74.31,-71.4],[-74.24,-71.39],[-74.19,-71.38],[-74.04,-71.41],[-73.94,-71.44],[-73.72,-71.52],[-73.55,-71.57],[-73.48,-71.58],[-73.43,-71.56],[-73.38,-71.53],[-73.59,-71.45],[-73.62,-71.4],[-73.6,-71.35],[-73.47,-71.32],[-73.4,-71.32],[-73.02,-71.37],[-72.82,-71.38],[-72.62,-71.39],[-72.21,-71.34],[-72.43,-71.27],[-72.91,-71.22],[-72.99,-71.19],[-73.06,-71.13],[-72.71,-71.07],[-72.36,-71.07],[-71.72,-71.15],[-71.5,-71.11],[-71.31,-71.01],[-71.19,-70.98],[-70.74,-70.99],[-70.38,-70.95],[-70.32,-70.95],[-70.27,-70.96],[-69.92,-71.13],[-69.87,-71.13],[-69.84,-71.09],[-69.82,-71.03],[-69.82,-70.97],[-69.83,-70.91],[-69.88,-70.88],[-69.93,-70.88],[-69.99,-70.9],[-70.09,-70.88],[-70.2,-70.85],[-70.3,-70.84],[-70.66,-70.82],[-70.92,-70.79],[-71.05,-70.76],[-71.17,-70.71],[-71.19,-70.66],[-71.06,-70.54],[-70.56,-70.4],[-70.33,-70.36],[-70.09,-70.35],[-69.98,-70.36],[-69.7,-70.41],[-69.66,-70.41],[-69.62,-70.4],[-69.88,-70.31],[-70.12,-70.23],[-70.23,-70.18],[-70.33,-70.16],[-70.72,-70.14],[-70.93,-70.19],[-71.02,-70.2],[-71.12,-70.2],[-71.7,-70.07],[-71.73,-70.05],[-71.81,-70.01],[-71.85,-69.97],[-71.88,-69.91],[-71.87,-69.85],[-71.85,-69.81],[-71.77,-69.65],[-71.72,-69.52],[-71.74,-69.42],[-71.83,-69.37],[-71.96,-69.33],[-72.08,-69.27],[-72.11,-69.23],[-72.14,-69.18],[-72.14,-69.11],[-72.11,-69.06],[-72.06,-69],[-71.99,-68.97],[-71.87,-68.94],[-71.39,-68.87],[-70.42,-68.79],[-70.31,-68.83],[-70.15,-68.92],[-70.11,-68.96],[-70.05,-69.14],[-70.05,-69.19]]],[[[-90.54,-68.8],[-90.55,-68.8],[-90.57,-68.8],[-90.58,-68.8],[-90.6,-68.8],[-90.61,-68.8],[-90.62,-68.8],[-90.62,-68.8],[-90.62,-68.8],[-90.63,-68.8],[-90.64,-68.79],[-90.65,-68.78],[-90.65,-68.77],[-90.65,-68.76],[-90.64,-68.75],[-90.64,-68.75],[-90.64,-68.74],[-90.63,-68.73],[-90.63,-68.72],[-90.63,-68.72],[-90.63,-68.71],[-90.62,-68.71],[-90.6,-68.71],[-90.59,-68.71],[-90.57,-68.71],[-90.56,-68.72],[-90.55,-68.72],[-90.54,-68.73],[-90.53,-68.74],[-90.53,-68.74],[-90.52,-68.75],[-90.52,-68.76],[-90.52,-68.76],[-90.51,-68.77],[-90.52,-68.78],[-90.53,-68.79],[-90.53,-68.8],[-90.54,-68.8]]],[[[-60.66,-68.77],[-60.69,-68.8],[-60.82,-68.78],[-60.89,-68.76],[-61.01,-68.71],[-60.95,-68.68],[-60.81,-68.69],[-60.7,-68.72],[-60.66,-68.77]]],[[[-67.35,-67.77],[-67.54,-67.79],[-67.69,-67.76],[-67.69,-67.69],[-67.73,-67.68],[-67.74,-67.66],[-67.56,-67.6],[-67.42,-67.59],[-67.25,-67.6],[-67.17,-67.62],[-67.15,-67.65],[-67.28,-67.71],[-67.3,-67.74],[-67.35,-67.77]]],[[[164.83,-67.54],[164.75,-67.57],[164.69,-67.56],[164.64,-67.5],[164.7,-67.41],[164.68,-67.29],[164.68,-67.26],[164.83,-67.33],[164.85,-67.36],[164.91,-67.42],[164.92,-67.45],[164.86,-67.5],[164.83,-67.54]]],[[[-67.36,-66.89],[-67.41,-66.9],[-67.52,-66.9],[-67.59,-66.88],[-67.5,-66.8],[-67.51,-66.76],[-67.43,-66.74],[-67.33,-66.75],[-67.27,-66.82],[-67.26,-66.84],[-67.36,-66.89]]],[[[85.82,-66.95],[85.65,-66.98],[85.62,-66.97],[85.62,-66.95],[85.36,-66.85],[85.31,-66.78],[85.34,-66.72],[85.55,-66.73],[85.81,-66.77],[85.94,-66.89],[85.82,-66.95]]],[[[48.55,-66.78],[48.38,-66.81],[48.3,-66.8],[48.3,-66.77],[48.29,-66.75],[48.3,-66.72],[48.36,-66.7],[48.64,-66.7],[48.75,-66.72],[48.78,-66.73],[48.79,-66.77],[48.77,-66.78],[48.55,-66.78]]],[[[163.3,-66.82],[163.28,-66.88],[163.23,-66.87],[163.16,-66.82],[163.09,-66.7],[163.16,-66.69],[163.24,-66.71],[163.27,-66.77],[163.3,-66.8],[163.3,-66.82]]],[[[86.54,-66.77],[86.43,-66.79],[86.34,-66.79],[86.23,-66.73],[86.28,-66.7],[86.38,-66.67],[86.52,-66.69],[86.56,-66.71],[86.65,-66.72],[86.54,-66.77]]],[[[-67.99,-67.47],[-68.09,-67.54],[-68.18,-67.56],[-68.25,-67.54],[-68.33,-67.53],[-68.38,-67.56],[-68.44,-67.66],[-68.51,-67.71],[-68.58,-67.73],[-68.62,-67.72],[-68.66,-67.72],[-68.73,-67.75],[-68.82,-67.75],[-68.9,-67.74],[-68.98,-67.68],[-69.1,-67.6],[-69.12,-67.58],[-69.14,-67.52],[-69.13,-67.45],[-69.08,-67.4],[-68.82,-67.23],[-68.73,-67.16],[-68.66,-67.07],[-68.57,-66.99],[-68.42,-66.85],[-68.34,-66.8],[-67.94,-66.66],[-67.83,-66.62],[-67.71,-66.63],[-67.68,-66.71],[-67.74,-66.75],[-67.93,-66.84],[-67.97,-66.98],[-67.97,-67.03],[-67.95,-67.04],[-67.88,-67.06],[-67.83,-67.08],[-67.76,-67.12],[-67.69,-67.15],[-67.85,-67.22],[-67.96,-67.26],[-68.03,-67.3],[-68.18,-67.34],[-68.24,-67.37],[-68.14,-67.38],[-68.01,-67.42],[-67.97,-67.45],[-67.99,-67.47]]],[[[85.33,-66.61],[85.22,-66.64],[85.14,-66.64],[85.08,-66.6],[85.07,-66.58],[85.12,-66.52],[85.16,-66.52],[85.19,-66.56],[85.33,-66.61]]],[[[98.85,-66.47],[98.75,-66.48],[98.66,-66.45],[98.61,-66.4],[98.6,-66.38],[98.75,-66.37],[98.95,-66.42],[98.85,-66.47]]],[[[162.61,-66.48],[162.56,-66.53],[162.51,-66.52],[162.3,-66.4],[162.33,-66.35],[162.3,-66.3],[162.3,-66.26],[162.31,-66.25],[162.56,-66.43],[162.61,-66.48]]],[[[100.26,-66.22],[100.13,-66.23],[100.08,-66.2],[100.08,-66.19],[100.17,-66.13],[100.29,-66.11],[100.28,-66.18],[100.26,-66.22]]],[[[-66.6,-66.2],[-66.82,-66.31],[-66.85,-66.31],[-66.87,-66.29],[-66.87,-66.27],[-66.79,-66.23],[-66.78,-66.11],[-66.63,-66.07],[-66.58,-66.08],[-66.62,-66.13],[-66.59,-66.18],[-66.6,-66.2]]],[[[96.61,-66.04],[96.73,-66.06],[96.93,-66.06],[97.01,-66.1],[97.02,-66.14],[97.02,-66.16],[96.93,-66.2],[96.39,-66.23],[96.31,-66.19],[96.4,-66.08],[96.5,-66.05],[96.61,-66.04]]],[[[92.6,-65.81],[92.47,-65.82],[92.33,-65.81],[92.26,-65.76],[92.25,-65.74],[92.3,-65.71],[92.5,-65.7],[92.63,-65.73],[92.66,-65.76],[92.67,-65.77],[92.6,-65.81]]],[[[-65.85,-65.84],[-66.06,-65.88],[-66.18,-65.87],[-66.18,-65.83],[-66.15,-65.77],[-66.05,-65.74],[-66.07,-65.67],[-66,-65.63],[-65.97,-65.57],[-65.83,-65.53],[-65.64,-65.55],[-65.67,-65.63],[-65.67,-65.65],[-65.78,-65.67],[-65.81,-65.69],[-65.84,-65.74],[-65.84,-65.81],[-65.85,-65.84]]],[[[100.98,-65.68],[100.55,-65.7],[100.51,-65.68],[100.35,-65.67],[100.29,-65.65],[100.27,-65.6],[100.32,-65.52],[100.41,-65.47],[100.55,-65.41],[100.61,-65.4],[100.88,-65.38],[101.08,-65.4],[101.22,-65.47],[101.26,-65.53],[101.24,-65.56],[100.98,-65.68]]],[[[103.4,-65.45],[103.34,-65.47],[103.18,-65.45],[103.14,-65.44],[103.12,-65.34],[103.11,-65.31],[103.05,-65.29],[102.79,-65.24],[102.76,-65.17],[102.8,-65.14],[102.89,-65.13],[103.14,-65.19],[103.19,-65.24],[103.18,-65.31],[103.19,-65.33],[103.26,-65.38],[103.38,-65.43],[103.4,-65.45]]],[[[-63.32,-64.86],[-63.47,-64.91],[-63.56,-64.91],[-63.46,-64.8],[-63.37,-64.79],[-63.22,-64.73],[-63.18,-64.74],[-63.26,-64.79],[-63.32,-64.86]]],[[[-57.24,-64.57],[-57.33,-64.57],[-57.43,-64.54],[-57.45,-64.49],[-57.45,-64.46],[-57.37,-64.44],[-57.31,-64.44],[-57.02,-64.35],[-56.89,-64.33],[-56.95,-64.38],[-56.95,-64.43],[-56.99,-64.47],[-57.24,-64.57]]],[[[-63.18,-64.47],[-63.28,-64.57],[-63.13,-64.57],[-63.03,-64.53],[-62.93,-64.52],[-62.84,-64.57],[-63.03,-64.61],[-63.2,-64.68],[-63.28,-64.72],[-63.35,-64.73],[-63.46,-64.73],[-63.56,-64.73],[-63.65,-64.8],[-63.74,-64.83],[-63.77,-64.81],[-63.8,-64.79],[-64.01,-64.77],[-64.1,-64.73],[-64.18,-64.71],[-64.27,-64.7],[-64.23,-64.64],[-64.17,-64.58],[-63.87,-64.51],[-63.9,-64.49],[-63.92,-64.46],[-63.67,-64.42],[-63.67,-64.38],[-63.68,-64.34],[-63.61,-64.31],[-63.53,-64.27],[-63.49,-64.26],[-63.33,-64.27],[-63.23,-64.32],[-63.27,-64.38],[-63.18,-64.47]]],[[[-62.33,-64.42],[-62.4,-64.46],[-62.46,-64.47],[-62.51,-64.45],[-62.58,-64.51],[-62.73,-64.5],[-62.78,-64.48],[-62.75,-64.47],[-62.72,-64.44],[-62.64,-64.39],[-62.5,-64.25],[-62.48,-64.21],[-62.59,-64.14],[-62.61,-64.12],[-62.59,-64.08],[-62.54,-64.05],[-62.45,-64.01],[-62.33,-64.01],[-62.27,-64.04],[-62.27,-64.09],[-62.06,-64.14],[-62.09,-64.23],[-62.17,-64.3],[-62.19,-64.37],[-62.3,-64.4],[-62.33,-64.42]]],[[[-61.95,-64.08],[-62.04,-64.08],[-62.02,-64.03],[-61.94,-63.99],[-61.8,-63.97],[-61.89,-64.03],[-61.91,-64.05],[-61.95,-64.08]]],[[[-57.85,-64.05],[-57.81,-64.07],[-57.77,-64.06],[-57.74,-64.05],[-57.71,-64.02],[-57.59,-63.97],[-57.48,-63.96],[-57.52,-64.01],[-57.25,-64.1],[-57.27,-64.17],[-57.22,-64.22],[-57.33,-64.24],[-57.41,-64.3],[-57.34,-64.32],[-57.29,-64.37],[-57.39,-64.38],[-57.58,-64.35],[-57.68,-64.36],[-57.67,-64.31],[-57.7,-64.29],[-57.82,-64.3],[-57.87,-64.4],[-57.91,-64.41],[-57.95,-64.39],[-57.92,-64.33],[-57.97,-64.32],[-58.02,-64.32],[-58.17,-64.37],[-58.21,-64.37],[-58.3,-64.31],[-58.02,-64.24],[-58.14,-64.21],[-58.16,-64.16],[-58.15,-64.1],[-58.25,-64.11],[-58.35,-64.13],[-58.4,-64.13],[-58.44,-64.11],[-58.42,-64.07],[-58.34,-63.99],[-58.27,-63.92],[-58.15,-63.88],[-58.07,-63.85],[-57.97,-63.83],[-57.93,-63.81],[-57.83,-63.8],[-57.78,-63.87],[-57.78,-63.91],[-57.83,-63.95],[-57.85,-64.05]]],[[[-57.37,-63.81],[-57.36,-63.82],[-57.16,-63.82],[-57.1,-63.84],[-57.22,-63.88],[-57.25,-63.87],[-57.34,-63.88],[-57.62,-63.85],[-57.68,-63.81],[-57.44,-63.79],[-57.37,-63.81]]],[[[-60.65,-63.87],[-60.78,-63.9],[-60.85,-63.89],[-60.97,-63.85],[-60.81,-63.84],[-60.8,-63.72],[-60.71,-63.67],[-60.56,-63.7],[-60.66,-63.76],[-60.69,-63.81],[-60.65,-63.85],[-60.65,-63.87]]],[[[-55.87,-63.54],[-55.96,-63.58],[-56.18,-63.51],[-56.24,-63.47],[-56.21,-63.44],[-55.86,-63.41],[-55.76,-63.42],[-55.72,-63.49],[-55.87,-63.54]]],[[[-57.02,-63.37],[-56.93,-63.51],[-56.78,-63.57],[-56.83,-63.63],[-56.97,-63.62],[-57.12,-63.64],[-57.15,-63.57],[-57.1,-63.52],[-57.15,-63.48],[-57.28,-63.49],[-57.46,-63.51],[-57.58,-63.55],[-57.74,-63.62],[-57.86,-63.66],[-58.26,-63.76],[-58.53,-63.92],[-58.72,-64.08],[-58.84,-64.19],[-59.01,-64.19],[-59.05,-64.23],[-58.98,-64.27],[-58.92,-64.28],[-58.8,-64.29],[-58.82,-64.34],[-58.91,-64.35],[-58.9,-64.39],[-58.81,-64.44],[-58.79,-64.52],[-58.89,-64.54],[-59.05,-64.45],[-59.23,-64.44],[-59.37,-64.4],[-59.46,-64.35],[-59.55,-64.36],[-59.61,-64.44],[-59.57,-64.53],[-59.65,-64.58],[-59.73,-64.56],[-59.77,-64.45],[-59.85,-64.43],[-59.96,-64.43],[-60.24,-64.55],[-60.34,-64.55],[-60.39,-64.61],[-60.56,-64.68],[-60.66,-64.73],[-60.92,-64.91],[-61.06,-64.98],[-61.33,-65.02],[-61.44,-65.02],[-61.5,-65],[-61.6,-64.99],[-61.7,-64.99],[-61.74,-65.03],[-61.58,-65.19],[-61.66,-65.24],[-61.86,-65.24],[-61.95,-65.19],[-62.02,-65.23],[-62.08,-65.27],[-62.15,-65.33],[-62.05,-65.46],[-61.9,-65.51],[-61.8,-65.52],[-61.76,-65.57],[-61.99,-65.59],[-62.15,-65.7],[-62.22,-65.78],[-62.31,-65.84],[-62.29,-65.92],[-62.17,-66.03],[-62.01,-66.11],[-61.84,-66.12],[-61.62,-66.09],[-61.57,-66.07],[-61.36,-66.06],[-61.27,-65.98],[-61.2,-65.97],[-61.14,-65.99],[-61.04,-65.99],[-60.99,-65.94],[-60.91,-65.92],[-60.81,-65.93],[-60.62,-65.93],[-60.57,-65.98],[-60.62,-66.03],[-60.74,-66.11],[-60.86,-66.07],[-60.96,-66.07],[-61.01,-66.11],[-60.9,-66.19],[-60.94,-66.26],[-61.03,-66.34],[-61.13,-66.29],[-61.15,-66.21],[-61.29,-66.16],[-61.43,-66.14],[-61.53,-66.23],[-61.68,-66.25],[-61.7,-66.34],[-61.76,-66.43],[-61.84,-66.4],[-61.88,-66.3],[-62.12,-66.21],[-62.24,-66.2],[-62.49,-66.22],[-62.58,-66.22],[-62.68,-66.24],[-62.75,-66.31],[-62.65,-66.36],[-62.62,-66.44],[-62.62,-66.49],[-62.64,-66.51],[-62.66,-66.56],[-62.54,-66.62],[-62.54,-66.71],[-62.63,-66.71],[-62.7,-66.68],[-63,-66.45],[-63.18,-66.35],[-63.26,-66.26],[-63.45,-66.24],[-63.59,-66.24],[-63.75,-66.28],[-63.69,-66.32],[-63.65,-66.38],[-63.76,-66.41],[-63.88,-66.51],[-63.96,-66.59],[-64.02,-66.61],[-64.08,-66.65],[-63.81,-66.76],[-63.77,-66.8],[-63.75,-66.87],[-63.84,-66.91],[-64.04,-66.93],[-64.4,-66.85],[-64.55,-66.85],[-64.61,-66.8],[-64.69,-66.81],[-64.74,-66.89],[-64.79,-66.97],[-64.88,-67.02],[-64.85,-67.1],[-64.79,-67.12],[-64.84,-67.16],[-64.95,-67.18],[-65.03,-67.21],[-64.86,-67.24],[-64.83,-67.27],[-64.82,-67.31],[-65.08,-67.34],[-65.25,-67.34],[-65.35,-67.31],[-65.44,-67.33],[-65.5,-67.38],[-65.52,-67.44],[-65.5,-67.53],[-65.47,-67.59],[-65.45,-67.61],[-65.42,-67.66],[-65.57,-67.79],[-65.59,-67.82],[-65.6,-67.88],[-65.53,-67.93],[-65.47,-68.01],[-65.55,-68.05],[-65.64,-68.13],[-65.55,-68.15],[-65.39,-68.15],[-65.22,-68.14],[-64.96,-68.07],[-64.88,-68.06],[-64.85,-68.08],[-64.83,-68.13],[-64.9,-68.17],[-65.37,-68.29],[-65.45,-68.34],[-65.33,-68.36],[-65.09,-68.37],[-65,-68.41],[-65.05,-68.45],[-65.14,-68.49],[-65.24,-68.58],[-65.16,-68.62],[-64.9,-68.67],[-64.43,-68.75],[-64.08,-68.77],[-64.16,-68.69],[-64.17,-68.58],[-63.92,-68.5],[-63.8,-68.47],[-63.22,-68.42],[-63.06,-68.42],[-62.93,-68.44],[-62.98,-68.49],[-63.11,-68.47],[-63.35,-68.5],[-63.71,-68.59],[-63.77,-68.63],[-63.75,-68.7],[-63.44,-68.76],[-63.34,-68.81],[-63.48,-68.95],[-63.46,-69.04],[-63.3,-69.14],[-63.09,-69.25],[-62.99,-69.33],[-62.84,-69.37],[-62.59,-69.48],[-62.45,-69.58],[-62.41,-69.83],[-62.2,-70.03],[-61.96,-70.12],[-61.93,-70.2],[-62.01,-70.28],[-62.22,-70.23],[-62.33,-70.28],[-62.38,-70.36],[-62.23,-70.42],[-62,-70.5],[-61.5,-70.49],[-61.49,-70.57],[-61.61,-70.62],[-61.7,-70.68],[-61.81,-70.71],[-61.99,-70.73],[-62.04,-70.8],[-61.96,-70.9],[-61.7,-70.86],[-61.51,-70.85],[-61.31,-70.87],[-61.25,-71],[-61.02,-71.17],[-60.96,-71.24],[-61,-71.32],[-61.15,-71.34],[-61.24,-71.4],[-61.37,-71.45],[-61.52,-71.48],[-61.79,-71.62],[-61.91,-71.63],[-61.96,-71.66],[-61.73,-71.67],[-61.56,-71.68],[-61.21,-71.56],[-61.08,-71.59],[-61,-71.66],[-60.95,-71.75],[-61.04,-71.82],[-61.64,-71.86],[-61.94,-71.9],[-62.26,-72.02],[-61.89,-72.07],[-61.63,-72.05],[-61.49,-72.07],[-61.31,-72.11],[-61.11,-72.09],[-60.95,-72.05],[-60.83,-72.05],[-60.72,-72.07],[-60.7,-72.14],[-60.69,-72.27],[-60.66,-72.36],[-60.73,-72.43],[-61.05,-72.47],[-61.28,-72.47],[-61.29,-72.6],[-60.94,-72.7],[-60.72,-72.65],[-60.53,-72.67],[-60.53,-72.83],[-60.38,-73.01],[-60.25,-73.02],[-60.15,-72.94],[-60.01,-72.94],[-59.96,-73.03],[-60.02,-73.19],[-60.12,-73.28],[-60.4,-73.24],[-60.56,-73.21],[-60.69,-73.27],[-60.9,-73.32],[-61.08,-73.33],[-61.24,-73.25],[-61.43,-73.19],[-61.73,-73.16],[-62.01,-73.15],[-61.91,-73.22],[-61.79,-73.25],[-61.74,-73.38],[-61.64,-73.5],[-61.41,-73.47],[-61.08,-73.54],[-60.88,-73.61],[-60.79,-73.71],[-60.9,-73.87],[-61.09,-73.93],[-61.2,-73.96],[-61.4,-73.9],[-61.55,-73.9],[-61.69,-73.92],[-61.74,-74],[-61.84,-74.03],[-61.32,-74.04],[-61.16,-74.06],[-61.04,-74.12],[-61.23,-74.21],[-61.57,-74.19],[-61.72,-74.23],[-61.84,-74.29],[-61.33,-74.33],[-61.12,-74.31],[-60.78,-74.24],[-60.7,-74.31],[-60.84,-74.37],[-61.01,-74.48],[-61.37,-74.51],[-61.64,-74.51],[-61.99,-74.48],[-62.09,-74.45],[-62.24,-74.44],[-62.23,-74.51],[-62.13,-74.55],[-61.89,-74.71],[-61.86,-74.78],[-61.93,-74.86],[-62.14,-74.93],[-62.37,-74.95],[-62.57,-74.9],[-62.71,-74.74],[-62.89,-74.69],[-63.07,-74.68],[-63.18,-74.68],[-63.17,-74.76],[-63.13,-74.85],[-63.2,-74.91],[-63.36,-74.88],[-63.56,-74.91],[-63.75,-74.95],[-63.92,-75],[-63.57,-75.03],[-63.34,-75.03],[-63.17,-75.11],[-63.23,-75.15],[-63.55,-75.17],[-63.86,-75.21],[-64.28,-75.29],[-63.97,-75.33],[-63.68,-75.33],[-63.47,-75.34],[-63.3,-75.35],[-63.26,-75.4],[-63.36,-75.45],[-64.05,-75.58],[-64.78,-75.74],[-65.04,-75.79],[-65.32,-75.82],[-65.97,-75.95],[-66.37,-76.01],[-67.52,-76.11],[-69.3,-76.35],[-69.92,-76.52],[-70.1,-76.65],[-70.21,-76.67],[-70.55,-76.72],[-70.9,-76.74],[-71.8,-76.75],[-72.72,-76.69],[-73.47,-76.68],[-73.88,-76.7],[-75.27,-76.58],[-75.44,-76.59],[-75.66,-76.61],[-75.83,-76.61],[-75.96,-76.59],[-76.24,-76.59],[-77.19,-76.63],[-77.29,-76.7],[-77.17,-76.83],[-76.82,-76.99],[-76.25,-77.27],[-75.94,-77.33],[-75.75,-77.4],[-75.39,-77.47],[-74.58,-77.48],[-73.48,-77.54],[-72.85,-77.59],[-72.88,-77.69],[-73.25,-77.89],[-73.49,-77.97],[-74.04,-78.11],[-74.81,-78.18],[-75.4,-78.16],[-76.44,-78.04],[-77.74,-77.94],[-79.68,-77.84],[-80.1,-77.8],[-80.6,-77.75],[-80.89,-77.8],[-81.1,-77.84],[-81.58,-77.85],[-81.44,-77.89],[-79.51,-78.15],[-77.86,-78.35],[-77.66,-78.4],[-77.43,-78.43],[-77.45,-78.56],[-77.55,-78.66],[-77.87,-78.75],[-78.71,-78.75],[-79.77,-78.82],[-80.29,-78.82],[-80.82,-78.75],[-81.93,-78.56],[-82.61,-78.41],[-83.08,-78.25],[-83.41,-78.11],[-83.78,-77.98],[-83.75,-78.07],[-83.69,-78.15],[-83.51,-78.25],[-83.25,-78.36],[-83.23,-78.4],[-83.35,-78.41],[-83.54,-78.36],[-83.71,-78.4],[-83.76,-78.46],[-83.7,-78.54],[-83.6,-78.61],[-83.26,-78.77],[-82.97,-78.82],[-82.59,-78.92],[-81.66,-79.1],[-81.5,-79.16],[-81.22,-79.3],[-81.16,-79.4],[-80.89,-79.5],[-80.7,-79.52],[-80.53,-79.51],[-80.48,-79.43],[-80.49,-79.32],[-80.42,-79.29],[-80.15,-79.27],[-79.46,-79.3],[-76.5,-79.33],[-76.22,-79.39],[-76.11,-79.47],[-76.03,-79.63],[-76.34,-79.82],[-76.56,-79.9],[-76.9,-79.96],[-77.22,-79.99],[-77.7,-80.01],[-78.69,-80],[-79.66,-80],[-78.91,-80.09],[-78.18,-80.17],[-77.16,-80.15],[-76.76,-80.13],[-76.41,-80.09],[-76.26,-80.16],[-75.99,-80.3],[-75.82,-80.34],[-75.71,-80.38],[-75.56,-80.53],[-75.49,-80.62],[-75.34,-80.72],[-75.24,-80.8],[-75.08,-80.86],[-74.81,-80.89],[-74.51,-80.84],[-73.94,-80.82],[-73.38,-80.89],[-73.03,-80.92],[-72.55,-80.85],[-72.17,-80.76],[-71.38,-80.68],[-71.23,-80.65],[-71.02,-80.62],[-70.69,-80.63],[-70.56,-80.65],[-70.39,-80.74],[-70.24,-80.86],[-70.01,-80.92],[-69.77,-80.96],[-69.63,-80.97],[-69.18,-81],[-68.59,-80.97],[-68.33,-81],[-68.28,-81.07],[-68.14,-81.13],[-67.97,-81.15],[-65.57,-81.46],[-64.75,-81.52],[-63.48,-81.55],[-62.49,-81.56],[-62.35,-81.58],[-62.17,-81.64],[-62.54,-81.68],[-62.95,-81.68],[-63.55,-81.67],[-63.77,-81.68],[-64.23,-81.66],[-64.48,-81.67],[-64.7,-81.65],[-65.02,-81.7],[-65.62,-81.73],[-65.49,-81.78],[-65.26,-81.79],[-64.81,-81.8],[-64.19,-81.79],[-64.14,-81.87],[-64.71,-81.89],[-65.92,-81.9],[-66.04,-81.91],[-66.13,-81.95],[-65.95,-81.97],[-65.84,-81.99],[-65.79,-82.05],[-65.91,-82.18],[-65.71,-82.28],[-65.57,-82.29],[-65.42,-82.28],[-65.17,-82.32],[-64.92,-82.37],[-64.4,-82.37],[-63.77,-82.3],[-63.47,-82.31],[-62.65,-82.26],[-61.9,-82.27],[-60.86,-82.19],[-60.69,-82.19],[-60.53,-82.2],[-60.82,-82.28],[-62.09,-82.47],[-62.55,-82.5],[-62.74,-82.53],[-62.63,-82.62],[-62.47,-82.72],[-62.13,-82.82],[-61.92,-82.98],[-61.71,-83.01],[-61.31,-82.94],[-61.22,-82.99],[-61.2,-83.1],[-61.3,-83.18],[-61.44,-83.23],[-61.53,-83.28],[-61.59,-83.34],[-61.43,-83.4],[-60.98,-83.43],[-60.4,-83.44],[-59.85,-83.44],[-59.52,-83.46],[-58.29,-83.12],[-57.8,-82.96],[-57.56,-82.89],[-57.35,-82.84],[-56.32,-82.63],[-56.08,-82.57],[-55.8,-82.48],[-55.29,-82.46],[-54.6,-82.32],[-53.99,-82.2],[-53.74,-82.18],[-53.56,-82.17],[-53.34,-82.14],[-52.8,-82.15],[-52.41,-82.13],[-51.73,-82.06],[-51.21,-82.02],[-50.65,-81.98],[-50.03,-81.97],[-48.36,-81.89],[-47.89,-81.93],[-47.36,-82],[-47.02,-82],[-46.57,-81.98],[-46.26,-81.95],[-46.12,-82.04],[-46.05,-82.16],[-46.2,-82.27],[-46.45,-82.34],[-46.52,-82.45],[-46.18,-82.51],[-45.79,-82.49],[-45.04,-82.44],[-44.45,-82.37],[-44.29,-82.32],[-44.06,-82.33],[-43.67,-82.27],[-43.18,-82.02],[-42.56,-81.76],[-42.05,-81.6],[-41.71,-81.41],[-41.43,-81.3],[-41.13,-81.21],[-40.91,-81.17],[-40.44,-81.17],[-39.76,-81.03],[-38.77,-80.88],[-38.01,-80.95],[-37.21,-81.06],[-36.81,-80.97],[-36.5,-80.96],[-36.23,-80.92],[-35.97,-80.89],[-35.78,-80.81],[-35.52,-80.75],[-35.33,-80.65],[-34.35,-80.6],[-33.33,-80.54],[-33.19,-80.52],[-33.06,-80.53],[-32.71,-80.51],[-32.26,-80.46],[-31.63,-80.44],[-31.31,-80.45],[-31.02,-80.31],[-30.43,-80.28],[-29.8,-80.22],[-29.53,-80.18],[-29.33,-80.17],[-24.24,-80.06],[-24.02,-80.01],[-23.57,-79.96],[-23.41,-79.86],[-24.09,-79.81],[-24.3,-79.77],[-24.53,-79.76],[-24.67,-79.77],[-25.26,-79.76],[-29.95,-79.6],[-30.05,-79.59],[-30.21,-79.49],[-30.18,-79.3],[-30.32,-79.16],[-30.65,-79.12],[-30.99,-79.13],[-31.41,-79.15],[-32.54,-79.22],[-32.99,-79.23],[-34.2,-79.11],[-34.99,-78.98],[-35.52,-78.93],[-35.89,-78.84],[-36.24,-78.77],[-36.27,-78.62],[-36.18,-78.47],[-35.51,-78.04],[-35.09,-77.84],[-34.81,-77.82],[-34.55,-77.73],[-34.29,-77.52],[-34.08,-77.43],[-33.59,-77.31],[-33.38,-77.28],[-32.61,-77.14],[-32.41,-77.14],[-32.06,-77.16],[-31.68,-77.03],[-30.49,-76.76],[-30.22,-76.66],[-29.89,-76.6],[-28.93,-76.37],[-28.08,-76.26],[-27.65,-76.23],[-27.13,-76.16],[-26.56,-76.05],[-26.06,-75.96],[-24.27,-75.77],[-23.2,-75.72],[-22.47,-75.66],[-21.95,-75.69],[-21.43,-75.68],[-20.99,-75.63],[-20.78,-75.59],[-20.49,-75.49],[-19.49,-75.54],[-18.85,-75.47],[-18.59,-75.46],[-18.3,-75.43],[-18.42,-75.4],[-18.52,-75.39],[-18.62,-75.34],[-18.75,-75.24],[-18.62,-75.12],[-18.52,-75.05],[-18.22,-74.97],[-18.07,-74.86],[-17.92,-74.7],[-17.44,-74.38],[-17.3,-74.33],[-16.99,-74.32],[-16.73,-74.33],[-16.43,-74.32],[-15.67,-74.41],[-15.53,-74.38],[-15.29,-74.28],[-15.09,-74.16],[-14.66,-73.99],[-14.57,-73.94],[-14.61,-73.85],[-15.26,-73.89],[-15.75,-73.95],[-16.22,-73.92],[-16.28,-73.87],[-16.18,-73.83],[-16,-73.82],[-15.94,-73.76],[-16.1,-73.71],[-16.39,-73.68],[-16.52,-73.64],[-16.51,-73.56],[-16.44,-73.43],[-16.28,-73.39],[-16.15,-73.33],[-15.8,-73.15],[-15.6,-73.1],[-15.01,-73.05],[-14.32,-73.12],[-14.16,-73.1],[-14,-73],[-14.17,-72.84],[-14.3,-72.78],[-14.3,-72.73],[-13.94,-72.76],[-13.6,-72.79],[-13.21,-72.79],[-12.75,-72.63],[-12.09,-72.5],[-11.78,-72.44],[-11.5,-72.41],[-11.35,-72.28],[-11.12,-72.03],[-10.96,-71.9],[-10.96,-71.82],[-11.01,-71.76],[-11.18,-71.78],[-11.33,-71.79],[-11.7,-71.72],[-12.15,-71.61],[-12.28,-71.5],[-12.35,-71.39],[-12.21,-71.33],[-12.07,-71.3],[-11.93,-71.29],[-11.66,-71.33],[-11.33,-71.44],[-11.16,-71.48],[-10.97,-71.56],[-10.83,-71.55],[-10.66,-71.44],[-10.52,-71.3],[-10.41,-71.25],[-10.23,-71.2],[-10.03,-71.13],[-10.12,-71.06],[-10.33,-71.02],[-10.36,-70.98],[-10.27,-70.94],[-10.1,-70.93],[-9.89,-71.03],[-9.6,-71.1],[-9.4,-71.12],[-9.23,-71.17],[-8.97,-71.36],[-8.65,-71.67],[-8.5,-71.67],[-8.22,-71.65],[-7.92,-71.64],[-7.71,-71.55],[-7.67,-71.32],[-7.59,-71.22],[-7.62,-71.12],[-7.76,-71.02],[-7.87,-70.94],[-7.85,-70.88],[-7.75,-70.84],[-7.62,-70.83],[-7.39,-70.79],[-7.03,-70.84],[-6.84,-70.84],[-6.55,-70.82],[-6.25,-70.76],[-5.94,-70.71],[-5.69,-70.75],[-5.59,-70.86],[-5.71,-70.97],[-5.9,-71.05],[-6.08,-71.15],[-6.13,-71.27],[-6.12,-71.33],[-5.95,-71.34],[-4.45,-71.33],[-4.25,-71.34],[-3.99,-71.34],[-3.71,-71.37],[-3.24,-71.36],[-2.81,-71.32],[-2.61,-71.32],[-2.26,-71.36],[-2.01,-71.43],[-1.5,-71.41],[-1.35,-71.39],[-1.22,-71.28],[-1.07,-71.27],[-0.9,-71.35],[-0.84,-71.54],[-0.76,-71.63],[-0.54,-71.71],[-0.33,-71.64],[-0.18,-71.56],[0.15,-71.4],[0.54,-71.27],[0.83,-71.2],[1.55,-71.08],[1.91,-71],[2.61,-70.9],[3.51,-70.84],[5.11,-70.66],[5.64,-70.64],[6.51,-70.59],[6.95,-70.54],[7.4,-70.49],[7.68,-70.36],[8.31,-70.46],[8.52,-70.47],[8.82,-70.39],[9.14,-70.18],[9.61,-70.27],[9.89,-70.4],[10.22,-70.51],[10.97,-70.69],[11.2,-70.73],[11.7,-70.77],[11.83,-70.74],[12.07,-70.62],[12.31,-70.44],[12.46,-70.37],[12.68,-70.31],[12.93,-70.21],[12.86,-70.16],[12.72,-70.14],[12.6,-70.12],[12.63,-70.07],[13.07,-70.05],[13.3,-70.23],[13.53,-70.29],[13.82,-70.34],[14.49,-70.3],[15.06,-70.29],[15.56,-70.33],[15.81,-70.32],[16.03,-70.19],[16.38,-70.15],[16.58,-70.2],[16.71,-70.4],[17.17,-70.45],[18.12,-70.54],[18.23,-70.52],[18.35,-70.42],[18.43,-70.29],[18.63,-70.27],[18.88,-70.2],[19.01,-70.21],[19.2,-70.29],[19.13,-70.49],[19.03,-70.67],[19.15,-70.82],[19.27,-70.9],[19.41,-70.92],[19.65,-70.92],[19.94,-70.91],[20.13,-70.92],[21.07,-70.84],[21.19,-70.68],[21.34,-70.5],[21.7,-70.26],[21.85,-70.28],[21.96,-70.3],[22.22,-70.42],[22.37,-70.48],[22.4,-70.56],[22.23,-70.64],[22.28,-70.7],[22.45,-70.74],[22.98,-70.81],[23.15,-70.8],[23.41,-70.72],[23.66,-70.58],[23.8,-70.4],[24.02,-70.41],[24.24,-70.45],[24.39,-70.54],[24.39,-70.7],[24.59,-70.82],[24.76,-70.89],[25.19,-70.97],[25.65,-70.99],[25.97,-71.04],[26.5,-71.02],[26.75,-70.97],[26.92,-70.95],[27.21,-70.91],[27.51,-70.81],[27.7,-70.77],[28.39,-70.68],[28.91,-70.58],[29.46,-70.41],[30,-70.3],[30.83,-70.25],[31.06,-70.22],[31.38,-70.23],[32.16,-70.1],[32.46,-70.03],[32.62,-70],[32.81,-69.91],[32.91,-69.73],[32.99,-69.62],[32.98,-69.52],[32.9,-69.38],[32.74,-69.25],[32.57,-69.07],[32.64,-68.87],[32.78,-68.78],[33.12,-68.69],[33.47,-68.67],[33.85,-68.68],[34.19,-68.7],[34.22,-68.79],[34.07,-68.89],[33.88,-68.98],[33.77,-69.02],[33.81,-69.1],[34.06,-69.11],[34.6,-69.09],[34.75,-69.17],[35.13,-69.49],[35.22,-69.64],[35.36,-69.68],[35.57,-69.66],[36.02,-69.66],[36.33,-69.64],[36.59,-69.64],[36.72,-69.65],[36.86,-69.73],[37.11,-69.81],[37.37,-69.75],[37.56,-69.72],[37.79,-69.73],[38.14,-69.82],[38.5,-70.06],[38.89,-70.17],[38.91,-70.1],[38.86,-70.01],[39.02,-69.92],[39.21,-69.79],[39.49,-69.61],[39.71,-69.43],[39.76,-69.17],[39.86,-68.97],[40.04,-68.87],[40.22,-68.8],[40.48,-68.74],[40.82,-68.72],[41.13,-68.58],[41.36,-68.51],[41.82,-68.43],[42.41,-68.35],[42.82,-68.12],[42.96,-68.1],[43.17,-68.06],[43.55,-68.05],[44.18,-67.97],[44.37,-67.96],[44.7,-67.9],[44.99,-67.77],[45.2,-67.73],[45.57,-67.74],[45.89,-67.66],[46.15,-67.66],[46.4,-67.62],[46.44,-67.53],[46.32,-67.48],[46.32,-67.4],[46.45,-67.3],[46.56,-67.27],[46.88,-67.27],[47.15,-67.36],[47.35,-67.36],[47.4,-67.41],[47.23,-67.47],[47.12,-67.57],[47.31,-67.66],[47.49,-67.73],[47.7,-67.72],[47.96,-67.66],[48.21,-67.7],[48.32,-67.79],[48.32,-67.92],[48.37,-67.99],[48.55,-67.93],[48.65,-67.79],[48.62,-67.63],[48.63,-67.52],[49.05,-67.35],[49.22,-67.23],[48.92,-67.2],[48.71,-67.22],[48.6,-67.17],[48.47,-67.04],[48.83,-66.94],[49.25,-66.94],[49.49,-67.03],[50.01,-67.18],[50.29,-67.17],[50.55,-67.19],[50.61,-67.15],[50.51,-66.94],[50.52,-66.82],[50.31,-66.75],[50.24,-66.6],[50.33,-66.44],[50.59,-66.36],[50.94,-66.32],[51.69,-66.07],[51.88,-66.02],[52.38,-65.97],[52.96,-65.95],[53.67,-65.86],[54.95,-65.92],[55.29,-65.95],[55.5,-66],[55.71,-66.08],[55.97,-66.21],[56.36,-66.37],[56.86,-66.42],[57,-66.47],[57.19,-66.61],[56.99,-66.7],[56.82,-66.71],[56.51,-66.66],[56.29,-66.6],[56.15,-66.63],[56.29,-66.72],[56.45,-66.78],[56.48,-66.86],[56.39,-66.97],[55.8,-67.2],[56.15,-67.26],[56.37,-67.21],[56.56,-67.12],[56.76,-67.07],[56.89,-67.06],[57.36,-67.05],[57.63,-67.01],[57.83,-67.04],[58.03,-67.1],[58.32,-67.16],[58.74,-67.23],[59.25,-67.48],[59.65,-67.46],[59.87,-67.4],[60.48,-67.39],[61.01,-67.5],[61.31,-67.54],[62.17,-67.58],[62.69,-67.65],[63.02,-67.56],[63.24,-67.53],[63.7,-67.51],[63.93,-67.53],[64.57,-67.62],[65.71,-67.72],[66.49,-67.77],[67.17,-67.77],[67.5,-67.81],[68.1,-67.85],[68.33,-67.89],[68.9,-67.86],[69.17,-67.82],[69.42,-67.74],[69.56,-67.76],[69.66,-67.86],[69.6,-68.04],[69.7,-68.16],[69.79,-68.28],[69.91,-68.38],[69.98,-68.46],[69.93,-68.54],[69.76,-68.6],[69.53,-68.74],[69.55,-68.86],[69.65,-68.93],[69.53,-69.02],[69.61,-69.15],[69.63,-69.23],[69.55,-69.29],[69.37,-69.33],[69.06,-69.34],[68.91,-69.37],[68.88,-69.47],[68.96,-69.54],[69.14,-69.58],[69.19,-69.65],[69.16,-69.77],[69.08,-69.87],[68.92,-69.91],[68.74,-69.92],[68.42,-69.9],[68.18,-69.84],[68.03,-69.89],[67.92,-69.95],[67.58,-70.09],[67.42,-70.18],[67.27,-70.27],[67.66,-70.33],[67.94,-70.42],[68.56,-70.41],[68.76,-70.37],[69.02,-70.33],[69.16,-70.33],[69.25,-70.43],[69.2,-70.59],[69.19,-70.7],[68.87,-71.04],[68.77,-71.09],[68.62,-71.18],[68.45,-71.25],[68.31,-71.29],[68.04,-71.39],[67.87,-71.58],[67.69,-71.74],[67.43,-72],[67.28,-72.29],[67.21,-72.46],[67.11,-72.64],[66.89,-72.95],[66.75,-73],[66.5,-73.13],[66.57,-73.21],[66.76,-73.22],[67,-73.24],[67.32,-73.3],[67.75,-73.17],[67.97,-73.09],[68.02,-72.92],[67.97,-72.75],[68.11,-72.65],[68.42,-72.52],[69.16,-72.42],[69.31,-72.41],[69.55,-72.37],[69.77,-72.25],[69.96,-72.13],[70.29,-72.06],[70.57,-71.93],[70.62,-71.84],[70.73,-71.82],[71.08,-71.74],[71.17,-71.67],[71.28,-71.62],[71.35,-71.51],[71.38,-71.31],[71.46,-71.15],[71.63,-70.95],[71.77,-70.8],[71.9,-70.71],[72.26,-70.66],[72.42,-70.6],[72.62,-70.47],[72.76,-70.4],[72.74,-70.24],[72.82,-70.1],[73.04,-70.01],[73.32,-69.85],[73.68,-69.83],[73.94,-69.74],[74.23,-69.8],[74.57,-69.88],[75.15,-69.86],[75.42,-69.89],[75.64,-69.85],[75.82,-69.73],[75.89,-69.58],[76.11,-69.49],[76.36,-69.49],[76.77,-69.34],[77.19,-69.21],[77.54,-69.17],[77.82,-69.07],[78.02,-68.89],[78.23,-68.76],[78.49,-68.63],[78.56,-68.39],[78.73,-68.28],[79.04,-68.18],[79.29,-68.12],[80.36,-67.95],[81.19,-67.83],[82.02,-67.69],[82.27,-67.69],[82.61,-67.61],[83.16,-67.61],[83.3,-67.6],[83.49,-67.44],[83.9,-67.29],[84.16,-67.24],[84.49,-67.11],[84.75,-67.1],[85.12,-67.13],[85.43,-67.16],[85.71,-67.16],[86.12,-67.05],[86.75,-67.04],[86.95,-66.99],[87.08,-66.94],[87.98,-66.79],[88.31,-66.82],[88.79,-66.79],[89.08,-66.8],[89.35,-66.82],[89.7,-66.82],[90.29,-66.77],[90.55,-66.73],[91.02,-66.6],[91.55,-66.57],[91.78,-66.54],[92.07,-66.51],[92.31,-66.56],[92.49,-66.6],[92.59,-66.61],[92.73,-66.62],[93.07,-66.57],[93.36,-66.59],[93.72,-66.64],[93.96,-66.69],[94.09,-66.69],[94.31,-66.65],[94.59,-66.54],[94.84,-66.5],[95.08,-66.53],[95.25,-66.57],[95.54,-66.63],[95.99,-66.62],[96.42,-66.6],[96.79,-66.55],[97.1,-66.5],[97.39,-66.58],[97.72,-66.61],[98.26,-66.47],[98.46,-66.5],[98.6,-66.53],[98.72,-66.55],[98.86,-66.67],[99.37,-66.65],[99.82,-66.55],[100.21,-66.47],[100.59,-66.43],[100.89,-66.36],[101.33,-66.1],[101.32,-66.02],[101.38,-65.97],[101.47,-65.95],[102.17,-65.95],[102.39,-65.93],[102.67,-65.87],[103.17,-65.92],[103.64,-66],[103.76,-65.99],[103.95,-65.99],[104.29,-66.04],[104.67,-66.14],[105,-66.16],[106.39,-66.41],[107.17,-66.47],[107.57,-66.55],[107.67,-66.58],[107.79,-66.66],[107.99,-66.67],[108.16,-66.64],[108.38,-66.77],[108.91,-66.86],[109.46,-66.91],[109.82,-66.83],[110.44,-66.62],[110.62,-66.52],[110.59,-66.31],[110.91,-66.08],[111.45,-65.96],[112.13,-65.9],[112.55,-65.85],[113.1,-65.8],[113.37,-65.85],[113.5,-65.89],[113.71,-65.93],[113.95,-66.06],[114.34,-66.36],[114.62,-66.47],[114.87,-66.48],[115.08,-66.49],[115.31,-66.56],[115.64,-66.77],[115.44,-66.96],[115.27,-67.03],[114.57,-67.11],[114.26,-67.17],[113.99,-67.21],[113.91,-67.37],[114.03,-67.44],[114.32,-67.41],[114.66,-67.39],[114.93,-67.36],[115.17,-67.31],[115.38,-67.24],[115.89,-67.2],[116.21,-67.14],[116.51,-67.11],[116.71,-67.05],[116.92,-67.06],[117.13,-67.11],[117.3,-67.11],[117.74,-67.13],[117.95,-67.09],[118.14,-67.08],[118.33,-67.12],[118.52,-67.16],[118.71,-67.17],[118.96,-67.14],[119.32,-67.07],[119.77,-66.99],[120.19,-66.97],[120.29,-66.97],[120.37,-66.98],[119.95,-67.08],[119.28,-67.2],[118.92,-67.32],[119.13,-67.37],[120.4,-67.24],[120.98,-67.14],[121.49,-67.09],[121.61,-67.06],[122.03,-66.9],[122.18,-66.86],[122.63,-66.8],[123.22,-66.75],[123.67,-66.68],[123.97,-66.61],[124.2,-66.6],[124.37,-66.65],[124.6,-66.71],[124.82,-66.69],[125.1,-66.64],[125.29,-66.52],[125.4,-66.42],[125.6,-66.39],[125.87,-66.36],[126.08,-66.4],[126.42,-66.46],[126.66,-66.5],[126.87,-66.76],[127.37,-66.99],[127.54,-67.05],[127.97,-67.03],[128.43,-67.12],[128.63,-67.11],[128.82,-67.08],[128.98,-67.1],[129.24,-67.04],[129.5,-66.75],[129.74,-66.47],[129.98,-66.34],[130.12,-66.29],[130.3,-66.27],[130.58,-66.21],[130.95,-66.19],[131.23,-66.22],[131.83,-66.24],[132.32,-66.17],[132.87,-66.18],[133.15,-66.09],[133.44,-66.08],[133.84,-66.15],[133.96,-66.2],[134.18,-66.28],[134.23,-66.35],[134.29,-66.48],[134.4,-66.48],[134.77,-66.35],[134.97,-66.33],[135.35,-66.13],[135.55,-66.18],[136.01,-66.27],[136.19,-66.29],[136.55,-66.44],[136.74,-66.41],[136.89,-66.34],[137.34,-66.35],[137.75,-66.41],[137.93,-66.46],[138.14,-66.54],[138.27,-66.56],[138.38,-66.54],[139.24,-66.57],[139.61,-66.64],[139.9,-66.72],[140.9,-66.75],[141.29,-66.83],[141.52,-66.79],[141.97,-66.81],[142.16,-66.87],[142.33,-66.95],[142.69,-67.01],[142.89,-67],[143.17,-66.95],[143.45,-66.88],[143.73,-66.88],[143.86,-66.94],[143.91,-67.09],[144.12,-67.09],[144.35,-67.02],[144.55,-67.04],[144.62,-67.14],[144.52,-67.28],[144.26,-67.48],[144.15,-67.64],[143.94,-67.79],[143.98,-67.86],[144.19,-67.9],[144.4,-67.79],[144.88,-67.72],[145.13,-67.63],[145.56,-67.59],[145.98,-67.62],[146.28,-67.75],[146.83,-67.96],[146.85,-68.04],[146.9,-68.12],[146.88,-68.19],[146.8,-68.27],[147.09,-68.37],[147.35,-68.38],[147.57,-68.38],[148.46,-68.47],[148.88,-68.43],[149.26,-68.43],[149.72,-68.42],[150.07,-68.42],[150.34,-68.44],[150.67,-68.4],[150.94,-68.36],[151.07,-68.38],[151.12,-68.62],[151.14,-68.76],[151.29,-68.82],[151.45,-68.76],[151.56,-68.69],[152.27,-68.73],[152.55,-68.73],[152.81,-68.77],[153.08,-68.86],[153.34,-68.82],[153.5,-68.76],[153.71,-68.73],[153.77,-68.64],[153.79,-68.49],[153.78,-68.35],[153.91,-68.32],[154.03,-68.35],[154.2,-68.42],[154.58,-68.63],[154.87,-68.77],[154.99,-68.84],[155.16,-68.89],[155.52,-69.02],[156.01,-69.08],[156.49,-69.18],[157.05,-69.18],[157.48,-69.31],[157.78,-69.2],[157.93,-69.18],[158.16,-69.21],[158.43,-69.3],[158.65,-69.32],[159.39,-69.47],[159.78,-69.52],[159.93,-69.63],[160.13,-69.73],[160.13,-69.84],[160.21,-69.97],[160.65,-70.08],[160.83,-70.18],[161.04,-70.32],[161.42,-70.83],[161.63,-70.92],[161.92,-70.91],[162.19,-71.04],[162.28,-71.02],[162.29,-70.97],[162.04,-70.62],[162.02,-70.44],[162.22,-70.33],[162.67,-70.3],[163.03,-70.5],[163.35,-70.62],[163.57,-70.64],[164,-70.64],[164.4,-70.51],[164.72,-70.56],[165.21,-70.57],[165.85,-70.65],[166.13,-70.63],[166.63,-70.66],[167.23,-70.77],[167.57,-70.81],[167.64,-70.85],[167.8,-70.92],[167.88,-71.01],[167.97,-71.09],[168.17,-71.18],[168.38,-71.2],[168.8,-71.27],[169.66,-71.51],[169.98,-71.58],[170.16,-71.63],[170.25,-71.57],[170.28,-71.44],[170.44,-71.42],[170.6,-71.6],[170.78,-71.75],[170.86,-71.87],[170.68,-71.97],[170.41,-71.95],[170.22,-71.95],[170.03,-72.12],[169.95,-72.4],[170.13,-72.4],[170.26,-72.37],[170.29,-72.48],[170.21,-72.57],[170.05,-72.6],[169.77,-72.53],[169.44,-72.49],[169.07,-72.47],[168.72,-72.38],[168.58,-72.38],[168.43,-72.38],[168.62,-72.47],[168.82,-72.55],[169.27,-72.62],[169.83,-72.73],[169.84,-72.79],[169.71,-72.88],[169.55,-73.05],[169.03,-73.2],[168.74,-73.09],[168.38,-73.07],[168.2,-73.13],[167.85,-73.12],[167.16,-73.15],[166.88,-73.01],[166.45,-72.94],[166.47,-73],[166.83,-73.22],[167.23,-73.28],[167.62,-73.34],[167.71,-73.39],[167.53,-73.45],[167.3,-73.44],[167,-73.54],[166.43,-73.53],[166.16,-73.53],[166,-73.58],[165.86,-73.59],[165.97,-73.63],[166.11,-73.74],[165.91,-73.82],[165.73,-73.87],[165.55,-73.85],[165.35,-73.88],[165.25,-73.78],[165.24,-73.57],[165.13,-73.38],[165,-73.37],[164.81,-73.4],[164.75,-73.56],[164.89,-73.84],[164.98,-73.93],[164.91,-74],[164.78,-74.03],[165.04,-74.26],[165.26,-74.43],[165.4,-74.48],[165.41,-74.56],[165.3,-74.59],[165,-74.56],[164.85,-74.58],[164.69,-74.57],[164.41,-74.53],[164.17,-74.52],[163.94,-74.57],[163.74,-74.56],[163.56,-74.42],[163.4,-74.38],[163.27,-74.43],[163.17,-74.6],[162.96,-74.66],[162.75,-74.74],[162.6,-74.82],[162.53,-75.17],[162.41,-75.24],[162.23,-75.23],[162.09,-75.26],[161.91,-75.23],[161.68,-75.22],[160.91,-75.33],[161.03,-75.4],[161.23,-75.39],[161.9,-75.4],[162.19,-75.47],[162.24,-75.62],[162.35,-75.69],[162.58,-75.76],[162.75,-75.79],[162.82,-75.85],[162.75,-75.95],[162.65,-76.05],[162.44,-76.15],[162.5,-76.21],[162.73,-76.23],[162.82,-76.46],[162.67,-76.57],[162.75,-76.66],[162.76,-76.75],[162.61,-76.83],[162.49,-76.87],[162.45,-76.96],[162.68,-77.01],[162.85,-77.02],[163.09,-77.03],[163.25,-77.13],[163.46,-77.27],[163.61,-77.39],[163.62,-77.58],[163.77,-77.7],[164.05,-77.77],[164.04,-77.85],[164.23,-77.88],[164.42,-77.88],[164.49,-77.95],[164.43,-78.04],[164.11,-78.15],[163.98,-78.22],[164.3,-78.24],[164.63,-78.32],[165.05,-78.23],[165.27,-78.13],[165.42,-78.04],[165.52,-78.06],[165.53,-78.15],[165.66,-78.31],[166.21,-78.45],[166.51,-78.5],[166.8,-78.52],[167.06,-78.52],[167.13,-78.61],[167.05,-78.69],[166.85,-78.68],[166.52,-78.69],[166.29,-78.63],[166.12,-78.57],[164.63,-78.6],[164.3,-78.63],[163.9,-78.72],[163.5,-78.76],[162.9,-78.84],[162.64,-78.9],[161.97,-78.69],[161.76,-78.54],[161.67,-78.54],[161.51,-78.57],[161.5,-78.68],[161.81,-78.91],[161.95,-78.97],[161.95,-79.03],[161.86,-79.06],[161.74,-79.06],[161.55,-79.02],[161.19,-78.98],[160.87,-79.05],[160.48,-79.2],[160.57,-79.3],[160.67,-79.36],[160.65,-79.43],[160.21,-79.55],[160.07,-79.56],[159.98,-79.59],[160.08,-79.63],[160.32,-79.64],[160.35,-79.69],[160.26,-79.74],[159.87,-79.79],[159.9,-79.86],[160.11,-79.89],[160.39,-79.88],[160.56,-79.93],[160.56,-80.01],[160.38,-80.05],[160.18,-80.09],[158.77,-80.29],[158.56,-80.35],[158.57,-80.42],[159.07,-80.44],[160.54,-80.43],[160.64,-80.45],[160.6,-80.51],[160.52,-80.58],[160.6,-80.64],[160.82,-80.67],[160.83,-80.73],[160.72,-80.75],[160.5,-80.78],[160.26,-80.79],[160.28,-80.85],[160.61,-80.9],[160.72,-80.91],[160.73,-81.11],[160.72,-81.2],[160.54,-81.24],[160.48,-81.27],[160.47,-81.34],[160.91,-81.39],[161.58,-81.61],[161.73,-81.61],[162,-81.65],[162.43,-81.76],[162.58,-81.83],[162.82,-81.87],[162.85,-81.92],[163,-81.97],[163.6,-82.12],[163.68,-82.19],[162.43,-82.31],[161.17,-82.41],[161.28,-82.49],[162.64,-82.48],[163.01,-82.53],[163.17,-82.52],[163.27,-82.46],[164,-82.4],[164.75,-82.35],[164.98,-82.38],[165.98,-82.63],[166.45,-82.72],[166.74,-82.76],[166.96,-82.76],[167.12,-82.8],[167.27,-82.88],[167.23,-82.95],[167.3,-82.99],[167.4,-83],[167.6,-83.05],[167.83,-83.03],[168.09,-82.97],[168.28,-82.99],[168.61,-83.07],[168.48,-83.13],[168.41,-83.16],[168.32,-83.21],[168.24,-83.23],[167.97,-83.24],[167.83,-83.24],[167.67,-83.23],[167.66,-83.27],[167.84,-83.32],[168.11,-83.36],[169.84,-83.4],[170.33,-83.48],[170.82,-83.44],[171.04,-83.45],[171.22,-83.48],[171.29,-83.56],[171.54,-83.58],[171.92,-83.64],[172.45,-83.68],[172.87,-83.67],[173.4,-83.76],[173.66,-83.76],[173.82,-83.81],[175.01,-83.84],[175.19,-83.88],[175.32,-83.94],[175.61,-83.97],[175.91,-83.97],[177.58,-84.07],[178.21,-84.13],[178.35,-84.13],[178.5,-84.14],[178.94,-84.18],[179.4,-84.21],[179.62,-84.27],[180,-84.35],[180,-90],[178.59,-90],[177.19,-90],[175.78,-90],[174.37,-90],[172.97,-90],[171.56,-90],[170.16,-90],[168.75,-90],[167.34,-90],[165.94,-90],[164.53,-90],[163.13,-90],[161.72,-90],[160.31,-90],[158.91,-90],[157.5,-90],[156.09,-90],[154.69,-90],[153.28,-90],[151.88,-90],[150.47,-90],[149.06,-90],[147.66,-90],[146.25,-90],[144.84,-90],[143.44,-90],[142.03,-90],[140.62,-90],[139.22,-90],[137.81,-90],[136.41,-90],[135,-90],[133.59,-90],[132.19,-90],[130.78,-90],[129.37,-90],[127.97,-90],[126.56,-90],[125.16,-90],[123.75,-90],[122.34,-90],[120.94,-90],[119.53,-90],[118.12,-90],[116.72,-90],[115.31,-90],[113.91,-90],[112.5,-90],[111.09,-90],[109.69,-90],[108.28,-90],[106.88,-90],[105.47,-90],[104.06,-90],[102.66,-90],[101.25,-90],[99.84,-90],[98.44,-90],[97.03,-90],[95.63,-90],[94.22,-90],[92.81,-90],[91.41,-90],[90,-90],[88.59,-90],[87.19,-90],[85.78,-90],[84.37,-90],[82.97,-90],[81.56,-90],[80.16,-90],[78.75,-90],[77.34,-90],[75.94,-90],[74.53,-90],[73.12,-90],[71.72,-90],[70.31,-90],[68.91,-90],[67.5,-90],[66.09,-90],[64.69,-90],[63.28,-90],[61.88,-90],[60.47,-90],[59.06,-90],[57.66,-90],[56.25,-90],[54.84,-90],[53.44,-90],[52.03,-90],[50.63,-90],[49.22,-90],[47.81,-90],[46.41,-90],[45,-90],[43.59,-90],[42.19,-90],[40.78,-90],[39.38,-90],[37.97,-90],[36.56,-90],[35.16,-90],[33.75,-90],[32.34,-90],[30.94,-90],[29.53,-90],[28.12,-90],[26.72,-90],[25.31,-90],[23.91,-90],[22.5,-90],[21.09,-90],[19.69,-90],[18.28,-90],[16.87,-90],[15.47,-90],[14.06,-90],[12.66,-90],[11.25,-90],[9.84,-90],[8.44,-90],[7.03,-90],[5.63,-90],[4.22,-90],[2.81,-90],[1.41,-90],[0,-90],[-1.41,-90],[-2.81,-90],[-4.22,-90],[-5.63,-90],[-7.03,-90],[-8.44,-90],[-9.84,-90],[-11.25,-90],[-12.66,-90],[-14.06,-90],[-15.47,-90],[-16.87,-90],[-18.28,-90],[-19.69,-90],[-21.09,-90],[-22.5,-90],[-23.91,-90],[-25.31,-90],[-26.72,-90],[-28.13,-90],[-29.53,-90],[-30.94,-90],[-32.34,-90],[-33.75,-90],[-35.16,-90],[-36.56,-90],[-37.97,-90],[-39.38,-90],[-40.78,-90],[-42.19,-90],[-43.59,-90],[-45,-90],[-46.41,-90],[-47.81,-90],[-49.22,-90],[-50.63,-90],[-52.03,-90],[-53.44,-90],[-54.84,-90],[-56.25,-90],[-57.66,-90],[-59.06,-90],[-60.47,-90],[-61.87,-90],[-63.28,-90],[-64.69,-90],[-66.09,-90],[-67.5,-90],[-68.91,-90],[-70.31,-90],[-71.72,-90],[-73.12,-90],[-74.53,-90],[-75.94,-90],[-77.34,-90],[-78.75,-90],[-80.16,-90],[-81.56,-90],[-82.97,-90],[-84.38,-90],[-85.78,-90],[-87.19,-90],[-88.59,-90],[-90,-90],[-91.41,-90],[-92.81,-90],[-94.22,-90],[-95.63,-90],[-97.03,-90],[-98.44,-90],[-99.84,-90],[-101.25,-90],[-102.66,-90],[-104.06,-90],[-105.47,-90],[-106.88,-90],[-108.28,-90],[-109.69,-90],[-111.09,-90],[-112.5,-90],[-113.91,-90],[-115.31,-90],[-116.72,-90],[-118.12,-90],[-119.53,-90],[-120.94,-90],[-122.34,-90],[-123.75,-90],[-125.16,-90],[-126.56,-90],[-127.97,-90],[-129.37,-90],[-130.78,-90],[-132.19,-90],[-133.59,-90],[-135,-90],[-136.41,-90],[-137.81,-90],[-139.22,-90],[-140.63,-90],[-142.03,-90],[-143.44,-90],[-144.84,-90],[-146.25,-90],[-147.66,-90],[-149.06,-90],[-150.47,-90],[-151.88,-90],[-153.28,-90],[-154.69,-90],[-156.09,-90],[-157.5,-90],[-158.91,-90],[-160.31,-90],[-161.72,-90],[-163.13,-90],[-164.53,-90],[-165.94,-90],[-167.34,-90],[-168.75,-90],[-170.16,-90],[-171.56,-90],[-172.97,-90],[-174.37,-90],[-175.78,-90],[-177.19,-90],[-178.59,-90],[-180,-90],[-180,-89.58],[-180,-89.29],[-180,-88.59],[-180,-87.88],[-180,-87.18],[-180,-86.47],[-180,-85.76],[-180,-85.06],[-180,-84.35],[-178.39,-84.34],[-178.07,-84.35],[-177.73,-84.4],[-176.99,-84.4],[-176.29,-84.42],[-176.11,-84.48],[-175.87,-84.51],[-175.38,-84.48],[-174.99,-84.47],[-174.66,-84.46],[-171.7,-84.54],[-168.67,-84.68],[-168.05,-84.73],[-167.49,-84.83],[-166.91,-84.82],[-163.46,-84.9],[-162.93,-84.9],[-160.82,-84.99],[-157.13,-85.19],[-156.81,-85.19],[-156.46,-85.19],[-156.64,-85.08],[-156.99,-84.98],[-157.45,-84.91],[-157.15,-84.89],[-156.49,-84.89],[-156.62,-84.84],[-156.99,-84.81],[-158.3,-84.78],[-163.57,-84.53],[-163.69,-84.51],[-163.76,-84.49],[-163.9,-84.47],[-164.11,-84.45],[-164.92,-84.43],[-165.14,-84.41],[-165.24,-84.38],[-165.18,-84.37],[-165.13,-84.37],[-163.9,-84.35],[-163.77,-84.32],[-163.76,-84.31],[-163.82,-84.29],[-164.03,-84.27],[-164.53,-84.19],[-164.69,-84.15],[-164.6,-84.1],[-164.5,-84.07],[-164.12,-84.05],[-164.01,-84.02],[-164.08,-83.95],[-164.95,-83.81],[-165.54,-83.76],[-165.92,-83.79],[-166.65,-83.79],[-167.55,-83.81],[-167.8,-83.79],[-168.05,-83.74],[-168.35,-83.64],[-168.5,-83.61],[-168.79,-83.53],[-169.17,-83.45],[-171.19,-83.26],[-171.54,-83.2],[-174.07,-82.9],[-174.17,-82.85],[-174.24,-82.79],[-173.07,-82.92],[-172.85,-82.92],[-172.59,-82.88],[-172.39,-82.89],[-172.12,-82.86],[-171.82,-82.85],[-171.03,-82.94],[-169.44,-83.1],[-169.02,-83.15],[-168.79,-83.19],[-168.6,-83.2],[-168.42,-83.23],[-168.19,-83.21],[-168.05,-83.23],[-167.72,-83.22],[-166.22,-83.2],[-165.62,-83.22],[-164.92,-83.29],[-164.64,-83.41],[-164.45,-83.47],[-164.06,-83.42],[-163.73,-83.37],[-163.11,-83.33],[-162.91,-83.35],[-162.57,-83.41],[-162.2,-83.52],[-160.59,-83.49],[-159.92,-83.49],[-159.44,-83.54],[-157.7,-83.38],[-157.43,-83.35],[-157.03,-83.23],[-157.36,-83.2],[-157.59,-83.19],[-157.68,-83.13],[-157.52,-83.11],[-157.02,-83.08],[-156.04,-83.03],[-155.46,-82.98],[-155.15,-82.86],[-153.82,-82.67],[-153.4,-82.59],[-153.01,-82.45],[-153.88,-82.18],[-154.72,-81.94],[-154.45,-81.87],[-154.19,-81.81],[-154.06,-81.77],[-153.96,-81.7],[-154.23,-81.62],[-154.49,-81.57],[-154.91,-81.51],[-156.49,-81.38],[-157.03,-81.32],[-156.82,-81.23],[-156.53,-81.16],[-155.92,-81.13],[-152.03,-81.03],[-148.12,-80.9],[-148.02,-80.84],[-148.54,-80.76],[-148.98,-80.74],[-149.15,-80.72],[-149.21,-80.67],[-149.21,-80.6],[-149.26,-80.59],[-149.43,-80.59],[-150.13,-80.51],[-150.28,-80.48],[-150.52,-80.41],[-150.58,-80.35],[-150.44,-80.21],[-150.22,-80.15],[-149.85,-80.12],[-149.58,-80.11],[-148.77,-80.11],[-148.45,-80.09],[-148.32,-80.07],[-148.34,-80],[-148.43,-79.97],[-148.43,-79.93],[-148.3,-79.91],[-148.13,-79.91],[-148.08,-79.86],[-148.18,-79.78],[-148.42,-79.73],[-149.05,-79.66],[-150.49,-79.55],[-151.05,-79.46],[-151.37,-79.39],[-151.64,-79.32],[-151.9,-79.28],[-152.09,-79.24],[-152.05,-79.19],[-152.14,-79.12],[-152.24,-79.1],[-152.7,-79.13],[-153.52,-79.12],[-154.52,-79.05],[-155.21,-78.96],[-156.11,-78.74],[-156.47,-78.64],[-156.21,-78.56],[-155.92,-78.51],[-154.72,-78.4],[-154.54,-78.36],[-154.29,-78.26],[-154.7,-78.22],[-155.04,-78.22],[-155.34,-78.19],[-156.57,-78.19],[-157.27,-78.2],[-157.85,-78.07],[-158.29,-77.95],[-158.41,-77.89],[-158.5,-77.78],[-158.35,-77.61],[-158.23,-77.5],[-158.25,-77.35],[-158.21,-77.16],[-158,-77.09],[-157.84,-77.08],[-157.47,-77.23],[-157.14,-77.24],[-156.67,-77.21],[-156.37,-77.13],[-156.21,-77.11],[-155.92,-77.1],[-155.36,-77.13],[-155.1,-77.12],[-154.81,-77.13],[-153.91,-77.23],[-153.71,-77.27],[-153.61,-77.31],[-153.57,-77.36],[-153.46,-77.42],[-153.08,-77.44],[-152,-77.41],[-151.72,-77.43],[-150.96,-77.57],[-150.31,-77.73],[-150.08,-77.77],[-149.72,-77.8],[-149.59,-77.77],[-149.47,-77.71],[-149.13,-77.64],[-148.34,-77.55],[-148.16,-77.46],[-148.26,-77.41],[-148.56,-77.36],[-148.74,-77.34],[-148.84,-77.28],[-148.84,-77.2],[-148.78,-77.13],[-148.57,-77.11],[-148.2,-77.21],[-147.73,-77.31],[-147.57,-77.33],[-147.44,-77.32],[-147.21,-77.29],[-146.93,-77.26],[-146.39,-77.47],[-146.07,-77.49],[-145.68,-77.49],[-145.6,-77.46],[-145.65,-77.4],[-145.71,-77.34],[-145.79,-77.33],[-145.81,-77.27],[-145.63,-77.22],[-145.52,-77.2],[-145.56,-77.16],[-145.75,-77.1],[-145.86,-77.09],[-145.97,-77.07],[-145.93,-77.03],[-145.81,-77.01],[-145.63,-76.95],[-145.69,-76.88],[-145.68,-76.8],[-145.75,-76.75],[-146.17,-76.66],[-146.78,-76.51],[-147.34,-76.44],[-148.6,-76.49],[-149.05,-76.46],[-149.34,-76.42],[-149.65,-76.37],[-149.28,-76.31],[-148.89,-76.27],[-148.78,-76.24],[-148.63,-76.17],[-148.46,-76.12],[-148.32,-76.1],[-147.86,-76.13],[-146.82,-76.32],[-146.6,-76.34],[-145.89,-76.42],[-145.69,-76.43],[-145.44,-76.41],[-145.64,-76.33],[-145.86,-76.27],[-146.38,-76.1],[-146.32,-76.02],[-145.99,-75.89],[-145.11,-75.88],[-144.72,-75.83],[-144.22,-75.73],[-143.57,-75.56],[-143.02,-75.54],[-142.33,-75.49],[-142.09,-75.53],[-141.51,-75.69],[-141.13,-75.75],[-141.01,-75.75],[-140.87,-75.75],[-141.22,-75.55],[-141,-75.52],[-140.71,-75.5],[-140.47,-75.45],[-140.29,-75.41],[-139.69,-75.21],[-139.15,-75.16],[-137.62,-75.08],[-137.09,-75.15],[-136.65,-75.16],[-136.55,-75.14],[-136.46,-75.04],[-136.23,-74.84],[-136.03,-74.77],[-135.36,-74.69],[-134.84,-74.69],[-134.47,-74.78],[-134.12,-74.83],[-133.8,-74.85],[-133.47,-74.85],[-132.99,-74.81],[-132.35,-74.79],[-132.05,-74.77],[-131.71,-74.81],[-130.86,-74.83],[-130.2,-74.89],[-129.79,-74.89],[-129.24,-74.83],[-128.94,-74.82],[-127.86,-74.72],[-127.02,-74.7],[-126.38,-74.74],[-125.35,-74.71],[-124.31,-74.74],[-123.89,-74.77],[-121.54,-74.75],[-119.68,-74.65],[-119.42,-74.62],[-119.02,-74.52],[-118.8,-74.42],[-118.66,-74.39],[-118.34,-74.38],[-117.81,-74.4],[-117.07,-74.47],[-116.43,-74.45],[-115.22,-74.49],[-115.11,-74.46],[-114.99,-74.27],[-114.79,-73.99],[-114.62,-73.9],[-114.35,-73.93],[-113.51,-74.09],[-113.49,-74.16],[-113.57,-74.21],[-113.71,-74.23],[-113.75,-74.37],[-113.64,-74.41],[-113.45,-74.39],[-113.33,-74.45],[-113.6,-74.56],[-113.78,-74.62],[-113.9,-74.64],[-113.98,-74.84],[-114.1,-74.91],[-114.11,-74.98],[-113.93,-74.98],[-113.75,-74.95],[-113.59,-74.94],[-113.09,-74.89],[-112.17,-74.83],[-111.87,-74.8],[-111.7,-74.79],[-111.58,-74.75],[-111.74,-74.65],[-111.79,-74.57],[-111.7,-74.5],[-111.72,-74.39],[-111.81,-74.27],[-111.63,-74.18],[-111.47,-74.2],[-111.18,-74.19],[-111.02,-74.23],[-110.77,-74.27],[-110.53,-74.29],[-110.31,-74.37],[-110.23,-74.54],[-110.3,-74.71],[-110.53,-74.84],[-110.97,-74.95],[-111.46,-75.13],[-111.36,-75.22],[-111.1,-75.19],[-109.99,-75.2],[-109.27,-75.19],[-108.82,-75.21],[-108.25,-75.25],[-107.8,-75.32],[-107.27,-75.33],[-106.93,-75.31],[-106.62,-75.34],[-105.4,-75.2],[-104.9,-75.12],[-104.62,-75.16],[-104.16,-75.12],[-103.9,-75.15],[-103.42,-75.1],[-103.12,-75.1],[-102.77,-75.12],[-101.71,-75.13],[-101.63,-75.22],[-101.3,-75.37],[-101.04,-75.42],[-100.71,-75.4],[-100.46,-75.35],[-100.08,-75.37],[-99.53,-75.31],[-98.98,-75.33],[-98.75,-75.32],[-98.65,-75.28],[-98.56,-75.19],[-98.73,-75.14],[-99.21,-75.08],[-99.65,-74.95],[-99.85,-74.92],[-100.16,-74.94],[-100.31,-74.91],[-100.47,-74.87],[-100.26,-74.82],[-100.01,-74.66],[-100.12,-74.52],[-100.24,-74.48],[-100.53,-74.49],[-100.88,-74.54],[-101.02,-74.5],[-101.25,-74.49],[-101.34,-74.35],[-101.59,-74.1],[-101.72,-74.02],[-102.11,-73.96],[-102.44,-73.93],[-102.77,-73.88],[-102.86,-73.78],[-102.8,-73.65],[-102.41,-73.62],[-102.04,-73.63],[-101.83,-73.66],[-101.59,-73.67],[-101.31,-73.7],[-101.13,-73.73],[-100.99,-73.76],[-100.72,-73.76],[-99.78,-73.72],[-99.66,-73.69],[-99.54,-73.65],[-99.34,-73.63],[-99.16,-73.64],[-98.9,-73.61],[-99.2,-73.57],[-99.53,-73.5],[-100.02,-73.4],[-100.44,-73.35],[-101.19,-73.32],[-101.57,-73.33],[-101.82,-73.31],[-102.68,-73.32],[-102.91,-73.29],[-103.08,-73.18],[-103.31,-72.95],[-103.37,-72.82],[-103.22,-72.77],[-103.11,-72.72],[-102.86,-72.72],[-102.48,-72.74],[-102.36,-72.76],[-102.27,-72.83],[-102.36,-72.91],[-102.48,-72.95],[-102.41,-72.99],[-102.03,-73],[-101.84,-73.02],[-101.68,-73.03],[-101.33,-73],[-100.82,-72.98],[-100.56,-73.02],[-100.26,-73.04],[-99.81,-73],[-98.21,-73.02],[-98.01,-73.03],[-97.82,-73.1],[-97.65,-73.14],[-97.48,-73.13],[-96.96,-73.21],[-96.68,-73.27],[-96.39,-73.3],[-96.15,-73.31],[-95.88,-73.29],[-95.53,-73.24],[-95.24,-73.22],[-95.03,-73.24],[-94.59,-73.25],[-94.25,-73.31],[-93.98,-73.29],[-93.71,-73.22],[-92.83,-73.16],[-92.24,-73.18],[-91.17,-73.31],[-90.92,-73.32],[-90.43,-73.24],[-90.27,-73.12],[-90.3,-72.98],[-90.15,-72.94],[-90.04,-72.96],[-89.82,-72.86],[-89.52,-72.87],[-89.34,-72.89],[-89.23,-72.83],[-89.13,-72.69],[-88.78,-72.68],[-88.53,-72.7],[-88.19,-72.79],[-88.19,-72.86],[-88.33,-72.93],[-88.56,-73.12],[-88.42,-73.23],[-88.2,-73.22],[-87.94,-73.24],[-87.61,-73.19],[-87.4,-73.19],[-87.04,-73.35],[-86.79,-73.36],[-86.6,-73.35],[-85.98,-73.21],[-85.8,-73.19],[-85.58,-73.26],[-85.26,-73.41],[-84.98,-73.5],[-84.57,-73.56],[-84.21,-73.57],[-83.8,-73.65],[-83.56,-73.71],[-83.04,-73.71],[-82.82,-73.73],[-82.18,-73.86],[-81.61,-73.8],[-81.31,-73.74],[-81.16,-73.63],[-81.24,-73.47],[-81.26,-73.31],[-81.18,-73.25],[-81.02,-73.24],[-80.34,-73.41],[-80.38,-73.31],[-80.44,-73.23],[-80.61,-73.08],[-80.59,-72.98],[-80.44,-72.94],[-80.15,-73],[-79.81,-73.03],[-79.52,-73.09],[-78.96,-73.31],[-78.79,-73.51],[-78.41,-73.56],[-78.14,-73.55],[-77.85,-73.52],[-77.44,-73.49],[-77.14,-73.5],[-76.85,-73.46],[-76.76,-73.57],[-77.03,-73.72],[-77.13,-73.82],[-77.05,-73.84],[-76.89,-73.82],[-76.75,-73.79],[-76.29,-73.81],[-75.92,-73.74],[-75.6,-73.71],[-75.29,-73.64],[-75.04,-73.65],[-74.86,-73.66],[-74.59,-73.72],[-74.35,-73.68],[-74.2,-73.7],[-74,-73.7],[-72.93,-73.45],[-72.69,-73.45],[-72.38,-73.44],[-71.99,-73.38],[-71.7,-73.35],[-71.45,-73.35],[-71.02,-73.26],[-70.32,-73.27],[-69.97,-73.23],[-69.28,-73.17],[-68.82,-73.11],[-68,-72.94],[-67.67,-72.83],[-67.31,-72.61],[-67.08,-72.39],[-66.83,-72.09],[-66.95,-71.9],[-67.08,-71.81],[-67.2,-71.72],[-67.46,-71.53],[-67.53,-71.28],[-67.5,-71.06],[-67.6,-70.84],[-67.69,-70.69],[-67.89,-70.42],[-68.13,-70.25],[-68.4,-70.02],[-68.4,-69.81],[-68.47,-69.64],[-68.64,-69.53],[-68.71,-69.43],[-68.58,-69.41],[-68.46,-69.38],[-68.14,-69.35],[-67.37,-69.41],[-67.3,-69.32],[-67.11,-69.25],[-66.97,-69.16],[-67.02,-69.03],[-67.19,-68.97],[-67.39,-68.86],[-67.3,-68.77],[-67.13,-68.77],[-67.05,-68.67],[-67.12,-68.57],[-67.04,-68.45],[-66.89,-68.3],[-66.79,-68.24],[-66.98,-68.15],[-67.15,-68.02],[-67.11,-67.93],[-67.02,-67.83],[-66.92,-67.69],[-66.77,-67.59],[-66.68,-67.56],[-66.7,-67.53],[-66.92,-67.49],[-67.12,-67.49],[-67.49,-67.55],[-67.54,-67.53],[-67.56,-67.5],[-67.59,-67.44],[-67.55,-67.27],[-67.49,-67.11],[-67.44,-67.09],[-67.3,-67.07],[-67.16,-66.95],[-67.03,-66.95],[-66.96,-66.98],[-66.93,-67.14],[-66.89,-67.18],[-66.9,-67.26],[-66.84,-67.28],[-66.76,-67.23],[-66.61,-67.21],[-66.55,-67.26],[-66.5,-67.29],[-66.47,-67.24],[-66.49,-67.11],[-66.52,-67.06],[-66.53,-66.98],[-66.5,-66.94],[-66.46,-66.88],[-66.53,-66.74],[-66.5,-66.69],[-66.37,-66.61],[-66.31,-66.59],[-66.18,-66.59],[-65.95,-66.65],[-65.85,-66.65],[-65.77,-66.62],[-65.72,-66.57],[-65.68,-66.4],[-65.78,-66.34],[-65.77,-66.29],[-65.72,-66.25],[-65.62,-66.14],[-65.47,-66.13],[-65.32,-66.14],[-65.17,-66.12],[-65.22,-66.07],[-65.27,-65.99],[-65.11,-65.96],[-65,-65.95],[-64.72,-65.99],[-64.61,-66.02],[-64.51,-65.96],[-64.55,-65.9],[-64.65,-65.87],[-64.67,-65.81],[-64.65,-65.75],[-64.47,-65.78],[-64.44,-65.77],[-64.39,-65.71],[-64.42,-65.68],[-64.44,-65.64],[-64.21,-65.63],[-64.18,-65.62],[-64.13,-65.57],[-64.07,-65.55],[-63.86,-65.56],[-63.82,-65.53],[-63.8,-65.48],[-63.91,-65.47],[-64.05,-65.42],[-64.07,-65.28],[-64.04,-65.18],[-63.91,-65.09],[-63.76,-65.03],[-63.48,-65.08],[-63.26,-65.07],[-63.18,-65.13],[-63.06,-65.14],[-63.03,-65.08],[-63.09,-65.03],[-63.12,-64.94],[-62.77,-64.84],[-62.66,-64.86],[-62.53,-64.83],[-62.58,-64.76],[-62.5,-64.66],[-62.4,-64.64],[-62.34,-64.73],[-62.24,-64.75],[-62.14,-64.73],[-61.88,-64.63],[-61.76,-64.61],[-61.63,-64.6],[-61.5,-64.55],[-61.47,-64.48],[-61.4,-64.43],[-61.17,-64.36],[-61.08,-64.31],[-60.89,-64.15],[-60.92,-64.11],[-60.86,-64.07],[-60.28,-63.92],[-59.99,-63.91],[-59.51,-63.82],[-59.22,-63.71],[-59.04,-63.67],[-58.87,-63.55],[-58.67,-63.53],[-58.22,-63.45],[-57.87,-63.32],[-57.39,-63.23],[-57.17,-63.23],[-57.08,-63.26],[-57.02,-63.37]]],[[[-55.53,-63.17],[-55.47,-63.2],[-55.22,-63.2],[-55.16,-63.2],[-55.11,-63.25],[-55.08,-63.32],[-55.16,-63.35],[-55.59,-63.34],[-55.75,-63.3],[-55.83,-63.3],[-56.01,-63.34],[-56.08,-63.38],[-56.38,-63.44],[-56.46,-63.42],[-56.5,-63.36],[-56.51,-63.33],[-56.48,-63.32],[-56.46,-63.3],[-56.47,-63.28],[-56.39,-63.23],[-56.04,-63.16],[-55.59,-63.13],[-55.53,-63.16],[-55.53,-63.17]]],[[[-56.06,-63.08],[-56.26,-63.17],[-56.35,-63.17],[-56.55,-63.1],[-56.6,-63.06],[-56.61,-63.05],[-56.49,-62.98],[-56.14,-63.01],[-56.06,-63.01],[-56.06,-63.02],[-56.05,-63.05],[-56.06,-63.08]]],[[[-60.5,-62.97],[-60.55,-62.98],[-60.62,-62.97],[-60.62,-62.99],[-60.56,-63.01],[-60.62,-63.02],[-60.69,-63],[-60.74,-62.95],[-60.71,-62.91],[-60.64,-62.9],[-60.5,-62.97]]],[[[-62.62,-63.07],[-62.66,-63.07],[-62.64,-63.03],[-62.53,-62.92],[-62.32,-62.87],[-62.34,-62.92],[-62.41,-62.97],[-62.62,-63.07]]],[[[-60.62,-62.56],[-60.58,-62.57],[-60.14,-62.55],[-60,-62.62],[-59.85,-62.61],[-60.22,-62.75],[-60.32,-62.71],[-60.35,-62.68],[-60.38,-62.62],[-60.62,-62.63],[-60.7,-62.62],[-60.8,-62.66],[-61,-62.68],[-61.06,-62.68],[-61.15,-62.63],[-61.15,-62.59],[-60.97,-62.59],[-60.84,-62.53],[-60.8,-62.48],[-60.73,-62.49],[-60.62,-62.56]]],[[[-59.39,-62.44],[-59.53,-62.45],[-59.62,-62.4],[-59.66,-62.35],[-59.48,-62.35],[-59.4,-62.37],[-59.35,-62.41],[-59.39,-62.44]]],[[[-58.84,-62.3],[-59.06,-62.35],[-59.17,-62.3],[-59.2,-62.28],[-59.06,-62.24],[-58.99,-62.25],[-58.96,-62.26],[-58.88,-62.27],[-58.84,-62.3]]],[[[-57.98,-61.91],[-57.85,-61.94],[-57.74,-61.92],[-57.68,-61.94],[-57.64,-62],[-57.64,-62.02],[-57.81,-62.01],[-57.96,-62.08],[-58.15,-62.06],[-58.17,-62.12],[-58.13,-62.15],[-58.18,-62.17],[-58.34,-62.12],[-58.47,-62.14],[-58.51,-62.23],[-58.56,-62.24],[-58.59,-62.25],[-58.64,-62.23],[-58.75,-62.22],[-58.76,-62.21],[-58.82,-62.17],[-59,-62.21],[-58.96,-62.16],[-58.71,-62.04],[-58.68,-62.01],[-58.4,-61.94],[-58.27,-61.95],[-57.98,-61.91]]],[[[-54.07,-61.3],[-54.12,-61.31],[-54.18,-61.27],[-54.19,-61.25],[-54.12,-61.2],[-54.05,-61.14],[-54.02,-61.14],[-54.04,-61.26],[-54.07,-61.3]]],[[[-55.17,-61.22],[-55.3,-61.25],[-55.35,-61.21],[-55.37,-61.15],[-55.44,-61.11],[-55.39,-61.07],[-54.67,-61.12],[-54.71,-61.14],[-55.06,-61.17],[-55.17,-61.22]]],[[[-45.72,-60.52],[-45.5,-60.55],[-45.39,-60.58],[-45.36,-60.62],[-45.23,-60.64],[-45.21,-60.65],[-45.19,-60.67],[-45.17,-60.7],[-45.17,-60.73],[-45.4,-60.65],[-45.71,-60.65],[-45.78,-60.59],[-45.94,-60.62],[-45.95,-60.6],[-45.96,-60.57],[-45.93,-60.53],[-45.83,-60.54],[-45.72,-60.52]]]]}},
{"type":"Feature","properties":{"name":"Ashmore and Cartier Is.","iso_a2":"-99","iso_a3":"-99","iso_n3":"036"},"geometry":{"type":"Polygon","coordinates":[[[123.59,-12.43],[123.6,-12.44],[123.57,-12.43],[123.57,-12.42],[123.59,-12.43]]]}},
{"type":"Feature","properties":{"name":"Fr. S. Antarctic Lands","iso_a2":"TF","iso_a3":"ATF","iso_n3":"260"},"geometry":{"type":"MultiPolygon","coordinates":[[[[69.28,-49.06],[69.22,-49.07],[69.2,-49.03],[69.2,-48.99],[69.17,-48.96],[69.15,-48.92],[69.17,-48.88],[69.27,-48.88],[69.37,-48.89],[69.39,-48.95],[69.32,-49.03],[69.28,-49.06]]],[[[69.18,-49.11],[69.27,-49.12],[69.31,-49.11],[69.53,-48.97],[69.59,-48.97],[69.59,-49.07],[69.64,-49.12],[69.57,-49.13],[69.44,-49.12],[69.41,-49.18],[69.54,-49.26],[69.61,-49.27],[69.67,-49.26],[69.77,-49.25],[69.85,-49.22],[69.98,-49.16],[70.06,-49.14],[70.21,-49.13],[70.28,-49.08],[70.32,-49.06],[70.41,-49.06],[70.48,-49.08],[70.53,-49.14],[70.56,-49.2],[70.54,-49.27],[70.49,-49.33],[70.39,-49.37],[70.41,-49.41],[70.39,-49.43],[70.34,-49.44],[70.3,-49.42],[70.24,-49.37],[70.17,-49.34],[69.99,-49.34],[69.92,-49.35],[69.9,-49.39],[69.86,-49.42],[69.82,-49.44],[69.76,-49.43],[69.75,-49.45],[69.78,-49.49],[69.86,-49.54],[69.99,-49.58],[70.06,-49.59],[70.07,-49.52],[70.17,-49.51],[70.25,-49.53],[70.31,-49.58],[70.26,-49.6],[70.22,-49.63],[70.21,-49.67],[70.12,-49.7],[70.08,-49.71],[69.92,-49.69],[69.83,-49.64],[69.8,-49.61],[69.75,-49.6],[69.68,-49.64],[69.61,-49.65],[69.48,-49.62],[69.35,-49.56],[69.27,-49.54],[69.15,-49.53],[69.09,-49.65],[68.99,-49.7],[68.87,-49.71],[68.81,-49.7],[68.78,-49.65],[68.79,-49.6],[68.81,-49.55],[68.85,-49.5],[68.87,-49.44],[68.86,-49.39],[68.82,-49.35],[68.84,-49.29],[68.8,-49.23],[68.81,-49.19],[68.88,-49.16],[68.85,-49.14],[68.82,-49.14],[68.79,-49.1],[68.77,-49.07],[68.8,-48.99],[68.84,-48.93],[68.83,-48.85],[68.9,-48.78],[68.96,-48.69],[69,-48.66],[69.06,-48.66],[69.08,-48.68],[69.09,-48.72],[69.07,-48.75],[69.12,-48.77],[69.14,-48.86],[69.1,-48.9],[69.1,-48.94],[69.03,-49.02],[69.05,-49.08],[69.18,-49.11]]],[[[51.83,-46.44],[51.76,-46.45],[51.7,-46.43],[51.66,-46.37],[51.74,-46.33],[51.78,-46.36],[51.82,-46.39],[51.83,-46.44]]]]}},
{"type":"Feature","properties":{"name":"Antigua and Barb.","iso_a2":"AG","iso_a3":"ATG","iso_n3":"028"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-61.72,17.04],[-61.75,17],[-61.86,17.01],[-61.88,17.06],[-61.89,17.1],[-61.82,17.17],[-61.74,17.14],[-61.71,17.11],[-61.69,17.1],[-61.69,17.07],[-61.69,17.05],[-61.72,17.04]]],[[[-61.75,17.57],[-61.76,17.55],[-61.84,17.6],[-61.87,17.69],[-61.87,17.7],[-61.85,17.71],[-61.82,17.7],[-61.78,17.69],[-61.75,17.66],[-61.75,17.57]]]]}},
{"type":"Feature","properties":{"name":"Australia","iso_a2":"AU","iso_a3":"AUS","iso_n3":"036"},"geometry":{"type":"MultiPolygon","coordinates":[[[[158.88,-54.71],[158.85,-54.75],[158.84,-54.7],[158.9,-54.51],[158.96,-54.47],[158.95,-54.57],[158.88,-54.71]]],[[[147.36,-43.4],[147.31,-43.5],[147.23,-43.48],[147.15,-43.5],[147.1,-43.43],[147.1,-43.41],[147.16,-43.43],[147.18,-43.41],[147.2,-43.38],[147.22,-43.37],[147.23,-43.33],[147.28,-43.28],[147.31,-43.28],[147.34,-43.35],[147.36,-43.4]]],[[[147.43,-43.24],[147.37,-43.24],[147.35,-43.23],[147.34,-43.18],[147.3,-43.16],[147.32,-43.15],[147.33,-43.11],[147.35,-43.08],[147.4,-43.12],[147.43,-43.24]]],[[[148.1,-42.71],[148.05,-42.72],[148.03,-42.71],[148.03,-42.66],[148.02,-42.64],[148.07,-42.59],[148.14,-42.62],[148.17,-42.65],[148.1,-42.68],[148.1,-42.71]]],[[[145.04,-40.79],[145.16,-40.79],[145.22,-40.77],[145.28,-40.77],[145.35,-40.83],[145.43,-40.86],[145.49,-40.85],[145.53,-40.86],[145.58,-40.9],[145.69,-40.94],[145.73,-40.96],[145.78,-41],[145.82,-41.02],[146.11,-41.12],[146.32,-41.16],[146.57,-41.14],[146.65,-41.12],[146.72,-41.08],[146.79,-41.11],[146.85,-41.17],[146.84,-41.11],[146.86,-41.06],[146.92,-41.02],[146.99,-40.99],[147.11,-40.99],[147.22,-40.98],[147.27,-40.96],[147.32,-40.96],[147.39,-40.99],[147.45,-41],[147.5,-40.96],[147.58,-40.88],[147.62,-40.84],[147.82,-40.87],[147.87,-40.87],[147.97,-40.78],[148.03,-40.78],[148.22,-40.85],[148.29,-40.95],[148.29,-41.12],[148.29,-41.17],[148.31,-41.23],[148.31,-41.35],[148.29,-41.47],[148.29,-41.55],[148.3,-41.65],[148.29,-41.82],[148.32,-41.93],[148.3,-42],[148.3,-42.04],[148.33,-42.07],[148.34,-42.11],[148.33,-42.16],[148.34,-42.22],[148.33,-42.26],[148.29,-42.25],[148.28,-42.22],[148.28,-42.17],[148.28,-42.14],[148.26,-42.1],[148.18,-42.06],[148.2,-42.04],[148.24,-42.02],[148.21,-41.97],[148.17,-42.01],[148.14,-42.07],[148.16,-42.09],[148.13,-42.1],[148.07,-42.17],[148.02,-42.26],[148,-42.35],[148.01,-42.44],[147.97,-42.51],[147.92,-42.57],[147.91,-42.66],[147.92,-42.82],[147.96,-42.96],[147.98,-43.16],[147.95,-43.18],[147.84,-43.2],[147.79,-43.22],[147.7,-43.12],[147.65,-43.02],[147.69,-42.98],[147.77,-43],[147.8,-42.98],[147.81,-42.95],[147.8,-42.93],[147.69,-42.87],[147.57,-42.85],[147.54,-42.88],[147.55,-42.97],[147.54,-43],[147.45,-43.03],[147.41,-42.89],[147.3,-42.79],[147.3,-42.84],[147.35,-42.93],[147.34,-42.96],[147.33,-43.01],[147.28,-43.03],[147.26,-43.07],[147.26,-43.13],[147.25,-43.22],[147.17,-43.26],[147,-43.16],[146.98,-43.19],[146.99,-43.22],[147.08,-43.28],[147.04,-43.32],[147,-43.37],[146.95,-43.5],[146.87,-43.61],[146.83,-43.62],[146.7,-43.6],[146.55,-43.51],[146.41,-43.52],[146.19,-43.51],[146.04,-43.55],[146.01,-43.44],[145.98,-43.41],[145.99,-43.38],[146.11,-43.35],[146.23,-43.36],[146.21,-43.32],[146.18,-43.3],[146.13,-43.31],[145.98,-43.28],[145.87,-43.29],[145.8,-43.24],[145.68,-43.08],[145.61,-43],[145.57,-42.97],[145.52,-42.95],[145.49,-42.93],[145.27,-42.54],[145.24,-42.46],[145.2,-42.23],[145.37,-42.34],[145.43,-42.41],[145.47,-42.49],[145.53,-42.39],[145.52,-42.35],[145.36,-42.23],[145.34,-42.19],[145.33,-42.15],[145.29,-42.19],[145.23,-42.2],[145.26,-42.11],[145.24,-42.02],[145.06,-41.83],[144.92,-41.64],[144.78,-41.42],[144.77,-41.39],[144.76,-41.34],[144.7,-41.19],[144.66,-41.08],[144.65,-40.98],[144.71,-40.78],[144.72,-40.67],[144.82,-40.72],[145.04,-40.79]]],[[[148.24,-40.52],[148.19,-40.59],[148.13,-40.54],[148.12,-40.52],[148.19,-40.5],[148.22,-40.51],[148.24,-40.52]]],[[[144.78,-40.51],[144.75,-40.59],[144.71,-40.49],[144.75,-40.47],[144.78,-40.43],[144.79,-40.44],[144.78,-40.51]]],[[[148.33,-40.31],[148.42,-40.37],[148.47,-40.43],[148.4,-40.49],[148.35,-40.5],[148.32,-40.43],[148.21,-40.46],[148.1,-40.45],[148.02,-40.4],[148.01,-40.38],[148.06,-40.36],[148.2,-40.36],[148.33,-40.31]]],[[[148,-39.76],[148.18,-39.94],[148.27,-39.97],[148.3,-39.99],[148.29,-40.07],[148.25,-40.1],[148.32,-40.14],[148.31,-40.17],[148.3,-40.17],[148.21,-40.23],[148.11,-40.26],[148.07,-40.24],[148.05,-40.21],[148.02,-40.17],[147.89,-40.01],[147.91,-39.97],[147.88,-39.91],[147.81,-39.91],[147.77,-39.87],[147.84,-39.83],[147.93,-39.73],[148,-39.76]]],[[[143.93,-40.12],[143.9,-40.12],[143.88,-40.06],[143.89,-39.98],[143.84,-39.9],[143.87,-39.82],[143.86,-39.74],[143.88,-39.7],[143.94,-39.66],[143.95,-39.58],[144,-39.58],[144.09,-39.64],[144.12,-39.79],[144.11,-39.87],[144.14,-39.95],[144.11,-40.02],[144.04,-40.08],[143.93,-40.12]]],[[[145.31,-38.49],[145.35,-38.54],[145.36,-38.56],[145.27,-38.52],[145.13,-38.53],[145.22,-38.46],[145.29,-38.47],[145.31,-38.49]]],[[[145.49,-38.35],[145.34,-38.42],[145.28,-38.39],[145.29,-38.34],[145.3,-38.32],[145.43,-38.31],[145.49,-38.35]]],[[[137.6,-35.74],[137.84,-35.76],[137.93,-35.73],[138.05,-35.76],[138.12,-35.85],[138.07,-35.9],[138.01,-35.91],[137.84,-35.87],[137.67,-35.9],[137.62,-35.94],[137.59,-36.03],[137.45,-36.07],[137.38,-36.02],[137.21,-35.98],[137.15,-36.04],[137.03,-36.02],[136.91,-36.05],[136.76,-36.03],[136.59,-35.94],[136.54,-35.89],[136.58,-35.81],[136.64,-35.75],[137.09,-35.66],[137.33,-35.59],[137.53,-35.61],[137.58,-35.62],[137.64,-35.66],[137.6,-35.72],[137.6,-35.74]]],[[[153.54,-27.44],[153.45,-27.71],[153.43,-27.71],[153.4,-27.67],[153.4,-27.51],[153.44,-27.41],[153.52,-27.42],[153.54,-27.44]]],[[[153.44,-27.32],[153.42,-27.33],[153.38,-27.24],[153.37,-27.14],[153.38,-27.05],[153.43,-27.03],[153.47,-27.04],[153.43,-27.2],[153.44,-27.32]]],[[[113.18,-26.05],[113.16,-26.09],[112.96,-25.78],[112.91,-25.57],[112.95,-25.53],[112.98,-25.52],[113.1,-25.82],[113.13,-25.88],[113.13,-25.95],[113.15,-25.97],[113.18,-26.05]]],[[[153.08,-25.75],[153.05,-25.78],[153.01,-25.73],[152.98,-25.55],[153,-25.45],[153.05,-25.35],[153.06,-25.3],[153.04,-25.19],[153.19,-25.07],[153.23,-25.01],[153.24,-24.92],[153.19,-24.83],[153.14,-24.81],[153.18,-24.76],[153.22,-24.74],[153.26,-24.73],[153.28,-24.74],[153.3,-24.92],[153.36,-24.98],[153.35,-25.06],[153.14,-25.51],[153.08,-25.68],[153.08,-25.75]]],[[[151.15,-23.49],[151.18,-23.52],[151.21,-23.51],[151.24,-23.53],[151.23,-23.59],[151.27,-23.67],[151.3,-23.72],[151.26,-23.76],[151.24,-23.78],[151.18,-23.74],[151.03,-23.53],[151.06,-23.46],[151.15,-23.49]]],[[[150.52,-22.32],[150.49,-22.32],[150.46,-22.31],[150.48,-22.27],[150.49,-22.21],[150.52,-22.23],[150.55,-22.31],[150.52,-22.32]]],[[[149.93,-22.19],[149.89,-22.22],[149.87,-22.15],[149.88,-22.07],[149.91,-22.05],[149.93,-22.15],[149.93,-22.19]]],[[[115.45,-20.79],[115.39,-20.87],[115.32,-20.85],[115.31,-20.81],[115.35,-20.75],[115.43,-20.67],[115.46,-20.72],[115.45,-20.79]]],[[[149.04,-20.29],[149.02,-20.3],[148.99,-20.3],[148.94,-20.28],[148.98,-20.15],[149,-20.22],[149.05,-20.28],[149.04,-20.29]]],[[[148.94,-20.15],[148.91,-20.15],[148.89,-20.14],[148.91,-20.1],[148.93,-20.07],[148.97,-20.04],[148.96,-20.13],[148.94,-20.15]]],[[[146.28,-18.23],[146.3,-18.33],[146.34,-18.4],[146.33,-18.45],[146.3,-18.48],[146.24,-18.45],[146.19,-18.36],[146.12,-18.29],[146.1,-18.25],[146.19,-18.26],[146.23,-18.24],[146.25,-18.23],[146.28,-18.23]]],[[[139.46,-17.11],[139.42,-17.13],[139.41,-17.09],[139.46,-17.05],[139.49,-16.99],[139.56,-17.04],[139.57,-17.09],[139.46,-17.11]]],[[[139.51,-16.57],[139.43,-16.66],[139.39,-16.65],[139.35,-16.7],[139.28,-16.72],[139.24,-16.72],[139.16,-16.74],[139.15,-16.71],[139.16,-16.63],[139.23,-16.53],[139.29,-16.47],[139.46,-16.44],[139.59,-16.4],[139.6,-16.4],[139.7,-16.51],[139.56,-16.53],[139.51,-16.57]]],[[[137.09,-15.78],[137.05,-15.82],[137,-15.78],[136.99,-15.73],[136.94,-15.71],[136.96,-15.67],[136.99,-15.65],[137.01,-15.59],[137.06,-15.66],[137.07,-15.74],[137.09,-15.78]]],[[[136.59,-15.63],[136.53,-15.63],[136.51,-15.63],[136.5,-15.58],[136.52,-15.54],[136.59,-15.53],[136.61,-15.54],[136.59,-15.63]]],[[[136.86,-15.62],[136.85,-15.63],[136.85,-15.54],[136.88,-15.5],[136.89,-15.59],[136.86,-15.62]]],[[[124.6,-15.4],[124.56,-15.43],[124.52,-15.42],[124.52,-15.38],[124.48,-15.34],[124.5,-15.29],[124.52,-15.27],[124.55,-15.27],[124.56,-15.31],[124.61,-15.36],[124.6,-15.4]]],[[[125.2,-14.58],[125.13,-14.64],[125.09,-14.59],[125.12,-14.49],[125.16,-14.46],[125.2,-14.47],[125.19,-14.55],[125.2,-14.58]]],[[[136.71,-13.8],[136.76,-13.85],[136.8,-13.84],[136.85,-13.75],[136.87,-13.76],[136.89,-13.79],[136.91,-13.83],[136.84,-13.9],[136.81,-13.91],[136.79,-13.95],[136.75,-14.07],[136.75,-14.12],[136.79,-14.16],[136.89,-14.2],[136.93,-14.18],[136.95,-14.18],[136.93,-14.25],[136.89,-14.29],[136.76,-14.27],[136.65,-14.28],[136.46,-14.23],[136.36,-14.23],[136.34,-14.21],[136.39,-14.18],[136.43,-14.13],[136.41,-14.01],[136.42,-13.86],[136.53,-13.79],[136.58,-13.72],[136.66,-13.68],[136.7,-13.68],[136.7,-13.73],[136.71,-13.8]]],[[[136.24,-13.82],[136.21,-13.84],[136.12,-13.82],[136.12,-13.78],[136.13,-13.75],[136.16,-13.74],[136.22,-13.66],[136.26,-13.71],[136.28,-13.79],[136.24,-13.82]]],[[[136.34,-11.6],[136.18,-11.68],[136.27,-11.58],[136.45,-11.49],[136.48,-11.47],[136.47,-11.51],[136.38,-11.58],[136.34,-11.6]]],[[[130.46,-11.68],[130.54,-11.7],[130.58,-11.74],[130.6,-11.77],[130.61,-11.82],[130.5,-11.84],[130.32,-11.77],[130.13,-11.82],[130.08,-11.83],[130.04,-11.79],[130.07,-11.68],[130.14,-11.7],[130.2,-11.66],[130.19,-11.54],[130.15,-11.48],[130.25,-11.36],[130.29,-11.34],[130.34,-11.34],[130.38,-11.42],[130.39,-11.51],[130.43,-11.59],[130.46,-11.68]]],[[[130.62,-11.38],[130.75,-11.38],[130.91,-11.31],[130.99,-11.34],[131.02,-11.33],[131.14,-11.26],[131.22,-11.24],[131.27,-11.19],[131.32,-11.25],[131.44,-11.31],[131.47,-11.38],[131.52,-11.42],[131.54,-11.44],[131.47,-11.51],[131.46,-11.59],[131.38,-11.58],[131.29,-11.71],[130.95,-11.93],[130.64,-11.74],[130.51,-11.62],[130.42,-11.45],[130.4,-11.3],[130.37,-11.21],[130.38,-11.19],[130.4,-11.18],[130.43,-11.18],[130.52,-11.28],[130.56,-11.31],[130.62,-11.38]]],[[[136.6,-11.38],[136.53,-11.44],[136.52,-11.39],[136.56,-11.36],[136.65,-11.21],[136.69,-11.18],[136.71,-11.16],[136.73,-11.1],[136.73,-11.02],[136.78,-11.01],[136.74,-11.19],[136.6,-11.38]]],[[[132.59,-11.3],[132.57,-11.32],[132.49,-11.16],[132.52,-11.12],[132.48,-11.04],[132.54,-11.03],[132.58,-10.97],[132.59,-11],[132.6,-11.11],[132.63,-11.17],[132.59,-11.3]]],[[[143.18,-11.95],[143.15,-12.08],[143.1,-12.17],[143.1,-12.23],[143.11,-12.3],[143.19,-12.36],[143.25,-12.4],[143.29,-12.5],[143.4,-12.64],[143.4,-12.74],[143.46,-12.86],[143.51,-13.09],[143.53,-13.3],[143.59,-13.44],[143.55,-13.74],[143.59,-13.86],[143.64,-13.96],[143.71,-14.16],[143.76,-14.35],[143.82,-14.4],[143.96,-14.46],[144.11,-14.39],[144.21,-14.3],[144.32,-14.28],[144.47,-14.23],[144.59,-14.35],[144.65,-14.49],[144.92,-14.67],[145.06,-14.79],[145.18,-14.86],[145.29,-14.94],[145.28,-15.03],[145.25,-15.1],[145.28,-15.2],[145.29,-15.33],[145.27,-15.48],[145.35,-15.7],[145.38,-15.88],[145.46,-16.06],[145.45,-16.24],[145.44,-16.3],[145.43,-16.41],[145.49,-16.53],[145.55,-16.63],[145.64,-16.73],[145.75,-16.88],[145.84,-16.91],[145.91,-16.91],[145.9,-17.07],[146.05,-17.38],[146.13,-17.64],[146.07,-17.98],[146.02,-18.18],[146.03,-18.27],[146.22,-18.51],[146.33,-18.55],[146.31,-18.67],[146.3,-18.84],[146.38,-18.98],[146.48,-19.08],[146.59,-19.14],[146.69,-19.19],[146.83,-19.24],[147,-19.26],[147.09,-19.33],[147.14,-19.39],[147.28,-19.41],[147.34,-19.4],[147.42,-19.38],[147.47,-19.42],[147.51,-19.47],[147.59,-19.62],[147.74,-19.77],[147.85,-19.79],[147.92,-19.87],[148,-19.89],[148.08,-19.9],[148.19,-19.96],[148.37,-20.09],[148.53,-20.11],[148.6,-20.15],[148.76,-20.29],[148.82,-20.37],[148.88,-20.48],[148.81,-20.49],[148.73,-20.47],[148.68,-20.58],[148.79,-20.74],[148.91,-20.85],[149.06,-20.96],[149.2,-21.13],[149.24,-21.25],[149.28,-21.3],[149.33,-21.48],[149.45,-21.58],[149.46,-21.77],[149.52,-22.02],[149.6,-22.26],[149.65,-22.33],[149.7,-22.44],[149.77,-22.43],[149.82,-22.39],[149.92,-22.5],[149.97,-22.55],[150.01,-22.52],[149.94,-22.31],[149.98,-22.18],[150.02,-22.17],[150.08,-22.16],[150.14,-22.27],[150.23,-22.37],[150.41,-22.47],[150.54,-22.56],[150.58,-22.56],[150.56,-22.49],[150.57,-22.38],[150.62,-22.37],[150.67,-22.42],[150.76,-22.58],[150.78,-22.9],[150.78,-23.18],[150.84,-23.46],[150.93,-23.53],[150.99,-23.6],[151.09,-23.7],[151.15,-23.78],[151.24,-23.82],[151.5,-24.01],[151.58,-24.03],[151.69,-24.04],[151.83,-24.12],[151.9,-24.2],[152.06,-24.49],[152.13,-24.6],[152.28,-24.7],[152.35,-24.73],[152.46,-24.8],[152.49,-24.9],[152.5,-24.96],[152.56,-25.07],[152.65,-25.2],[152.79,-25.27],[152.91,-25.43],[152.92,-25.69],[152.98,-25.82],[153.03,-25.87],[153.13,-25.92],[153.16,-25.96],[153.08,-26.3],[153.16,-26.98],[153.12,-27.19],[153.2,-27.4],[153.39,-27.77],[153.43,-27.9],[153.45,-28.05],[153.58,-28.24],[153.57,-28.53],[153.62,-28.67],[153.6,-28.85],[153.46,-29.05],[153.35,-29.29],[153.35,-29.5],[153.27,-29.89],[153.22,-30],[153.19,-30.16],[153.03,-30.56],[153.02,-30.72],[153.05,-30.91],[153.02,-31.09],[152.98,-31.21],[152.94,-31.43],[152.79,-31.79],[152.56,-32.05],[152.55,-32.24],[152.52,-32.33],[152.47,-32.44],[152.33,-32.56],[152.25,-32.61],[152.22,-32.68],[152.14,-32.68],[152.13,-32.7],[152.19,-32.72],[152.16,-32.76],[151.95,-32.82],[151.81,-32.9],[151.67,-33.1],[151.61,-33.2],[151.53,-33.3],[151.48,-33.35],[151.46,-33.4],[151.43,-33.52],[151.36,-33.54],[151.29,-33.58],[151.32,-33.7],[151.29,-33.83],[151.28,-33.93],[151.24,-33.99],[151.2,-33.96],[151.17,-33.97],[151.12,-34.01],[151.19,-34.02],[151.23,-34.03],[151.09,-34.16],[150.96,-34.3],[150.93,-34.39],[150.87,-34.5],[150.82,-34.75],[150.78,-34.89],[150.81,-34.99],[150.8,-35.01],[150.77,-35.02],[150.76,-35.01],[150.7,-35.04],[150.68,-35.08],[150.71,-35.12],[150.72,-35.13],[150.71,-35.16],[150.69,-35.18],[150.63,-35.18],[150.57,-35.21],[150.37,-35.58],[150.29,-35.68],[150.2,-35.83],[150.16,-35.97],[150.13,-36.12],[150.1,-36.37],[150.06,-36.55],[149.99,-36.72],[149.96,-36.85],[149.95,-37.08],[149.99,-37.26],[149.96,-37.35],[149.96,-37.44],[149.93,-37.53],[149.81,-37.55],[149.71,-37.62],[149.57,-37.73],[149.48,-37.77],[149.3,-37.8],[148.94,-37.79],[148.26,-37.83],[148.13,-37.86],[147.88,-37.93],[147.63,-38.06],[147.4,-38.22],[146.86,-38.66],[146.44,-38.71],[146.36,-38.71],[146.29,-38.7],[146.22,-38.73],[146.22,-38.78],[146.29,-38.84],[146.34,-38.89],[146.43,-38.82],[146.47,-38.84],[146.48,-38.98],[146.48,-39.07],[146.46,-39.11],[146.4,-39.15],[146.34,-39.12],[146.33,-39.08],[146.25,-38.96],[146.16,-38.87],[146.07,-38.83],[146.02,-38.87],[145.94,-38.9],[145.87,-38.78],[145.79,-38.67],[145.69,-38.66],[145.61,-38.66],[145.54,-38.61],[145.4,-38.54],[145.42,-38.48],[145.46,-38.42],[145.54,-38.39],[145.52,-38.31],[145.48,-38.24],[145.37,-38.23],[145.29,-38.24],[145.25,-38.29],[145.19,-38.38],[144.96,-38.5],[144.85,-38.44],[144.72,-38.34],[144.78,-38.35],[144.91,-38.34],[145.02,-38.26],[145.07,-38.2],[145.12,-38.09],[145.05,-38.01],[144.98,-37.95],[144.89,-37.9],[144.54,-38.08],[144.47,-38.1],[144.4,-38.14],[144.52,-38.17],[144.59,-38.16],[144.67,-38.21],[144.54,-38.28],[144.45,-38.3],[144.33,-38.35],[144.1,-38.46],[143.81,-38.7],[143.69,-38.77],[143.54,-38.82],[143.34,-38.76],[143.23,-38.74],[143.08,-38.65],[142.84,-38.58],[142.61,-38.45],[142.46,-38.39],[142.34,-38.37],[142.19,-38.4],[141.92,-38.28],[141.72,-38.27],[141.59,-38.39],[141.49,-38.38],[141.42,-38.36],[141.21,-38.17],[141.01,-38.08],[140.63,-38.03],[140.39,-37.9],[140.21,-37.64],[139.87,-37.35],[139.78,-37.25],[139.74,-37.14],[139.74,-37.06],[139.78,-36.9],[139.85,-36.75],[139.86,-36.66],[139.73,-36.37],[139.55,-36.1],[139.47,-36.01],[139.24,-35.83],[139.04,-35.69],[138.99,-35.62],[138.97,-35.58],[139.07,-35.6],[139.11,-35.54],[139.18,-35.52],[139.23,-35.6],[139.29,-35.61],[139.29,-35.49],[139.33,-35.43],[139.3,-35.4],[139.28,-35.38],[139.19,-35.35],[139.09,-35.39],[139.02,-35.44],[138.92,-35.49],[138.88,-35.54],[138.77,-35.54],[138.73,-35.55],[138.52,-35.64],[138.39,-35.64],[138.18,-35.61],[138.25,-35.49],[138.33,-35.41],[138.4,-35.33],[138.51,-35.02],[138.49,-34.76],[138.44,-34.66],[138.26,-34.44],[138.19,-34.31],[138.09,-34.17],[138.04,-34.25],[138.01,-34.33],[137.92,-34.46],[137.87,-34.73],[137.69,-35.14],[137.57,-35.15],[137.46,-35.13],[137.27,-35.18],[137.14,-35.24],[137.03,-35.24],[136.97,-35.25],[136.88,-35.24],[137.01,-34.92],[137.13,-34.92],[137.25,-34.91],[137.31,-34.92],[137.39,-34.91],[137.45,-34.76],[137.49,-34.6],[137.47,-34.49],[137.46,-34.38],[137.48,-34.25],[137.49,-34.16],[137.65,-33.86],[137.78,-33.7],[137.93,-33.58],[137.91,-33.46],[137.87,-33.31],[137.85,-33.2],[137.92,-33.17],[137.99,-33.09],[137.91,-32.77],[137.86,-32.67],[137.78,-32.58],[137.78,-32.7],[137.79,-32.82],[137.68,-32.98],[137.54,-33.09],[137.44,-33.19],[137.35,-33.43],[137.24,-33.63],[137.13,-33.7],[137.03,-33.72],[136.94,-33.75],[136.78,-33.83],[136.64,-33.9],[136.53,-33.98],[136.43,-34.03],[136.12,-34.43],[135.98,-34.56],[135.95,-34.62],[135.89,-34.66],[135.9,-34.72],[135.95,-34.77],[136,-34.94],[135.97,-34.98],[135.92,-34.96],[135.79,-34.86],[135.71,-34.9],[135.65,-34.94],[135.48,-34.76],[135.41,-34.72],[135.32,-34.64],[135.23,-34.58],[135.19,-34.57],[135.12,-34.59],[135.13,-34.54],[135.18,-34.5],[135.22,-34.49],[135.29,-34.55],[135.38,-34.6],[135.43,-34.6],[135.45,-34.58],[135.37,-34.38],[135.31,-34.2],[135.29,-34.14],[135.22,-33.96],[135.19,-33.91],[135.04,-33.78],[134.89,-33.63],[134.85,-33.44],[134.79,-33.33],[134.72,-33.26],[134.61,-33.19],[134.3,-33.17],[134.17,-32.98],[134.1,-32.75],[134.16,-32.73],[134.23,-32.73],[134.25,-32.66],[134.23,-32.55],[133.93,-32.41],[133.79,-32.27],[133.67,-32.21],[133.55,-32.18],[133.4,-32.19],[133.21,-32.18],[132.76,-31.96],[132.65,-31.95],[132.32,-32.02],[132.21,-32.01],[131.72,-31.7],[131.39,-31.55],[131.28,-31.52],[131.14,-31.5],[131.03,-31.53],[130.95,-31.57],[130.78,-31.6],[130.13,-31.58],[129.57,-31.63],[129.19,-31.66],[128.95,-31.7],[128.55,-31.89],[128.07,-32.07],[127.68,-32.15],[127.32,-32.26],[127.08,-32.3],[126.78,-32.31],[126.14,-32.26],[125.92,-32.3],[125.57,-32.51],[125.46,-32.56],[125.27,-32.61],[124.76,-32.88],[124.52,-32.94],[124.37,-32.96],[124.24,-33.02],[124.13,-33.13],[123.97,-33.45],[123.87,-33.6],[123.65,-33.84],[123.51,-33.92],[123.37,-33.91],[123.21,-33.99],[123.07,-33.9],[122.96,-33.88],[122.78,-33.89],[122.15,-33.99],[122.06,-33.87],[121.95,-33.86],[121.73,-33.86],[121.41,-33.83],[120.81,-33.87],[120.53,-33.92],[120.42,-33.96],[120.21,-33.94],[119.85,-33.97],[119.73,-34.04],[119.64,-34.1],[119.45,-34.37],[119.25,-34.46],[119.08,-34.46],[118.9,-34.48],[118.52,-34.74],[118.14,-34.99],[118.01,-35.01],[117.86,-35.05],[117.68,-35.07],[117.58,-35.1],[117.14,-35.03],[116.87,-35.03],[116.52,-34.99],[116.22,-34.87],[115.99,-34.8],[115.73,-34.53],[115.57,-34.43],[115.28,-34.3],[115.19,-34.31],[115.13,-34.34],[115.01,-34.26],[115.01,-34.15],[114.97,-34.05],[114.98,-33.8],[114.99,-33.52],[115.1,-33.58],[115.18,-33.64],[115.36,-33.64],[115.52,-33.53],[115.6,-33.37],[115.68,-33.19],[115.67,-33],[115.62,-32.67],[115.65,-32.6],[115.71,-32.57],[115.73,-32.4],[115.74,-31.89],[115.7,-31.69],[115.45,-31.3],[115.29,-30.96],[115.18,-30.81],[115.08,-30.56],[114.99,-30.22],[114.97,-30.04],[114.94,-29.72],[114.97,-29.54],[114.96,-29.43],[114.86,-29.14],[114.63,-28.87],[114.59,-28.77],[114.59,-28.67],[114.54,-28.54],[114.35,-28.29],[114.17,-28.08],[114.13,-27.98],[114.1,-27.54],[114.03,-27.35],[113.71,-26.85],[113.33,-26.42],[113.23,-26.24],[113.18,-26.18],[113.21,-26.17],[113.25,-26.2],[113.3,-26.24],[113.32,-26.24],[113.35,-26.21],[113.34,-26.13],[113.36,-26.08],[113.39,-26.11],[113.43,-26.2],[113.55,-26.44],[113.58,-26.56],[113.73,-26.6],[113.78,-26.56],[113.84,-26.5],[113.85,-26.33],[113.78,-26.26],[113.71,-26.22],[113.59,-26.1],[113.51,-25.9],[113.4,-25.71],[113.4,-25.65],[113.45,-25.6],[113.54,-25.63],[113.62,-25.73],[113.71,-25.83],[113.7,-26],[113.68,-26.05],[113.69,-26.09],[113.72,-26.13],[113.77,-26.16],[113.81,-26.12],[113.85,-26.01],[113.88,-26.03],[113.94,-26.26],[113.99,-26.32],[114.09,-26.39],[114.18,-26.34],[114.22,-26.29],[114.2,-26.13],[114.23,-25.97],[114.21,-25.85],[113.99,-25.54],[113.79,-25.17],[113.67,-24.98],[113.57,-24.69],[113.5,-24.59],[113.42,-24.44],[113.41,-24.25],[113.42,-24.13],[113.49,-23.87],[113.55,-23.73],[113.76,-23.42],[113.77,-23.28],[113.76,-23.18],[113.79,-23.02],[113.8,-22.91],[113.77,-22.81],[113.68,-22.64],[113.8,-22.33],[113.96,-21.94],[114.02,-21.88],[114.12,-21.83],[114.14,-21.91],[114.09,-22.18],[114.16,-22.32],[114.14,-22.48],[114.21,-22.46],[114.3,-22.43],[114.38,-22.34],[114.42,-22.26],[114.6,-21.94],[114.71,-21.82],[114.86,-21.74],[115.16,-21.63],[115.46,-21.49],[115.6,-21.36],[115.77,-21.24],[115.89,-21.12],[116.01,-21.03],[116.61,-20.71],[116.71,-20.65],[116.84,-20.65],[117,-20.66],[117.14,-20.64],[117.29,-20.71],[117.41,-20.72],[117.68,-20.64],[117.83,-20.57],[118.09,-20.42],[118.2,-20.38],[118.46,-20.33],[118.75,-20.26],[119.1,-20],[119.36,-20.01],[119.59,-20.04],[119.77,-19.96],[120.2,-19.91],[120.43,-19.84],[120.88,-19.67],[121,-19.6],[121.18,-19.48],[121.34,-19.32],[121.49,-19.11],[121.59,-18.92],[121.63,-18.82],[121.72,-18.66],[121.78,-18.54],[121.83,-18.48],[122.01,-18.39],[122.26,-18.16],[122.35,-18.11],[122.36,-18.04],[122.31,-17.99],[122.24,-17.97],[122.19,-17.72],[122.15,-17.55],[122.14,-17.43],[122.16,-17.31],[122.26,-17.14],[122.33,-17.06],[122.43,-16.97],[122.52,-16.94],[122.6,-16.86],[122.72,-16.79],[122.77,-16.71],[122.85,-16.55],[122.92,-16.43],[122.97,-16.44],[123.07,-16.72],[123.14,-16.86],[123.27,-17.04],[123.38,-17.29],[123.48,-17.41],[123.53,-17.49],[123.56,-17.52],[123.57,-17.47],[123.56,-17.42],[123.61,-17.22],[123.59,-17.08],[123.59,-17.03],[123.62,-17.01],[123.66,-17.02],[123.75,-17.1],[123.8,-17.13],[123.83,-17.12],[123.83,-17],[123.87,-16.92],[123.86,-16.86],[123.78,-16.87],[123.75,-16.8],[123.68,-16.72],[123.61,-16.67],[123.52,-16.54],[123.49,-16.49],[123.53,-16.47],[123.58,-16.47],[123.63,-16.42],[123.65,-16.34],[123.61,-16.22],[123.65,-16.18],[123.73,-16.19],[123.86,-16.38],[123.92,-16.36],[123.96,-16.29],[124.04,-16.26],[124.13,-16.28],[124.19,-16.33],[124.3,-16.39],[124.45,-16.38],[124.53,-16.4],[124.69,-16.39],[124.77,-16.4],[124.76,-16.37],[124.67,-16.34],[124.57,-16.33],[124.45,-16.34],[124.4,-16.3],[124.39,-16.2],[124.42,-16.13],[124.43,-16.1],[124.51,-16.12],[124.58,-16.11],[124.59,-16.02],[124.61,-15.94],[124.65,-15.87],[124.65,-15.81],[124.61,-15.82],[124.5,-15.97],[124.46,-15.85],[124.38,-15.76],[124.4,-15.63],[124.44,-15.49],[124.51,-15.48],[124.56,-15.5],[124.64,-15.42],[124.69,-15.36],[124.68,-15.31],[124.69,-15.27],[124.75,-15.29],[124.97,-15.4],[125.02,-15.47],[125.06,-15.44],[125.08,-15.37],[125.07,-15.31],[125.02,-15.32],[124.91,-15.31],[124.88,-15.27],[124.89,-15.24],[124.84,-15.16],[124.91,-15.11],[124.98,-15.11],[125.02,-15.07],[125.02,-15.02],[125.04,-15],[125.07,-15.03],[125.19,-15.05],[125.3,-15.11],[125.36,-15.12],[125.38,-15.09],[125.38,-15.02],[125.24,-14.94],[125.24,-14.87],[125.18,-14.79],[125.18,-14.71],[125.27,-14.65],[125.28,-14.58],[125.34,-14.56],[125.44,-14.56],[125.5,-14.5],[125.58,-14.48],[125.6,-14.36],[125.6,-14.28],[125.63,-14.26],[125.7,-14.29],[125.68,-14.39],[125.68,-14.48],[125.66,-14.53],[125.69,-14.53],[125.71,-14.5],[125.74,-14.44],[125.82,-14.47],[125.84,-14.53],[125.85,-14.6],[125.89,-14.62],[125.95,-14.52],[126.02,-14.49],[126.02,-14.37],[126.04,-14.28],[126.05,-14.22],[126.1,-14.18],[126.11,-14.11],[126.07,-14.07],[126.05,-13.98],[126.12,-13.96],[126.18,-14],[126.23,-14.11],[126.26,-14.16],[126.3,-14.14],[126.32,-14.06],[126.4,-14.02],[126.48,-14.08],[126.57,-14.16],[126.68,-14.09],[126.78,-13.96],[126.76,-13.87],[126.78,-13.79],[126.9,-13.74],[127.01,-13.78],[127.1,-13.87],[127.29,-13.93],[127.46,-14.03],[127.53,-14.09],[127.67,-14.2],[127.76,-14.3],[127.89,-14.49],[128.18,-14.71],[128.2,-14.75],[128.16,-14.83],[128.12,-14.92],[128.08,-15.09],[128.07,-15.33],[128.11,-15.31],[128.16,-15.23],[128.2,-15.24],[128.25,-15.3],[128.26,-15.25],[128.23,-15.21],[128.17,-15.1],[128.18,-15.04],[128.22,-15],[128.29,-14.94],[128.36,-14.9],[128.4,-14.87],[128.41,-14.83],[128.48,-14.79],[128.58,-14.77],[128.64,-14.78],[129.06,-14.88],[129.17,-14.99],[129.18,-15.12],[129.22,-15.16],[129.24,-15.08],[129.23,-14.91],[129.27,-14.87],[129.38,-14.9],[129.46,-14.93],[129.57,-15.05],[129.59,-15.1],[129.63,-15.14],[129.65,-15.09],[129.63,-15.01],[129.61,-14.93],[129.64,-14.85],[129.76,-14.85],[129.85,-14.83],[129.81,-14.8],[129.75,-14.79],[129.66,-14.72],[129.6,-14.65],[129.7,-14.58],[129.7,-14.56],[129.61,-14.56],[129.48,-14.49],[129.38,-14.39],[129.46,-14.21],[129.62,-14.04],[129.71,-13.98],[129.72,-13.92],[129.76,-13.81],[129.79,-13.72],[129.8,-13.65],[129.84,-13.57],[129.94,-13.5],[130.07,-13.48],[130.14,-13.45],[130.2,-13.38],[130.26,-13.3],[130.13,-13.15],[130.15,-13.06],[130.17,-12.96],[130.32,-12.88],[130.4,-12.69],[130.45,-12.66],[130.57,-12.66],[130.62,-12.65],[130.61,-12.49],[130.62,-12.43],[130.67,-12.41],[130.74,-12.43],[130.78,-12.5],[130.87,-12.56],[130.9,-12.52],[130.88,-12.46],[130.87,-12.37],[130.96,-12.35],[131.02,-12.34],[131.03,-12.27],[131.02,-12.21],[131.05,-12.19],[131.22,-12.18],[131.27,-12.12],[131.29,-12.07],[131.31,-12.1],[131.34,-12.21],[131.44,-12.28],[131.73,-12.28],[131.89,-12.23],[131.96,-12.26],[132.06,-12.28],[132.18,-12.23],[132.25,-12.19],[132.37,-12.24],[132.41,-12.3],[132.44,-12.18],[132.51,-12.13],[132.58,-12.11],[132.68,-12.13],[132.71,-12.12],[132.63,-12.04],[132.64,-11.95],[132.63,-11.84],[132.64,-11.73],[132.67,-11.65],[132.48,-11.49],[132.28,-11.47],[132.13,-11.5],[132.07,-11.47],[131.94,-11.35],[131.82,-11.3],[131.81,-11.27],[131.96,-11.18],[132.02,-11.2],[132.11,-11.28],[132.16,-11.31],[132.2,-11.3],[132.22,-11.24],[132.26,-11.2],[132.33,-11.22],[132.56,-11.37],[132.68,-11.51],[132.75,-11.47],[132.86,-11.39],[132.96,-11.41],[133.02,-11.45],[133.11,-11.62],[133.19,-11.71],[133.36,-11.73],[133.44,-11.76],[133.53,-11.82],[133.65,-11.81],[133.9,-11.83],[134.14,-11.94],[134.24,-12.01],[134.35,-12.03],[134.42,-12.05],[134.54,-12.06],[134.73,-11.98],[134.82,-12.05],[134.85,-12.1],[135.03,-12.19],[135.22,-12.22],[135.35,-12.13],[135.55,-12.06],[135.69,-11.96],[135.79,-11.91],[135.89,-11.82],[135.92,-11.83],[135.84,-11.91],[135.83,-11.95],[135.9,-11.97],[135.89,-11.99],[135.8,-12.05],[135.7,-12.15],[135.7,-12.21],[135.74,-12.24],[135.79,-12.23],[135.86,-12.18],[135.94,-12.15],[136.01,-12.19],[136.03,-12.33],[136.08,-12.42],[136.19,-12.44],[136.26,-12.43],[136.33,-12.31],[136.29,-12.2],[136.25,-12.17],[136.27,-12.13],[136.44,-11.95],[136.54,-11.96],[136.61,-12.13],[136.72,-12.23],[136.84,-12.22],[136.9,-12.24],[136.95,-12.35],[136.54,-12.78],[136.52,-12.83],[136.57,-12.91],[136.59,-13],[136.46,-13.23],[136.41,-13.24],[136.36,-13.18],[136.29,-13.14],[136.23,-13.16],[136.17,-13.18],[135.93,-13.3],[135.93,-13.62],[135.99,-13.81],[135.95,-13.93],[135.88,-14.15],[135.81,-14.23],[135.74,-14.29],[135.54,-14.58],[135.47,-14.66],[135.41,-14.76],[135.43,-14.86],[135.45,-14.92],[135.53,-15],[135.83,-15.16],[135.97,-15.27],[136.21,-15.4],[136.26,-15.5],[136.29,-15.57],[136.46,-15.66],[136.58,-15.71],[136.62,-15.69],[136.64,-15.68],[136.67,-15.68],[136.7,-15.69],[136.7,-15.75],[136.69,-15.79],[136.7,-15.83],[136.78,-15.89],[136.92,-15.89],[137,-15.88],[137.09,-15.94],[137.17,-15.98],[137.3,-16.07],[137.53,-16.17],[137.7,-16.23],[137.91,-16.48],[138.07,-16.62],[138.25,-16.72],[138.51,-16.79],[138.63,-16.78],[138.82,-16.86],[139.01,-16.9],[139.11,-17.01],[139.14,-17.1],[139.15,-17.17],[139.25,-17.33],[139.44,-17.38],[139.69,-17.54],[139.89,-17.61],[139.95,-17.65],[140.04,-17.7],[140.21,-17.7],[140.51,-17.62],[140.65,-17.54],[140.83,-17.41],[140.92,-17.19],[140.97,-17.01],[141.22,-16.65],[141.29,-16.46],[141.36,-16.22],[141.41,-16.07],[141.39,-15.9],[141.45,-15.61],[141.58,-15.2],[141.63,-15.06],[141.6,-14.85],[141.52,-14.47],[141.56,-14.34],[141.59,-14.15],[141.54,-14.02],[141.48,-13.93],[141.47,-13.8],[141.53,-13.55],[141.59,-13.43],[141.65,-13.26],[141.61,-12.94],[141.73,-12.83],[141.78,-12.78],[141.88,-12.78],[141.92,-12.8],[141.93,-12.74],[141.89,-12.68],[141.88,-12.61],[141.85,-12.58],[141.79,-12.57],[141.75,-12.53],[141.68,-12.49],[141.69,-12.35],[141.81,-12.08],[141.87,-11.98],[141.91,-12.02],[141.96,-12.05],[141.97,-11.98],[141.95,-11.9],[142.04,-11.63],[142.14,-11.27],[142.17,-10.95],[142.33,-10.88],[142.41,-10.8],[142.46,-10.71],[142.54,-10.71],[142.61,-10.75],[142.57,-10.82],[142.55,-10.87],[142.72,-11.01],[142.78,-11.12],[142.8,-11.21],[142.84,-11.31],[142.85,-11.43],[142.85,-11.63],[142.87,-11.82],[142.93,-11.88],[142.99,-11.92],[143.07,-11.92],[143.18,-11.95]]],[[[142.27,-10.7],[142.19,-10.76],[142.14,-10.73],[142.13,-10.67],[142.13,-10.64],[142.2,-10.59],[142.27,-10.7]]],[[[142.34,-10.19],[142.28,-10.25],[142.22,-10.24],[142.2,-10.2],[142.22,-10.15],[142.3,-10.14],[142.34,-10.19]]],[[[142.17,-10.15],[142.14,-10.18],[142.1,-10.12],[142.15,-10.05],[142.19,-10.09],[142.17,-10.15]]]]}},
{"type":"Feature","properties":{"name":"Austria","iso_a2":"AT","iso_a3":"AUT","iso_n3":"040"},"geometry":{"type":"Polygon","coordinates":[[[16.95,48.6],[16.95,48.59],[16.94,48.55],[16.9,48.5],[16.86,48.44],[16.87,48.39],[16.97,48.2],[17.07,48.08],[17.09,48.04],[17.15,48.01],[17.09,47.96],[17.08,47.9],[17.04,47.87],[17.03,47.84],[17.05,47.8],[17.05,47.76],[17.07,47.71],[16.97,47.7],[16.86,47.7],[16.82,47.69],[16.79,47.68],[16.75,47.69],[16.65,47.74],[16.59,47.75],[16.55,47.75],[16.52,47.72],[16.47,47.7],[16.42,47.67],[16.43,47.66],[16.64,47.61],[16.68,47.54],[16.64,47.48],[16.62,47.45],[16.57,47.42],[16.51,47.4],[16.44,47.4],[16.43,47.37],[16.46,47.27],[16.44,47.25],[16.42,47.22],[16.44,47.15],[16.48,47.14],[16.49,47.12],[16.48,47.09],[16.48,47.06],[16.46,47.02],[16.45,47.01],[16.42,47],[16.33,47],[16.25,46.97],[16.09,46.86],[16.04,46.84],[15.98,46.8],[15.98,46.71],[15.97,46.7],[15.96,46.68],[15.77,46.71],[15.76,46.71],[15.63,46.7],[15.55,46.65],[15.44,46.63],[15.22,46.64],[15,46.63],[14.95,46.61],[14.89,46.61],[14.84,46.58],[14.81,46.54],[14.76,46.5],[14.68,46.46],[14.6,46.44],[14.58,46.41],[14.55,46.4],[14.5,46.42],[14.47,46.42],[14.42,46.43],[14.27,46.44],[14.1,46.46],[14.02,46.48],[13.93,46.5],[13.83,46.51],[13.74,46.51],[13.7,46.52],[13.49,46.56],[13.35,46.56],[13.17,46.57],[12.81,46.63],[12.7,46.65],[12.6,46.65],[12.48,46.67],[12.39,46.7],[12.33,46.76],[12.27,46.84],[12.15,46.94],[12.13,46.98],[12.17,47.03],[12.2,47.06],[12.2,47.07],[12.17,47.08],[11.97,47.04],[11.78,46.99],[11.7,46.98],[11.63,47],[11.53,47],[11.43,46.98],[11.24,46.98],[11.13,46.94],[11.06,46.86],[11.03,46.8],[10.99,46.78],[10.93,46.77],[10.83,46.78],[10.76,46.79],[10.69,46.85],[10.58,46.85],[10.48,46.86],[10.45,46.86],[10.45,46.9],[10.41,46.96],[10.35,46.98],[10.18,46.86],[10.13,46.85],[10,46.89],[9.88,46.94],[9.86,46.98],[9.85,47.01],[9.75,47.04],[9.62,47.06],[9.58,47.06],[9.6,47.08],[9.61,47.11],[9.6,47.13],[9.57,47.16],[9.56,47.19],[9.55,47.21],[9.54,47.23],[9.54,47.25],[9.53,47.27],[9.61,47.39],[9.63,47.47],[9.55,47.51],[9.52,47.52],[9.55,47.53],[9.65,47.53],[9.72,47.55],[9.75,47.58],[9.84,47.55],[9.97,47.51],[10.03,47.47],[10.06,47.45],[10.07,47.43],[10.07,47.39],[10.1,47.38],[10.16,47.37],[10.2,47.36],[10.19,47.32],[10.18,47.28],[10.24,47.28],[10.31,47.31],[10.37,47.37],[10.4,47.42],[10.43,47.54],[10.44,47.55],[10.48,47.54],[10.66,47.55],[10.74,47.52],[10.87,47.52],[10.87,47.5],[10.89,47.47],[10.95,47.43],[10.98,47.4],[11.04,47.39],[11.14,47.41],[11.19,47.43],[11.21,47.41],[11.3,47.42],[11.37,47.46],[11.39,47.49],[11.47,47.51],[11.57,47.55],[11.72,47.58],[12.19,47.62],[12.2,47.65],[12.2,47.71],[12.21,47.72],[12.27,47.7],[12.36,47.69],[12.44,47.67],[12.48,47.64],[12.53,47.64],[12.59,47.66],[12.69,47.67],[12.77,47.64],[12.8,47.61],[12.78,47.59],[12.78,47.56],[12.81,47.54],[12.88,47.51],[12.97,47.48],[13.01,47.48],[13.03,47.51],[13.05,47.58],[13.05,47.66],[13.03,47.7],[12.99,47.71],[12.93,47.71],[12.9,47.72],[12.91,47.75],[12.95,47.81],[12.95,47.89],[12.85,47.98],[12.76,48.08],[12.76,48.11],[12.81,48.16],[12.9,48.2],[13.08,48.28],[13.14,48.29],[13.22,48.3],[13.32,48.33],[13.37,48.36],[13.41,48.39],[13.46,48.56],[13.47,48.57],[13.49,48.58],[13.68,48.52],[13.69,48.53],[13.72,48.54],[13.79,48.59],[13.8,48.62],[13.8,48.69],[13.8,48.75],[13.81,48.77],[13.84,48.76],[13.92,48.73],[13.99,48.69],[14.05,48.6],[14.19,48.58],[14.37,48.58],[14.43,48.62],[14.49,48.63],[14.55,48.61],[14.69,48.6],[14.71,48.67],[14.79,48.75],[14.82,48.77],[14.92,48.77],[14.95,48.83],[14.97,48.98],[14.99,49],[15.07,49],[15.14,48.97],[15.16,48.95],[15.2,48.95],[15.25,48.96],[15.31,48.97],[15.4,48.96],[15.6,48.89],[15.7,48.86],[15.77,48.87],[15.83,48.86],[16.06,48.75],[16.22,48.74],[16.37,48.74],[16.41,48.77],[16.48,48.8],[16.54,48.8],[16.6,48.78],[16.71,48.73],[16.76,48.72],[16.83,48.71],[16.88,48.7],[16.93,48.62],[16.95,48.6]]]}},
{"type":"Feature","properties":{"name":"Azerbaijan","iso_a2":"AZ","iso_a3":"AZE","iso_n3":"031"},"geometry":{"type":"MultiPolygon","coordinates":[[[[45.15,39.58],[45.17,39.57],[45.25,39.6],[45.29,39.57],[45.35,39.53],[45.46,39.49],[45.61,39.55],[45.69,39.56],[45.75,39.56],[45.78,39.55],[45.8,39.49],[45.78,39.42],[45.77,39.38],[45.8,39.35],[45.93,39.28],[45.98,39.24],[45.95,39.18],[46.05,39.02],[46.08,38.95],[46.11,38.88],[45.92,38.91],[45.58,38.97],[45.48,39.01],[45.39,39.1],[45.34,39.14],[45.26,39.19],[45.19,39.22],[45.14,39.25],[45.11,39.31],[45.07,39.36],[45,39.42],[44.84,39.63],[44.82,39.65],[44.78,39.68],[44.77,39.7],[44.87,39.72],[45.03,39.77],[45.08,39.74],[45.12,39.7],[45.15,39.66],[45.15,39.58]]],[[[45.02,41.03],[45,41.02],[44.97,41.03],[44.96,41.05],[44.96,41.08],[44.99,41.09],[45.02,41.08],[45.03,41.05],[45.02,41.03]]],[[[46.55,41.81],[46.57,41.8],[46.62,41.81],[46.69,41.83],[46.75,41.81],[46.83,41.74],[46.93,41.67],[46.99,41.62],[47.01,41.59],[47.06,41.55],[47.14,41.52],[47.21,41.46],[47.26,41.32],[47.32,41.28],[47.52,41.23],[47.59,41.22],[47.79,41.2],[47.86,41.21],[47.96,41.33],[48.06,41.46],[48.14,41.48],[48.3,41.55],[48.39,41.6],[48.43,41.66],[48.52,41.78],[48.57,41.84],[48.66,41.79],[48.82,41.63],[49.05,41.37],[49.11,41.3],[49.14,41.22],[49.17,41.12],[49.23,41.03],[49.46,40.8],[49.56,40.72],[49.72,40.61],[49.78,40.58],[49.85,40.58],[49.99,40.58],[50.12,40.53],[50.18,40.5],[50.25,40.46],[50.31,40.41],[50.37,40.28],[50.14,40.32],[49.92,40.32],[49.79,40.29],[49.67,40.25],[49.55,40.19],[49.48,40.09],[49.42,39.84],[49.32,39.61],[49.33,39.5],[49.37,39.4],[49.36,39.35],[49.32,39.33],[49.27,39.29],[49.2,39.07],[49.17,39.03],[49.12,39],[49.11,39.03],[49.11,39.08],[49.01,39.13],[48.96,39.08],[48.93,38.96],[48.85,38.84],[48.85,38.82],[48.87,38.44],[48.84,38.44],[48.64,38.4],[48.59,38.41],[48.42,38.59],[48.38,38.61],[48.31,38.61],[48.26,38.64],[48.23,38.69],[48.2,38.72],[48.02,38.82],[48,38.85],[47.99,38.88],[48.02,38.91],[48.05,38.94],[48.14,38.96],[48.24,38.98],[48.28,38.99],[48.29,39.02],[48.29,39.06],[48.27,39.1],[48.13,39.17],[48.11,39.2],[48.1,39.24],[48.11,39.28],[48.14,39.31],[48.26,39.35],[48.32,39.4],[48.28,39.45],[48.15,39.56],[48,39.68],[47.89,39.69],[47.77,39.65],[47.58,39.54],[47.48,39.5],[47.34,39.42],[47.19,39.34],[47.07,39.25],[46.99,39.18],[46.85,39.15],[46.78,39.09],[46.55,38.9],[46.49,38.91],[46.49,39],[46.49,39.07],[46.48,39.11],[46.4,39.17],[46.4,39.19],[46.42,39.21],[46.48,39.2],[46.55,39.2],[46.58,39.22],[46.51,39.3],[46.44,39.35],[46.38,39.38],[46.37,39.4],[46.37,39.42],[46.38,39.43],[46.48,39.48],[46.49,39.51],[46.48,39.56],[46.32,39.62],[46.2,39.59],[46.09,39.66],[46.03,39.72],[45.94,39.78],[45.86,39.81],[45.79,39.88],[45.66,39.96],[45.58,39.98],[45.58,39.99],[45.6,40],[45.63,40.01],[45.86,40.01],[45.89,40.02],[45.9,40.06],[45.93,40.1],[45.97,40.17],[45.96,40.23],[45.74,40.33],[45.57,40.42],[45.45,40.53],[45.38,40.64],[45.38,40.67],[45.4,40.71],[45.58,40.8],[45.59,40.83],[45.59,40.85],[45.52,40.9],[45.44,40.95],[45.42,40.99],[45.37,41],[45.27,41.01],[45.11,41.07],[45.07,41.08],[45.06,41.09],[45.07,41.1],[45.19,41.13],[45.19,41.15],[45.15,41.18],[45.08,41.2],[45.02,41.25],[45,41.29],[45.22,41.42],[45.28,41.45],[45.42,41.43],[45.72,41.34],[45.7,41.29],[45.73,41.26],[45.79,41.22],[45.92,41.19],[46.03,41.17],[46.09,41.18],[46.17,41.2],[46.28,41.15],[46.38,41.1],[46.43,41.08],[46.46,41.07],[46.53,41.09],[46.63,41.16],[46.66,41.25],[46.67,41.29],[46.62,41.34],[46.51,41.41],[46.38,41.46],[46.31,41.51],[46.25,41.6],[46.2,41.61],[46.19,41.62],[46.18,41.66],[46.18,41.7],[46.2,41.74],[46.25,41.75],[46.3,41.76],[46.35,41.79],[46.41,41.86],[46.43,41.89],[46.54,41.87],[46.55,41.81]],[[45.48,40.61],[45.51,40.6],[45.55,40.62],[45.56,40.65],[45.53,40.66],[45.5,40.66],[45.48,40.65],[45.48,40.61]]]]}},
{"type":"Feature","properties":{"name":"Burundi","iso_a2":"BI","iso_a3":"BDI","iso_n3":"108"},"geometry":{"type":"Polygon","coordinates":[[[30.55,-2.4],[30.53,-2.43],[30.44,-2.61],[30.42,-2.64],[30.43,-2.66],[30.47,-2.69],[30.45,-2.75],[30.44,-2.77],[30.42,-2.82],[30.43,-2.87],[30.46,-2.89],[30.52,-2.92],[30.6,-2.94],[30.71,-2.98],[30.78,-2.98],[30.8,-3.02],[30.79,-3.07],[30.81,-3.12],[30.81,-3.2],[30.79,-3.27],[30.68,-3.31],[30.63,-3.35],[30.61,-3.37],[30.62,-3.39],[30.63,-3.42],[30.53,-3.49],[30.43,-3.59],[30.4,-3.65],[30.38,-3.73],[30.35,-3.78],[30.27,-3.85],[30.19,-3.99],[30.15,-4.09],[29.95,-4.31],[29.77,-4.42],[29.72,-4.46],[29.4,-4.45],[29.38,-4.3],[29.33,-4.1],[29.22,-3.91],[29.21,-3.83],[29.22,-3.68],[29.22,-3.48],[29.21,-3.36],[29.21,-3.28],[29.23,-3.14],[29.22,-3.05],[29.15,-2.96],[29.06,-2.85],[29.02,-2.8],[29.01,-2.76],[29.01,-2.72],[29.03,-2.66],[29.06,-2.6],[29.1,-2.6],[29.2,-2.62],[29.3,-2.67],[29.35,-2.79],[29.39,-2.81],[29.46,-2.81],[29.65,-2.79],[29.7,-2.79],[29.78,-2.77],[29.87,-2.72],[29.89,-2.66],[29.91,-2.55],[29.93,-2.34],[29.97,-2.34],[30.09,-2.41],[30.12,-2.42],[30.14,-2.41],[30.18,-2.38],[30.23,-2.35],[30.27,-2.35],[30.41,-2.31],[30.48,-2.38],[30.53,-2.4],[30.55,-2.4]]]}},
{"type":"Feature","properties":{"name":"Belgium","iso_a2":"BE","iso_a3":"BEL","iso_n3":"056"},"geometry":{"type":"Polygon","coordinates":[[[4.82,51.43],[4.82,51.41],[4.85,51.4],[4.94,51.41],[4.99,51.45],[5.03,51.47],[5.06,51.45],[5.07,51.41],[5.1,51.35],[5.21,51.28],[5.31,51.26],[5.43,51.27],[5.48,51.29],[5.51,51.28],[5.54,51.24],[5.61,51.2],[5.75,51.17],[5.8,51.15],[5.83,51.13],[5.82,51.09],[5.75,50.99],[5.74,50.96],[5.75,50.95],[5.74,50.93],[5.65,50.87],[5.64,50.84],[5.67,50.81],[5.69,50.77],[5.69,50.78],[5.83,50.81],[5.89,50.75],[5.99,50.75],[6.01,50.73],[6.12,50.68],[6.15,50.64],[6.24,50.6],[6.17,50.55],[6.18,50.52],[6.2,50.5],[6.29,50.49],[6.34,50.45],[6.34,50.4],[6.36,50.32],[6.18,50.23],[6.12,50.14],[6.12,50.12],[6.11,50.12],[6.09,50.15],[6.05,50.15],[5.98,50.17],[5.87,50.08],[5.82,50.01],[5.79,49.96],[5.74,49.92],[5.74,49.88],[5.74,49.86],[5.73,49.83],[5.73,49.81],[5.79,49.76],[5.8,49.73],[5.88,49.64],[5.86,49.61],[5.84,49.58],[5.82,49.55],[5.79,49.54],[5.71,49.54],[5.61,49.53],[5.54,49.51],[5.51,49.51],[5.43,49.55],[5.35,49.62],[5.3,49.65],[5.28,49.68],[5.22,49.69],[5.12,49.72],[5.06,49.76],[5.01,49.78],[4.93,49.79],[4.87,49.79],[4.85,49.85],[4.84,49.91],[4.79,49.96],[4.86,50.14],[4.82,50.15],[4.77,50.14],[4.71,50.1],[4.68,50.05],[4.66,50],[4.55,49.96],[4.37,49.94],[4.18,49.96],[4.15,49.97],[4.14,49.98],[4.14,50],[4.15,50.02],[4.18,50.05],[4.19,50.09],[4.16,50.13],[4.14,50.14],[4.14,50.18],[4.17,50.22],[4.17,50.25],[4.04,50.32],[3.95,50.34],[3.86,50.34],[3.79,50.35],[3.75,50.34],[3.72,50.32],[3.69,50.31],[3.67,50.32],[3.63,50.46],[3.6,50.48],[3.48,50.5],[3.32,50.51],[3.27,50.53],[3.25,50.59],[3.23,50.66],[3.18,50.73],[3.15,50.75],[3.11,50.78],[3.02,50.77],[2.92,50.73],[2.86,50.72],[2.84,50.71],[2.76,50.75],[2.67,50.81],[2.6,50.88],[2.58,50.91],[2.6,50.96],[2.57,50.99],[2.54,51.05],[2.52,51.1],[2.96,51.27],[3.23,51.35],[3.35,51.38],[3.38,51.29],[3.4,51.26],[3.43,51.25],[3.47,51.24],[3.52,51.26],[3.58,51.29],[3.68,51.28],[3.76,51.25],[3.78,51.23],[3.83,51.21],[3.9,51.21],[4.04,51.25],[4.17,51.31],[4.21,51.35],[4.23,51.39],[4.3,51.36],[4.37,51.36],[4.4,51.37],[4.38,51.43],[4.44,51.46],[4.5,51.47],[4.53,51.45],[4.59,51.42],[4.63,51.42],[4.76,51.49],[4.78,51.48],[4.81,51.45],[4.82,51.43]]]}},
{"type":"Feature","properties":{"name":"Benin","iso_a2":"BJ","iso_a3":"BEN","iso_n3":"204"},"geometry":{"type":"Polygon","coordinates":[[[3.6,11.7],[3.55,11.63],[3.49,11.5],[3.49,11.4],[3.64,11.18],[3.66,11.15],[3.7,11.12],[3.72,11.08],[3.73,10.97],[3.74,10.85],[3.76,10.77],[3.83,10.65],[3.83,10.61],[3.78,10.44],[3.77,10.42],[3.76,10.41],[3.68,10.43],[3.65,10.41],[3.6,10.35],[3.58,10.29],[3.58,10.27],[3.65,10.16],[3.6,10],[3.56,9.91],[3.48,9.85],[3.4,9.84],[3.35,9.81],[3.33,9.78],[3.33,9.67],[3.22,9.57],[3.16,9.49],[3.14,9.45],[3.15,9.32],[3.11,9.19],[3.04,9.08],[2.9,9.06],[2.77,9.05],[2.73,8.78],[2.73,8.61],[2.72,8.44],[2.7,8.37],[2.71,8.27],[2.7,8.05],[2.69,7.87],[2.71,7.83],[2.72,7.72],[2.72,7.62],[2.75,7.54],[2.79,7.48],[2.78,7.44],[2.77,7.42],[2.75,7.4],[2.75,7.14],[2.76,7.07],[2.75,7.02],[2.72,6.98],[2.73,6.85],[2.75,6.77],[2.77,6.71],[2.75,6.66],[2.74,6.6],[2.71,6.43],[2.71,6.37],[2.29,6.33],[1.82,6.26],[1.62,6.22],[1.61,6.25],[1.78,6.29],[1.74,6.43],[1.64,6.58],[1.6,6.61],[1.58,6.69],[1.6,6.74],[1.59,6.77],[1.58,6.88],[1.53,6.99],[1.62,7],[1.62,7.37],[1.62,7.73],[1.62,8.03],[1.62,8.27],[1.61,8.56],[1.6,8.77],[1.6,9.05],[1.57,9.14],[1.42,9.29],[1.39,9.36],[1.38,9.46],[1.35,9.57],[1.35,9.75],[1.34,9.96],[1.33,10],[1.18,10.1],[0.96,10.24],[0.79,10.35],[0.78,10.36],[0.76,10.39],[0.79,10.71],[0.82,10.75],[0.87,10.89],[0.9,10.99],[0.92,10.99],[0.96,11.03],[0.99,11.08],[1.01,11.07],[1.06,11.06],[1.08,11.08],[1.08,11.12],[1.1,11.16],[1.14,11.17],[1.15,11.21],[1.15,11.25],[1.18,11.26],[1.23,11.26],[1.28,11.27],[1.32,11.3],[1.36,11.38],[1.39,11.41],[1.4,11.43],[1.43,11.45],[1.5,11.46],[1.56,11.45],[1.6,11.4],[1.86,11.44],[1.98,11.42],[2.23,11.63],[2.29,11.69],[2.36,11.84],[2.39,11.9],[2.41,12],[2.36,12.19],[2.37,12.22],[2.47,12.26],[2.6,12.29],[2.65,12.3],[2.68,12.31],[2.73,12.35],[2.81,12.38],[2.85,12.37],[2.88,12.37],[3.15,12.12],[3.27,11.99],[3.3,11.93],[3.36,11.88],[3.45,11.85],[3.53,11.79],[3.6,11.7]]]}},
{"type":"Feature","properties":{"name":"Burkina Faso","iso_a2":"BF","iso_a3":"BFA","iso_n3":"854"},"geometry":{"type":"Polygon","coordinates":[[[0.22,14.91],[0.2,14.87],[0.2,14.78],[0.19,14.65],[0.16,14.5],[0.25,14.4],[0.35,14.29],[0.38,14.25],[0.35,14.14],[0.37,14.08],[0.43,13.97],[0.52,13.84],[0.62,13.7],[0.68,13.69],[0.75,13.67],[0.79,13.65],[0.84,13.63],[0.9,13.61],[0.95,13.58],[0.98,13.55],[1.02,13.47],[1.13,13.41],[1.2,13.36],[1.17,13.33],[1.08,13.34],[0.99,13.36],[0.98,13.32],[0.97,13.17],[0.99,13.04],[1.01,13.02],[1.1,13],[1.31,12.83],[1.5,12.68],[1.56,12.64],[1.67,12.62],[1.79,12.61],[1.84,12.63],[1.96,12.71],[2.02,12.72],[2.07,12.71],[2.1,12.7],[2.16,12.64],[2.21,12.54],[2.23,12.47],[2.22,12.43],[2.2,12.41],[2.11,12.39],[2.07,12.38],[2.06,12.36],[2.07,12.31],[2.09,12.28],[2.19,12.14],[2.34,11.95],[2.39,11.9],[2.36,11.84],[2.29,11.69],[2.23,11.63],[1.98,11.42],[1.86,11.44],[1.6,11.4],[1.56,11.45],[1.5,11.46],[1.43,11.45],[1.4,11.43],[1.39,11.41],[1.36,11.38],[1.32,11.3],[1.28,11.27],[1.23,11.26],[1.18,11.26],[1.15,11.25],[1.15,11.21],[1.14,11.17],[1.1,11.16],[1.08,11.12],[1.08,11.08],[1.06,11.06],[1.01,11.07],[0.99,11.08],[0.96,11.03],[0.92,10.99],[0.9,10.99],[0.64,10.98],[0.55,10.96],[0.49,10.95],[0.49,10.98],[0.48,10.99],[0.16,11.07],[-0.07,11.12],[-0.3,11.17],[-0.31,11.12],[-0.35,11.09],[-0.4,11.09],[-0.43,11.09],[-0.45,11.06],[-0.49,11.01],[-0.55,10.98],[-0.6,10.95],[-0.63,10.93],[-0.65,10.93],[-0.7,10.99],[-0.77,11],[-0.9,10.98],[-0.96,11],[-1.04,11.01],[-1.23,11],[-1.54,11.02],[-1.59,11.01],[-1.6,11],[-1.9,10.99],[-2.23,10.99],[-2.51,10.99],[-2.75,10.99],[-2.75,11],[-2.83,11],[-2.84,10.98],[-2.91,10.73],[-2.91,10.59],[-2.88,10.51],[-2.84,10.45],[-2.79,10.43],[-2.79,10.4],[-2.82,10.36],[-2.82,10.32],[-2.78,10.28],[-2.77,10.24],[-2.79,10.19],[-2.78,10.08],[-2.75,9.91],[-2.75,9.8],[-2.78,9.75],[-2.77,9.66],[-2.71,9.53],[-2.7,9.48],[-2.72,9.46],[-2.77,9.42],[-2.82,9.43],[-2.88,9.5],[-2.9,9.53],[-2.95,9.61],[-2.99,9.69],[-3.04,9.72],[-3.1,9.75],[-3.16,9.85],[-3.22,9.9],[-3.29,9.88],[-3.39,9.9],[-3.58,9.92],[-3.79,9.92],[-3.88,9.89],[-3.96,9.86],[-4.18,9.78],[-4.27,9.74],[-4.33,9.65],[-4.41,9.65],[-4.48,9.68],[-4.53,9.72],[-4.63,9.71],[-4.72,9.76],[-4.81,9.84],[-4.88,9.87],[-4.97,9.93],[-4.99,10.05],[-5.05,10.13],[-5.1,10.24],[-5.18,10.29],[-5.26,10.32],[-5.38,10.31],[-5.46,10.36],[-5.52,10.43],[-5.51,10.48],[-5.48,10.57],[-5.48,10.64],[-5.46,10.77],[-5.47,10.93],[-5.49,11.04],[-5.42,11.09],[-5.35,11.13],[-5.3,11.21],[-5.25,11.38],[-5.23,11.52],[-5.24,11.58],[-5.27,11.62],[-5.29,11.68],[-5.3,11.76],[-5.29,11.83],[-5.23,11.89],[-5.16,11.94],[-5.11,11.97],[-4.97,11.99],[-4.8,12.03],[-4.7,12.08],[-4.63,12.12],[-4.59,12.16],[-4.55,12.23],[-4.48,12.28],[-4.43,12.34],[-4.42,12.49],[-4.42,12.58],[-4.46,12.63],[-4.48,12.67],[-4.23,12.79],[-4.23,12.88],[-4.26,12.98],[-4.31,13.05],[-4.33,13.12],[-4.26,13.2],[-4.2,13.26],[-4.15,13.31],[-4.05,13.38],[-3.95,13.4],[-3.85,13.37],[-3.58,13.19],[-3.53,13.18],[-3.47,13.2],[-3.4,13.24],[-3.3,13.28],[-3.27,13.4],[-3.27,13.58],[-3.25,13.66],[-3.2,13.67],[-3.04,13.64],[-3,13.64],[-2.95,13.65],[-2.92,13.68],[-2.92,13.74],[-2.93,13.79],[-2.87,13.95],[-2.78,14.07],[-2.59,14.23],[-2.53,14.26],[-2.46,14.27],[-2.11,14.17],[-2.06,14.19],[-1.97,14.46],[-1.88,14.48],[-1.77,14.49],[-1.7,14.51],[-1.66,14.53],[-1.49,14.63],[-1.2,14.76],[-1.05,14.82],[-1.02,14.84],[-0.91,14.94],[-0.76,15.05],[-0.67,15.07],[-0.54,15.08],[-0.45,15.06],[-0.43,15.03],[-0.41,15.01],[-0.24,15.06],[0.01,14.98],[0.22,14.91]]]}},
{"type":"Feature","properties":{"name":"Bangladesh","iso_a2":"BD","iso_a3":"BGD","iso_n3":"050"},"geometry":{"type":"MultiPolygon","coordinates":[[[[91.95,21.51],[91.89,21.5],[91.86,21.53],[91.87,21.57],[91.86,21.71],[91.91,21.72],[91.93,21.72],[91.95,21.68],[91.96,21.61],[91.95,21.51]]],[[[91.87,21.83],[91.84,21.75],[91.82,21.81],[91.84,21.89],[91.85,21.93],[91.86,21.93],[91.88,21.88],[91.87,21.83]]],[[[91.15,22.18],[91.04,22.11],[91.08,22.52],[91.16,22.37],[91.18,22.28],[91.15,22.18]]],[[[91.56,22.38],[91.51,22.35],[91.47,22.38],[91.41,22.48],[91.44,22.6],[91.46,22.62],[91.48,22.58],[91.52,22.49],[91.55,22.43],[91.56,22.38]]],[[[90.78,22.09],[90.6,22.05],[90.52,22.07],[90.68,22.33],[90.67,22.44],[90.65,22.54],[90.56,22.62],[90.56,22.67],[90.52,22.75],[90.5,22.84],[90.6,22.86],[90.67,22.81],[90.68,22.79],[90.7,22.71],[90.74,22.64],[90.87,22.48],[90.87,22.39],[90.83,22.16],[90.78,22.09]]],[[[90.64,22.96],[90.66,22.92],[90.6,22.95],[90.56,22.98],[90.54,23.01],[90.58,23.04],[90.64,22.96]]],[[[88.76,26.28],[88.83,26.25],[88.9,26.26],[88.94,26.25],[88.97,26.25],[88.98,26.29],[88.95,26.34],[88.92,26.38],[88.95,26.41],[88.98,26.42],[89.02,26.41],[89.07,26.38],[89.1,26.31],[89.11,26.2],[89.19,26.11],[89.29,26.04],[89.37,26.01],[89.47,25.98],[89.55,26.01],[89.59,26.07],[89.57,26.13],[89.59,26.19],[89.62,26.22],[89.67,26.21],[89.71,26.17],[89.82,25.94],[89.8,25.84],[89.82,25.56],[89.8,25.38],[89.8,25.34],[89.81,25.31],[89.83,25.29],[89.87,25.29],[90,25.26],[90.12,25.22],[90.25,25.18],[90.44,25.16],[90.56,25.17],[90.61,25.17],[90.73,25.16],[91.04,25.17],[91.29,25.18],[91.4,25.15],[91.48,25.14],[91.76,25.16],[92.05,25.17],[92.2,25.11],[92.37,25.02],[92.47,24.94],[92.49,24.9],[92.47,24.87],[92.44,24.85],[92.38,24.85],[92.25,24.9],[92.23,24.88],[92.23,24.79],[92.23,24.77],[92.2,24.69],[92.12,24.49],[92.1,24.41],[92.09,24.39],[92.06,24.37],[92,24.37],[91.95,24.36],[91.93,24.33],[91.9,24.26],[91.88,24.2],[91.85,24.18],[91.77,24.21],[91.73,24.21],[91.67,24.19],[91.61,24.15],[91.57,24.11],[91.53,24.09],[91.39,24.1],[91.37,24.09],[91.35,24.06],[91.34,24.02],[91.23,23.92],[91.19,23.76],[91.16,23.66],[91.17,23.58],[91.25,23.37],[91.32,23.1],[91.34,23.08],[91.36,23.07],[91.37,23.07],[91.37,23.13],[91.37,23.2],[91.4,23.21],[91.44,23.2],[91.47,23.14],[91.51,23.03],[91.55,22.99],[91.62,22.98],[91.69,23],[91.75,23.05],[91.77,23.11],[91.76,23.21],[91.75,23.29],[91.79,23.36],[91.92,23.47],[91.94,23.5],[91.93,23.6],[91.93,23.69],[91.98,23.69],[92.04,23.68],[92.13,23.72],[92.15,23.72],[92.19,23.68],[92.25,23.68],[92.29,23.49],[92.33,23.32],[92.33,23.24],[92.34,23.07],[92.36,22.93],[92.39,22.9],[92.43,22.82],[92.46,22.73],[92.49,22.69],[92.51,22.53],[92.53,22.41],[92.56,22.05],[92.57,21.98],[92.58,21.94],[92.58,21.61],[92.59,21.47],[92.63,21.35],[92.63,21.31],[92.6,21.27],[92.57,21.26],[92.54,21.32],[92.47,21.36],[92.37,21.41],[92.33,21.44],[92.28,21.43],[92.21,21.36],[92.18,21.29],[92.19,21.2],[92.21,21.11],[92.26,21.06],[92.27,21],[92.29,20.93],[92.31,20.86],[92.32,20.79],[92.31,20.79],[92.25,20.88],[92.19,20.98],[92.06,21.17],[92.01,21.52],[92.01,21.68],[91.91,21.88],[91.85,22.16],[91.82,22.23],[91.86,22.32],[91.86,22.35],[91.85,22.34],[91.8,22.3],[91.73,22.41],[91.69,22.5],[91.53,22.71],[91.48,22.8],[91.48,22.88],[91.41,22.8],[91.31,22.74],[91.22,22.64],[91.15,22.61],[90.95,22.6],[90.83,22.72],[90.66,23.03],[90.63,23.09],[90.66,23.27],[90.62,23.44],[90.62,23.53],[90.6,23.59],[90.57,23.58],[90.56,23.54],[90.57,23.47],[90.56,23.42],[90.41,23.43],[90.27,23.46],[90.39,23.37],[90.52,23.35],[90.59,23.27],[90.6,23.2],[90.6,23.13],[90.53,23.08],[90.47,23.05],[90.48,22.99],[90.55,22.9],[90.46,22.88],[90.44,22.83],[90.44,22.75],[90.48,22.68],[90.5,22.63],[90.49,22.59],[90.53,22.54],[90.6,22.44],[90.62,22.36],[90.59,22.26],[90.55,22.22],[90.49,22.18],[90.36,22.05],[90.29,21.9],[90.23,21.83],[90.16,21.82],[90.13,21.85],[90.07,21.89],[90.07,21.96],[90.09,22.02],[90.21,22.16],[90.14,22.14],[90.07,22.1],[89.95,22.02],[89.92,22.12],[89.89,22.2],[89.89,22.31],[89.99,22.47],[89.88,22.39],[89.85,22.29],[89.87,22.17],[89.85,22.09],[89.81,21.98],[89.76,21.92],[89.67,21.88],[89.63,21.81],[89.57,21.77],[89.57,21.86],[89.55,21.98],[89.48,22.28],[89.47,22.21],[89.5,22.03],[89.5,21.91],[89.45,21.82],[89.35,21.72],[89.28,21.71],[89.23,21.72],[89.17,21.78],[89.09,21.87],[89.08,22.01],[89.05,22.09],[89.06,22.19],[89.05,22.27],[88.97,22.51],[88.92,22.63],[88.93,22.67],[88.92,22.69],[88.9,22.84],[88.87,22.94],[88.85,23.04],[88.93,23.19],[88.9,23.21],[88.81,23.23],[88.72,23.25],[88.7,23.29],[88.74,23.44],[88.7,23.49],[88.64,23.55],[88.62,23.57],[88.6,23.6],[88.57,23.67],[88.62,23.83],[88.7,24],[88.71,24.07],[88.73,24.19],[88.73,24.23],[88.72,24.27],[88.64,24.33],[88.5,24.35],[88.4,24.39],[88.34,24.45],[88.29,24.48],[88.23,24.46],[88.15,24.49],[88.08,24.55],[88.02,24.63],[88.03,24.66],[88.05,24.71],[88.15,24.91],[88.19,24.92],[88.28,24.88],[88.31,24.88],[88.37,24.96],[88.46,25.19],[88.57,25.19],[88.68,25.18],[88.75,25.17],[88.82,25.18],[88.89,25.19],[88.93,25.22],[88.95,25.26],[88.94,25.29],[88.85,25.33],[88.82,25.37],[88.8,25.46],[88.77,25.49],[88.59,25.5],[88.5,25.54],[88.45,25.57],[88.36,25.7],[88.25,25.79],[88.15,25.81],[88.11,25.84],[88.08,25.89],[88.1,25.96],[88.13,26.02],[88.15,26.09],[88.24,26.18],[88.33,26.26],[88.38,26.31],[88.44,26.37],[88.45,26.4],[88.44,26.44],[88.39,26.47],[88.35,26.48],[88.35,26.5],[88.37,26.56],[88.42,26.57],[88.52,26.52],[88.62,26.43],[88.68,26.35],[88.68,26.29],[88.72,26.28],[88.76,26.28]]]]}},
{"type":"Feature","properties":{"name":"Bulgaria","iso_a2":"BG","iso_a3":"BGR","iso_n3":"100"},"geometry":{"type":"Polygon","coordinates":[[[28.59,43.74],[28.56,43.5],[28.47,43.39],[28.32,43.43],[28.13,43.4],[28.04,43.27],[27.98,43.23],[27.93,43.19],[27.9,43.02],[27.89,42.75],[27.82,42.72],[27.75,42.71],[27.48,42.47],[27.64,42.4],[27.71,42.35],[27.82,42.21],[27.98,42.05],[28.01,41.97],[27.88,41.99],[27.83,41.98],[27.8,41.96],[27.74,41.96],[27.66,41.96],[27.58,41.93],[27.53,41.92],[27.47,41.95],[27.36,42.03],[27.29,42.08],[27.24,42.09],[27.19,42.08],[27.01,42.06],[26.97,42.03],[26.88,41.99],[26.8,41.98],[26.68,41.96],[26.62,41.96],[26.58,41.95],[26.55,41.9],[26.53,41.85],[26.51,41.83],[26.36,41.8],[26.33,41.77],[26.32,41.74],[26.32,41.72],[26.2,41.74],[26.11,41.73],[26.09,41.7],[26.07,41.67],[26.08,41.64],[26.11,41.61],[26.14,41.52],[26.16,41.43],[26.14,41.39],[26.07,41.35],[25.92,41.31],[25.78,41.33],[25.72,41.32],[25.62,41.31],[25.53,41.3],[25.38,41.26],[25.25,41.24],[25.13,41.32],[24.99,41.36],[24.85,41.39],[24.8,41.37],[24.77,41.36],[24.65,41.42],[24.6,41.44],[24.57,41.47],[24.52,41.55],[24.49,41.56],[24.39,41.52],[24.29,41.53],[24.23,41.53],[24.06,41.53],[24.03,41.47],[24.01,41.46],[23.97,41.45],[23.88,41.46],[23.76,41.41],[23.64,41.39],[23.54,41.39],[23.43,41.4],[23.37,41.39],[23.24,41.38],[23.16,41.32],[23.03,41.33],[22.92,41.34],[22.93,41.36],[22.95,41.61],[23.01,41.72],[23,41.74],[22.99,41.76],[22.94,41.78],[22.91,41.84],[22.84,41.99],[22.8,42.03],[22.68,42.06],[22.58,42.1],[22.5,42.17],[22.34,42.31],[22.42,42.33],[22.45,42.36],[22.52,42.44],[22.53,42.48],[22.52,42.5],[22.47,42.54],[22.44,42.63],[22.46,42.71],[22.47,42.75],[22.44,42.79],[22.47,42.84],[22.52,42.87],[22.56,42.88],[22.71,42.88],[22.8,42.99],[22.86,43.02],[22.92,43.08],[22.94,43.1],[22.97,43.14],[22.98,43.19],[22.86,43.25],[22.82,43.3],[22.77,43.35],[22.7,43.39],[22.55,43.45],[22.5,43.52],[22.47,43.6],[22.44,43.67],[22.39,43.71],[22.39,43.74],[22.37,43.78],[22.37,43.86],[22.4,43.97],[22.42,44.01],[22.47,44.02],[22.6,44.08],[22.6,44.15],[22.63,44.19],[22.67,44.22],[22.71,44.24],[22.78,44.2],[22.95,44.13],[23.03,44.08],[23.02,44.05],[22.99,44.02],[22.91,43.99],[22.87,43.95],[22.86,43.9],[22.87,43.86],[22.92,43.83],[23.22,43.87],[23.53,43.85],[23.95,43.79],[24.23,43.76],[24.43,43.79],[24.81,43.74],[25.16,43.69],[25.5,43.67],[25.69,43.71],[25.82,43.77],[25.93,43.87],[26.22,44.01],[26.49,44.08],[26.85,44.15],[27.09,44.17],[27.12,44.15],[27.43,44.02],[27.56,44.02],[27.67,44],[27.71,43.96],[27.74,43.96],[27.88,43.99],[27.95,43.92],[28.05,43.82],[28.22,43.77],[28.38,43.74],[28.42,43.74],[28.59,43.74]]]}},
{"type":"Feature","properties":{"name":"Bahrain","iso_a2":"BH","iso_a3":"BHR","iso_n3":"048"},"geometry":{"type":"Polygon","coordinates":[[[50.61,25.88],[50.57,25.81],[50.54,25.83],[50.47,25.97],[50.49,26.06],[50.45,26.19],[50.47,26.23],[50.56,26.25],[50.59,26.24],[50.56,26.2],[50.61,26.12],[50.62,26],[50.61,25.88]]]}},
{"type":"Feature","properties":{"name":"Bahamas","iso_a2":"BS","iso_a3":"BHS","iso_n3":"044"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-73.03,21.19],[-73.06,21.12],[-73.16,20.98],[-73.4,20.94],[-73.66,20.94],[-73.68,20.98],[-73.69,21.01],[-73.67,21.06],[-73.67,21.08],[-73.68,21.1],[-73.59,21.13],[-73.52,21.19],[-73.42,21.2],[-73.3,21.16],[-73.24,21.15],[-73.14,21.2],[-73.06,21.31],[-73.01,21.3],[-73.03,21.19]]],[[[-72.92,21.51],[-73.05,21.46],[-73.06,21.52],[-72.99,21.56],[-72.92,21.51]]],[[[-73.04,22.43],[-72.98,22.41],[-72.95,22.42],[-72.83,22.39],[-72.76,22.34],[-72.75,22.33],[-72.78,22.29],[-72.89,22.36],[-72.98,22.37],[-73.11,22.37],[-73.16,22.38],[-73.13,22.46],[-73.04,22.43]]],[[[-74.21,22.21],[-74.28,22.18],[-74.26,22.24],[-74.13,22.32],[-74.05,22.4],[-74.01,22.43],[-73.99,22.45],[-73.94,22.48],[-73.91,22.53],[-73.91,22.57],[-73.98,22.64],[-73.98,22.68],[-73.95,22.72],[-73.85,22.73],[-73.88,22.68],[-73.84,22.54],[-73.97,22.36],[-74.09,22.31],[-74.21,22.21]]],[[[-74.06,22.72],[-74.03,22.71],[-74.1,22.67],[-74.24,22.72],[-74.27,22.71],[-74.3,22.76],[-74.31,22.8],[-74.31,22.84],[-74.22,22.81],[-74.18,22.76],[-74.06,22.72]]],[[[-74.84,22.89],[-74.85,22.87],[-74.97,23.07],[-75.13,23.12],[-75.22,23.17],[-75.2,23.19],[-75.14,23.2],[-75.13,23.27],[-75.16,23.34],[-75.24,23.47],[-75.29,23.57],[-75.31,23.59],[-75.32,23.67],[-75.22,23.55],[-75.18,23.44],[-75.11,23.33],[-75.06,23.15],[-74.94,23.09],[-74.85,23],[-74.84,22.89]]],[[[-75.66,23.45],[-75.71,23.44],[-75.78,23.47],[-75.96,23.59],[-76.04,23.6],[-76.01,23.67],[-75.95,23.65],[-75.81,23.54],[-75.75,23.49],[-75.66,23.45]]],[[[-74.43,24.07],[-74.51,23.96],[-74.55,23.97],[-74.53,24.11],[-74.47,24.13],[-74.45,24.13],[-74.43,24.07]]],[[[-77.66,24.25],[-77.66,24.23],[-77.76,24.16],[-77.68,24.12],[-77.62,24.22],[-77.56,24.14],[-77.53,23.99],[-77.54,23.96],[-77.53,23.94],[-77.52,23.91],[-77.52,23.87],[-77.57,23.74],[-77.77,23.75],[-77.78,23.86],[-77.81,23.88],[-77.85,24.04],[-77.91,24.09],[-78,24.22],[-77.95,24.25],[-77.88,24.24],[-77.85,24.26],[-77.76,24.27],[-77.7,24.29],[-77.66,24.25]]],[[[-75.31,24.2],[-75.3,24.15],[-75.37,24.16],[-75.47,24.14],[-75.5,24.14],[-75.48,24.17],[-75.41,24.22],[-75.41,24.27],[-75.49,24.33],[-75.59,24.49],[-75.64,24.53],[-75.66,24.59],[-75.74,24.65],[-75.73,24.69],[-75.71,24.7],[-75.65,24.68],[-75.53,24.45],[-75.52,24.43],[-75.31,24.2]]],[[[-77.35,25.01],[-77.46,24.99],[-77.54,25.01],[-77.56,25.03],[-77.53,25.06],[-77.45,25.08],[-77.33,25.08],[-77.28,25.06],[-77.27,25.04],[-77.35,25.01]]],[[[-77.74,24.71],[-77.75,24.59],[-77.74,24.5],[-77.75,24.46],[-77.85,24.4],[-77.88,24.37],[-77.98,24.33],[-78.04,24.29],[-78.08,24.36],[-78.14,24.41],[-78.15,24.49],[-78.19,24.47],[-78.26,24.48],[-78.37,24.54],[-78.44,24.63],[-78.34,24.64],[-78.32,24.59],[-78.24,24.65],[-78.26,24.69],[-78.27,24.69],[-78.3,24.75],[-78.18,24.92],[-78.16,25.02],[-78.21,25.19],[-78.16,25.2],[-78.03,25.14],[-77.98,25.08],[-77.97,25],[-77.92,24.94],[-77.84,24.79],[-77.74,24.71]]],[[[-76.65,25.49],[-76.48,25.37],[-76.34,25.33],[-76.19,25.19],[-76.13,25.14],[-76.11,25.09],[-76.14,24.89],[-76.17,24.76],[-76.17,24.65],[-76.21,24.68],[-76.24,24.75],[-76.3,24.8],[-76.32,24.82],[-76.21,24.82],[-76.2,24.94],[-76.15,25.03],[-76.16,25.12],[-76.28,25.22],[-76.37,25.31],[-76.5,25.34],[-76.62,25.43],[-76.69,25.44],[-76.78,25.43],[-76.75,25.48],[-76.73,25.55],[-76.71,25.56],[-76.65,25.49]]],[[[-78.49,26.73],[-78.37,26.7],[-78.31,26.7],[-78.27,26.72],[-78.09,26.71],[-77.94,26.74],[-77.92,26.69],[-77.93,26.66],[-78.23,26.64],[-78.52,26.56],[-78.67,26.51],[-78.74,26.5],[-78.8,26.53],[-78.99,26.69],[-78.94,26.67],[-78.8,26.58],[-78.71,26.6],[-78.63,26.66],[-78.62,26.7],[-78.63,26.73],[-78.6,26.8],[-78.49,26.73]]],[[[-77.23,25.9],[-77.25,25.9],[-77.33,26],[-77.4,26.02],[-77.29,26.1],[-77.25,26.16],[-77.25,26.29],[-77.22,26.36],[-77.23,26.42],[-77.21,26.49],[-77.24,26.56],[-77.33,26.62],[-77.51,26.85],[-77.8,26.9],[-77.94,26.9],[-77.86,26.94],[-77.79,26.94],[-77.67,26.91],[-77.53,26.9],[-77.45,26.84],[-77.37,26.75],[-77.3,26.71],[-77.27,26.69],[-77.27,26.66],[-77.26,26.64],[-77.16,26.6],[-77.07,26.53],[-77.04,26.33],[-77.17,26.24],[-77.19,25.96],[-77.23,25.9]]]]}},
{"type":"Feature","properties":{"name":"Bosnia and Herz.","iso_a2":"BA","iso_a3":"BIH","iso_n3":"070"},"geometry":{"type":"Polygon","coordinates":[[[16.92,45.28],[17.13,45.17],[17.21,45.16],[17.26,45.17],[17.32,45.16],[17.47,45.13],[17.5,45.12],[17.55,45.12],[17.65,45.16],[17.69,45.16],[17.81,45.08],[17.87,45.08],[17.95,45.11],[18,45.14],[18.14,45.12],[18.22,45.13],[18.28,45.13],[18.36,45.12],[18.42,45.1],[18.49,45.09],[18.66,45.08],[18.75,45.03],[18.78,44.98],[18.78,44.95],[18.79,44.91],[18.84,44.88],[18.94,44.87],[19.01,44.87],[19.04,44.87],[19.13,44.9],[19.24,44.91],[19.31,44.9],[19.35,44.88],[19.36,44.86],[19.33,44.78],[19.29,44.7],[19.22,44.61],[19.15,44.53],[19.13,44.48],[19.13,44.41],[19.12,44.36],[19.13,44.33],[19.15,44.3],[19.23,44.28],[19.34,44.23],[19.43,44.15],[19.55,44.07],[19.58,44.04],[19.58,44.01],[19.55,43.99],[19.45,43.98],[19.35,43.99],[19.31,43.99],[19.27,43.98],[19.25,43.97],[19.26,43.94],[19.36,43.84],[19.49,43.7],[19.5,43.64],[19.48,43.6],[19.45,43.56],[19.4,43.57],[19.36,43.59],[19.3,43.59],[19.25,43.58],[19.19,43.53],[19.16,43.54],[19.11,43.53],[19.08,43.52],[19.03,43.53],[18.97,43.54],[18.95,43.53],[18.94,43.5],[18.97,43.44],[19.04,43.36],[19.03,43.29],[18.98,43.29],[18.93,43.34],[18.9,43.35],[18.85,43.35],[18.75,43.28],[18.67,43.23],[18.66,43.19],[18.63,43.15],[18.62,43.12],[18.62,43.03],[18.49,43.01],[18.46,43],[18.44,42.97],[18.46,42.84],[18.47,42.78],[18.54,42.67],[18.55,42.64],[18.53,42.62],[18.48,42.58],[18.45,42.56],[18.44,42.56],[18.35,42.59],[18.3,42.6],[18.12,42.69],[18.04,42.74],[17.92,42.81],[17.84,42.85],[17.8,42.9],[17.74,42.92],[17.67,42.9],[17.59,42.94],[17.64,42.96],[17.66,42.98],[17.65,43.01],[17.62,43.04],[17.4,43.2],[17.29,43.31],[17.28,43.34],[17.27,43.45],[17.25,43.47],[17.08,43.52],[16.9,43.65],[16.71,43.78],[16.69,43.82],[16.59,43.91],[16.47,44],[16.38,44.06],[16.3,44.12],[16.21,44.22],[16.17,44.35],[16.13,44.47],[16.1,44.52],[16.05,44.54],[15.88,44.68],[15.74,44.77],[15.74,44.86],[15.76,45.01],[15.79,45.18],[15.82,45.2],[15.89,45.22],[15.96,45.21],[16.03,45.19],[16.16,45.07],[16.23,45.03],[16.29,45.01],[16.37,45.06],[16.45,45.16],[16.53,45.22],[16.79,45.2],[16.92,45.28]]]}},
{"type":"Feature","properties":{"name":"St-Barthélemy","iso_a2":"BL","iso_a3":"BLM","iso_n3":"652"},"geometry":{"type":"Polygon","coordinates":[[[-62.83,17.88],[-62.85,17.88],[-62.86,17.88],[-62.87,17.9],[-62.88,17.91],[-62.87,17.92],[-62.87,17.92],[-62.8,17.91],[-62.81,17.9],[-62.82,17.89],[-62.83,17.88]]]}},
{"type":"Feature","properties":{"name":"Belarus","iso_a2":"BY","iso_a3":"BLR","iso_n3":"112"},"geometry":{"type":"Polygon","coordinates":[[[28.15,56.14],[28.28,56.06],[28.32,56.05],[28.39,56.09],[28.41,56.09],[28.56,56.09],[28.64,56.06],[28.69,56],[28.74,55.96],[28.79,55.94],[28.95,56],[29.03,56.02],[29.09,56.02],[29.28,55.97],[29.38,55.94],[29.4,55.91],[29.4,55.88],[29.37,55.83],[29.35,55.78],[29.41,55.72],[29.48,55.68],[29.63,55.75],[29.68,55.77],[29.74,55.77],[29.82,55.8],[29.88,55.83],[29.94,55.85],[30.04,55.84],[30.23,55.85],[30.46,55.79],[30.48,55.77],[30.59,55.7],[30.63,55.67],[30.66,55.66],[30.72,55.62],[30.8,55.6],[30.86,55.61],[30.88,55.6],[30.91,55.57],[30.91,55.53],[30.9,55.4],[30.86,55.36],[30.82,55.33],[30.81,55.31],[30.81,55.28],[30.88,55.22],[30.96,55.14],[30.98,55.09],[30.98,55.05],[30.87,54.94],[30.83,54.91],[30.8,54.86],[30.79,54.81],[30.8,54.78],[30.98,54.7],[31.12,54.65],[31.15,54.63],[31.15,54.61],[31.08,54.52],[31.07,54.49],[31.18,54.45],[31.25,54.39],[31.3,54.29],[31.4,54.2],[31.63,54.11],[31.79,54.06],[31.83,54.03],[31.84,54],[31.83,53.94],[31.78,53.85],[31.75,53.81],[31.82,53.79],[31.99,53.8],[32.2,53.78],[32.45,53.69],[32.45,53.65],[32.43,53.62],[32.44,53.58],[32.47,53.55],[32.69,53.45],[32.71,53.42],[32.71,53.37],[32.7,53.34],[32.64,53.33],[32.58,53.31],[32.47,53.27],[32.43,53.21],[32.25,53.13],[32.14,53.09],[32.06,53.09],[31.85,53.11],[31.78,53.15],[31.75,53.18],[31.67,53.2],[31.56,53.2],[31.42,53.2],[31.39,53.18],[31.36,53.14],[31.3,53.06],[31.26,53.02],[31.3,52.99],[31.35,52.93],[31.44,52.86],[31.54,52.8],[31.56,52.76],[31.56,52.73],[31.52,52.7],[31.53,52.63],[31.62,52.55],[31.59,52.53],[31.58,52.43],[31.58,52.31],[31.6,52.28],[31.65,52.26],[31.69,52.22],[31.76,52.13],[31.76,52.1],[31.57,52.11],[31.35,52.11],[31.22,52.05],[31.17,52.06],[31.08,52.08],[30.98,52.05],[30.85,51.95],[30.76,51.9],[30.67,51.81],[30.64,51.77],[30.58,51.69],[30.53,51.6],[30.56,51.53],[30.6,51.47],[30.61,51.41],[30.63,51.36],[30.58,51.32],[30.54,51.27],[30.45,51.27],[30.33,51.33],[30.31,51.4],[30.22,51.45],[30.16,51.48],[30.06,51.48],[29.91,51.46],[29.71,51.44],[29.55,51.43],[29.47,51.41],[29.35,51.38],[29.3,51.41],[29.23,51.5],[29.17,51.58],[29.14,51.62],[29.1,51.63],[29.06,51.63],[29.01,51.6],[28.98,51.57],[28.93,51.56],[28.85,51.54],[28.79,51.51],[28.73,51.43],[28.69,51.44],[28.65,51.46],[28.6,51.54],[28.53,51.56],[28.42,51.56],[28.29,51.58],[28.18,51.61],[28.14,51.6],[28.08,51.57],[28.01,51.56],[27.86,51.59],[27.83,51.58],[27.79,51.53],[27.74,51.48],[27.7,51.48],[27.68,51.49],[27.69,51.57],[27.6,51.6],[27.45,51.61],[27.35,51.59],[27.3,51.6],[27.27,51.61],[27.14,51.75],[27.07,51.76],[26.95,51.75],[26.77,51.77],[26.57,51.8],[26.45,51.81],[26.39,51.84],[26.27,51.86],[25.93,51.91],[25.79,51.92],[25.58,51.92],[25.27,51.94],[25.07,51.93],[24.97,51.91],[24.87,51.9],[24.69,51.89],[24.61,51.89],[24.5,51.88],[24.36,51.87],[24.32,51.84],[24.28,51.77],[24.13,51.66],[23.98,51.59],[23.95,51.59],[23.86,51.62],[23.79,51.64],[23.71,51.64],[23.65,51.63],[23.61,51.61],[23.61,51.53],[23.61,51.52],[23.54,51.62],[23.54,51.71],[23.58,51.76],[23.63,51.81],[23.61,51.88],[23.65,51.97],[23.65,52.04],[23.63,52.07],[23.6,52.1],[23.5,52.14],[23.46,52.17],[23.33,52.21],[23.2,52.26],[23.18,52.29],[23.18,52.31],[23.2,52.34],[23.3,52.43],[23.41,52.52],[23.48,52.55],[23.84,52.66],[23.9,52.7],[23.92,52.77],[23.92,52.82],[23.91,52.9],[23.89,53.03],[23.86,53.11],[23.79,53.27],[23.6,53.6],[23.48,53.94],[23.56,53.92],[23.73,53.91],[23.87,53.94],[23.94,53.94],[24.01,53.93],[24.1,53.95],[24.19,53.95],[24.24,53.92],[24.32,53.89],[24.48,53.93],[24.62,53.98],[24.77,53.97],[24.79,54],[24.83,54.12],[24.87,54.15],[25.05,54.13],[25.11,54.15],[25.18,54.21],[25.28,54.25],[25.37,54.25],[25.46,54.29],[25.51,54.26],[25.53,54.22],[25.5,54.18],[25.51,54.16],[25.57,54.14],[25.68,54.14],[25.75,54.16],[25.77,54.18],[25.77,54.22],[25.75,54.26],[25.7,54.29],[25.62,54.31],[25.56,54.31],[25.55,54.33],[25.57,54.38],[25.62,54.46],[25.69,54.54],[25.72,54.56],[25.73,54.59],[25.72,54.64],[25.72,54.72],[25.78,54.83],[25.86,54.92],[25.96,54.95],[26.09,54.96],[26.18,55],[26.22,55.05],[26.23,55.09],[26.25,55.12],[26.29,55.14],[26.6,55.13],[26.65,55.2],[26.68,55.22],[26.73,55.25],[26.78,55.27],[26.76,55.29],[26.68,55.31],[26.5,55.32],[26.46,55.34],[26.47,55.37],[26.52,55.45],[26.57,55.55],[26.59,55.62],[26.59,55.67],[26.62,55.68],[26.77,55.69],[26.82,55.71],[26.95,55.81],[27.05,55.83],[27.31,55.8],[27.43,55.81],[27.46,55.8],[27.58,55.8],[27.59,55.81],[27.64,55.91],[27.69,55.94],[27.9,56.08],[28.03,56.13],[28.12,56.15],[28.15,56.14]]]}},
{"type":"Feature","properties":{"name":"Belize","iso_a2":"BZ","iso_a3":"BLZ","iso_n3":"084"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-87.85,17.42],[-87.93,17.28],[-87.93,17.32],[-87.9,17.43],[-87.86,17.46],[-87.83,17.5],[-87.83,17.55],[-87.79,17.52],[-87.8,17.48],[-87.85,17.42]]],[[[-87.95,17.92],[-88,17.91],[-87.96,17.96],[-87.95,18],[-87.9,18.15],[-87.86,18.15],[-87.85,18.14],[-87.95,17.92]]],[[[-88.35,18.36],[-88.3,18.34],[-88.25,18.35],[-88.13,18.35],[-88.09,18.23],[-88.1,18.12],[-88.21,17.85],[-88.22,17.75],[-88.27,17.61],[-88.2,17.52],[-88.27,17.39],[-88.29,17.31],[-88.29,17.19],[-88.26,16.96],[-88.31,16.63],[-88.4,16.49],[-88.46,16.43],[-88.56,16.29],[-88.7,16.25],[-88.88,16.02],[-88.91,15.96],[-88.89,15.89],[-88.94,15.89],[-89.11,15.9],[-89.23,15.89],[-89.24,15.89],[-89.23,16.14],[-89.21,16.53],[-89.2,16.81],[-89.19,17.08],[-89.18,17.29],[-89.17,17.57],[-89.16,17.81],[-89.16,17.9],[-89.13,17.97],[-89.05,18],[-88.94,17.94],[-88.9,17.91],[-88.86,17.93],[-88.81,17.97],[-88.74,18.07],[-88.59,18.29],[-88.52,18.45],[-88.46,18.48],[-88.37,18.48],[-88.3,18.47],[-88.35,18.36]]]]}},
{"type":"Feature","properties":{"name":"Bermuda","iso_a2":"BM","iso_a3":"BMU","iso_n3":"060"},"geometry":{"type":"Polygon","coordinates":[[[-64.73,32.29],[-64.82,32.26],[-64.85,32.26],[-64.86,32.27],[-64.77,32.31],[-64.69,32.39],[-64.67,32.38],[-64.73,32.29]]]}},
{"type":"Feature","properties":{"name":"Bolivia","iso_a2":"BO","iso_a3":"BOL","iso_n3":"068"},"geometry":{"type":"Polygon","coordinates":[[[-58.16,-20.16],[-58.14,-20],[-58.16,-19.85],[-58.18,-19.82],[-58.47,-19.65],[-58.74,-19.49],[-59.09,-19.29],[-59.54,-19.29],[-60.01,-19.3],[-60.45,-19.39],[-60.89,-19.48],[-61.1,-19.52],[-61.51,-19.61],[-61.76,-19.65],[-61.82,-19.81],[-61.92,-20.06],[-62.01,-20.2],[-62.12,-20.35],[-62.28,-20.56],[-62.28,-20.82],[-62.28,-21.07],[-62.39,-21.41],[-62.48,-21.71],[-62.57,-21.99],[-62.63,-22.18],[-62.65,-22.23],[-62.67,-22.22],[-62.74,-22.16],[-62.82,-22.05],[-62.83,-22],[-62.84,-22],[-63.27,-22],[-63.68,-22],[-63.72,-22.03],[-63.78,-22.03],[-63.82,-22.01],[-63.86,-22.01],[-63.92,-22.03],[-63.98,-22.07],[-64.13,-22.37],[-64.21,-22.49],[-64.27,-22.6],[-64.31,-22.8],[-64.33,-22.83],[-64.37,-22.76],[-64.45,-22.59],[-64.48,-22.49],[-64.52,-22.37],[-64.61,-22.23],[-64.7,-22.19],[-64.76,-22.17],[-64.84,-22.14],[-64.99,-22.11],[-65.06,-22.1],[-65.48,-22.1],[-65.52,-22.09],[-65.69,-22.11],[-65.77,-22.1],[-65.86,-22.02],[-66.06,-21.88],[-66.1,-21.84],[-66.17,-21.81],[-66.22,-21.8],[-66.25,-21.83],[-66.28,-21.95],[-66.32,-22.05],[-66.37,-22.11],[-66.51,-22.16],[-66.64,-22.21],[-66.71,-22.22],[-66.75,-22.27],[-66.77,-22.34],[-66.8,-22.41],[-66.99,-22.51],[-67.03,-22.55],[-67.06,-22.65],[-67.16,-22.77],[-67.19,-22.82],[-67.36,-22.86],[-67.58,-22.89],[-67.71,-22.89],[-67.79,-22.88],[-67.82,-22.86],[-67.88,-22.82],[-67.89,-22.78],[-67.89,-22.73],[-67.87,-22.63],[-67.88,-22.49],[-67.95,-22.33],[-67.94,-22.28],[-67.95,-22.2],[-67.99,-22.06],[-68.08,-21.98],[-68.1,-21.86],[-68.11,-21.75],[-68.19,-21.62],[-68.2,-21.45],[-68.2,-21.3],[-68.31,-21.13],[-68.44,-20.95],[-68.53,-20.92],[-68.56,-20.9],[-68.57,-20.85],[-68.57,-20.77],[-68.56,-20.72],[-68.49,-20.64],[-68.48,-20.63],[-68.5,-20.61],[-68.7,-20.49],[-68.75,-20.46],[-68.76,-20.42],[-68.76,-20.38],[-68.71,-20.34],[-68.69,-20.31],[-68.73,-20.23],[-68.73,-20.15],[-68.76,-20.12],[-68.76,-20.09],[-68.73,-20.07],[-68.6,-20.04],[-68.56,-19.97],[-68.56,-19.9],[-68.58,-19.86],[-68.7,-19.74],[-68.7,-19.72],[-68.58,-19.56],[-68.49,-19.45],[-68.46,-19.43],[-68.47,-19.41],[-68.49,-19.38],[-68.55,-19.34],[-68.62,-19.3],[-68.68,-19.24],[-68.76,-19.16],[-68.86,-19.09],[-68.93,-19.03],[-68.97,-18.97],[-68.97,-18.91],[-68.98,-18.81],[-69.03,-18.66],[-69.04,-18.55],[-69.06,-18.43],[-69.08,-18.36],[-69.09,-18.28],[-69.13,-18.2],[-69.15,-18.14],[-69.12,-18.1],[-69.09,-18.07],[-69.09,-18.05],[-69.28,-17.96],[-69.31,-17.94],[-69.36,-17.77],[-69.5,-17.62],[-69.51,-17.51],[-69.51,-17.5],[-69.51,-17.46],[-69.52,-17.39],[-69.56,-17.33],[-69.63,-17.29],[-69.65,-17.25],[-69.62,-17.2],[-69.5,-17.1],[-69.44,-17.09],[-69.42,-17.04],[-69.38,-17],[-69.27,-16.86],[-69.2,-16.77],[-69.13,-16.71],[-69.05,-16.67],[-69.02,-16.64],[-69.04,-16.54],[-69.03,-16.48],[-69.01,-16.43],[-68.93,-16.39],[-68.86,-16.35],[-68.84,-16.34],[-68.85,-16.31],[-68.91,-16.26],[-69.05,-16.22],[-69.13,-16.22],[-69.19,-16.18],[-69.22,-16.15],[-69.39,-15.74],[-69.42,-15.64],[-69.42,-15.6],[-69.3,-15.4],[-69.25,-15.33],[-69.17,-15.24],[-69.19,-15.2],[-69.33,-15.04],[-69.37,-14.96],[-69.37,-14.89],[-69.36,-14.8],[-69.28,-14.75],[-69.25,-14.67],[-69.23,-14.6],[-69.2,-14.57],[-69.16,-14.53],[-69.12,-14.47],[-69.05,-14.42],[-69.01,-14.38],[-69,-14.27],[-68.97,-14.23],[-68.88,-14.2],[-68.87,-14.17],[-68.89,-14.09],[-68.94,-14.01],[-68.97,-13.98],[-69.02,-13.78],[-69.07,-13.68],[-69.05,-13.64],[-69.02,-13.59],[-68.98,-13.5],[-68.97,-13.38],[-68.98,-12.96],[-68.98,-12.88],[-68.93,-12.82],[-68.87,-12.76],[-68.81,-12.73],[-68.76,-12.69],[-68.76,-12.61],[-68.73,-12.56],[-68.69,-12.5],[-68.82,-12.27],[-68.94,-12.07],[-69.05,-11.88],[-69.17,-11.65],[-69.26,-11.51],[-69.36,-11.33],[-69.45,-11.17],[-69.58,-10.95],[-69.46,-10.95],[-69.23,-10.96],[-69,-10.99],[-68.85,-11.01],[-68.78,-11.04],[-68.77,-11.1],[-68.73,-11.12],[-68.68,-11.11],[-68.62,-11.11],[-68.5,-11.05],[-68.4,-11.02],[-68.31,-10.98],[-68.27,-10.93],[-68.16,-10.79],[-68.07,-10.7],[-67.99,-10.67],[-67.84,-10.66],[-67.79,-10.69],[-67.72,-10.68],[-67.67,-10.6],[-67.58,-10.51],[-67.42,-10.39],[-67.33,-10.36],[-67.28,-10.32],[-67.19,-10.31],[-67.11,-10.27],[-66.73,-9.98],[-66.58,-9.9],[-66.48,-9.89],[-66.4,-9.87],[-66.26,-9.83],[-65.92,-9.79],[-65.71,-9.77],[-65.64,-9.81],[-65.56,-9.8],[-65.49,-9.73],[-65.44,-9.71],[-65.4,-9.71],[-65.34,-9.79],[-65.31,-9.87],[-65.33,-9.94],[-65.32,-10.03],[-65.3,-10.15],[-65.31,-10.25],[-65.4,-10.39],[-65.44,-10.45],[-65.45,-10.51],[-65.44,-10.59],[-65.4,-10.71],[-65.33,-10.89],[-65.32,-11.02],[-65.37,-11.11],[-65.39,-11.18],[-65.39,-11.25],[-65.37,-11.29],[-65.34,-11.32],[-65.33,-11.36],[-65.32,-11.44],[-65.28,-11.51],[-65.21,-11.58],[-65.18,-11.65],[-65.19,-11.71],[-65.19,-11.75],[-65.16,-11.77],[-65.14,-11.75],[-65.12,-11.74],[-65.09,-11.74],[-65.04,-11.83],[-65.03,-11.85],[-65,-11.92],[-64.99,-11.98],[-64.91,-12.01],[-64.83,-12.03],[-64.78,-12.06],[-64.69,-12.15],[-64.61,-12.2],[-64.51,-12.25],[-64.48,-12.33],[-64.42,-12.44],[-64.26,-12.48],[-64.06,-12.51],[-63.94,-12.53],[-63.79,-12.47],[-63.69,-12.48],[-63.59,-12.52],[-63.54,-12.55],[-63.47,-12.61],[-63.35,-12.68],[-63.25,-12.71],[-63.18,-12.67],[-63.12,-12.65],[-63.07,-12.67],[-63.04,-12.75],[-63.02,-12.81],[-62.96,-12.85],[-62.84,-12.95],[-62.77,-13],[-62.69,-12.99],[-62.53,-13.06],[-62.35,-13.13],[-62.26,-13.14],[-62.18,-13.13],[-62.12,-13.16],[-62.09,-13.24],[-61.94,-13.41],[-61.87,-13.47],[-61.79,-13.53],[-61.58,-13.52],[-61.51,-13.54],[-61.42,-13.53],[-61.13,-13.5],[-61.08,-13.49],[-60.91,-13.56],[-60.72,-13.66],[-60.6,-13.75],[-60.51,-13.79],[-60.46,-13.86],[-60.42,-13.94],[-60.4,-14.02],[-60.43,-14.1],[-60.46,-14.13],[-60.47,-14.18],[-60.46,-14.26],[-60.4,-14.33],[-60.37,-14.42],[-60.34,-14.57],[-60.3,-14.62],[-60.27,-15.09],[-60.4,-15.09],[-60.58,-15.1],[-60.53,-15.14],[-60.38,-15.32],[-60.24,-15.48],[-60.22,-15.74],[-60.21,-15.9],[-60.19,-16.13],[-60.18,-16.27],[-59.83,-16.28],[-59.43,-16.3],[-58.96,-16.31],[-58.54,-16.33],[-58.5,-16.33],[-58.42,-16.31],[-58.38,-16.28],[-58.35,-16.28],[-58.34,-16.34],[-58.35,-16.41],[-58.35,-16.49],[-58.47,-16.65],[-58.48,-16.7],[-58.46,-16.91],[-58.42,-17.08],[-58.4,-17.23],[-58.35,-17.28],[-58.21,-17.36],[-57.99,-17.51],[-57.91,-17.53],[-57.83,-17.51],[-57.79,-17.57],[-57.78,-17.67],[-57.66,-17.95],[-57.59,-18.12],[-57.55,-18.18],[-57.5,-18.21],[-57.51,-18.24],[-57.55,-18.25],[-57.57,-18.28],[-57.64,-18.48],[-57.72,-18.73],[-57.78,-18.91],[-57.73,-18.92],[-57.73,-18.97],[-57.72,-19.04],[-57.78,-19.05],[-57.8,-19.08],[-57.87,-19.23],[-57.97,-19.42],[-58.07,-19.63],[-58.13,-19.74],[-58.03,-19.83],[-57.86,-19.98],[-57.89,-20.02],[-57.96,-20.04],[-58.02,-20.06],[-58.07,-20.11],[-58.09,-20.15],[-58.16,-20.16]]]}},
{"type":"Feature","properties":{"name":"Brazil","iso_a2":"BR","iso_a3":"BRA","iso_n3":"076"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-48.49,-27.77],[-48.55,-27.81],[-48.54,-27.57],[-48.51,-27.5],[-48.46,-27.44],[-48.41,-27.4],[-48.38,-27.45],[-48.41,-27.57],[-48.5,-27.71],[-48.49,-27.77]]],[[[-48.58,-26.4],[-48.6,-26.41],[-48.67,-26.29],[-48.54,-26.17],[-48.5,-26.22],[-48.53,-26.31],[-48.57,-26.38],[-48.58,-26.4]]],[[[-45.26,-23.89],[-45.26,-23.94],[-45.3,-23.91],[-45.41,-23.93],[-45.45,-23.9],[-45.3,-23.73],[-45.27,-23.75],[-45.25,-23.78],[-45.23,-23.83],[-45.25,-23.85],[-45.26,-23.89]]],[[[-44.13,-23.14],[-44.1,-23.17],[-44.16,-23.17],[-44.22,-23.19],[-44.32,-23.21],[-44.36,-23.17],[-44.27,-23.12],[-44.24,-23.07],[-44.22,-23.08],[-44.19,-23.11],[-44.13,-23.14]]],[[[-38.9,-13.47],[-38.94,-13.53],[-38.98,-13.52],[-38.99,-13.48],[-39.02,-13.45],[-39.01,-13.42],[-38.98,-13.4],[-38.91,-13.4],[-38.9,-13.47]]],[[[-38.74,-13.1],[-38.78,-13.12],[-38.79,-13.06],[-38.68,-12.97],[-38.67,-12.88],[-38.61,-12.92],[-38.6,-12.97],[-38.6,-12.99],[-38.74,-13.1]]],[[[-44.5,-2.94],[-44.6,-3.04],[-44.57,-2.92],[-44.58,-2.85],[-44.57,-2.78],[-44.5,-2.73],[-44.48,-2.72],[-44.49,-2.79],[-44.48,-2.81],[-44.5,-2.94]]],[[[-44.88,-1.32],[-44.95,-1.37],[-44.97,-1.39],[-45.02,-1.37],[-45.01,-1.34],[-45,-1.35],[-44.98,-1.27],[-44.89,-1.28],[-44.88,-1.32]]],[[[-51.83,-1.43],[-51.94,-1.45],[-51.8,-1.2],[-51.68,-1.09],[-51.68,-0.86],[-51.55,-0.65],[-51.42,-0.57],[-51.25,-0.54],[-51.16,-0.67],[-51.28,-1.02],[-51.31,-1.02],[-51.47,-1.21],[-51.64,-1.34],[-51.83,-1.43]]],[[[-49.63,-0.23],[-49.54,-0.23],[-49.4,-0.21],[-49.31,-0.17],[-49.22,-0.16],[-49.12,-0.16],[-48.79,-0.22],[-48.59,-0.23],[-48.52,-0.25],[-48.44,-0.27],[-48.39,-0.3],[-48.38,-0.35],[-48.43,-0.44],[-48.46,-0.53],[-48.5,-0.66],[-48.52,-0.69],[-48.57,-0.68],[-48.54,-0.8],[-48.55,-0.85],[-48.57,-0.89],[-48.62,-0.99],[-48.7,-1.11],[-48.73,-1.13],[-48.79,-1.17],[-48.84,-1.23],[-48.83,-1.28],[-48.8,-1.33],[-48.83,-1.39],[-48.93,-1.48],[-48.99,-1.5],[-49.04,-1.51],[-49.09,-1.51],[-49.17,-1.41],[-49.18,-1.48],[-49.2,-1.56],[-49.23,-1.6],[-49.34,-1.6],[-49.41,-1.56],[-49.51,-1.51],[-49.53,-1.63],[-49.59,-1.71],[-49.65,-1.74],[-49.75,-1.76],[-49.81,-1.79],[-49.91,-1.76],[-50.01,-1.71],[-50.07,-1.7],[-50.11,-1.75],[-50.34,-1.76],[-50.44,-1.8],[-50.51,-1.79],[-50.6,-1.7],[-50.62,-1.64],[-50.67,-1.52],[-50.72,-1.37],[-50.76,-1.24],[-50.73,-1.13],[-50.67,-1.13],[-50.6,-1.15],[-50.58,-1.14],[-50.58,-1.1],[-50.59,-1.07],[-50.71,-1.08],[-50.78,-1.01],[-50.8,-0.91],[-50.78,-0.69],[-50.77,-0.65],[-50.72,-0.58],[-50.7,-0.53],[-50.72,-0.47],[-50.69,-0.36],[-50.65,-0.27],[-50.46,-0.16],[-50.25,-0.12],[-49.63,-0.23]]],[[[-50.65,-0.13],[-50.93,-0.33],[-51.02,-0.26],[-51.04,-0.23],[-51.02,-0.19],[-51.03,-0.17],[-51,-0.11],[-50.84,-0.05],[-50.77,-0.04],[-50.67,-0.06],[-50.65,-0.11],[-50.65,-0.13]]],[[[-49.44,-0.11],[-49.71,-0.14],[-49.83,-0.09],[-49.8,-0.05],[-49.71,0.02],[-49.6,0.06],[-49.5,0.08],[-49.4,0.06],[-49.37,0],[-49.38,-0.06],[-49.44,-0.11]]],[[[-49.74,0.27],[-49.7,0.22],[-49.84,0.01],[-49.92,-0.02],[-50,-0.03],[-50.11,0.03],[-50.29,0.03],[-50.34,0.04],[-50.35,0.13],[-50.27,0.23],[-50.13,0.23],[-49.88,0.3],[-49.74,0.27]]],[[[-50.43,0.14],[-50.44,-0.01],[-50.62,0.05],[-50.61,0.2],[-50.53,0.25],[-50.45,0.33],[-50.43,0.42],[-50.42,0.56],[-50.4,0.58],[-50.37,0.59],[-50.35,0.58],[-50.34,0.38],[-50.33,0.26],[-50.43,0.14]]],[[[-50.15,0.39],[-50.26,0.36],[-50.28,0.39],[-50.28,0.52],[-50.25,0.59],[-50.11,0.6],[-50.1,0.62],[-50.06,0.64],[-50.04,0.59],[-50.04,0.52],[-50.15,0.39]]],[[[-50.3,1.94],[-50.4,1.89],[-50.46,1.91],[-50.51,2.03],[-50.49,2.13],[-50.42,2.16],[-50.36,2.15],[-50.34,2.14],[-50.29,1.98],[-50.3,1.94]]],[[[-60.24,5.26],[-60.18,5.24],[-60.14,5.24],[-60.11,5.19],[-60.08,5.14],[-59.99,5.08],[-60,4.99],[-60.02,4.91],[-60.03,4.81],[-60.03,4.74],[-60.07,4.67],[-60.12,4.6],[-60.14,4.57],[-60.15,4.53],[-60.11,4.51],[-60.05,4.5],[-59.96,4.5],[-59.91,4.48],[-59.83,4.48],[-59.75,4.42],[-59.7,4.38],[-59.7,4.35],[-59.73,4.29],[-59.74,4.23],[-59.72,4.19],[-59.69,4.16],[-59.62,4.02],[-59.59,3.98],[-59.56,3.96],[-59.55,3.93],[-59.58,3.88],[-59.6,3.82],[-59.67,3.75],[-59.68,3.7],[-59.73,3.67],[-59.85,3.59],[-59.83,3.46],[-59.83,3.4],[-59.83,3.35],[-59.87,3.28],[-59.95,3.09],[-59.97,2.99],[-60,2.77],[-59.99,2.69],[-59.96,2.59],[-59.89,2.36],[-59.85,2.33],[-59.76,2.27],[-59.74,2.12],[-59.75,1.96],[-59.76,1.9],[-59.74,1.87],[-59.7,1.86],[-59.67,1.84],[-59.66,1.8],[-59.67,1.75],[-59.6,1.72],[-59.54,1.7],[-59.48,1.63],[-59.38,1.53],[-59.34,1.51],[-59.32,1.46],[-59.23,1.38],[-59.1,1.34],[-58.97,1.3],[-58.92,1.25],[-58.86,1.2],[-58.82,1.2],[-58.79,1.21],[-58.73,1.25],[-58.68,1.28],[-58.61,1.28],[-58.51,1.28],[-58.5,1.31],[-58.49,1.35],[-58.51,1.44],[-58.47,1.47],[-58.4,1.48],[-58.38,1.53],[-58.36,1.56],[-58.34,1.59],[-58.31,1.59],[-58.28,1.57],[-58.23,1.56],[-58.17,1.55],[-58.14,1.52],[-58.09,1.51],[-58.03,1.52],[-58.01,1.54],[-58,1.57],[-57.98,1.65],[-57.95,1.65],[-57.87,1.67],[-57.8,1.7],[-57.69,1.7],[-57.59,1.7],[-57.55,1.73],[-57.5,1.77],[-57.41,1.91],[-57.37,1.94],[-57.32,1.96],[-57.28,1.96],[-57.19,1.98],[-57.12,2.01],[-57.09,2.01],[-57.04,1.94],[-57.01,1.92],[-56.97,1.92],[-56.84,1.88],[-56.77,1.89],[-56.69,1.91],[-56.62,1.92],[-56.56,1.91],[-56.53,1.93],[-56.48,1.94],[-56.45,1.93],[-56.39,1.92],[-56.23,1.89],[-56.02,1.84],[-55.96,1.86],[-55.93,1.89],[-55.92,1.98],[-55.92,2.04],[-55.96,2.1],[-56.02,2.16],[-56.07,2.24],[-56.14,2.26],[-56.13,2.3],[-56.09,2.34],[-56.05,2.36],[-56.02,2.39],[-55.99,2.5],[-55.98,2.52],[-55.96,2.52],[-55.94,2.52],[-55.89,2.49],[-55.73,2.41],[-55.66,2.42],[-55.39,2.44],[-55.34,2.49],[-55.29,2.5],[-55.19,2.55],[-55.15,2.55],[-55.11,2.54],[-55.07,2.55],[-55.01,2.59],[-54.98,2.6],[-54.97,2.55],[-54.93,2.5],[-54.88,2.45],[-54.85,2.44],[-54.77,2.45],[-54.72,2.44],[-54.7,2.4],[-54.7,2.36],[-54.66,2.33],[-54.62,2.33],[-54.59,2.31],[-54.55,2.29],[-54.52,2.25],[-54.43,2.21],[-54.29,2.15],[-54.23,2.15],[-54.17,2.14],[-54.13,2.12],[-54.09,2.15],[-53.95,2.23],[-53.88,2.28],[-53.83,2.31],[-53.79,2.35],[-53.77,2.35],[-53.75,2.34],[-53.73,2.31],[-53.68,2.29],[-53.56,2.26],[-53.51,2.25],[-53.43,2.28],[-53.37,2.32],[-53.33,2.34],[-53.29,2.3],[-53.25,2.23],[-53.23,2.2],[-53.18,2.21],[-53.08,2.2],[-53.01,2.18],[-52.96,2.18],[-52.9,2.21],[-52.87,2.27],[-52.78,2.32],[-52.7,2.36],[-52.65,2.43],[-52.58,2.53],[-52.56,2.57],[-52.55,2.65],[-52.46,2.86],[-52.42,2.9],[-52.4,2.97],[-52.36,3.05],[-52.36,3.12],[-52.33,3.18],[-52.27,3.24],[-52.23,3.27],[-52.16,3.36],[-52.12,3.45],[-52,3.65],[-51.99,3.7],[-51.94,3.74],[-51.93,3.78],[-51.88,3.83],[-51.83,3.87],[-51.81,3.93],[-51.77,3.99],[-51.68,4.04],[-51.65,4.06],[-51.56,4.23],[-51.55,4.31],[-51.46,4.31],[-51.33,4.22],[-51.22,4.09],[-51.08,3.67],[-51.05,3.28],[-50.99,3.08],[-50.83,2.65],[-50.82,2.57],[-50.79,2.48],[-50.74,2.38],[-50.68,2.21],[-50.68,2.18],[-50.71,2.13],[-50.66,2.13],[-50.61,2.1],[-50.58,2],[-50.53,1.93],[-50.46,1.83],[-50.3,1.8],[-50.19,1.79],[-50.05,1.73],[-49.96,1.66],[-49.88,1.42],[-49.91,1.27],[-49.9,1.16],[-49.94,1.12],[-50.05,1.05],[-50.07,1.02],[-50.29,0.84],[-50.34,0.75],[-50.46,0.64],[-50.58,0.42],[-50.76,0.22],[-50.82,0.17],[-50.91,0.16],[-50.97,0.13],[-51.1,-0.03],[-51.28,-0.09],[-51.3,-0.18],[-51.4,-0.39],[-51.5,-0.51],[-51.56,-0.55],[-51.7,-0.76],[-51.72,-0.86],[-51.72,-1.02],[-51.82,-1.12],[-51.92,-1.18],[-51.93,-1.32],[-51.98,-1.37],[-52.02,-1.4],[-52.23,-1.36],[-52.55,-1.51],[-52.66,-1.55],[-52.31,-1.56],[-52.2,-1.64],[-51.95,-1.59],[-51.65,-1.39],[-51.53,-1.35],[-51.3,-1.22],[-51.2,-1.14],[-51.03,-1.03],[-50.99,-0.99],[-50.89,-0.94],[-50.84,-1],[-50.84,-1.04],[-50.92,-1.12],[-50.9,-1.16],[-50.84,-1.23],[-50.83,-1.31],[-50.82,-1.38],[-50.79,-1.49],[-50.68,-1.64],[-50.68,-1.69],[-50.69,-1.76],[-50.64,-1.82],[-50.59,-1.85],[-50.4,-2.02],[-50.26,-1.92],[-50.17,-1.9],[-50.12,-1.86],[-50,-1.83],[-49.9,-1.87],[-49.72,-1.93],[-49.59,-1.87],[-49.31,-1.73],[-49.4,-1.97],[-49.46,-2.19],[-49.51,-2.28],[-49.55,-2.52],[-49.6,-2.58],[-49.64,-2.66],[-49.58,-2.63],[-49.52,-2.6],[-49.46,-2.5],[-49.41,-2.34],[-49.21,-1.92],[-49.15,-1.88],[-48.99,-1.83],[-48.71,-1.49],[-48.6,-1.49],[-48.53,-1.57],[-48.46,-1.61],[-48.45,-1.52],[-48.35,-1.48],[-48.45,-1.44],[-48.47,-1.39],[-48.48,-1.32],[-48.41,-1.23],[-48.45,-1.15],[-48.31,-1.04],[-48.32,-0.96],[-48.27,-0.9],[-48.2,-0.83],[-48.13,-0.8],[-48.12,-0.74],[-48.07,-0.71],[-48.03,-0.71],[-47.96,-0.77],[-47.88,-0.69],[-47.81,-0.66],[-47.77,-0.68],[-47.73,-0.71],[-47.69,-0.72],[-47.65,-0.72],[-47.56,-0.67],[-47.47,-0.75],[-47.42,-0.77],[-47.43,-0.72],[-47.46,-0.68],[-47.44,-0.65],[-47.4,-0.63],[-47.27,-0.65],[-47.2,-0.68],[-47.13,-0.75],[-47.02,-0.75],[-46.94,-0.74],[-46.89,-0.78],[-46.81,-0.78],[-46.77,-0.84],[-46.64,-0.92],[-46.62,-0.97],[-46.52,-1],[-46.42,-1.03],[-46.32,-1.04],[-46.22,-1.03],[-46.21,-1.1],[-46.14,-1.12],[-46.04,-1.1],[-45.97,-1.19],[-45.78,-1.25],[-45.64,-1.35],[-45.56,-1.33],[-45.46,-1.36],[-45.35,-1.57],[-45.33,-1.72],[-45.28,-1.7],[-45.24,-1.63],[-45.18,-1.51],[-45.08,-1.47],[-45.03,-1.51],[-44.92,-1.59],[-44.83,-1.67],[-44.79,-1.72],[-44.72,-1.73],[-44.78,-1.8],[-44.72,-1.79],[-44.65,-1.75],[-44.59,-1.84],[-44.55,-1.95],[-44.54,-2.05],[-44.58,-2.11],[-44.62,-2.15],[-44.66,-2.23],[-44.71,-2.24],[-44.76,-2.27],[-44.7,-2.32],[-44.66,-2.37],[-44.58,-2.23],[-44.52,-2.19],[-44.44,-2.17],[-44.39,-2.27],[-44.38,-2.37],[-44.52,-2.41],[-44.52,-2.48],[-44.56,-2.52],[-44.59,-2.57],[-44.61,-2.68],[-44.64,-2.76],[-44.72,-3.14],[-44.72,-3.2],[-44.62,-3.14],[-44.44,-2.94],[-44.38,-2.74],[-44.31,-2.54],[-44.23,-2.47],[-44.18,-2.47],[-44.11,-2.49],[-44.1,-2.56],[-44.11,-2.6],[-44.19,-2.7],[-44.23,-2.75],[-44.19,-2.81],[-44.01,-2.64],[-43.93,-2.58],[-43.86,-2.6],[-43.73,-2.52],[-43.46,-2.5],[-43.43,-2.41],[-43.38,-2.38],[-43.23,-2.39],[-42.94,-2.47],[-42.83,-2.53],[-42.68,-2.59],[-42.59,-2.66],[-42.25,-2.79],[-42,-2.81],[-41.88,-2.75],[-41.72,-2.81],[-41.64,-2.88],[-41.48,-2.92],[-41.32,-2.94],[-41.19,-2.89],[-40.88,-2.87],[-40.47,-2.8],[-40.24,-2.81],[-39.96,-2.86],[-39.77,-2.99],[-39.61,-3.06],[-39.51,-3.13],[-39.35,-3.2],[-39.01,-3.39],[-38.9,-3.5],[-38.69,-3.65],[-38.48,-3.72],[-38.36,-3.88],[-38.27,-3.95],[-38.05,-4.22],[-37.8,-4.4],[-37.63,-4.59],[-37.3,-4.71],[-37.17,-4.91],[-36.95,-4.94],[-36.86,-4.97],[-36.75,-5.05],[-36.59,-5.1],[-36.39,-5.08],[-36.16,-5.09],[-35.98,-5.05],[-35.55,-5.13],[-35.48,-5.17],[-35.39,-5.25],[-35.24,-5.57],[-35.14,-5.92],[-35.1,-6.19],[-34.99,-6.39],[-34.93,-6.79],[-34.88,-6.91],[-34.88,-7],[-34.83,-7.02],[-34.81,-7.29],[-34.82,-7.39],[-34.86,-7.53],[-34.86,-7.6],[-34.85,-7.63],[-34.87,-7.69],[-34.88,-7.75],[-34.84,-7.87],[-34.83,-7.97],[-34.89,-8.09],[-34.97,-8.41],[-35.16,-8.93],[-35.34,-9.23],[-35.6,-9.54],[-35.76,-9.7],[-35.83,-9.72],[-35.89,-9.69],[-35.85,-9.77],[-35.89,-9.85],[-36.05,-10.08],[-36.22,-10.23],[-36.4,-10.48],[-36.41,-10.49],[-36.64,-10.59],[-36.77,-10.67],[-36.94,-10.82],[-37.09,-11.05],[-37.13,-11.08],[-37.18,-11.07],[-37.18,-11.19],[-37.32,-11.38],[-37.36,-11.4],[-37.35,-11.35],[-37.33,-11.31],[-37.32,-11.27],[-37.32,-11.22],[-37.36,-11.25],[-37.44,-11.39],[-37.41,-11.5],[-37.47,-11.65],[-37.69,-12.1],[-37.96,-12.48],[-38.02,-12.59],[-38.24,-12.84],[-38.4,-12.97],[-38.45,-12.97],[-38.5,-12.96],[-38.52,-12.76],[-38.65,-12.64],[-38.69,-12.62],[-38.74,-12.75],[-38.79,-12.78],[-38.85,-12.79],[-38.78,-12.84],[-38.76,-12.91],[-38.83,-13.03],[-38.84,-13.15],[-38.96,-13.27],[-39.03,-13.37],[-39.07,-13.48],[-39.09,-13.59],[-39.03,-13.56],[-39.01,-13.58],[-38.99,-13.62],[-39,-13.66],[-39.04,-13.76],[-39.03,-13.99],[-39.05,-14.04],[-39.01,-14.1],[-38.97,-14],[-38.94,-14.03],[-39.06,-14.65],[-39.01,-14.94],[-39,-15.25],[-38.94,-15.56],[-38.89,-15.84],[-38.88,-15.86],[-38.96,-16.19],[-39.06,-16.5],[-39.13,-16.76],[-39.16,-17.04],[-39.2,-17.18],[-39.22,-17.32],[-39.17,-17.64],[-39.15,-17.7],[-39.28,-17.85],[-39.41,-17.92],[-39.49,-17.99],[-39.65,-18.25],[-39.74,-18.64],[-39.74,-18.85],[-39.7,-19.28],[-39.73,-19.45],[-39.78,-19.57],[-39.84,-19.65],[-40,-19.74],[-40.14,-19.97],[-40.2,-20.21],[-40.3,-20.29],[-40.32,-20.43],[-40.4,-20.57],[-40.6,-20.78],[-40.73,-20.85],[-40.79,-20.91],[-40.83,-21.03],[-40.95,-21.24],[-41.05,-21.51],[-41.02,-21.6],[-41.02,-21.61],[-40.99,-21.92],[-41,-22],[-41.12,-22.08],[-41.58,-22.24],[-41.71,-22.31],[-41.98,-22.58],[-42,-22.64],[-41.99,-22.74],[-41.94,-22.79],[-41.99,-22.85],[-42.04,-22.95],[-42.12,-22.94],[-42.58,-22.94],[-42.83,-22.97],[-42.96,-22.97],[-43.02,-22.94],[-43.08,-22.9],[-43.1,-22.85],[-43.07,-22.77],[-43.09,-22.72],[-43.15,-22.73],[-43.23,-22.75],[-43.24,-22.8],[-43.24,-22.83],[-43.21,-22.88],[-43.19,-22.94],[-43.22,-22.99],[-43.37,-23],[-43.53,-23.05],[-43.74,-23.07],[-43.9,-23.1],[-43.97,-23.06],[-43.9,-23.04],[-43.79,-23.05],[-43.68,-23.01],[-43.7,-22.97],[-43.87,-22.91],[-44.05,-22.94],[-44.15,-23.01],[-44.37,-23],[-44.64,-23.06],[-44.68,-23.11],[-44.67,-23.21],[-44.62,-23.23],[-44.57,-23.27],[-44.62,-23.32],[-44.67,-23.34],[-44.95,-23.38],[-45.22,-23.58],[-45.33,-23.6],[-45.42,-23.69],[-45.43,-23.76],[-45.46,-23.8],[-45.53,-23.8],[-45.66,-23.76],[-45.84,-23.76],[-45.97,-23.8],[-46.63,-24.11],[-46.87,-24.24],[-47.14,-24.49],[-47.59,-24.78],[-47.83,-24.95],[-47.88,-25],[-47.91,-25],[-47.99,-25.04],[-47.96,-25.07],[-47.91,-25.07],[-47.93,-25.17],[-48.02,-25.24],[-48.2,-25.42],[-48.24,-25.4],[-48.19,-25.31],[-48.27,-25.31],[-48.4,-25.27],[-48.46,-25.31],[-48.43,-25.4],[-48.48,-25.44],[-48.56,-25.45],[-48.64,-25.44],[-48.73,-25.37],[-48.69,-25.49],[-48.51,-25.52],[-48.43,-25.55],[-48.4,-25.6],[-48.55,-25.82],[-48.67,-25.84],[-48.68,-25.88],[-48.61,-25.88],[-48.58,-25.94],[-48.62,-26.18],[-48.68,-26.23],[-48.71,-26.23],[-48.75,-26.27],[-48.7,-26.35],[-48.65,-26.41],[-48.66,-26.52],[-48.68,-26.61],[-48.68,-26.7],[-48.62,-26.88],[-48.59,-27.06],[-48.57,-27.12],[-48.55,-27.2],[-48.6,-27.26],[-48.57,-27.37],[-48.64,-27.56],[-48.61,-27.83],[-48.62,-28.08],[-48.65,-28.21],[-48.69,-28.31],[-48.8,-28.44],[-48.8,-28.58],[-49.02,-28.7],[-49.27,-28.87],[-49.5,-29.08],[-49.75,-29.36],[-50.03,-29.8],[-50.3,-30.43],[-50.62,-30.9],[-50.75,-31.07],[-50.92,-31.26],[-51.15,-31.48],[-51.46,-31.7],[-51.8,-31.9],[-51.92,-31.99],[-52.04,-32.11],[-52.07,-32.06],[-52.04,-31.98],[-52.06,-31.91],[-52.06,-31.83],[-52,-31.82],[-51.89,-31.87],[-51.84,-31.83],[-51.8,-31.8],[-51.68,-31.77],[-51.45,-31.56],[-51.27,-31.48],[-51.17,-31.34],[-51.16,-31.27],[-51.16,-31.12],[-51.11,-31.08],[-50.98,-31.09],[-50.95,-31.05],[-50.97,-31.01],[-50.94,-30.9],[-50.77,-30.81],[-50.69,-30.7],[-50.72,-30.43],[-50.69,-30.41],[-50.61,-30.46],[-50.58,-30.44],[-50.55,-30.32],[-50.56,-30.25],[-50.65,-30.24],[-50.93,-30.37],[-51.02,-30.37],[-51.04,-30.26],[-51.18,-30.21],[-51.23,-30.12],[-51.25,-30.06],[-51.3,-30.03],[-51.3,-30.14],[-51.28,-30.24],[-51.16,-30.36],[-51.19,-30.41],[-51.25,-30.47],[-51.29,-30.59],[-51.28,-30.75],[-51.32,-30.7],[-51.36,-30.67],[-51.38,-30.85],[-51.46,-30.91],[-51.49,-30.98],[-51.46,-31.05],[-51.51,-31.1],[-51.72,-31.24],[-51.93,-31.34],[-51.97,-31.38],[-51.99,-31.49],[-52.03,-31.6],[-52.12,-31.69],[-52.19,-31.89],[-52.19,-31.97],[-52.17,-32.09],[-52.13,-32.17],[-52.19,-32.22],[-52.27,-32.32],[-52.34,-32.44],[-52.51,-32.88],[-52.65,-33.14],[-52.76,-33.27],[-52.92,-33.4],[-53.37,-33.74],[-53.4,-33.74],[-53.46,-33.71],[-53.52,-33.68],[-53.53,-33.66],[-53.54,-33.62],[-53.53,-33.5],[-53.53,-33.17],[-53.51,-33.11],[-53.48,-33.07],[-53.4,-33.01],[-53.31,-32.93],[-53.21,-32.82],[-53.13,-32.74],[-53.16,-32.68],[-53.23,-32.63],[-53.36,-32.58],[-53.49,-32.5],[-53.6,-32.4],[-53.65,-32.3],[-53.7,-32.19],[-53.75,-32.1],[-53.76,-32.06],[-53.81,-32.04],[-53.88,-31.99],[-53.92,-31.95],[-53.99,-31.93],[-54.1,-31.9],[-54.22,-31.86],[-54.37,-31.75],[-54.48,-31.62],[-54.53,-31.54],[-54.59,-31.49],[-54.9,-31.39],[-55.04,-31.28],[-55.09,-31.31],[-55.17,-31.28],[-55.25,-31.23],[-55.28,-31.18],[-55.31,-31.14],[-55.35,-31.09],[-55.37,-31.05],[-55.45,-30.96],[-55.56,-30.88],[-55.6,-30.85],[-55.63,-30.86],[-55.65,-30.89],[-55.67,-30.92],[-55.71,-30.95],[-55.76,-30.99],[-55.81,-31.04],[-55.87,-31.07],[-55.95,-31.08],[-56,-31.08],[-56.02,-31.06],[-56.02,-30.99],[-56,-30.84],[-56.04,-30.78],[-56.11,-30.71],[-56.18,-30.63],[-56.41,-30.45],[-56.72,-30.19],[-56.83,-30.11],[-56.94,-30.1],[-57.03,-30.11],[-57.12,-30.14],[-57.19,-30.26],[-57.21,-30.28],[-57.38,-30.28],[-57.55,-30.26],[-57.61,-30.19],[-57.56,-30.14],[-57.41,-30.03],[-57.32,-29.94],[-57.3,-29.86],[-57.22,-29.78],[-57.09,-29.72],[-56.94,-29.59],[-56.77,-29.42],[-56.67,-29.29],[-56.64,-29.2],[-56.57,-29.14],[-56.48,-29.09],[-56.39,-29],[-56.32,-28.85],[-56.23,-28.74],[-56.1,-28.65],[-56.03,-28.58],[-56.02,-28.52],[-55.98,-28.49],[-55.93,-28.47],[-55.9,-28.44],[-55.91,-28.4],[-55.89,-28.37],[-55.86,-28.35],[-55.81,-28.36],[-55.73,-28.39],[-55.69,-28.38],[-55.67,-28.34],[-55.69,-28.3],[-55.75,-28.26],[-55.73,-28.2],[-55.58,-28.12],[-55.48,-28.09],[-55.41,-28.04],[-55.35,-27.96],[-55.24,-27.9],[-55.1,-27.87],[-55.06,-27.84],[-55.07,-27.8],[-55.04,-27.77],[-54.96,-27.75],[-54.91,-27.71],[-54.9,-27.65],[-54.88,-27.6],[-54.83,-27.55],[-54.78,-27.53],[-54.72,-27.54],[-54.67,-27.53],[-54.62,-27.48],[-54.55,-27.45],[-54.48,-27.46],[-54.45,-27.45],[-54.33,-27.42],[-54.26,-27.38],[-54.21,-27.29],[-54.16,-27.25],[-54.11,-27.27],[-54.04,-27.24],[-53.94,-27.16],[-53.92,-27.16],[-53.84,-27.12],[-53.76,-26.98],[-53.72,-26.88],[-53.73,-26.8],[-53.75,-26.75],[-53.74,-26.67],[-53.72,-26.44],[-53.71,-26.35],[-53.67,-26.29],[-53.67,-26.23],[-53.75,-26.08],[-53.82,-25.96],[-53.86,-25.75],[-53.89,-25.67],[-53.95,-25.65],[-54.01,-25.58],[-54.09,-25.57],[-54.12,-25.55],[-54.15,-25.52],[-54.21,-25.53],[-54.25,-25.57],[-54.33,-25.57],[-54.38,-25.59],[-54.44,-25.62],[-54.5,-25.61],[-54.54,-25.58],[-54.62,-25.58],[-54.61,-25.43],[-54.47,-25.22],[-54.44,-25.12],[-54.45,-25.07],[-54.41,-24.87],[-54.31,-24.53],[-54.28,-24.31],[-54.32,-24.2],[-54.32,-24.13],[-54.27,-24.07],[-54.24,-24.05],[-54.37,-23.97],[-54.44,-23.9],[-54.53,-23.85],[-54.63,-23.81],[-54.67,-23.83],[-54.72,-23.85],[-54.82,-23.89],[-54.93,-23.95],[-54.98,-23.97],[-55.08,-24],[-55.19,-24.02],[-55.29,-24],[-55.37,-23.99],[-55.42,-23.95],[-55.44,-23.87],[-55.44,-23.79],[-55.46,-23.69],[-55.52,-23.63],[-55.54,-23.58],[-55.54,-23.52],[-55.53,-23.46],[-55.52,-23.42],[-55.53,-23.36],[-55.55,-23.32],[-55.55,-23.25],[-55.56,-23.15],[-55.6,-23.09],[-55.62,-23.03],[-55.62,-22.96],[-55.65,-22.89],[-55.65,-22.81],[-55.63,-22.74],[-55.62,-22.67],[-55.65,-22.62],[-55.7,-22.59],[-55.75,-22.51],[-55.75,-22.41],[-55.8,-22.35],[-55.85,-22.31],[-55.91,-22.31],[-55.99,-22.28],[-56.07,-22.28],[-56.19,-22.28],[-56.25,-22.26],[-56.28,-22.23],[-56.35,-22.18],[-56.39,-22.09],[-56.45,-22.08],[-56.52,-22.1],[-56.55,-22.14],[-56.58,-22.18],[-56.63,-22.23],[-56.7,-22.23],[-56.78,-22.26],[-56.84,-22.26],[-56.94,-22.27],[-57.03,-22.24],[-57.14,-22.22],[-57.24,-22.2],[-57.33,-22.22],[-57.39,-22.2],[-57.48,-22.19],[-57.57,-22.18],[-57.64,-22.13],[-57.72,-22.1],[-57.76,-22.11],[-57.82,-22.14],[-57.88,-22.14],[-57.96,-22.11],[-57.99,-22.05],[-57.98,-22.01],[-57.96,-21.97],[-57.93,-21.91],[-57.95,-21.85],[-57.94,-21.8],[-57.93,-21.75],[-57.92,-21.7],[-57.93,-21.65],[-57.93,-21.6],[-57.94,-21.55],[-57.95,-21.49],[-57.91,-21.42],[-57.87,-21.36],[-57.89,-21.3],[-57.89,-21.27],[-57.86,-21.21],[-57.83,-21.13],[-57.83,-21],[-57.86,-20.92],[-57.89,-20.9],[-57.9,-20.87],[-57.88,-20.84],[-57.9,-20.81],[-57.91,-20.78],[-57.89,-20.75],[-57.92,-20.69],[-57.96,-20.67],[-57.98,-20.66],[-58,-20.59],[-58.01,-20.52],[-58,-20.47],[-58.03,-20.42],[-58.06,-20.39],[-58.09,-20.33],[-58.12,-20.29],[-58.14,-20.24],[-58.16,-20.16],[-58.09,-20.15],[-58.07,-20.11],[-58.02,-20.06],[-57.96,-20.04],[-57.89,-20.02],[-57.86,-19.98],[-58.03,-19.83],[-58.13,-19.74],[-58.07,-19.63],[-57.97,-19.42],[-57.87,-19.23],[-57.8,-19.08],[-57.78,-19.05],[-57.72,-19.04],[-57.73,-18.97],[-57.73,-18.92],[-57.78,-18.91],[-57.72,-18.73],[-57.64,-18.48],[-57.57,-18.28],[-57.55,-18.25],[-57.51,-18.24],[-57.5,-18.21],[-57.55,-18.18],[-57.59,-18.12],[-57.66,-17.95],[-57.78,-17.67],[-57.79,-17.57],[-57.83,-17.51],[-57.91,-17.53],[-57.99,-17.51],[-58.21,-17.36],[-58.35,-17.28],[-58.4,-17.23],[-58.42,-17.08],[-58.46,-16.91],[-58.48,-16.7],[-58.47,-16.65],[-58.35,-16.49],[-58.35,-16.41],[-58.34,-16.34],[-58.35,-16.28],[-58.38,-16.28],[-58.42,-16.31],[-58.5,-16.33],[-58.54,-16.33],[-58.96,-16.31],[-59.43,-16.3],[-59.83,-16.28],[-60.18,-16.27],[-60.19,-16.13],[-60.21,-15.9],[-60.22,-15.74],[-60.24,-15.48],[-60.38,-15.32],[-60.53,-15.14],[-60.58,-15.1],[-60.4,-15.09],[-60.27,-15.09],[-60.3,-14.62],[-60.34,-14.57],[-60.37,-14.42],[-60.4,-14.33],[-60.46,-14.26],[-60.47,-14.18],[-60.46,-14.13],[-60.43,-14.1],[-60.4,-14.02],[-60.42,-13.94],[-60.46,-13.86],[-60.51,-13.79],[-60.6,-13.75],[-60.72,-13.66],[-60.91,-13.56],[-61.08,-13.49],[-61.13,-13.5],[-61.42,-13.53],[-61.51,-13.54],[-61.58,-13.52],[-61.79,-13.53],[-61.87,-13.47],[-61.94,-13.41],[-62.09,-13.24],[-62.12,-13.16],[-62.18,-13.13],[-62.26,-13.14],[-62.35,-13.13],[-62.53,-13.06],[-62.69,-12.99],[-62.77,-13],[-62.84,-12.95],[-62.96,-12.85],[-63.02,-12.81],[-63.04,-12.75],[-63.07,-12.67],[-63.12,-12.65],[-63.18,-12.67],[-63.25,-12.71],[-63.35,-12.68],[-63.47,-12.61],[-63.54,-12.55],[-63.59,-12.52],[-63.69,-12.48],[-63.79,-12.47],[-63.94,-12.53],[-64.06,-12.51],[-64.26,-12.48],[-64.42,-12.44],[-64.48,-12.33],[-64.51,-12.25],[-64.61,-12.2],[-64.69,-12.15],[-64.78,-12.06],[-64.83,-12.03],[-64.91,-12.01],[-64.99,-11.98],[-65,-11.92],[-65.03,-11.85],[-65.04,-11.83],[-65.09,-11.74],[-65.12,-11.74],[-65.14,-11.75],[-65.16,-11.77],[-65.19,-11.75],[-65.19,-11.71],[-65.18,-11.65],[-65.21,-11.58],[-65.28,-11.51],[-65.32,-11.44],[-65.33,-11.36],[-65.34,-11.32],[-65.37,-11.29],[-65.39,-11.25],[-65.39,-11.18],[-65.37,-11.11],[-65.32,-11.02],[-65.33,-10.89],[-65.4,-10.71],[-65.44,-10.59],[-65.45,-10.51],[-65.44,-10.45],[-65.4,-10.39],[-65.31,-10.25],[-65.3,-10.15],[-65.32,-10.03],[-65.33,-9.94],[-65.31,-9.87],[-65.34,-9.79],[-65.4,-9.71],[-65.44,-9.71],[-65.49,-9.73],[-65.56,-9.8],[-65.64,-9.81],[-65.71,-9.77],[-65.92,-9.79],[-66.26,-9.83],[-66.4,-9.87],[-66.48,-9.89],[-66.58,-9.9],[-66.73,-9.98],[-67.11,-10.27],[-67.19,-10.31],[-67.28,-10.32],[-67.33,-10.36],[-67.42,-10.39],[-67.58,-10.51],[-67.67,-10.6],[-67.72,-10.68],[-67.79,-10.69],[-67.84,-10.66],[-67.99,-10.67],[-68.07,-10.7],[-68.16,-10.79],[-68.27,-10.93],[-68.31,-10.98],[-68.4,-11.02],[-68.5,-11.05],[-68.62,-11.11],[-68.68,-11.11],[-68.73,-11.12],[-68.77,-11.1],[-68.78,-11.04],[-68.85,-11.01],[-69,-10.99],[-69.23,-10.96],[-69.46,-10.95],[-69.58,-10.95],[-69.67,-10.95],[-69.84,-10.93],[-69.96,-10.93],[-70.07,-10.98],[-70.22,-11.05],[-70.29,-11.06],[-70.34,-11.07],[-70.39,-11.06],[-70.45,-11.02],[-70.53,-10.95],[-70.6,-10.98],[-70.64,-11.01],[-70.64,-10.84],[-70.64,-10.59],[-70.64,-10.36],[-70.64,-10.18],[-70.64,-9.97],[-70.64,-9.82],[-70.59,-9.77],[-70.57,-9.7],[-70.6,-9.62],[-70.59,-9.54],[-70.57,-9.49],[-70.54,-9.44],[-70.61,-9.46],[-70.64,-9.48],[-70.67,-9.52],[-70.76,-9.57],[-70.82,-9.63],[-70.88,-9.67],[-70.97,-9.77],[-71.04,-9.82],[-71.12,-9.85],[-71.24,-9.97],[-71.34,-9.99],[-71.61,-10.01],[-71.89,-10.01],[-72.14,-10.01],[-72.18,-10],[-72.18,-9.91],[-72.17,-9.84],[-72.26,-9.77],[-72.27,-9.69],[-72.29,-9.63],[-72.32,-9.56],[-72.38,-9.51],[-72.46,-9.49],[-72.61,-9.45],[-72.81,-9.41],[-73.01,-9.41],[-73.21,-9.41],[-73.09,-9.27],[-72.97,-9.12],[-72.97,-8.99],[-73.07,-8.88],[-73.12,-8.81],[-73.2,-8.72],[-73.3,-8.65],[-73.36,-8.57],[-73.35,-8.51],[-73.36,-8.48],[-73.4,-8.46],[-73.44,-8.43],[-73.49,-8.39],[-73.55,-8.35],[-73.55,-8.3],[-73.57,-8.25],[-73.61,-8.19],[-73.61,-8.15],[-73.64,-8.07],[-73.68,-8.02],[-73.72,-7.99],[-73.78,-7.94],[-73.77,-7.9],[-73.73,-7.88],[-73.71,-7.83],[-73.72,-7.78],[-73.77,-7.75],[-73.82,-7.74],[-73.89,-7.65],[-73.95,-7.61],[-73.98,-7.59],[-74,-7.56],[-73.98,-7.54],[-73.96,-7.51],[-73.95,-7.46],[-73.96,-7.42],[-73.96,-7.38],[-73.93,-7.37],[-73.89,-7.37],[-73.85,-7.35],[-73.8,-7.34],[-73.75,-7.34],[-73.72,-7.31],[-73.72,-7.26],[-73.76,-7.17],[-73.79,-7.14],[-73.8,-7.08],[-73.78,-6.97],[-73.76,-6.91],[-73.69,-6.83],[-73.5,-6.68],[-73.33,-6.57],[-73.24,-6.56],[-73.18,-6.53],[-73.14,-6.47],[-73.13,-6.4],[-73.14,-6.34],[-73.17,-6.26],[-73.21,-6.16],[-73.24,-6.1],[-73.21,-6.03],[-73.16,-5.93],[-73.07,-5.79],[-72.98,-5.63],[-72.97,-5.59],[-72.96,-5.5],[-72.92,-5.3],[-72.9,-5.2],[-72.91,-5.16],[-72.89,-5.12],[-72.83,-5.09],[-72.7,-5.07],[-72.61,-5.01],[-72.47,-4.9],[-72.35,-4.79],[-72.26,-4.75],[-72.08,-4.64],[-71.98,-4.57],[-71.94,-4.55],[-71.84,-4.5],[-71.67,-4.49],[-71.52,-4.47],[-71.44,-4.44],[-71.32,-4.42],[-71.24,-4.39],[-71.14,-4.39],[-70.97,-4.35],[-70.92,-4.3],[-70.87,-4.23],[-70.8,-4.17],[-70.72,-4.16],[-70.63,-4.17],[-70.53,-4.17],[-70.4,-4.15],[-70.34,-4.19],[-70.32,-4.25],[-70.24,-4.3],[-70.18,-4.3],[-70.13,-4.29],[-70.05,-4.33],[-70,-4.33],[-69.97,-4.3],[-69.97,-4.24],[-69.95,-4.2],[-69.91,-4],[-69.85,-3.66],[-69.79,-3.35],[-69.73,-3.02],[-69.67,-2.67],[-69.6,-2.31],[-69.55,-2.02],[-69.51,-1.77],[-69.48,-1.62],[-69.43,-1.42],[-69.42,-1.25],[-69.4,-1.19],[-69.41,-1.15],[-69.45,-1.09],[-69.45,-1.06],[-69.44,-1.03],[-69.45,-1],[-69.49,-0.97],[-69.52,-0.95],[-69.54,-0.92],[-69.55,-0.88],[-69.57,-0.84],[-69.58,-0.8],[-69.61,-0.76],[-69.62,-0.72],[-69.6,-0.68],[-69.59,-0.64],[-69.6,-0.6],[-69.61,-0.55],[-69.63,-0.51],[-69.67,-0.48],[-69.75,-0.45],[-69.83,-0.38],[-69.92,-0.32],[-70.04,-0.2],[-70.07,-0.14],[-70.07,0.02],[-70.07,0.19],[-70.06,0.45],[-70.05,0.58],[-69.99,0.59],[-69.93,0.59],[-69.86,0.6],[-69.81,0.61],[-69.76,0.63],[-69.72,0.65],[-69.67,0.67],[-69.64,0.66],[-69.6,0.68],[-69.56,0.7],[-69.53,0.72],[-69.47,0.73],[-69.42,0.7],[-69.39,0.67],[-69.36,0.65],[-69.33,0.66],[-69.31,0.65],[-69.28,0.63],[-69.25,0.63],[-69.21,0.63],[-69.17,0.64],[-69.16,0.64],[-69.15,0.66],[-69.16,0.69],[-69.18,0.71],[-69.17,0.75],[-69.17,0.8],[-69.16,0.86],[-69.19,0.9],[-69.22,0.96],[-69.26,1.02],[-69.31,1.05],[-69.36,1.06],[-69.4,1.04],[-69.44,1.04],[-69.47,1.06],[-69.52,1.06],[-69.57,1.07],[-69.62,1.07],[-69.72,1.06],[-69.75,1.08],[-69.8,1.08],[-69.85,1.06],[-69.85,1.31],[-69.85,1.54],[-69.85,1.71],[-69.8,1.71],[-69.74,1.73],[-69.65,1.74],[-69.58,1.77],[-69.54,1.77],[-69.47,1.76],[-69.39,1.73],[-69.32,1.72],[-69.12,1.72],[-68.91,1.72],[-68.68,1.72],[-68.44,1.72],[-68.24,1.72],[-68.18,1.72],[-68.21,1.77],[-68.26,1.85],[-68.24,1.9],[-68.22,1.96],[-68.19,1.99],[-68.13,1.96],[-68.08,1.86],[-68.03,1.79],[-67.99,1.75],[-67.94,1.75],[-67.88,1.76],[-67.82,1.79],[-67.71,1.92],[-67.61,2.04],[-67.56,2.07],[-67.5,2.11],[-67.46,2.12],[-67.4,2.12],[-67.35,2.09],[-67.32,2.03],[-67.21,1.84],[-67.12,1.7],[-67.09,1.62],[-67.09,1.4],[-67.09,1.21],[-67.08,1.19],[-67.07,1.18],[-66.88,1.22],[-66.62,0.99],[-66.43,0.82],[-66.35,0.77],[-66.3,0.75],[-66.19,0.76],[-66.06,0.79],[-66,0.81],[-65.93,0.86],[-65.81,0.94],[-65.72,0.98],[-65.68,0.98],[-65.64,0.97],[-65.57,0.93],[-65.52,0.84],[-65.56,0.75],[-65.56,0.69],[-65.47,0.69],[-65.41,0.79],[-65.36,0.87],[-65.26,0.93],[-65.17,1.02],[-65.1,1.11],[-65.03,1.16],[-64.91,1.22],[-64.82,1.26],[-64.73,1.25],[-64.67,1.29],[-64.58,1.37],[-64.53,1.43],[-64.49,1.45],[-64.41,1.45],[-64.3,1.46],[-64.21,1.53],[-64.11,1.62],[-64.07,1.77],[-64.04,1.9],[-64.01,1.93],[-63.98,1.95],[-63.94,1.97],[-63.84,1.98],[-63.68,2.05],[-63.57,2.12],[-63.46,2.14],[-63.43,2.16],[-63.39,2.22],[-63.37,2.34],[-63.39,2.41],[-63.58,2.43],[-63.71,2.43],[-63.92,2.45],[-64.02,2.48],[-64.05,2.5],[-64.05,2.53],[-64.03,2.58],[-64.01,2.67],[-64.04,2.8],[-64.14,3],[-64.22,3.2],[-64.23,3.34],[-64.23,3.49],[-64.22,3.59],[-64.28,3.66],[-64.57,3.9],[-64.67,4.01],[-64.7,4.09],[-64.82,4.23],[-64.79,4.28],[-64.72,4.27],[-64.67,4.24],[-64.61,4.16],[-64.58,4.14],[-64.53,4.14],[-64.26,4.14],[-64.19,4.13],[-64.15,4.1],[-64.12,4.07],[-64.07,3.97],[-64.02,3.93],[-63.91,3.93],[-63.75,3.93],[-63.65,3.94],[-63.6,3.92],[-63.53,3.89],[-63.38,3.94],[-63.34,3.94],[-63.29,3.92],[-63.14,3.76],[-63.05,3.69],[-62.97,3.59],[-62.86,3.59],[-62.76,3.67],[-62.74,3.94],[-62.71,4.02],[-62.67,4.04],[-62.61,4.04],[-62.54,4.08],[-62.47,4.14],[-62.41,4.16],[-62.15,4.1],[-62.08,4.13],[-61.82,4.2],[-61.55,4.29],[-61.48,4.4],[-61.37,4.43],[-61.28,4.52],[-61.21,4.51],[-61.1,4.5],[-61.04,4.52],[-61,4.54],[-60.97,4.57],[-60.91,4.69],[-60.83,4.73],[-60.74,4.77],[-60.68,4.83],[-60.63,4.89],[-60.6,4.95],[-60.6,4.99],[-60.64,5.08],[-60.67,5.16],[-60.71,5.19],[-60.74,5.2],[-60.65,5.22],[-60.58,5.19],[-60.46,5.19],[-60.41,5.21],[-60.34,5.2],[-60.24,5.26]]]]}},
{"type":"Feature","properties":{"name":"Barbados","iso_a2":"BB","iso_a3":"BRB","iso_n3":"052"},"geometry":{"type":"Polygon","coordinates":[[[-59.49,13.08],[-59.52,13.06],[-59.61,13.1],[-59.64,13.15],[-59.65,13.3],[-59.59,13.32],[-59.49,13.2],[-59.43,13.15],[-59.49,13.08]]]}},
{"type":"Feature","properties":{"name":"Brunei","iso_a2":"BN","iso_a3":"BRN","iso_n3":"096"},"geometry":{"type":"MultiPolygon","coordinates":[[[[115.03,4.9],[115.14,4.9],[115.17,4.87],[115.23,4.75],[115.27,4.63],[115.28,4.46],[115.33,4.38],[115.32,4.37],[115.29,4.35],[115.25,4.35],[115.17,4.36],[115.11,4.39],[115.05,4.58],[115.03,4.69],[115.03,4.82],[115.03,4.9]]],[[[115.03,4.9],[114.94,4.86],[114.86,4.8],[114.78,4.75],[114.75,4.72],[114.76,4.67],[114.78,4.55],[114.79,4.46],[114.82,4.43],[114.84,4.39],[114.83,4.35],[114.78,4.28],[114.81,4.27],[114.78,4.17],[114.72,4.1],[114.65,4.04],[114.61,4.02],[114.57,4.05],[114.51,4.11],[114.45,4.2],[114.42,4.26],[114.32,4.26],[114.29,4.3],[114.29,4.35],[114.26,4.41],[114.22,4.48],[114.17,4.53],[114.1,4.57],[114.06,4.59],[114.18,4.59],[114.3,4.61],[114.42,4.66],[114.54,4.72],[114.65,4.8],[114.74,4.88],[114.84,4.95],[115,5.02],[115.05,5.02],[115.05,4.96],[115.03,4.9]]]]}},
{"type":"Feature","properties":{"name":"Bhutan","iso_a2":"BT","iso_a3":"BTN","iso_n3":"064"},"geometry":{"type":"Polygon","coordinates":[[[91.63,27.76],[91.63,27.74],[91.6,27.68],[91.58,27.61],[91.59,27.56],[91.66,27.49],[91.74,27.44],[91.85,27.44],[91.95,27.46],[91.99,27.45],[92.04,27.36],[92.08,27.29],[92.03,27.21],[92,27.15],[91.99,27.1],[92,27.08],[92.03,27.04],[92.07,26.98],[92.07,26.91],[92.05,26.87],[92,26.85],[91.94,26.86],[91.9,26.86],[91.84,26.85],[91.75,26.83],[91.67,26.8],[91.52,26.81],[91.46,26.87],[91.43,26.87],[91.29,26.79],[91.13,26.8],[90.86,26.78],[90.74,26.77],[90.62,26.78],[90.56,26.8],[90.45,26.85],[90.35,26.89],[90.24,26.85],[90.21,26.85],[90.12,26.75],[89.94,26.72],[89.76,26.7],[89.71,26.71],[89.61,26.72],[89.61,26.74],[89.61,26.76],[89.59,26.78],[89.55,26.8],[89.47,26.8],[89.38,26.83],[89.33,26.85],[89.15,26.82],[89.04,26.87],[88.92,26.93],[88.86,26.96],[88.84,27.07],[88.81,27.1],[88.77,27.13],[88.74,27.18],[88.76,27.22],[88.88,27.3],[88.89,27.32],[88.95,27.46],[89.03,27.52],[89.1,27.59],[89.16,27.71],[89.27,27.83],[89.4,27.96],[89.48,28.06],[89.54,28.11],[89.65,28.16],[89.75,28.19],[89.82,28.26],[89.9,28.29],[89.98,28.31],[90.1,28.3],[90.22,28.28],[90.35,28.24],[90.36,28.22],[90.35,28.17],[90.33,28.12],[90.33,28.09],[90.35,28.08],[90.48,28.07],[90.63,28.08],[90.72,28.07],[90.91,28.03],[90.96,27.99],[91.02,27.97],[91.08,27.97],[91.15,28.03],[91.23,28.07],[91.27,28.08],[91.31,28.06],[91.37,28.02],[91.49,27.98],[91.61,27.95],[91.64,27.92],[91.63,27.8],[91.63,27.76]]]}},
{"type":"Feature","properties":{"name":"Botswana","iso_a2":"BW","iso_a3":"BWA","iso_n3":"072"},"geometry":{"type":"Polygon","coordinates":[[[25.26,-17.79],[25.24,-17.84],[25.22,-17.92],[25.24,-17.97],[25.28,-18.04],[25.34,-18.1],[25.38,-18.14],[25.44,-18.23],[25.49,-18.35],[25.56,-18.44],[25.76,-18.65],[25.78,-18.72],[25.81,-18.8],[25.94,-18.94],[25.96,-18.99],[25.95,-19.08],[26.08,-19.37],[26.17,-19.54],[26.24,-19.57],[26.47,-19.75],[26.68,-19.89],[26.92,-19.99],[27.09,-20.05],[27.18,-20.1],[27.22,-20.15],[27.26,-20.23],[27.27,-20.38],[27.28,-20.48],[27.47,-20.47],[27.62,-20.48],[27.68,-20.5],[27.7,-20.53],[27.69,-20.59],[27.7,-20.69],[27.7,-20.77],[27.69,-20.85],[27.68,-20.94],[27.67,-21.06],[27.69,-21.11],[27.84,-21.26],[27.91,-21.36],[27.97,-21.51],[28.01,-21.55],[28.05,-21.57],[28.18,-21.59],[28.53,-21.65],[28.75,-21.71],[28.92,-21.77],[28.99,-21.78],[29.03,-21.8],[29.04,-21.81],[29.02,-21.94],[29.02,-21.98],[29.04,-22.02],[29.07,-22.05],[29.11,-22.07],[29.24,-22.08],[29.32,-22.16],[29.36,-22.19],[29.13,-22.21],[29.01,-22.28],[28.95,-22.4],[28.84,-22.48],[28.7,-22.54],[28.54,-22.57],[28.38,-22.59],[28.21,-22.69],[28.03,-22.87],[27.94,-22.99],[27.93,-23.03],[27.89,-23.07],[27.81,-23.11],[27.77,-23.15],[27.76,-23.2],[27.72,-23.22],[27.64,-23.22],[27.59,-23.25],[27.56,-23.32],[27.5,-23.37],[27.4,-23.38],[27.31,-23.42],[27.24,-23.49],[27.19,-23.52],[27.15,-23.52],[27.09,-23.58],[26.99,-23.7],[26.97,-23.76],[26.84,-24.24],[26.76,-24.3],[26.62,-24.4],[26.5,-24.51],[26.45,-24.58],[26.4,-24.61],[26.13,-24.67],[26.03,-24.7],[25.91,-24.75],[25.88,-24.79],[25.85,-24.94],[25.77,-25.15],[25.7,-25.3],[25.66,-25.44],[25.58,-25.61],[25.52,-25.66],[25.44,-25.71],[25.35,-25.74],[25.21,-25.76],[25.09,-25.75],[25,-25.75],[24.87,-25.81],[24.75,-25.82],[24.56,-25.78],[24.4,-25.75],[24.33,-25.74],[24.19,-25.63],[24.1,-25.63],[23.97,-25.63],[23.89,-25.6],[23.82,-25.54],[23.67,-25.43],[23.52,-25.34],[23.39,-25.29],[23.27,-25.27],[23.15,-25.29],[23.06,-25.31],[23.02,-25.32],[22.95,-25.37],[22.88,-25.46],[22.82,-25.6],[22.8,-25.68],[22.73,-25.86],[22.64,-26.07],[22.6,-26.13],[22.55,-26.18],[22.47,-26.22],[22.22,-26.39],[22.09,-26.58],[22.01,-26.64],[21.91,-26.66],[21.83,-26.68],[21.79,-26.71],[21.74,-26.81],[21.69,-26.84],[21.65,-26.85],[21.5,-26.84],[21.45,-26.83],[21.07,-26.85],[20.95,-26.82],[20.87,-26.81],[20.74,-26.85],[20.69,-26.82],[20.64,-26.74],[20.62,-26.58],[20.63,-26.44],[20.7,-26.34],[20.76,-26.26],[20.82,-26.16],[20.82,-26.12],[20.81,-26.08],[20.8,-26],[20.79,-25.92],[20.71,-25.73],[20.61,-25.49],[20.47,-25.22],[20.43,-25.15],[20.35,-25.03],[20.03,-24.81],[19.98,-24.78],[19.98,-24.75],[19.98,-24.54],[19.98,-24.25],[19.98,-23.96],[19.98,-23.68],[19.98,-23.39],[19.98,-23.1],[19.98,-22.82],[19.98,-22.53],[19.98,-22.24],[19.98,-22],[20.21,-22],[20.49,-22],[20.82,-22],[20.97,-22],[20.98,-21.96],[20.98,-21.78],[20.98,-21.38],[20.98,-20.97],[20.98,-20.56],[20.98,-20.15],[20.98,-19.74],[20.98,-19.34],[20.98,-18.93],[20.97,-18.52],[20.97,-18.32],[21.23,-18.31],[21.53,-18.27],[22.01,-18.2],[22.46,-18.12],[22.75,-18.07],[23.1,-18.01],[23.22,-18],[23.25,-18.01],[23.3,-18.03],[23.46,-18.23],[23.56,-18.39],[23.58,-18.45],[23.6,-18.46],[23.65,-18.45],[23.7,-18.42],[23.86,-18.27],[23.9,-18.23],[24,-18.15],[24.13,-18.08],[24.24,-18.02],[24.36,-17.98],[24.41,-17.99],[24.47,-18.03],[24.53,-18.05],[24.79,-17.86],[24.91,-17.82],[25.22,-17.79],[25.26,-17.79]]]}},
{"type":"Feature","properties":{"name":"Central African Rep.","iso_a2":"CF","iso_a3":"CAF","iso_n3":"140"},"geometry":{"type":"Polygon","coordinates":[[[22.86,10.92],[22.93,10.8],[22.96,10.75],[23.26,10.46],[23.31,10.39],[23.46,10.17],[23.55,10.03],[23.65,9.82],[23.66,9.71],[23.64,9.61],[23.62,9.34],[23.6,9.26],[23.47,9.11],[23.46,9.05],[23.49,8.99],[23.53,8.97],[23.55,8.94],[23.54,8.82],[23.58,8.77],[23.68,8.73],[23.92,8.71],[24.05,8.69],[24.15,8.67],[24.19,8.65],[24.22,8.61],[24.18,8.46],[24.21,8.37],[24.29,8.29],[24.38,8.26],[24.46,8.24],[24.74,8.19],[24.85,8.14],[25.01,7.96],[25.2,7.81],[25.25,7.72],[25.24,7.65],[25.18,7.56],[25.19,7.52],[25.28,7.43],[25.38,7.33],[25.57,7.23],[25.89,7.06],[26.04,6.96],[26.09,6.87],[26.17,6.78],[26.28,6.7],[26.36,6.64],[26.31,6.46],[26.32,6.4],[26.35,6.34],[26.42,6.27],[26.45,6.18],[26.51,6.07],[26.59,6.02],[26.73,6],[26.8,5.95],[26.94,5.85],[27.08,5.78],[27.14,5.72],[27.18,5.68],[27.21,5.62],[27.23,5.56],[27.23,5.44],[27.26,5.29],[27.33,5.19],[27.4,5.11],[27.11,5.2],[27.07,5.2],[27.02,5.18],[26.87,5.08],[26.82,5.06],[26.77,5.07],[26.63,5.09],[26.17,5.17],[25.82,5.25],[25.71,5.28],[25.53,5.31],[25.4,5.26],[25.28,5.06],[25.25,5.02],[25.07,4.97],[24.98,4.98],[24.77,4.93],[24.44,5.01],[24.32,4.99],[24.23,4.95],[23.99,4.87],[23.85,4.82],[23.68,4.77],[23.52,4.7],[23.42,4.66],[23.31,4.66],[23.22,4.7],[23.12,4.74],[22.99,4.74],[22.86,4.72],[22.76,4.65],[22.71,4.59],[22.62,4.45],[22.51,4.21],[22.46,4.16],[22.45,4.16],[22.42,4.13],[21.91,4.25],[21.69,4.28],[21.54,4.24],[21.35,4.31],[21.27,4.32],[21.23,4.3],[21.13,4.33],[20.96,4.41],[20.79,4.45],[20.65,4.44],[20.56,4.46],[20.49,4.54],[20.39,4.69],[20.23,4.83],[20,4.94],[19.86,5.03],[19.81,5.09],[19.69,5.12],[19.5,5.13],[19.32,5.07],[19.07,4.89],[18.83,4.52],[18.7,4.38],[18.59,4.35],[18.57,4.26],[18.62,4.12],[18.63,3.95],[18.6,3.68],[18.61,3.48],[18.55,3.51],[18.5,3.6],[18.47,3.62],[18.32,3.58],[18.24,3.54],[18.19,3.51],[18.16,3.5],[18.11,3.55],[18.07,3.56],[18.01,3.55],[17.95,3.55],[17.91,3.56],[17.88,3.55],[17.81,3.58],[17.54,3.66],[17.49,3.69],[17.44,3.68],[17.3,3.62],[17.22,3.6],[17,3.56],[16.76,3.54],[16.67,3.54],[16.61,3.51],[16.57,3.46],[16.54,3.37],[16.5,3.21],[16.48,3.17],[16.48,3.1],[16.47,2.99],[16.46,2.9],[16.47,2.83],[16.4,2.7],[16.32,2.54],[16.25,2.41],[16.18,2.27],[16.14,2.36],[16.11,2.47],[16.1,2.6],[16.1,2.63],[16.08,2.67],[16.08,2.68],[16.06,2.77],[16.08,2.84],[16.06,2.91],[16.01,2.98],[15.96,3.03],[15.93,3.08],[15.9,3.1],[15.85,3.1],[15.78,3.13],[15.68,3.23],[15.58,3.33],[15.46,3.46],[15.36,3.57],[15.24,3.7],[15.13,3.83],[15.06,3.95],[15.03,4.02],[15.07,4.02],[15.12,4.02],[15.14,4.04],[15.14,4.07],[15.09,4.16],[15.06,4.28],[15.02,4.36],[14.89,4.47],[14.77,4.56],[14.73,4.6],[14.71,4.67],[14.66,5.07],[14.64,5.18],[14.6,5.23],[14.57,5.25],[14.56,5.28],[14.57,5.35],[14.58,5.41],[14.58,5.44],[14.62,5.5],[14.62,5.87],[14.6,5.88],[14.58,5.92],[14.54,5.91],[14.5,5.92],[14.46,5.97],[14.43,6.04],[14.44,6.09],[14.48,6.13],[14.51,6.16],[14.56,6.19],[14.7,6.25],[14.74,6.28],[14.76,6.32],[14.78,6.37],[14.86,6.56],[14.98,6.75],[15.03,6.78],[15.09,6.91],[15.16,7.06],[15.19,7.13],[15.21,7.21],[15.25,7.26],[15.38,7.36],[15.48,7.52],[15.59,7.52],[15.7,7.49],[15.85,7.48],[15.96,7.51],[16.03,7.57],[16.19,7.62],[16.38,7.68],[16.4,7.77],[16.46,7.82],[16.52,7.86],[16.55,7.87],[16.55,7.84],[16.59,7.74],[16.67,7.65],[16.78,7.55],[16.82,7.56],[16.89,7.63],[17.07,7.68],[17.12,7.7],[17.25,7.81],[17.4,7.88],[17.44,7.89],[17.49,7.91],[17.65,7.98],[17.76,7.97],[17.94,7.99],[18.24,8.02],[18.46,8.03],[18.56,8.05],[18.59,8.06],[18.63,8.17],[18.67,8.2],[18.75,8.24],[18.91,8.41],[19.01,8.54],[19.04,8.59],[19.04,8.59],[19.06,8.6],[19.11,8.66],[19.06,8.72],[18.89,8.84],[18.89,8.85],[18.88,8.87],[18.89,8.89],[18.96,8.94],[19.05,9],[19.15,9.02],[19.4,9.01],[19.62,9.02],[19.67,9.02],[19.84,9.05],[19.95,9.08],[20.07,9.13],[20.34,9.13],[20.57,9.27],[20.63,9.3],[20.66,9.32],[20.67,9.35],[20.77,9.41],[20.89,9.53],[20.98,9.64],[21.01,9.71],[21.26,9.97],[21.35,9.97],[21.4,10],[21.5,10.18],[21.53,10.21],[21.58,10.22],[21.63,10.24],[21.68,10.29],[21.73,10.37],[21.73,10.46],[21.71,10.54],[21.71,10.57],[21.73,10.61],[21.77,10.64],[21.96,10.74],[22.01,10.78],[22.04,10.82],[22.1,10.83],[22.16,10.83],[22.19,10.85],[22.24,10.89],[22.37,10.95],[22.49,11],[22.62,10.98],[22.73,10.95],[22.82,10.93],[22.86,10.92]]]}},
{"type":"Feature","properties":{"name":"Canada","iso_a2":"CA","iso_a3":"CAN","iso_n3":"124"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-59.79,43.94],[-59.92,43.9],[-60.04,43.91],[-60.11,43.94],[-60.12,43.95],[-59.94,43.94],[-59.87,43.95],[-59.73,44],[-59.79,43.94]]],[[[-66.27,44.29],[-66.32,44.26],[-66.31,44.29],[-66.25,44.38],[-66.21,44.39],[-66.27,44.29]]],[[[-66.76,44.68],[-66.9,44.63],[-66.84,44.76],[-66.8,44.81],[-66.75,44.79],[-66.75,44.71],[-66.76,44.68]]],[[[-60.96,45.49],[-61,45.48],[-61.01,45.5],[-61.08,45.54],[-61.08,45.56],[-61.03,45.58],[-60.91,45.57],[-60.95,45.52],[-60.96,45.49]]],[[[-73.7,45.59],[-73.82,45.56],[-73.86,45.57],[-73.72,45.67],[-73.57,45.69],[-73.7,45.59]]],[[[-73.57,45.47],[-73.64,45.45],[-73.78,45.47],[-73.92,45.44],[-73.96,45.44],[-73.85,45.52],[-73.69,45.56],[-73.52,45.7],[-73.48,45.7],[-73.54,45.55],[-73.55,45.49],[-73.57,45.47]]],[[[-71.03,46.87],[-71.12,46.86],[-71.09,46.9],[-70.97,46.96],[-70.88,47],[-70.83,47],[-70.91,46.92],[-71.03,46.87]]],[[[-61.11,45.94],[-61.07,45.94],[-60.94,45.99],[-60.87,45.98],[-60.87,45.95],[-60.98,45.91],[-61.04,45.88],[-60.97,45.86],[-60.97,45.84],[-61.05,45.8],[-61.09,45.75],[-61.06,45.7],[-60.93,45.75],[-60.88,45.75],[-60.81,45.74],[-60.74,45.75],[-60.7,45.77],[-60.47,45.95],[-60.46,45.97],[-60.7,45.93],[-60.73,45.96],[-60.57,46.06],[-60.59,46.12],[-60.5,46.2],[-60.43,46.26],[-60.38,46.28],[-60.3,46.31],[-60.24,46.27],[-60.23,46.2],[-60.09,46.21],[-59.96,46.19],[-59.87,46.16],[-59.85,46.14],[-59.85,46.11],[-59.88,46.06],[-59.93,46.02],[-59.83,45.97],[-59.84,45.94],[-60.02,45.88],[-60.11,45.82],[-60.21,45.74],[-60.39,45.65],[-60.67,45.59],[-60.76,45.59],[-60.87,45.61],[-60.98,45.61],[-61.08,45.58],[-61.19,45.59],[-61.24,45.57],[-61.28,45.57],[-61.32,45.6],[-61.41,45.67],[-61.45,45.72],[-61.5,45.94],[-61.48,46.06],[-61.41,46.17],[-61.3,46.24],[-61.24,46.3],[-60.98,46.65],[-60.93,46.73],[-60.87,46.8],[-60.76,46.86],[-60.62,46.98],[-60.57,47],[-60.49,47.01],[-60.41,47],[-60.43,46.96],[-60.43,46.92],[-60.33,46.77],[-60.33,46.74],[-60.38,46.61],[-60.48,46.41],[-60.51,46.3],[-60.49,46.27],[-60.53,46.21],[-60.58,46.17],[-60.74,46.09],[-60.83,46.07],[-60.91,46.04],[-61.11,45.94]]],[[[-63.81,46.47],[-63.78,46.45],[-63.74,46.48],[-63.68,46.56],[-63.53,46.54],[-63.46,46.5],[-63.41,46.51],[-63.37,46.51],[-63.29,46.46],[-63.13,46.42],[-62.96,46.43],[-62.71,46.45],[-62.68,46.46],[-62.42,46.48],[-62.16,46.49],[-62.07,46.47],[-62.04,46.45],[-62.02,46.42],[-62.17,46.36],[-62.32,46.28],[-62.53,46.2],[-62.55,46.17],[-62.54,46.1],[-62.54,46.03],[-62.5,46.02],[-62.48,46],[-62.53,45.98],[-62.74,45.97],[-62.8,45.97],[-62.88,46],[-62.9,46.07],[-62.99,46.06],[-63.02,46.07],[-62.89,46.12],[-62.95,46.2],[-63.02,46.19],[-63.06,46.22],[-63.05,46.27],[-63,46.29],[-62.98,46.32],[-63.06,46.3],[-63.12,46.25],[-63.19,46.24],[-63.27,46.2],[-63.15,46.19],[-63.21,46.16],[-63.28,46.15],[-63.57,46.21],[-63.64,46.23],[-63.73,46.29],[-63.8,46.37],[-63.76,46.37],[-63.75,46.38],[-63.76,46.4],[-63.86,46.41],[-64.02,46.4],[-64.11,46.43],[-64.11,46.56],[-64.14,46.6],[-64.24,46.63],[-64.39,46.64],[-64.4,46.69],[-64.35,46.77],[-64.28,46.84],[-64.22,46.9],[-64.16,46.95],[-63.99,47.06],[-64,46.98],[-63.98,46.91],[-64.09,46.78],[-63.9,46.64],[-63.88,46.61],[-63.86,46.57],[-63.88,46.54],[-63.91,46.51],[-63.83,46.49],[-63.81,46.47]]],[[[-61.91,47.28],[-61.88,47.27],[-61.82,47.27],[-61.77,47.26],[-61.83,47.22],[-61.95,47.22],[-62.01,47.23],[-61.92,47.43],[-61.83,47.47],[-61.63,47.59],[-61.55,47.63],[-61.47,47.65],[-61.4,47.64],[-61.48,47.56],[-61.58,47.56],[-61.68,47.5],[-61.75,47.43],[-61.83,47.39],[-61.89,47.34],[-61.91,47.28]]],[[[-54.23,47.44],[-54.28,47.41],[-54.33,47.41],[-54.32,47.44],[-54.26,47.5],[-54.23,47.54],[-54.23,47.57],[-54.21,47.59],[-54.17,47.61],[-54.13,47.65],[-54.15,47.57],[-54.23,47.44]]],[[[-64.51,47.89],[-64.53,47.81],[-64.62,47.75],[-64.66,47.75],[-64.68,47.75],[-64.66,47.79],[-64.66,47.86],[-64.59,47.87],[-64.56,47.87],[-64.51,47.89]]],[[[-64.48,47.96],[-64.59,47.91],[-64.54,47.98],[-64.52,48.01],[-64.5,48.01],[-64.48,48.01],[-64.48,47.96]]],[[[-123.44,48.75],[-123.48,48.73],[-123.5,48.73],[-123.52,48.75],[-123.58,48.93],[-123.55,48.92],[-123.47,48.87],[-123.49,48.85],[-123.42,48.79],[-123.41,48.76],[-123.44,48.75]]],[[[-123.37,48.89],[-123.38,48.88],[-123.54,48.95],[-123.65,49.04],[-123.69,49.1],[-123.48,48.95],[-123.38,48.91],[-123.37,48.89]]],[[[-74.71,45],[-74.57,45.04],[-74.27,45.19],[-74.05,45.24],[-73.76,45.4],[-73.56,45.43],[-73.52,45.46],[-73.48,45.59],[-73.47,45.63],[-73.37,45.76],[-73.25,45.86],[-73.16,46.01],[-72.99,46.1],[-72.73,46.18],[-72.5,46.35],[-72.37,46.4],[-72.24,46.44],[-72.19,46.51],[-72.11,46.55],[-71.9,46.63],[-71.67,46.65],[-71.44,46.72],[-71.26,46.76],[-71.15,46.82],[-70.99,46.85],[-70.52,47.03],[-70.39,47.12],[-70.22,47.29],[-70.07,47.38],[-70.02,47.47],[-69.8,47.62],[-69.58,47.82],[-69.47,47.97],[-69.31,48.05],[-68.99,48.28],[-68.82,48.37],[-68.75,48.38],[-68.55,48.46],[-68.43,48.54],[-68.24,48.63],[-67.89,48.73],[-67.56,48.86],[-67.12,48.96],[-66.6,49.13],[-66.18,49.21],[-65.88,49.23],[-65.52,49.27],[-65.4,49.26],[-64.84,49.19],[-64.57,49.1],[-64.26,48.92],[-64.22,48.87],[-64.21,48.81],[-64.37,48.84],[-64.51,48.84],[-64.41,48.8],[-64.25,48.69],[-64.25,48.55],[-64.35,48.42],[-64.63,48.36],[-64.71,48.31],[-64.76,48.23],[-64.82,48.2],[-64.96,48.16],[-65.04,48.11],[-65.26,48.02],[-65.36,48.01],[-65.48,48.03],[-65.75,48.11],[-65.93,48.19],[-66.01,48.15],[-66.08,48.1],[-66.25,48.12],[-66.32,48.1],[-66.45,48.12],[-66.7,48.02],[-66.63,48.01],[-66.43,48.07],[-66.36,48.06],[-66.21,47.99],[-65.85,47.91],[-65.76,47.86],[-65.67,47.7],[-65.61,47.67],[-65.48,47.69],[-65.34,47.77],[-65.23,47.81],[-65,47.85],[-65.05,47.79],[-64.87,47.8],[-64.7,47.72],[-64.77,47.67],[-64.85,47.57],[-64.91,47.37],[-65.09,47.23],[-65.32,47.1],[-65.26,47.07],[-65.19,47.05],[-65.04,47.09],[-64.94,47.09],[-64.83,47.06],[-64.87,46.96],[-64.91,46.89],[-64.88,46.82],[-64.82,46.7],[-64.73,46.67],[-64.69,46.51],[-64.64,46.43],[-64.65,46.36],[-64.56,46.31],[-64.54,46.24],[-64.21,46.22],[-64.15,46.19],[-63.92,46.17],[-63.87,46.15],[-63.83,46.11],[-64.06,46.02],[-63.87,45.96],[-63.7,45.86],[-63.57,45.88],[-63.51,45.87],[-63.36,45.81],[-63.32,45.78],[-63.29,45.75],[-63.22,45.76],[-63.11,45.78],[-62.91,45.78],[-62.7,45.74],[-62.72,45.69],[-62.75,45.65],[-62.59,45.66],[-62.48,45.62],[-62.45,45.64],[-62.42,45.66],[-62.22,45.73],[-61.96,45.87],[-61.92,45.85],[-61.91,45.8],[-61.88,45.71],[-61.78,45.66],[-61.66,45.64],[-61.49,45.69],[-61.43,45.65],[-61.35,45.57],[-61.28,45.48],[-61.28,45.44],[-61.38,45.41],[-61.46,45.37],[-61.11,45.35],[-61.07,45.33],[-61.03,45.29],[-61.07,45.25],[-61.1,45.23],[-61.17,45.26],[-61.28,45.24],[-61.39,45.19],[-61.5,45.16],[-61.57,45.15],[-61.65,45.13],[-61.72,45.09],[-61.79,45.08],[-62.03,44.99],[-62.26,44.94],[-62.51,44.84],[-62.77,44.79],[-63.03,44.71],[-63.09,44.71],[-63.16,44.71],[-63.31,44.64],[-63.38,44.65],[-63.46,44.64],[-63.54,44.66],[-63.6,44.68],[-63.56,44.61],[-63.54,44.54],[-63.57,44.51],[-63.61,44.48],[-63.76,44.49],[-63.82,44.51],[-63.89,44.55],[-63.92,44.6],[-64,44.64],[-64.04,44.59],[-64.04,44.55],[-64.1,44.49],[-64.17,44.59],[-64.29,44.55],[-64.34,44.44],[-64.31,44.41],[-64.28,44.33],[-64.33,44.29],[-64.38,44.3],[-64.47,44.19],[-64.58,44.14],[-64.69,44.02],[-64.83,43.93],[-64.86,43.87],[-65.09,43.73],[-65.17,43.73],[-65.23,43.73],[-65.33,43.67],[-65.34,43.55],[-65.39,43.57],[-65.43,43.56],[-65.45,43.52],[-65.48,43.52],[-65.56,43.55],[-65.66,43.53],[-65.74,43.56],[-65.84,43.73],[-65.89,43.8],[-65.98,43.81],[-66,43.78],[-66.04,43.74],[-66.13,43.81],[-66.19,44.08],[-66.19,44.14],[-66.1,44.37],[-65.87,44.57],[-65.94,44.58],[-66.15,44.44],[-66.13,44.47],[-66.09,44.5],[-66.02,44.56],[-65.92,44.62],[-65.78,44.65],[-65.68,44.65],[-65.62,44.68],[-65.52,44.73],[-65.5,44.76],[-65.59,44.73],[-65.73,44.7],[-65.69,44.74],[-65.66,44.76],[-64.9,45.12],[-64.75,45.18],[-64.45,45.26],[-64.41,45.31],[-64.45,45.34],[-64.33,45.31],[-64.34,45.27],[-64.36,45.24],[-64.37,45.19],[-64.35,45.14],[-64.24,45.11],[-64.14,45.02],[-64.18,45.15],[-64.09,45.22],[-63.75,45.31],[-63.46,45.32],[-63.37,45.36],[-63.61,45.39],[-63.91,45.38],[-64.09,45.41],[-64.34,45.39],[-64.6,45.41],[-64.68,45.38],[-64.75,45.32],[-64.83,45.35],[-64.87,45.35],[-64.91,45.37],[-64.83,45.48],[-64.56,45.63],[-64.4,45.76],[-64.35,45.78],[-64.31,45.84],[-64.4,45.83],[-64.48,45.81],[-64.54,45.87],[-64.63,45.95],[-64.64,45.91],[-64.59,45.81],[-64.78,45.64],[-64.9,45.63],[-65.06,45.54],[-65.28,45.47],[-65.55,45.34],[-65.88,45.22],[-65.96,45.22],[-66.11,45.32],[-66.07,45.36],[-66.03,45.42],[-66.06,45.4],[-66.09,45.38],[-66.18,45.34],[-66.11,45.26],[-66.14,45.23],[-66.25,45.19],[-66.35,45.13],[-66.44,45.1],[-66.51,45.14],[-66.71,45.08],[-66.87,45.07],[-66.91,45.1],[-66.92,45.15],[-66.98,45.16],[-67.08,45.14],[-67.12,45.17],[-67.17,45.18],[-67.21,45.19],[-67.25,45.2],[-67.27,45.19],[-67.29,45.17],[-67.32,45.15],[-67.37,45.17],[-67.4,45.21],[-67.45,45.25],[-67.47,45.28],[-67.46,45.31],[-67.44,45.34],[-67.43,45.38],[-67.45,45.42],[-67.48,45.45],[-67.49,45.47],[-67.49,45.5],[-67.45,45.51],[-67.42,45.53],[-67.41,45.57],[-67.43,45.6],[-67.49,45.62],[-67.53,45.61],[-67.6,45.62],[-67.66,45.64],[-67.7,45.67],[-67.73,45.69],[-67.76,45.69],[-67.78,45.7],[-67.8,45.73],[-67.8,45.77],[-67.79,45.8],[-67.78,45.82],[-67.77,45.84],[-67.78,45.86],[-67.78,45.87],[-67.78,45.89],[-67.77,45.93],[-67.78,45.95],[-67.79,46.04],[-67.79,46.21],[-67.79,46.34],[-67.8,46.5],[-67.8,46.62],[-67.8,46.78],[-67.8,46.94],[-67.81,47.08],[-67.93,47.17],[-68.1,47.27],[-68.24,47.35],[-68.31,47.35],[-68.36,47.34],[-68.38,47.32],[-68.48,47.29],[-68.67,47.25],[-68.83,47.2],[-68.89,47.2],[-68.94,47.21],[-69,47.24],[-69.05,47.27],[-69.06,47.34],[-69.05,47.43],[-69.15,47.44],[-69.24,47.46],[-69.3,47.4],[-69.36,47.35],[-69.47,47.24],[-69.63,47.08],[-69.72,46.99],[-69.87,46.84],[-70.01,46.71],[-70.04,46.57],[-70.07,46.44],[-70.18,46.34],[-70.25,46.25],[-70.28,46.15],[-70.3,46.06],[-70.31,45.98],[-70.29,45.94],[-70.3,45.91],[-70.33,45.87],[-70.41,45.8],[-70.42,45.74],[-70.47,45.71],[-70.6,45.64],[-70.7,45.55],[-70.71,45.5],[-70.69,45.46],[-70.69,45.43],[-70.71,45.41],[-70.75,45.41],[-70.8,45.4],[-70.84,45.37],[-70.84,45.31],[-70.87,45.27],[-70.9,45.26],[-70.93,45.29],[-70.96,45.33],[-71,45.34],[-71.06,45.31],[-71.13,45.26],[-71.2,45.26],[-71.33,45.29],[-71.42,45.2],[-71.52,45.01],[-71.93,45.01],[-72.35,45.01],[-72.77,45.01],[-73.18,45.01],[-73.6,45.01],[-74.01,45],[-74.43,45],[-74.66,45],[-74.71,45]]],[[[-126.09,49.35],[-126.06,49.26],[-126.19,49.28],[-126.23,49.3],[-126.23,49.34],[-126.21,49.38],[-126.12,49.37],[-126.09,49.35]]],[[[-54.55,49.59],[-54.71,49.53],[-54.74,49.51],[-54.79,49.5],[-54.82,49.51],[-54.86,49.58],[-54.86,49.6],[-54.81,49.6],[-54.79,49.59],[-54.78,49.57],[-54.76,49.56],[-54.73,49.56],[-54.62,49.62],[-54.56,49.63],[-54.54,49.62],[-54.55,49.59]]],[[[-54.09,49.74],[-54.02,49.68],[-53.98,49.66],[-54.24,49.59],[-54.27,49.59],[-54.29,49.6],[-54.29,49.66],[-54.28,49.71],[-54.26,49.72],[-54.2,49.69],[-54.14,49.75],[-54.09,49.74]]],[[[-124.15,49.53],[-124.14,49.51],[-124.36,49.59],[-124.46,49.63],[-124.49,49.67],[-124.52,49.69],[-124.63,49.74],[-124.65,49.76],[-124.62,49.78],[-124.55,49.76],[-124.42,49.73],[-124.31,49.67],[-124.15,49.53]]],[[[-126.64,49.61],[-126.68,49.6],[-126.74,49.61],[-126.81,49.64],[-126.94,49.72],[-126.95,49.74],[-126.94,49.75],[-126.9,49.76],[-126.9,49.78],[-126.93,49.84],[-126.83,49.87],[-126.74,49.84],[-126.7,49.81],[-126.65,49.75],[-126.63,49.68],[-126.63,49.63],[-126.64,49.61]]],[[[-61.8,49.09],[-62.22,49.08],[-62.55,49.14],[-62.8,49.17],[-63.04,49.22],[-63.57,49.4],[-63.63,49.46],[-63.68,49.53],[-63.78,49.6],[-63.88,49.66],[-64.44,49.83],[-64.49,49.89],[-64.37,49.93],[-64.24,49.94],[-64.13,49.94],[-63.76,49.88],[-63.29,49.82],[-63.09,49.77],[-62.86,49.71],[-62.63,49.62],[-62.13,49.41],[-62.04,49.39],[-61.82,49.28],[-61.74,49.2],[-61.7,49.14],[-61.75,49.11],[-61.8,49.09]]],[[[-124.98,50.03],[-125,50.02],[-125.03,50.13],[-125,50.18],[-124.99,50.2],[-124.99,50.22],[-124.94,50.17],[-124.92,50.13],[-124.91,50.08],[-124.91,50.07],[-124.98,50.03]]],[[[-125.18,50.1],[-125.2,50.04],[-125.26,50.13],[-125.36,50.31],[-125.35,50.35],[-125.3,50.41],[-125.26,50.42],[-125.2,50.39],[-125.14,50.34],[-125.13,50.32],[-125.09,50.27],[-125.07,50.22],[-125.11,50.16],[-125.18,50.1]]],[[[-55.54,50.72],[-55.57,50.71],[-55.6,50.71],[-55.63,50.72],[-55.63,50.74],[-55.6,50.78],[-55.53,50.8],[-55.47,50.8],[-55.47,50.78],[-55.5,50.74],[-55.54,50.72]]],[[[-127.2,50.64],[-126.7,50.52],[-126.2,50.45],[-125.84,50.38],[-125.62,50.36],[-125.53,50.34],[-125.48,50.32],[-125.42,50.25],[-125.31,50.11],[-125.23,50.01],[-125.07,49.85],[-124.93,49.73],[-124.9,49.69],[-124.93,49.67],[-124.93,49.64],[-124.83,49.53],[-124.64,49.43],[-124.5,49.38],[-124.19,49.3],[-124,49.22],[-123.94,49.17],[-123.85,49.12],[-123.82,49.08],[-123.75,48.95],[-123.63,48.82],[-123.5,48.58],[-123.47,48.6],[-123.46,48.67],[-123.44,48.69],[-123.42,48.7],[-123.39,48.67],[-123.37,48.61],[-123.28,48.46],[-123.31,48.41],[-123.33,48.41],[-123.45,48.43],[-123.48,48.4],[-123.54,48.34],[-123.57,48.32],[-123.59,48.33],[-123.92,48.39],[-124.12,48.44],[-124.38,48.52],[-124.69,48.6],[-124.87,48.65],[-125.02,48.71],[-125.12,48.76],[-125.14,48.8],[-125.14,48.82],[-124.93,48.96],[-124.85,49.03],[-124.82,49.08],[-124.8,49.14],[-124.81,49.21],[-124.82,49.21],[-124.84,49.14],[-124.87,49.08],[-124.9,49.03],[-124.93,49.01],[-125.17,48.99],[-125.36,49],[-125.46,48.94],[-125.49,48.93],[-125.54,48.95],[-125.66,49.03],[-125.83,49.09],[-125.81,49.11],[-125.7,49.14],[-125.64,49.19],[-125.65,49.19],[-125.69,49.19],[-125.73,49.2],[-125.8,49.26],[-125.84,49.28],[-125.92,49.25],[-125.95,49.25],[-125.98,49.29],[-125.94,49.38],[-125.94,49.4],[-126.02,49.37],[-126.05,49.38],[-126.07,49.41],[-126.1,49.42],[-126.17,49.42],[-126.24,49.44],[-126.27,49.43],[-126.28,49.39],[-126.3,49.38],[-126.42,49.45],[-126.44,49.45],[-126.5,49.4],[-126.52,49.4],[-126.55,49.42],[-126.56,49.54],[-126.56,49.58],[-126.54,49.59],[-126.44,49.62],[-126.16,49.65],[-126.13,49.67],[-126.35,49.66],[-126.4,49.68],[-126.46,49.72],[-126.53,49.72],[-126.56,49.73],[-126.59,49.76],[-126.68,49.88],[-126.74,49.9],[-126.85,49.92],[-126.9,49.94],[-126.93,49.93],[-126.95,49.9],[-126.98,49.88],[-127.05,49.87],[-127.11,49.88],[-127.17,49.91],[-127.2,49.95],[-127.21,49.99],[-127.18,50.05],[-127.18,50.07],[-127.19,50.1],[-127.22,50.12],[-127.25,50.14],[-127.27,50.13],[-127.27,50.1],[-127.29,50.07],[-127.35,50.05],[-127.4,50.09],[-127.43,50.13],[-127.47,50.16],[-127.67,50.16],[-127.77,50.12],[-127.82,50.12],[-127.86,50.13],[-127.87,50.15],[-127.83,50.21],[-127.84,50.29],[-127.85,50.31],[-127.95,50.33],[-127.96,50.35],[-127.91,50.45],[-127.87,50.46],[-127.83,50.47],[-127.64,50.48],[-127.58,50.46],[-127.49,50.4],[-127.49,50.43],[-127.52,50.5],[-127.53,50.54],[-127.47,50.58],[-127.53,50.6],[-127.75,50.61],[-127.75,50.58],[-127.73,50.54],[-127.86,50.5],[-127.96,50.49],[-128.06,50.5],[-128.14,50.52],[-128.27,50.61],[-128.35,50.7],[-128.35,50.74],[-128.3,50.79],[-128.24,50.83],[-128.1,50.86],[-127.92,50.86],[-127.71,50.82],[-127.2,50.64]]],[[[-55.46,51.54],[-55.53,51.44],[-55.58,51.39],[-55.63,51.37],[-55.73,51.36],[-55.94,51.34],[-56.03,51.33],[-56.04,51.26],[-56.03,51.23],[-56,51.2],[-55.96,51.19],[-55.87,51.21],[-55.84,51.21],[-55.82,51.19],[-55.8,51.17],[-55.79,51.13],[-55.78,51.09],[-55.8,51.03],[-55.87,50.91],[-55.96,50.84],[-56.08,50.78],[-56.11,50.76],[-56.12,50.73],[-56.14,50.65],[-56.2,50.58],[-56.38,50.42],[-56.45,50.38],[-56.45,50.35],[-56.48,50.27],[-56.54,50.21],[-56.69,50.06],[-56.73,50.01],[-56.75,49.97],[-56.75,49.91],[-56.75,49.88],[-56.79,49.83],[-56.84,49.79],[-56.85,49.77],[-56.83,49.72],[-56.81,49.71],[-56.81,49.67],[-56.82,49.61],[-56.76,49.65],[-56.61,49.79],[-56.5,49.87],[-56.43,49.9],[-56.38,49.93],[-56.32,50.01],[-56.25,50.09],[-56.18,50.11],[-56.15,50.1],[-56.12,50.06],[-56.13,50.02],[-56.16,49.96],[-56.16,49.94],[-56.07,49.98],[-55.93,50.02],[-55.87,50.01],[-55.76,49.96],[-55.67,49.97],[-55.53,50],[-55.5,49.98],[-55.53,49.94],[-55.58,49.89],[-55.72,49.83],[-56.04,49.7],[-56.14,49.62],[-56.12,49.62],[-56.05,49.66],[-55.98,49.68],[-55.9,49.68],[-55.87,49.67],[-55.88,49.65],[-55.89,49.58],[-56.09,49.45],[-56.04,49.46],[-55.82,49.52],[-55.68,49.43],[-55.49,49.46],[-55.38,49.49],[-55.38,49.47],[-55.35,49.44],[-55.36,49.38],[-55.34,49.37],[-55.29,49.39],[-55.28,49.41],[-55.28,49.51],[-55.27,49.52],[-55.23,49.51],[-55.21,49.48],[-55.2,49.41],[-55.23,49.33],[-55.26,49.27],[-55.34,49.17],[-55.33,49.13],[-55.35,49.08],[-55.33,49.08],[-55.25,49.12],[-55.25,49.14],[-55.25,49.18],[-55.24,49.2],[-55.18,49.24],[-55.06,49.3],[-55.03,49.31],[-55.01,49.29],[-55.02,49.26],[-54.98,49.27],[-54.91,49.32],[-54.84,49.35],[-54.78,49.36],[-54.72,49.39],[-54.65,49.44],[-54.58,49.49],[-54.5,49.53],[-54.47,49.53],[-54.48,49.47],[-54.47,49.4],[-54.46,49.34],[-54.45,49.33],[-54.39,49.39],[-54.36,49.42],[-54.32,49.42],[-54.27,49.42],[-53.96,49.44],[-53.86,49.43],[-53.75,49.39],[-53.62,49.32],[-53.57,49.26],[-53.56,49.19],[-53.57,49.14],[-53.67,49.08],[-53.76,49.04],[-53.81,48.99],[-53.82,48.95],[-53.85,48.93],[-53.9,48.89],[-54.16,48.79],[-54.1,48.78],[-53.95,48.81],[-53.85,48.81],[-53.85,48.8],[-53.89,48.77],[-53.96,48.74],[-53.97,48.72],[-53.97,48.71],[-53.89,48.68],[-53.78,48.7],[-53.7,48.68],[-53.71,48.66],[-53.77,48.58],[-53.79,48.53],[-53.89,48.48],[-54.07,48.42],[-54.11,48.39],[-54.1,48.39],[-53.94,48.44],[-53.85,48.45],[-53.8,48.45],[-53.74,48.5],[-53.64,48.51],[-53.55,48.48],[-53.41,48.56],[-53.36,48.57],[-53.28,48.56],[-53.22,48.58],[-53.13,48.63],[-53.06,48.66],[-53.04,48.66],[-53.03,48.63],[-53.02,48.57],[-53.04,48.52],[-53.06,48.48],[-53.14,48.4],[-53.18,48.37],[-53.23,48.36],[-53.3,48.37],[-53.33,48.36],[-53.41,48.29],[-53.53,48.23],[-53.61,48.21],[-53.56,48.17],[-53.54,48.11],[-53.57,48.09],[-53.7,48.07],[-53.71,48.06],[-53.76,48.04],[-53.87,48.02],[-53.79,48.01],[-53.65,48.03],[-53.64,48.01],[-53.66,47.97],[-53.7,47.92],[-53.86,47.8],[-53.86,47.79],[-53.84,47.73],[-53.81,47.68],[-53.77,47.65],[-53.67,47.65],[-53.6,47.66],[-53.5,47.74],[-53.28,48],[-53.09,48.07],[-52.92,48.15],[-52.88,48.13],[-52.87,48.11],[-52.87,48.09],[-52.95,48.03],[-53,47.98],[-53.11,47.81],[-53.15,47.73],[-53.18,47.65],[-53.17,47.51],[-53.16,47.49],[-53.12,47.46],[-53.06,47.48],[-52.95,47.55],[-52.87,47.62],[-52.82,47.73],[-52.78,47.77],[-52.74,47.77],[-52.71,47.75],[-52.7,47.69],[-52.67,47.62],[-52.65,47.55],[-52.67,47.47],[-52.68,47.43],[-52.91,47.1],[-52.89,47.05],[-52.88,47.01],[-52.89,46.97],[-52.96,46.82],[-53.03,46.72],[-53.07,46.68],[-53.11,46.66],[-53.17,46.65],[-53.21,46.66],[-53.25,46.7],[-53.29,46.72],[-53.32,46.72],[-53.38,46.71],[-53.54,46.63],[-53.57,46.63],[-53.59,46.64],[-53.62,46.68],[-53.6,46.89],[-53.58,46.96],[-53.61,47.01],[-53.58,47.1],[-53.58,47.13],[-53.6,47.15],[-53.64,47.14],[-53.7,47.09],[-53.77,47.01],[-53.86,46.94],[-54.01,46.84],[-54.08,46.82],[-54.1,46.82],[-54.13,46.84],[-54.17,46.88],[-54.17,46.92],[-54.16,46.97],[-54.09,47.09],[-53.97,47.26],[-53.87,47.39],[-53.85,47.44],[-53.88,47.46],[-53.9,47.51],[-53.94,47.64],[-53.99,47.76],[-54.05,47.81],[-54.19,47.86],[-54.22,47.85],[-54.23,47.77],[-54.4,47.56],[-54.43,47.46],[-54.46,47.43],[-54.49,47.4],[-54.56,47.38],[-54.54,47.43],[-54.46,47.54],[-54.47,47.55],[-54.57,47.46],[-54.65,47.41],[-54.74,47.4],[-54.8,47.4],[-54.86,47.39],[-55.09,47.17],[-55.1,47.1],[-55.14,47.05],[-55.25,46.94],[-55.32,46.91],[-55.4,46.9],[-55.48,46.92],[-55.53,46.91],[-55.65,46.88],[-55.79,46.87],[-55.84,46.87],[-55.88,46.89],[-55.95,46.93],[-55.96,46.96],[-55.95,46.97],[-55.92,47.02],[-55.84,47.07],[-55.77,47.09],[-55.61,47.12],[-55.49,47.16],[-55.4,47.22],[-55.36,47.26],[-55.19,47.45],[-54.98,47.52],[-54.87,47.57],[-54.8,47.64],[-54.78,47.66],[-54.89,47.63],[-54.95,47.62],[-55.04,47.63],[-55.07,47.66],[-55.2,47.65],[-55.37,47.66],[-55.39,47.64],[-55.41,47.55],[-55.43,47.5],[-55.46,47.48],[-55.5,47.48],[-55.58,47.47],[-55.77,47.5],[-55.81,47.52],[-55.86,47.53],[-56.08,47.5],[-56.13,47.5],[-56.08,47.52],[-55.87,47.59],[-55.84,47.79],[-55.86,47.82],[-55.92,47.79],[-56.02,47.76],[-56.09,47.77],[-56.12,47.79],[-56.15,47.77],[-56.22,47.67],[-56.26,47.66],[-56.33,47.65],[-56.46,47.62],[-56.72,47.59],[-56.77,47.56],[-56.95,47.57],[-57.47,47.63],[-57.66,47.63],[-57.88,47.66],[-57.93,47.67],[-58.24,47.67],[-58.33,47.68],[-58.33,47.72],[-58.34,47.73],[-58.43,47.68],[-58.51,47.65],[-58.61,47.63],[-58.94,47.58],[-59.12,47.57],[-59.22,47.6],[-59.26,47.63],[-59.32,47.74],[-59.36,47.87],[-59.36,47.89],[-59.34,47.93],[-59.27,48],[-58.96,48.16],[-58.71,48.33],[-58.6,48.41],[-58.5,48.44],[-58.34,48.51],[-58.33,48.52],[-58.49,48.51],[-58.61,48.53],[-58.72,48.54],[-58.94,48.52],[-59.17,48.52],[-59.17,48.56],[-59.06,48.63],[-58.84,48.75],[-58.82,48.75],[-58.89,48.69],[-58.91,48.65],[-58.88,48.62],[-58.84,48.61],[-58.72,48.6],[-58.69,48.62],[-58.64,48.75],[-58.55,48.9],[-58.49,49],[-58.4,49.08],[-58.36,49.1],[-58.32,49.08],[-58.19,49.06],[-58.05,48.99],[-58.01,48.98],[-57.99,48.99],[-58.04,49.01],[-58.08,49.04],[-58.1,49.08],[-58.05,49.18],[-57.99,49.21],[-57.98,49.23],[-58.1,49.23],[-58.19,49.26],[-58.22,49.31],[-58.21,49.39],[-58.18,49.44],[-58.11,49.5],[-58.02,49.54],[-57.96,49.53],[-57.86,49.47],[-57.79,49.49],[-57.8,49.51],[-57.9,49.6],[-57.93,49.67],[-57.93,49.7],[-57.71,50.02],[-57.61,50.2],[-57.47,50.46],[-57.43,50.51],[-57.36,50.58],[-57.33,50.61],[-57.24,50.61],[-57.18,50.61],[-57.26,50.65],[-57.29,50.67],[-57.3,50.7],[-57.27,50.73],[-57.24,50.74],[-57.13,50.79],[-57.05,50.86],[-57.01,50.94],[-57.01,50.97],[-57.04,51],[-57.04,51.01],[-56.98,51.03],[-56.83,51.13],[-56.81,51.14],[-56.75,51.27],[-56.68,51.33],[-56.62,51.36],[-56.52,51.4],[-56.21,51.49],[-56.03,51.57],[-55.9,51.56],[-55.87,51.51],[-55.69,51.47],[-55.66,51.51],[-55.7,51.56],[-55.67,51.58],[-55.52,51.6],[-55.5,51.59],[-55.45,51.56],[-55.46,51.54]]],[[[-127.92,51.47],[-127.94,51.46],[-127.98,51.46],[-128.04,51.47],[-128.09,51.51],[-128.15,51.63],[-128.14,51.65],[-128.12,51.67],[-128.03,51.71],[-128,51.7],[-127.99,51.67],[-127.93,51.61],[-127.92,51.59],[-127.92,51.51],[-127.92,51.47]]],[[[-55.36,51.89],[-55.41,51.89],[-55.42,51.9],[-55.4,51.94],[-55.35,51.98],[-55.27,52],[-55.29,51.93],[-55.36,51.89]]],[[[-79.38,51.95],[-79.43,51.94],[-79.52,51.95],[-79.6,51.98],[-79.64,52.01],[-79.33,52.1],[-79.27,52.09],[-79.27,52.07],[-79.32,52.02],[-79.33,51.99],[-79.35,51.97],[-79.38,51.95]]],[[[-131.03,51.96],[-131.05,51.96],[-131.08,51.98],[-131.1,52.01],[-131.12,52.1],[-131.11,52.14],[-131.1,52.15],[-131.01,52.1],[-131.03,51.96]]],[[[-128.37,52.4],[-128.45,52.39],[-128.42,52.44],[-128.41,52.47],[-128.43,52.5],[-128.44,52.56],[-128.44,52.7],[-128.36,52.78],[-128.25,52.78],[-128.25,52.74],[-128.3,52.55],[-128.32,52.46],[-128.34,52.43],[-128.37,52.4]]],[[[-128.94,52.51],[-128.97,52.46],[-129.1,52.57],[-129.15,52.61],[-129.25,52.72],[-129.27,52.77],[-129.26,52.8],[-129.25,52.81],[-129.22,52.8],[-129.19,52.79],[-128.99,52.66],[-128.94,52.6],[-128.94,52.51]]],[[[-129.31,52.99],[-129.33,52.98],[-129.37,53],[-129.41,53.02],[-129.48,53.1],[-129.5,53.13],[-129.51,53.18],[-129.5,53.19],[-129.47,53.18],[-129.45,53.17],[-129.34,53.05],[-129.31,52.99]]],[[[-80.73,52.75],[-80.8,52.73],[-81.01,52.76],[-81.1,52.78],[-81.35,52.85],[-81.84,52.96],[-82.01,53.01],[-82.04,53.05],[-81.95,53.13],[-81.9,53.17],[-81.85,53.19],[-81.34,53.22],[-81.14,53.21],[-80.9,53.04],[-80.77,52.92],[-80.71,52.83],[-80.71,52.79],[-80.73,52.75]]],[[[-131.75,53.2],[-131.65,53.1],[-131.62,53.02],[-131.63,52.92],[-131.8,52.89],[-131.88,52.91],[-131.92,52.91],[-131.97,52.88],[-131.9,52.87],[-131.81,52.82],[-131.73,52.76],[-131.61,52.75],[-131.46,52.7],[-131.57,52.62],[-131.59,52.58],[-131.44,52.45],[-131.43,52.42],[-131.38,52.42],[-131.27,52.43],[-131.26,52.42],[-131.26,52.39],[-131.33,52.32],[-131.32,52.3],[-131.26,52.29],[-131.14,52.29],[-131.12,52.22],[-131.22,52.15],[-131.42,52.24],[-131.51,52.32],[-131.56,52.4],[-131.62,52.44],[-131.81,52.54],[-132.09,52.75],[-132.17,52.78],[-132.24,52.87],[-132.26,52.91],[-132.26,52.93],[-132.23,52.95],[-132.14,52.96],[-132.14,53],[-132.47,53.07],[-132.5,53.09],[-132.55,53.14],[-132.52,53.14],[-132.35,53.14],[-132.15,53.16],[-132.04,53.18],[-131.99,53.2],[-131.89,53.23],[-131.85,53.23],[-131.75,53.2]]],[[[-128.55,52.94],[-128.51,52.62],[-128.51,52.52],[-128.58,52.45],[-128.62,52.34],[-128.68,52.29],[-128.73,52.36],[-128.74,52.47],[-128.75,52.56],[-128.77,52.6],[-128.75,52.76],[-128.77,52.75],[-128.83,52.68],[-128.9,52.67],[-129.02,52.76],[-129.08,52.82],[-129.09,52.89],[-129.18,52.96],[-129.18,52.99],[-129.18,53.02],[-129.11,53.09],[-129.08,53.14],[-129.06,53.24],[-129.03,53.28],[-128.97,53.27],[-128.86,53.23],[-128.74,53.18],[-128.63,53.11],[-128.55,52.94]]],[[[-129.17,53.12],[-129.17,53.11],[-129.28,53.11],[-129.31,53.12],[-129.32,53.14],[-129.33,53.17],[-129.31,53.21],[-129.25,53.29],[-129.25,53.32],[-129.24,53.33],[-129.2,53.29],[-129.18,53.26],[-129.17,53.12]]],[[[-79.94,53.3],[-79.94,53.27],[-80,53.28],[-80.04,53.3],[-80.07,53.32],[-80.07,53.34],[-80.05,53.36],[-79.97,53.35],[-79.94,53.3]]],[[[-129.85,53.17],[-129.87,53.16],[-129.93,53.18],[-130.15,53.35],[-130.31,53.41],[-130.41,53.49],[-130.52,53.54],[-130.45,53.63],[-130.39,53.62],[-130.2,53.55],[-130.04,53.48],[-129.94,53.44],[-129.75,53.24],[-129.77,53.22],[-129.85,53.17]]],[[[-130.24,53.96],[-130.27,53.92],[-130.34,53.87],[-130.38,53.84],[-130.41,53.86],[-130.47,53.86],[-130.54,53.92],[-130.59,53.94],[-130.62,53.94],[-130.64,53.92],[-130.65,53.89],[-130.64,53.86],[-130.64,53.84],[-130.66,53.85],[-130.68,53.86],[-130.7,53.89],[-130.71,53.92],[-130.7,53.95],[-130.65,53.99],[-130.49,54.07],[-130.45,54.09],[-130.4,54.09],[-130.32,54.05],[-130.3,54.04],[-130.24,53.96]]],[[[-132.66,54.13],[-132.56,54.07],[-132.34,54.11],[-132.3,54.1],[-132.26,54.08],[-132.22,54.03],[-132.17,53.96],[-132.16,53.88],[-132.18,53.85],[-132.21,53.81],[-132.56,53.69],[-132.57,53.68],[-132.57,53.66],[-132.53,53.65],[-132.46,53.65],[-132.19,53.68],[-132.17,53.71],[-132.15,53.81],[-132.11,53.86],[-132.11,53.9],[-132.14,54],[-132.13,54.03],[-131.94,54.04],[-131.82,54.08],[-131.7,54.14],[-131.67,54.14],[-131.69,54.02],[-131.7,53.99],[-131.82,53.84],[-131.89,53.71],[-131.92,53.59],[-131.93,53.38],[-131.96,53.31],[-132.01,53.27],[-132.35,53.19],[-132.52,53.19],[-132.67,53.26],[-132.75,53.31],[-132.69,53.37],[-132.65,53.37],[-132.55,53.36],[-132.46,53.34],[-132.43,53.34],[-132.43,53.35],[-132.67,53.46],[-132.85,53.51],[-132.9,53.56],[-132.9,53.61],[-132.91,53.63],[-133.05,53.78],[-133.08,53.84],[-133.1,53.92],[-133.1,54.01],[-133.06,54.14],[-133.05,54.16],[-132.99,54.16],[-132.89,54.14],[-132.66,54.13]]],[[[-130.93,54.48],[-130.95,54.48],[-130.96,54.5],[-130.95,54.54],[-130.92,54.61],[-130.91,54.63],[-130.78,54.62],[-130.76,54.61],[-130.75,54.6],[-130.76,54.58],[-130.81,54.54],[-130.93,54.48]]],[[[-130.35,54.81],[-130.54,54.75],[-130.58,54.77],[-130.49,54.83],[-130.31,54.95],[-130.21,55.03],[-130.2,54.95],[-130.35,54.81]]],[[[-60.99,56.04],[-60.98,56.02],[-61.14,56.03],[-61.19,56.05],[-61.2,56.06],[-61.19,56.09],[-61.16,56.12],[-61.09,56.14],[-61.05,56.13],[-60.97,56.1],[-60.96,56.08],[-60.99,56.04]]],[[[-78.83,56.15],[-78.88,56.13],[-78.91,56.13],[-78.91,56.17],[-78.86,56.23],[-78.83,56.29],[-78.82,56.34],[-78.8,56.38],[-78.76,56.42],[-78.72,56.44],[-78.67,56.44],[-78.66,56.32],[-78.67,56.26],[-78.71,56.21],[-78.76,56.17],[-78.83,56.15]]],[[[-79.98,56.21],[-80.03,56.2],[-80.09,56.21],[-80.06,56.29],[-80.01,56.32],[-79.87,56.35],[-79.85,56.37],[-79.81,56.38],[-79.75,56.38],[-79.68,56.4],[-79.61,56.46],[-79.58,56.47],[-79.63,56.39],[-79.69,56.33],[-79.98,56.21]]],[[[-78.94,56.27],[-79.02,56.16],[-79.08,56.07],[-79.18,55.89],[-79.23,55.88],[-79.27,55.92],[-79.14,56.14],[-79.14,56.16],[-79.14,56.18],[-79.18,56.21],[-79.22,56.18],[-79.41,55.93],[-79.46,55.9],[-79.5,55.87],[-79.53,55.87],[-79.61,55.88],[-79.76,55.81],[-79.5,56.09],[-79.49,56.11],[-79.54,56.13],[-79.56,56.12],[-79.78,55.94],[-79.9,55.87],[-79.99,55.89],[-80.01,55.91],[-80,55.93],[-79.79,56.11],[-79.6,56.24],[-79.52,56.33],[-79.48,56.4],[-79.47,56.46],[-79.47,56.52],[-79.46,56.54],[-79.45,56.54],[-79.44,56.51],[-79.43,56.45],[-79.48,56.31],[-79.51,56.25],[-79.55,56.19],[-79.54,56.18],[-79.46,56.21],[-79.39,56.28],[-79.34,56.38],[-79.31,56.46],[-79.27,56.6],[-79.26,56.6],[-79.25,56.57],[-79.21,56.55],[-79.16,56.54],[-79.12,56.52],[-79.1,56.47],[-79.08,56.45],[-78.99,56.44],[-78.96,56.42],[-78.94,56.37],[-78.94,56.34],[-78.93,56.33],[-78.91,56.32],[-78.94,56.27]]],[[[-79.52,56.66],[-79.55,56.64],[-79.58,56.64],[-79.55,56.73],[-79.58,56.76],[-79.58,56.78],[-79.57,56.8],[-79.55,56.8],[-79.51,56.77],[-79.49,56.74],[-79.48,56.71],[-79.48,56.69],[-79.5,56.67],[-79.52,56.66]]],[[[-79.87,56.77],[-79.89,56.76],[-79.94,56.78],[-79.95,56.83],[-79.9,56.87],[-79.86,56.86],[-79.83,56.84],[-79.84,56.82],[-79.87,56.77]]],[[[-61.74,57.55],[-61.66,57.52],[-61.64,57.42],[-61.8,57.42],[-61.98,57.5],[-62.01,57.55],[-62.01,57.56],[-61.98,57.57],[-61.94,57.55],[-61.89,57.57],[-61.85,57.58],[-61.74,57.55]]],[[[-79.72,57.52],[-79.73,57.51],[-79.78,57.51],[-79.79,57.45],[-79.81,57.44],[-79.84,57.48],[-79.82,57.52],[-79.82,57.54],[-79.81,57.56],[-79.77,57.6],[-79.74,57.61],[-79.73,57.6],[-79.71,57.56],[-79.72,57.52]]],[[[-69.16,59.04],[-69.22,58.97],[-69.3,58.98],[-69.33,58.96],[-69.35,58.96],[-69.32,59.03],[-69.31,59.07],[-69.33,59.12],[-69.3,59.14],[-69.2,59.15],[-69.19,59.09],[-69.18,59.07],[-69.16,59.06],[-69.16,59.04]]],[[[-80.29,59.62],[-80.32,59.62],[-80.32,59.63],[-80.3,59.67],[-80.26,59.68],[-80.21,59.72],[-80.17,59.71],[-80.18,59.68],[-80.24,59.64],[-80.29,59.62]]],[[[-80.06,59.77],[-80.17,59.76],[-80.12,59.82],[-80.08,59.85],[-80.04,59.87],[-79.96,59.88],[-79.9,59.85],[-79.95,59.81],[-80.06,59.77]]],[[[-64.41,60.37],[-64.44,60.3],[-64.56,60.32],[-64.74,60.38],[-64.81,60.41],[-64.83,60.45],[-64.84,60.5],[-64.78,60.51],[-64.65,60.51],[-64.53,60.44],[-64.5,60.43],[-64.41,60.37]]],[[[-68.23,60.24],[-68.32,60.23],[-68.37,60.25],[-68.37,60.31],[-68.34,60.36],[-68.23,60.46],[-68.14,60.56],[-68.09,60.59],[-67.98,60.57],[-67.91,60.54],[-67.85,60.49],[-67.82,60.45],[-67.84,60.39],[-67.92,60.34],[-68.01,60.3],[-68.23,60.24]]],[[[-78.53,60.73],[-78.67,60.72],[-78.67,60.73],[-78.61,60.77],[-78.4,60.81],[-78.24,60.82],[-78.28,60.78],[-78.37,60.76],[-78.53,60.73]]],[[[-64.83,61.37],[-64.86,61.35],[-64.88,61.36],[-64.95,61.41],[-65.05,61.43],[-65.09,61.45],[-65.39,61.56],[-65.43,61.61],[-65.43,61.65],[-65.33,61.67],[-65.13,61.69],[-64.95,61.69],[-64.79,61.66],[-64.76,61.64],[-64.67,61.59],[-64.69,61.54],[-64.7,61.47],[-64.73,61.44],[-64.79,61.41],[-64.83,61.37]]],[[[-93.04,61.84],[-93.08,61.84],[-93.18,61.89],[-93.2,61.92],[-93.08,61.94],[-92.99,61.89],[-93,61.87],[-93.04,61.84]]],[[[-65.03,61.88],[-65.01,61.87],[-64.98,61.88],[-64.96,61.87],[-64.95,61.84],[-64.92,61.82],[-64.87,61.8],[-64.85,61.78],[-64.85,61.76],[-64.9,61.73],[-64.93,61.73],[-65.17,61.8],[-65.23,61.86],[-65.24,61.9],[-65.21,61.93],[-65.17,61.94],[-65.13,61.94],[-65.07,61.93],[-65.03,61.88]]],[[[-79.55,62.41],[-79.47,62.38],[-79.34,62.29],[-79.29,62.25],[-79.27,62.19],[-79.31,62.1],[-79.32,62.03],[-79.37,61.97],[-79.46,61.89],[-79.54,61.81],[-79.61,61.71],[-79.67,61.64],[-79.71,61.61],[-79.76,61.6],[-79.82,61.59],[-79.9,61.63],[-80,61.7],[-80.09,61.75],[-80.2,61.78],[-80.27,61.82],[-80.28,61.86],[-80.28,61.99],[-80.28,62.05],[-80.26,62.11],[-80.23,62.15],[-80.18,62.21],[-80.02,62.34],[-79.93,62.39],[-79.87,62.4],[-79.71,62.4],[-79.65,62.4],[-79.6,62.41],[-79.55,62.41]]],[[[-64.82,62.56],[-64.63,62.55],[-64.52,62.55],[-64.47,62.54],[-64.42,62.49],[-64.48,62.42],[-64.55,62.39],[-64.66,62.38],[-64.84,62.41],[-64.9,62.42],[-64.96,62.46],[-64.93,62.49],[-64.84,62.49],[-64.83,62.5],[-64.85,62.53],[-64.85,62.54],[-64.82,62.56]]],[[[-74,62.62],[-74.05,62.61],[-74.25,62.62],[-74.5,62.67],[-74.63,62.71],[-74.62,62.73],[-74.56,62.73],[-74.5,62.73],[-74.39,62.7],[-74.11,62.68],[-74.02,62.66],[-73.99,62.64],[-74,62.62]]],[[[-70.34,62.55],[-70.41,62.54],[-70.54,62.55],[-70.69,62.57],[-70.77,62.6],[-70.84,62.65],[-70.85,62.7],[-70.99,62.79],[-71.14,62.82],[-71.22,62.87],[-71.13,62.88],[-71.01,62.87],[-70.83,62.84],[-70.67,62.81],[-70.44,62.73],[-70.37,62.67],[-70.29,62.62],[-70.27,62.58],[-70.29,62.56],[-70.34,62.55]]],[[[-82,62.95],[-81.96,62.93],[-81.95,62.88],[-81.96,62.83],[-81.99,62.78],[-82.03,62.73],[-82.11,62.65],[-82.39,62.52],[-82.49,62.45],[-82.57,62.4],[-83.02,62.21],[-83.07,62.2],[-83.13,62.2],[-83.25,62.23],[-83.38,62.24],[-83.7,62.16],[-83.71,62.17],[-83.73,62.26],[-83.76,62.3],[-83.9,62.4],[-83.91,62.43],[-83.91,62.45],[-83.9,62.48],[-83.74,62.57],[-83.38,62.9],[-83.29,62.92],[-83.11,62.88],[-83.03,62.87],[-82.97,62.87],[-82.71,62.94],[-82.46,62.94],[-82.23,62.98],[-82.13,62.98],[-82.05,62.97],[-82,62.95]]],[[[-77.88,63.47],[-77.79,63.43],[-77.7,63.43],[-77.65,63.4],[-77.54,63.29],[-77.53,63.27],[-77.53,63.23],[-77.59,63.19],[-77.66,63.16],[-77.79,63.13],[-77.94,63.11],[-78.02,63.14],[-78.26,63.24],[-78.47,63.36],[-78.54,63.42],[-78.51,63.45],[-78.42,63.47],[-78.23,63.49],[-77.93,63.48],[-77.88,63.47]]],[[[-76.68,63.39],[-76.78,63.38],[-76.92,63.41],[-77.06,63.45],[-77.36,63.59],[-77.13,63.68],[-76.76,63.57],[-76.65,63.5],[-76.68,63.39]]],[[[-77.64,63.99],[-77.71,63.95],[-77.93,63.96],[-77.96,63.98],[-77.97,63.99],[-77.93,64.01],[-77.71,64.04],[-77.62,64.04],[-77.57,64.03],[-77.56,64.02],[-77.64,63.99]]],[[[-84.92,65.26],[-84.89,65.25],[-84.84,65.26],[-84.77,65.31],[-84.61,65.45],[-84.57,65.46],[-84.5,65.46],[-84.27,65.37],[-84.18,65.32],[-84.13,65.25],[-84.08,65.22],[-83.9,65.18],[-83.72,65.17],[-83.49,65.13],[-83.41,65.1],[-83.22,64.97],[-83.2,64.96],[-82.99,64.9],[-82.67,64.78],[-82.59,64.76],[-82.27,64.72],[-82.16,64.69],[-82.05,64.64],[-81.93,64.56],[-81.79,64.43],[-81.68,64.21],[-81.67,64.17],[-81.68,64.15],[-81.72,64.12],[-81.9,64.03],[-81.89,64.02],[-81.72,64.02],[-81.34,64.08],[-81.1,64.04],[-81.02,64.03],[-81.01,64.03],[-80.92,64.1],[-80.83,64.09],[-80.69,64.02],[-80.61,63.97],[-80.57,63.93],[-80.58,63.91],[-80.67,63.9],[-80.45,63.86],[-80.26,63.8],[-80.3,63.76],[-80.5,63.67],[-80.71,63.6],[-80.95,63.48],[-81.01,63.46],[-81.05,63.46],[-81.18,63.48],[-81.37,63.54],[-81.96,63.66],[-82.15,63.69],[-82.38,63.71],[-82.41,63.74],[-82.47,63.93],[-82.57,63.96],[-82.93,64],[-83.03,64.02],[-83.04,64.06],[-83.02,64.13],[-83.07,64.16],[-83.19,64.16],[-83.3,64.14],[-83.49,64.1],[-83.58,64.06],[-83.62,64.01],[-83.64,63.92],[-83.66,63.87],[-83.73,63.81],[-84.02,63.66],[-84.14,63.61],[-84.26,63.6],[-84.31,63.59],[-84.39,63.53],[-84.51,63.39],[-84.55,63.35],[-84.63,63.31],[-84.8,63.25],[-84.96,63.2],[-85.24,63.14],[-85.39,63.12],[-85.5,63.14],[-85.57,63.27],[-85.71,63.66],[-85.74,63.68],[-85.77,63.7],[-85.8,63.71],[-86.3,63.66],[-86.58,63.66],[-86.85,63.58],[-86.92,63.57],[-87.05,63.57],[-87.15,63.59],[-87.18,63.6],[-87.19,63.63],[-87.19,63.67],[-87.15,63.71],[-87.03,63.83],[-86.93,63.9],[-86.89,63.92],[-86.42,64.05],[-86.31,64.09],[-86.25,64.14],[-86.25,64.18],[-86.27,64.24],[-86.35,64.38],[-86.37,64.5],[-86.37,64.57],[-86.34,64.66],[-86.23,64.9],[-86.19,65.01],[-86.11,65.42],[-86.07,65.53],[-86.02,65.64],[-85.96,65.7],[-85.81,65.83],[-85.7,65.88],[-85.55,65.92],[-85.52,65.91],[-85.5,65.9],[-85.44,65.85],[-85.24,65.8],[-85.18,65.75],[-85.13,65.69],[-85.11,65.62],[-85.13,65.59],[-85.23,65.55],[-85.24,65.53],[-85.24,65.51],[-85.06,65.44],[-84.92,65.26]]],[[[-84.67,65.58],[-84.73,65.56],[-84.78,65.57],[-84.83,65.6],[-84.87,65.65],[-84.93,65.69],[-85.07,65.74],[-85.1,65.76],[-85.14,65.82],[-85.14,65.89],[-85.17,65.94],[-85.18,65.97],[-85.15,66.02],[-85.03,66.03],[-84.94,66.01],[-84.92,66],[-84.89,65.97],[-84.87,65.94],[-84.76,65.86],[-84.69,65.79],[-84.6,65.66],[-84.6,65.63],[-84.63,65.6],[-84.67,65.58]]],[[[-83.73,65.8],[-83.6,65.76],[-83.47,65.74],[-83.26,65.72],[-83.23,65.72],[-83.23,65.7],[-83.26,65.67],[-83.33,65.63],[-83.38,65.63],[-83.5,65.66],[-83.54,65.67],[-83.58,65.7],[-83.61,65.7],[-83.64,65.69],[-83.64,65.68],[-83.63,65.66],[-83.65,65.66],[-83.79,65.67],[-83.81,65.68],[-83.8,65.71],[-83.7,65.76],[-83.79,65.77],[-83.81,65.79],[-83.94,65.76],[-84.01,65.75],[-84.12,65.77],[-84.13,65.88],[-84.14,65.92],[-84.19,65.94],[-84.22,65.97],[-84.27,65.99],[-84.37,66.01],[-84.45,66.06],[-84.47,66.09],[-84.46,66.11],[-84.41,66.13],[-84.12,66.08],[-83.95,66.03],[-83.79,65.97],[-83.7,65.92],[-83.69,65.89],[-83.71,65.86],[-83.77,65.83],[-83.73,65.8]]],[[[-83.12,66.28],[-83.02,66.27],[-82.95,66.27],[-82.93,66.26],[-83.01,66.21],[-83.06,66.2],[-83.15,66.23],[-83.21,66.28],[-83.23,66.3],[-83.24,66.33],[-83.22,66.34],[-83.12,66.28]]],[[[-108.09,67.01],[-107.97,67],[-107.81,67],[-107.83,66.92],[-107.9,66.87],[-107.94,66.86],[-107.97,66.88],[-108.06,66.95],[-108.09,67.01]]],[[[-62.68,67.06],[-62.81,67.03],[-62.87,67.06],[-62.83,67.07],[-62.76,67.11],[-62.66,67.15],[-62.63,67.18],[-62.47,67.19],[-62.42,67.19],[-62.4,67.18],[-62.48,67.13],[-62.68,67.06]]],[[[-107.9,67.4],[-107.95,67.32],[-107.97,67.33],[-108,67.37],[-108.07,67.39],[-108.15,67.43],[-108.15,67.52],[-108.12,67.57],[-108.13,67.63],[-108.05,67.66],[-107.99,67.62],[-107.97,67.55],[-107.99,67.51],[-107.93,67.48],[-107.91,67.47],[-107.89,67.44],[-107.9,67.4]]],[[[-109.17,67.98],[-109.05,67.97],[-108.97,67.98],[-108.91,67.94],[-108.89,67.9],[-108.89,67.88],[-108.92,67.88],[-109.1,67.92],[-109.16,67.95],[-109.18,67.98],[-109.17,67.98]]],[[[-73.62,67.78],[-74.11,67.78],[-74.37,67.79],[-74.48,67.8],[-74.57,67.83],[-74.68,67.91],[-74.75,67.98],[-74.75,68.02],[-74.73,68.05],[-74.71,68.07],[-74.38,68.09],[-74.11,68.06],[-73.88,68.02],[-73.58,68.02],[-73.49,68],[-73.46,67.99],[-73.44,67.97],[-73.4,67.88],[-73.4,67.83],[-73.41,67.79],[-73.62,67.78]]],[[[-109.32,67.99],[-109.36,67.99],[-109.5,68.05],[-109.47,68.1],[-109.34,68.05],[-109.32,68.01],[-109.32,67.99]]],[[[-86.6,67.74],[-86.64,67.73],[-86.71,67.75],[-86.86,67.81],[-86.89,67.84],[-86.91,67.87],[-86.91,67.9],[-86.89,67.94],[-86.85,68.01],[-86.94,68.07],[-86.96,68.1],[-86.95,68.12],[-86.9,68.16],[-86.88,68.19],[-86.83,68.23],[-86.7,68.31],[-86.57,68.29],[-86.45,68.23],[-86.42,68.18],[-86.43,68.14],[-86.42,68.07],[-86.39,67.99],[-86.38,67.93],[-86.4,67.89],[-86.45,67.82],[-86.49,67.78],[-86.55,67.75],[-86.6,67.74]]],[[[-75.68,68.32],[-75.15,68.23],[-75.1,68.2],[-75.08,68.17],[-75.06,68.14],[-75.06,68.08],[-75.07,68.05],[-75.12,67.99],[-75.13,67.97],[-75.09,67.75],[-75.09,67.63],[-75.13,67.54],[-75.2,67.46],[-75.31,67.4],[-75.4,67.37],[-75.78,67.28],[-76.05,67.26],[-76.33,67.26],[-76.69,67.24],[-76.86,67.24],[-76.94,67.25],[-77,67.27],[-77.08,67.32],[-77.16,67.41],[-77.22,67.51],[-77.3,67.69],[-77.31,67.71],[-77.23,67.85],[-77.13,67.95],[-76.94,68.09],[-76.74,68.23],[-76.69,68.25],[-76.6,68.28],[-76.36,68.32],[-76.17,68.31],[-76.09,68.31],[-75.98,68.33],[-75.87,68.34],[-75.68,68.32]]],[[[-78.98,68.19],[-79.06,68.18],[-79.17,68.23],[-79.17,68.26],[-79.15,68.34],[-78.95,68.35],[-78.87,68.31],[-78.83,68.27],[-78.98,68.19]]],[[[-104.54,68.41],[-104.6,68.4],[-104.7,68.42],[-104.85,68.45],[-104.97,68.49],[-105.04,68.53],[-105.05,68.56],[-104.99,68.57],[-104.91,68.58],[-104.7,68.58],[-104.6,68.56],[-104.47,68.5],[-104.44,68.47],[-104.44,68.45],[-104.46,68.43],[-104.54,68.41]]],[[[-74.88,68.35],[-74.96,68.34],[-75.07,68.4],[-75.31,68.47],[-75.4,68.53],[-75.4,68.55],[-75.4,68.59],[-75.37,68.64],[-75.29,68.69],[-75.2,68.7],[-75.07,68.68],[-74.98,68.65],[-74.88,68.54],[-74.82,68.49],[-74.8,68.46],[-74.83,68.44],[-74.83,68.42],[-74.81,68.41],[-74.82,68.39],[-74.84,68.37],[-74.88,68.35]]],[[[-101.85,68.59],[-101.89,68.58],[-101.94,68.6],[-102.27,68.66],[-102.31,68.68],[-102.27,68.71],[-102.15,68.74],[-102.07,68.77],[-102.01,68.83],[-101.83,68.8],[-101.76,68.77],[-101.73,68.75],[-101.72,68.72],[-101.73,68.65],[-101.79,68.64],[-101.85,68.59]]],[[[-100.22,68.81],[-100.25,68.78],[-100.29,68.77],[-100.37,68.73],[-100.4,68.72],[-100.44,68.75],[-100.48,68.79],[-100.5,68.79],[-100.52,68.79],[-100.57,68.77],[-100.6,68.77],[-100.62,68.78],[-100.63,68.82],[-100.62,68.87],[-100.6,68.94],[-100.6,68.97],[-100.61,68.99],[-100.6,69.01],[-100.57,69.03],[-100.52,69.04],[-100.41,69.03],[-100.33,69],[-100.29,68.96],[-100.21,68.93],[-100.18,68.9],[-100.22,68.81]]],[[[-99.99,69.01],[-100.02,68.95],[-100.14,68.97],[-100.2,68.99],[-100.24,69.04],[-100.25,69.05],[-100.24,69.07],[-100.19,69.11],[-100.15,69.13],[-100.07,69.11],[-100.04,69.09],[-100.01,69.05],[-99.99,69.01]]],[[[-90.49,69.22],[-90.57,69.21],[-90.63,69.25],[-90.67,69.26],[-90.69,69.29],[-90.77,69.29],[-90.77,69.34],[-90.74,69.36],[-90.66,69.37],[-90.6,69.37],[-90.54,69.32],[-90.51,69.29],[-90.49,69.25],[-90.49,69.22]]],[[[-79.21,68.85],[-79.28,68.84],[-79.36,68.86],[-79.39,68.89],[-79.41,68.92],[-79.39,68.94],[-79.35,68.96],[-79.31,68.99],[-79.24,69.05],[-79.14,69.09],[-78.93,69.12],[-78.9,69.14],[-78.8,69.24],[-78.77,69.25],[-78.66,69.26],[-78.65,69.28],[-78.69,69.3],[-78.69,69.33],[-78.65,69.35],[-78.6,69.37],[-78.46,69.39],[-78.33,69.39],[-78.3,69.38],[-78.27,69.36],[-78.23,69.31],[-78.23,69.3],[-78.29,69.26],[-78.44,69.2],[-78.53,69.15],[-78.55,69.13],[-78.56,69.11],[-78.6,69.08],[-78.71,69.01],[-78.78,68.95],[-78.85,68.92],[-79.05,68.88],[-79.21,68.85]]],[[[-90.2,69.42],[-90.18,69.36],[-90.27,69.27],[-90.3,69.26],[-90.33,69.25],[-90.36,69.26],[-90.46,69.33],[-90.49,69.37],[-90.46,69.39],[-90.38,69.42],[-90.32,69.43],[-90.25,69.42],[-90.23,69.44],[-90.2,69.42]]],[[[-77,69.14],[-77.12,69.13],[-77.22,69.14],[-77.28,69.16],[-77.32,69.19],[-77.38,69.27],[-77.36,69.31],[-77.35,69.38],[-77.34,69.4],[-77.32,69.42],[-77.19,69.44],[-77.11,69.44],[-76.99,69.41],[-76.75,69.4],[-76.68,69.38],[-76.67,69.37],[-76.67,69.35],[-76.69,69.33],[-76.81,69.27],[-76.87,69.22],[-76.91,69.17],[-77,69.14]]],[[[-101.17,69.4],[-101.25,69.39],[-101.27,69.39],[-101.26,69.42],[-101.27,69.43],[-101.29,69.44],[-101.22,69.46],[-101.21,69.48],[-101.23,69.49],[-101.33,69.52],[-101.36,69.54],[-101.35,69.56],[-101.31,69.58],[-101.24,69.57],[-101.1,69.54],[-101.03,69.5],[-101,69.46],[-101.05,69.46],[-101.09,69.44],[-101.13,69.41],[-101.17,69.4]]],[[[-95.51,69.57],[-95.38,69.51],[-95.38,69.47],[-95.4,69.42],[-95.44,69.38],[-95.5,69.35],[-95.58,69.34],[-95.68,69.34],[-95.73,69.35],[-95.7,69.39],[-95.67,69.4],[-95.67,69.44],[-95.68,69.5],[-95.7,69.54],[-95.76,69.56],[-95.81,69.56],[-95.82,69.54],[-95.8,69.5],[-95.81,69.45],[-95.86,69.38],[-95.89,69.35],[-95.96,69.37],[-95.99,69.39],[-95.98,69.43],[-95.99,69.47],[-95.98,69.51],[-95.94,69.57],[-95.88,69.61],[-95.8,69.63],[-95.71,69.62],[-95.6,69.6],[-95.51,69.57]]],[[[-139.04,69.58],[-139.13,69.54],[-139.26,69.58],[-139.29,69.6],[-139.14,69.65],[-139.07,69.65],[-138.93,69.62],[-138.88,69.59],[-139.04,69.58]]],[[[-67.91,69.54],[-67.94,69.53],[-68.2,69.58],[-68.22,69.62],[-68.09,69.66],[-67.99,69.68],[-67.91,69.68],[-67.83,69.67],[-67.75,69.63],[-67.84,69.59],[-67.91,69.54]]],[[[-78.03,69.71],[-77.98,69.66],[-77.97,69.64],[-78.04,69.61],[-78.31,69.55],[-78.47,69.5],[-78.55,69.49],[-78.66,69.5],[-78.8,69.48],[-78.85,69.48],[-78.79,69.52],[-78.58,69.64],[-78.4,69.65],[-78.34,69.67],[-78.3,69.67],[-78.27,69.69],[-78.26,69.72],[-78.2,69.74],[-78.15,69.74],[-78.03,69.71]]],[[[-79.43,69.79],[-79.39,69.73],[-79.36,69.71],[-79.4,69.69],[-79.55,69.63],[-79.88,69.61],[-80.05,69.63],[-79.97,69.56],[-79.95,69.52],[-79.98,69.51],[-80.05,69.51],[-80.16,69.54],[-80.23,69.56],[-80.24,69.59],[-80.27,69.6],[-80.3,69.58],[-80.33,69.59],[-80.4,69.63],[-80.45,69.65],[-80.78,69.68],[-80.79,69.69],[-80.78,69.71],[-80.73,69.74],[-80.65,69.75],[-80.47,69.74],[-80.45,69.74],[-80.44,69.78],[-80.42,69.8],[-80.29,69.79],[-80.21,69.8],[-80.17,69.78],[-80.12,69.74],[-80.06,69.75],[-79.97,69.74],[-79.87,69.76],[-79.71,69.8],[-79.59,69.81],[-79.43,69.79]]],[[[-97.44,69.64],[-97.41,69.63],[-97.35,69.64],[-97.31,69.67],[-97.28,69.68],[-97.24,69.67],[-97.1,69.61],[-96.99,69.55],[-96.88,69.51],[-96.69,69.47],[-96.3,69.34],[-96.18,69.26],[-96.06,69.13],[-95.95,69.02],[-95.85,68.95],[-95.75,68.9],[-95.59,68.84],[-95.44,68.88],[-95.37,68.89],[-95.32,68.87],[-95.27,68.83],[-95.3,68.81],[-95.36,68.78],[-95.47,68.75],[-95.61,68.75],[-95.69,68.74],[-95.8,68.69],[-95.89,68.63],[-96.02,68.61],[-96.27,68.51],[-96.4,68.47],[-96.6,68.46],[-97.01,68.54],[-97.26,68.53],[-97.47,68.54],[-97.7,68.63],[-97.89,68.67],[-98.24,68.74],[-98.26,68.75],[-98.27,68.77],[-98.28,68.81],[-98.3,68.83],[-98.32,68.84],[-98.38,68.84],[-98.43,68.82],[-98.54,68.8],[-98.7,68.8],[-98.78,68.82],[-98.83,68.84],[-98.86,68.86],[-98.86,68.89],[-98.88,68.92],[-98.9,68.93],[-98.96,68.93],[-99.06,68.92],[-99.09,68.9],[-99.07,68.88],[-99.09,68.86],[-99.25,68.86],[-99.32,68.88],[-99.44,68.92],[-99.49,68.96],[-99.56,69.03],[-99.56,69.05],[-99.51,69.1],[-99.46,69.13],[-99.09,69.15],[-98.91,69.17],[-98.72,69.22],[-98.5,69.31],[-98.46,69.33],[-98.45,69.35],[-98.47,69.37],[-98.54,69.43],[-98.56,69.46],[-98.54,69.48],[-98.45,69.48],[-98.49,69.5],[-98.53,69.53],[-98.55,69.54],[-98.55,69.57],[-98.48,69.58],[-98.39,69.57],[-98.22,69.48],[-98.16,69.47],[-98.04,69.46],[-98.16,69.51],[-98.29,69.63],[-98.3,69.67],[-98.3,69.69],[-98.27,69.75],[-98.24,69.78],[-98.2,69.8],[-98.08,69.83],[-97.89,69.86],[-97.79,69.86],[-97.69,69.84],[-97.6,69.8],[-97.41,69.74],[-97.38,69.71],[-97.39,69.7],[-97.46,69.68],[-97.47,69.67],[-97.44,69.64]]],[[[-86.91,70.11],[-86.8,70.11],[-86.69,70.12],[-86.61,70.11],[-86.56,70.08],[-86.53,70.05],[-86.52,70.02],[-86.56,70],[-86.73,69.98],[-86.85,69.99],[-86.98,70.01],[-87.04,70],[-87.19,70.02],[-87.26,70.04],[-87.32,70.08],[-87.32,70.1],[-87.17,70.13],[-87.11,70.15],[-86.91,70.11]]],[[[-100.31,70.5],[-100.32,70.49],[-100.54,70.53],[-100.62,70.55],[-100.65,70.56],[-100.67,70.6],[-100.68,70.65],[-100.64,70.67],[-100.54,70.67],[-100.43,70.65],[-100.28,70.59],[-100.32,70.58],[-100.32,70.54],[-100.31,70.51],[-100.31,70.5]]],[[[-74.71,45],[-74.76,45],[-74.86,45],[-75,44.97],[-75.18,44.9],[-75.4,44.77],[-75.79,44.5],[-75.82,44.47],[-75.88,44.42],[-76.02,44.36],[-76.15,44.3],[-76.19,44.24],[-76.25,44.21],[-76.46,44.06],[-76.59,43.92],[-76.7,43.78],[-76.82,43.63],[-77.07,43.63],[-77.27,43.63],[-77.6,43.63],[-77.88,43.63],[-78.21,43.63],[-78.46,43.63],[-78.72,43.62],[-78.85,43.58],[-79,43.53],[-79.17,43.47],[-79.08,43.33],[-79.06,43.28],[-79.07,43.11],[-79.05,43.09],[-79.03,43.06],[-79.03,43.02],[-79.01,43],[-78.98,42.98],[-78.95,42.96],[-78.92,42.94],[-78.92,42.91],[-78.94,42.86],[-79.04,42.8],[-79.17,42.75],[-79.45,42.65],[-79.76,42.54],[-80.04,42.44],[-80.25,42.37],[-80.68,42.3],[-81.03,42.25],[-81.28,42.21],[-81.51,42.1],[-81.76,41.99],[-81.97,41.89],[-82.21,41.78],[-82.44,41.67],[-82.69,41.68],[-82.87,41.75],[-83.03,41.83],[-83.14,41.98],[-83.15,42.14],[-83.11,42.25],[-83.07,42.3],[-83,42.33],[-82.87,42.39],[-82.74,42.49],[-82.65,42.56],[-82.55,42.62],[-82.49,42.74],[-82.42,43.02],[-82.41,43.07],[-82.3,43.26],[-82.19,43.47],[-82.14,43.57],[-82.2,43.82],[-82.24,44.02],[-82.28,44.19],[-82.33,44.39],[-82.37,44.57],[-82.41,44.74],[-82.45,44.92],[-82.49,45.08],[-82.52,45.2],[-82.55,45.35],[-82.76,45.45],[-82.92,45.52],[-83.18,45.63],[-83.4,45.73],[-83.59,45.82],[-83.47,45.99],[-83.48,46.02],[-83.52,46.06],[-83.62,46.12],[-83.67,46.12],[-83.76,46.11],[-83.91,46.07],[-83.98,46.08],[-84.03,46.15],[-84.09,46.23],[-84.11,46.29],[-84.12,46.37],[-84.15,46.44],[-84.13,46.48],[-84.12,46.5],[-84.13,46.53],[-84.15,46.54],[-84.19,46.55],[-84.34,46.52],[-84.4,46.52],[-84.44,46.5],[-84.5,46.46],[-84.56,46.46],[-84.67,46.54],[-84.78,46.64],[-84.83,46.77],[-84.88,46.9],[-85.07,46.98],[-85.26,47.06],[-85.46,47.14],[-85.65,47.22],[-85.85,47.3],[-86.04,47.38],[-86.23,47.46],[-86.43,47.54],[-86.5,47.57],[-86.67,47.64],[-86.92,47.74],[-87.21,47.85],[-87.49,47.96],[-87.74,48.06],[-87.92,48.13],[-87.99,48.16],[-88.16,48.23],[-88.38,48.3],[-88.61,48.26],[-88.9,48.16],[-89.06,48.09],[-89.19,48.05],[-89.27,48.02],[-89.46,48],[-89.55,48],[-89.78,48.02],[-89.9,48],[-89.99,48.02],[-90.04,48.08],[-90.09,48.12],[-90.32,48.1],[-90.61,48.11],[-90.74,48.1],[-90.8,48.13],[-90.84,48.2],[-90.92,48.21],[-91.04,48.19],[-91.22,48.1],[-91.39,48.06],[-91.52,48.06],[-91.65,48.1],[-91.86,48.2],[-92.01,48.3],[-92.17,48.34],[-92.3,48.33],[-92.35,48.28],[-92.41,48.28],[-92.46,48.37],[-92.5,48.44],[-92.58,48.47],[-92.73,48.53],[-92.84,48.57],[-93,48.61],[-93.05,48.62],[-93.16,48.63],[-93.26,48.63],[-93.38,48.62],[-93.46,48.56],[-93.56,48.54],[-93.71,48.53],[-93.8,48.55],[-93.85,48.61],[-94.06,48.66],[-94.41,48.7],[-94.62,48.74],[-94.68,48.77],[-94.71,48.81],[-94.71,48.86],[-94.71,48.86],[-94.8,49],[-94.84,49.12],[-94.86,49.26],[-94.85,49.3],[-94.87,49.32],[-94.94,49.35],[-95.16,49.37],[-95.16,49.2],[-95.16,48.99],[-95.4,48.99],[-95.82,48.99],[-96.25,48.99],[-96.68,48.99],[-97.1,48.99],[-97.53,48.99],[-97.96,48.99],[-98.38,48.99],[-98.81,48.99],[-99.24,48.99],[-99.66,48.99],[-100.09,48.99],[-100.51,48.99],[-100.94,48.99],[-101.37,48.99],[-101.79,48.99],[-102.22,48.99],[-102.65,48.99],[-103.07,48.99],[-103.5,48.99],[-103.93,48.99],[-104.35,48.99],[-104.78,48.99],[-105.2,48.99],[-105.63,48.99],[-106.06,48.99],[-106.48,48.99],[-106.91,48.99],[-107.34,48.99],[-107.76,48.99],[-108.19,48.99],[-108.62,48.99],[-109.04,48.99],[-109.47,48.99],[-109.89,48.99],[-110.32,48.99],[-110.75,48.99],[-111.17,48.99],[-111.6,48.99],[-112.03,48.99],[-112.45,48.99],[-112.88,48.99],[-113.31,48.99],[-113.73,48.99],[-114.16,48.99],[-114.59,48.99],[-115.01,48.99],[-115.44,48.99],[-115.86,48.99],[-116.29,48.99],[-116.72,48.99],[-117.14,48.99],[-117.57,48.99],[-118,48.99],[-118.42,48.99],[-118.85,48.99],[-119.28,48.99],[-119.7,48.99],[-120.13,48.99],[-120.55,48.99],[-120.98,48.99],[-121.41,48.99],[-121.83,48.99],[-122.26,48.99],[-122.69,48.99],[-122.79,48.99],[-122.83,49.03],[-122.92,49.07],[-122.96,49.07],[-123,49.06],[-123.03,49.04],[-123.05,48.99],[-123.06,48.98],[-123.08,48.98],[-123.09,48.99],[-123.12,49.06],[-123.11,49.08],[-123.08,49.12],[-123.08,49.13],[-123.15,49.12],[-123.18,49.13],[-123.2,49.15],[-123.19,49.22],[-123.23,49.26],[-123.18,49.28],[-123.07,49.29],[-122.95,49.29],[-122.91,49.32],[-122.88,49.4],[-122.96,49.33],[-123.02,49.32],[-123.17,49.35],[-123.28,49.34],[-123.29,49.36],[-123.29,49.37],[-123.26,49.39],[-123.25,49.44],[-123.22,49.59],[-123.19,49.64],[-123.18,49.67],[-123.19,49.68],[-123.32,49.58],[-123.34,49.55],[-123.32,49.52],[-123.34,49.46],[-123.4,49.44],[-123.44,49.45],[-123.51,49.4],[-123.53,49.4],[-123.86,49.48],[-123.89,49.49],[-123.95,49.53],[-124.03,49.6],[-124.05,49.66],[-124.02,49.71],[-123.99,49.74],[-123.96,49.74],[-123.92,49.72],[-123.85,49.64],[-123.82,49.59],[-123.74,49.59],[-123.61,49.66],[-123.58,49.68],[-123.71,49.66],[-123.76,49.66],[-123.82,49.69],[-123.87,49.74],[-123.9,49.8],[-123.9,49.98],[-123.88,50.02],[-123.82,50.04],[-123.78,50.09],[-123.79,50.11],[-123.83,50.14],[-123.88,50.17],[-123.93,50.19],[-123.95,50.18],[-123.86,50.1],[-123.87,50.07],[-123.96,49.99],[-123.97,49.97],[-123.97,49.89],[-123.98,49.88],[-124.06,49.85],[-124.14,49.79],[-124.28,49.77],[-124.41,49.78],[-124.48,49.81],[-124.7,49.96],[-124.78,50.02],[-124.78,50.07],[-124.93,50.26],[-124.93,50.3],[-124.99,50.36],[-125.04,50.36],[-125.06,50.42],[-124.94,50.54],[-124.86,50.64],[-124.85,50.67],[-124.86,50.72],[-124.88,50.83],[-124.86,50.87],[-124.93,50.81],[-124.95,50.76],[-124.93,50.72],[-124.94,50.67],[-124.99,50.59],[-125.06,50.51],[-125.21,50.48],[-125.48,50.5],[-125.51,50.51],[-125.53,50.53],[-125.54,50.65],[-125.56,50.63],[-125.59,50.57],[-125.61,50.49],[-125.64,50.47],[-125.7,50.46],[-125.74,50.48],[-125.77,50.51],[-125.84,50.51],[-125.97,50.49],[-126.02,50.5],[-126.09,50.5],[-126.24,50.52],[-126.4,50.53],[-126.45,50.55],[-126.45,50.59],[-126.42,50.61],[-126.24,50.62],[-126.07,50.66],[-125.9,50.68],[-125.9,50.7],[-125.98,50.71],[-126.37,50.67],[-126.49,50.67],[-126.51,50.68],[-126.52,50.72],[-126.47,50.77],[-126.4,50.81],[-126.37,50.84],[-126.42,50.85],[-126.49,50.84],[-126.52,50.87],[-126.48,50.96],[-126.52,51.06],[-126.56,50.97],[-126.63,50.92],[-126.96,50.89],[-127.01,50.87],[-127.06,50.87],[-127.27,50.92],[-127.36,50.95],[-127.44,50.99],[-127.59,51.09],[-127.71,51.15],[-127.71,51.27],[-127.69,51.34],[-127.63,51.43],[-127.42,51.61],[-127.35,51.64],[-127.28,51.65],[-126.97,51.67],[-126.74,51.69],[-126.69,51.7],[-127.03,51.72],[-127.34,51.71],[-127.44,51.68],[-127.58,51.56],[-127.61,51.51],[-127.64,51.48],[-127.67,51.48],[-127.71,51.49],[-127.73,51.51],[-127.75,51.54],[-127.82,51.6],[-127.85,51.67],[-127.87,51.78],[-127.86,51.82],[-127.83,51.88],[-127.73,51.99],[-127.86,51.99],[-127.84,52.09],[-127.8,52.19],[-127.67,52.25],[-127.55,52.3],[-127.44,52.36],[-127.24,52.4],[-127.18,52.31],[-127.01,52.29],[-126.96,52.25],[-126.9,52.19],[-126.83,52.13],[-126.74,52.06],[-126.71,52.06],[-126.75,52.11],[-126.9,52.23],[-126.9,52.27],[-126.94,52.31],[-127.13,52.37],[-127.16,52.39],[-127.19,52.46],[-127.21,52.5],[-127.19,52.54],[-127,52.66],[-126.95,52.72],[-126.95,52.75],[-126.97,52.78],[-127.01,52.84],[-127.02,52.84],[-127.01,52.75],[-127.01,52.72],[-127.03,52.68],[-127.07,52.65],[-127.11,52.63],[-127.52,52.36],[-127.56,52.34],[-127.71,52.32],[-127.79,52.29],[-127.83,52.25],[-127.9,52.15],[-128,51.95],[-128.1,51.79],[-128.19,52],[-128.36,52.16],[-128.04,52.32],[-128.03,52.34],[-128.06,52.43],[-128.05,52.45],[-128.02,52.49],[-127.94,52.55],[-127.94,52.55],[-128.04,52.53],[-128.18,52.41],[-128.24,52.37],[-128.27,52.36],[-128.28,52.44],[-128.2,52.62],[-128.13,52.81],[-128.11,52.86],[-128.05,52.91],[-128.11,52.91],[-128.37,52.83],[-128.45,52.88],[-128.52,53.14],[-128.65,53.24],[-128.87,53.33],[-129.08,53.37],[-129.13,53.44],[-129.17,53.53],[-129.11,53.64],[-129.02,53.69],[-128.94,53.72],[-128.85,53.7],[-128.85,53.67],[-128.91,53.56],[-128.83,53.55],[-128.54,53.42],[-128.48,53.41],[-128.36,53.46],[-128.29,53.46],[-128.13,53.42],[-128.08,53.37],[-127.93,53.27],[-127.95,53.33],[-128.12,53.45],[-128.21,53.48],[-128.37,53.49],[-128.47,53.47],[-128.51,53.48],[-128.6,53.51],[-128.68,53.55],[-128.75,53.66],[-128.77,53.71],[-128.76,53.75],[-128.75,53.78],[-128.71,53.81],[-128.65,53.83],[-128.56,53.85],[-128.53,53.86],[-128.65,53.92],[-128.7,53.92],[-128.89,53.83],[-128.93,53.82],[-128.94,53.84],[-128.96,53.84],[-129.01,53.8],[-129.06,53.78],[-129.21,53.64],[-129.23,53.58],[-129.24,53.48],[-129.26,53.42],[-129.28,53.39],[-129.46,53.35],[-129.56,53.25],[-129.69,53.33],[-129.82,53.41],[-129.91,53.55],[-130.07,53.58],[-130.26,53.65],[-130.34,53.72],[-130.23,53.87],[-130.09,53.98],[-130.06,54.11],[-130.04,54.13],[-129.79,54.17],[-129.63,54.23],[-129.79,54.24],[-129.9,54.23],[-130.08,54.18],[-130.29,54.27],[-130.4,54.35],[-130.43,54.42],[-130.39,54.48],[-130.39,54.54],[-130.37,54.62],[-130.35,54.66],[-130.31,54.7],[-130.22,54.73],[-130.14,54.82],[-130.11,54.89],[-129.95,55.08],[-129.89,55.16],[-129.78,55.28],[-129.56,55.46],[-129.63,55.45],[-129.67,55.44],[-129.7,55.44],[-129.73,55.46],[-129.77,55.5],[-129.8,55.56],[-129.81,55.53],[-129.82,55.42],[-129.84,55.32],[-129.88,55.25],[-129.99,55.11],[-130.05,55.06],[-130.09,55.11],[-130.06,55.19],[-130,55.26],[-129.99,55.36],[-130.04,55.47],[-130.08,55.56],[-130.09,55.63],[-130.09,55.69],[-130.09,55.75],[-130.06,55.81],[-130.02,55.88],[-130.03,55.89],[-130.01,55.95],[-130.02,56.01],[-130.06,56.07],[-130.1,56.11],[-130.21,56.08],[-130.41,56.12],[-130.48,56.23],[-130.65,56.26],[-130.74,56.34],[-130.93,56.38],[-131.08,56.4],[-131.2,56.45],[-131.34,56.5],[-131.47,56.56],[-131.58,56.6],[-131.65,56.6],[-131.82,56.59],[-131.83,56.68],[-131.89,56.74],[-131.87,56.79],[-131.96,56.82],[-132.1,56.86],[-132.06,56.95],[-132.03,57.03],[-132.16,57.05],[-132.34,57.08],[-132.28,57.15],[-132.23,57.2],[-132.3,57.28],[-132.44,57.41],[-132.55,57.5],[-132.69,57.65],[-132.82,57.77],[-132.92,57.88],[-133,57.95],[-133.12,58.08],[-133.28,58.22],[-133.42,58.34],[-133.4,58.41],[-133.55,58.5],[-133.67,58.6],[-133.82,58.71],[-133.97,58.76],[-134.07,58.8],[-134.22,58.85],[-134.3,58.9],[-134.33,58.94],[-134.36,58.97],[-134.39,59.01],[-134.41,59.06],[-134.44,59.09],[-134.62,59.16],[-134.68,59.2],[-134.8,59.25],[-134.91,59.27],[-134.94,59.29],[-135.07,59.44],[-135.05,59.5],[-135.04,59.55],[-135.05,59.58],[-135.26,59.7],[-135.37,59.74],[-135.48,59.79],[-135.7,59.73],[-135.93,59.66],[-136.1,59.64],[-136.32,59.6],[-136.25,59.53],[-136.28,59.48],[-136.35,59.46],[-136.47,59.46],[-136.47,59.28],[-136.58,59.15],[-136.81,59.15],[-136.94,59.11],[-137.13,59.04],[-137.28,58.99],[-137.44,58.9],[-137.52,58.92],[-137.48,58.99],[-137.54,59.12],[-137.59,59.23],[-137.7,59.28],[-137.87,59.37],[-138,59.44],[-138.19,59.54],[-138.32,59.61],[-138.45,59.68],[-138.63,59.78],[-138.71,59.9],[-138.87,59.95],[-139.04,59.99],[-139.19,60.08],[-139.14,60.17],[-139.08,60.28],[-139.08,60.34],[-139.23,60.34],[-139.47,60.33],[-139.68,60.33],[-139.83,60.25],[-139.97,60.18],[-140.2,60.24],[-140.45,60.3],[-140.53,60.22],[-140.76,60.26],[-141,60.3],[-141,60.59],[-141,60.88],[-141,61.18],[-141,61.47],[-141,61.76],[-141,62.05],[-141,62.35],[-141,62.64],[-141,62.93],[-141,63.22],[-141,63.51],[-141,63.81],[-141,64.1],[-141,64.39],[-141,64.68],[-141,64.98],[-141,65.27],[-141,65.56],[-141,65.85],[-141,66.14],[-141,66.44],[-141,66.73],[-141,67.02],[-141,67.31],[-141,67.61],[-141,67.9],[-141,68.19],[-141,68.48],[-141,68.77],[-141,69.07],[-141,69.36],[-141,69.65],[-140.86,69.64],[-140.41,69.6],[-139.98,69.62],[-139.18,69.52],[-138.69,69.32],[-138.29,69.22],[-138.13,69.15],[-137.87,69.09],[-137.26,68.96],[-137.07,68.95],[-136.72,68.89],[-136.5,68.9],[-136.12,68.88],[-135.87,68.83],[-135.36,68.7],[-135.26,68.68],[-135.23,68.69],[-135.41,68.83],[-135.43,68.84],[-135.64,68.89],[-135.88,68.92],[-135.89,68.93],[-135.94,68.97],[-135.92,68.99],[-135.87,69],[-135.7,69],[-135.59,69.01],[-135.58,69.03],[-135.65,69.03],[-135.74,69.05],[-135.85,69.08],[-135.91,69.11],[-135.69,69.31],[-135.61,69.29],[-135.5,69.34],[-135.29,69.31],[-135.25,69.32],[-135.23,69.43],[-135.2,69.45],[-135.14,69.47],[-134.85,69.49],[-134.49,69.47],[-134.46,69.48],[-134.49,69.55],[-134.5,69.57],[-134.47,69.63],[-134.45,69.67],[-134.41,69.68],[-134.24,69.67],[-134.19,69.64],[-134.13,69.59],[-134.08,69.56],[-133.9,69.53],[-133.88,69.51],[-133.95,69.43],[-134.02,69.39],[-134.17,69.28],[-134.17,69.25],[-133.95,69.3],[-133.69,69.37],[-133.48,69.41],[-133.29,69.41],[-133.16,69.43],[-133.08,69.47],[-133.03,69.51],[-132.92,69.63],[-132.84,69.65],[-132.53,69.64],[-132.45,69.65],[-132.4,69.66],[-132.41,69.67],[-132.48,69.69],[-132.57,69.7],[-132.57,69.71],[-132.54,69.73],[-132.49,69.74],[-132.33,69.75],[-132.23,69.71],[-132.16,69.7],[-131.93,69.75],[-131.58,69.88],[-131.44,69.92],[-131.32,69.92],[-131.22,69.9],[-131.14,69.91],[-131.03,69.98],[-130.99,70.02],[-130.93,70.05],[-130.67,70.13],[-130.5,70.14],[-130.4,70.13],[-130.27,70.1],[-130.17,70.09],[-130.04,70.1],[-129.94,70.09],[-129.9,70.11],[-129.73,70.19],[-129.68,70.19],[-129.62,70.17],[-129.54,70.11],[-129.54,70.07],[-129.65,70],[-130.46,69.78],[-130.71,69.69],[-130.83,69.65],[-130.96,69.63],[-131.21,69.62],[-131.31,69.6],[-131.47,69.58],[-131.86,69.55],[-131.94,69.53],[-131.99,69.52],[-132.13,69.4],[-132.2,69.36],[-132.33,69.31],[-132.48,69.27],[-132.69,69.26],[-132.82,69.21],[-132.97,69.1],[-133.09,69.03],[-133.23,68.97],[-133.38,68.89],[-133.42,68.84],[-133.37,68.79],[-133.35,68.77],[-133.2,68.74],[-133.14,68.75],[-133.19,68.78],[-133.32,68.82],[-133.34,68.84],[-133.3,68.85],[-132.71,68.81],[-132.58,68.85],[-132.53,68.88],[-132.54,68.89],[-132.7,68.9],[-132.74,68.92],[-132.76,68.97],[-132.77,69.01],[-132.76,69.04],[-132.72,69.08],[-132.55,69.14],[-132.36,69.17],[-132.21,69.2],[-132.13,69.23],[-131.92,69.29],[-131.83,69.34],[-131.79,69.37],[-131.78,69.39],[-131.82,69.4],[-131.79,69.43],[-131.63,69.46],[-131.56,69.46],[-131.34,69.44],[-131.3,69.42],[-131.32,69.36],[-131.29,69.36],[-131.21,69.43],[-131.16,69.45],[-131.11,69.46],[-131.06,69.45],[-131.01,69.43],[-130.99,69.36],[-130.98,69.25],[-130.97,69.21],[-130.91,69.28],[-130.88,69.32],[-130.66,69.48],[-130.52,69.57],[-130.35,69.66],[-130.12,69.72],[-129.57,69.83],[-129.26,69.86],[-129.11,69.88],[-129.03,69.9],[-128.98,69.93],[-128.9,69.97],[-128.88,69.96],[-128.92,69.89],[-128.94,69.87],[-129.14,69.83],[-129.16,69.8],[-129.14,69.75],[-129.1,69.72],[-129.05,69.7],[-128.97,69.71],[-128.85,69.75],[-128.71,69.81],[-128.39,69.96],[-128.36,69.99],[-128.28,70.11],[-128.1,70.16],[-127.76,70.22],[-127.68,70.26],[-127.97,70.29],[-128.03,70.32],[-128.04,70.33],[-127.99,70.36],[-128.12,70.4],[-128.17,70.42],[-128.17,70.48],[-128.13,70.52],[-128.04,70.57],[-127.99,70.57],[-127.86,70.55],[-127.75,70.52],[-127.38,70.37],[-127.23,70.3],[-127.14,70.24],[-126.93,70.06],[-126.83,69.96],[-126.76,69.85],[-126.68,69.78],[-126.61,69.73],[-126.25,69.55],[-126.06,69.47],[-125.91,69.42],[-125.73,69.38],[-125.52,69.35],[-125.39,69.35],[-125.17,69.43],[-125.17,69.48],[-125.26,69.57],[-125.36,69.63],[-125.35,69.66],[-125.22,69.73],[-125.23,69.76],[-125.2,69.83],[-125.11,69.82],[-125.08,69.82],[-125.03,69.84],[-124.97,69.89],[-124.89,69.94],[-124.79,69.97],[-124.77,69.99],[-124.86,70.01],[-124.92,70.01],[-124.96,70.01],[-124.99,70.03],[-124.95,70.04],[-124.75,70.08],[-124.71,70.12],[-124.64,70.14],[-124.56,70.15],[-124.5,70.14],[-124.44,70.11],[-124.44,70.06],[-124.47,69.98],[-124.47,69.92],[-124.41,69.77],[-124.35,69.73],[-124.12,69.69],[-124.14,69.65],[-124.4,69.49],[-124.45,69.45],[-124.48,69.43],[-124.47,69.4],[-124.43,69.38],[-124.34,69.36],[-124.11,69.36],[-124.05,69.37],[-123.61,69.38],[-123.53,69.39],[-123.46,69.42],[-123.36,69.5],[-123.25,69.52],[-123.21,69.54],[-123.14,69.63],[-123.11,69.74],[-123.08,69.78],[-123.03,69.81],[-122.96,69.82],[-122.79,69.81],[-122.7,69.82],[-122.39,69.81],[-122.07,69.82],[-121.74,69.8],[-121.53,69.78],[-121.34,69.74],[-120.96,69.66],[-120.81,69.62],[-120.29,69.42],[-120.14,69.38],[-119.85,69.34],[-118.87,69.26],[-118.74,69.23],[-118.49,69.14],[-118.31,69.09],[-118.1,69.04],[-117.83,69],[-117.31,68.93],[-117.23,68.91],[-117.13,68.91],[-117.03,68.92],[-116.55,68.88],[-116.42,68.88],[-116.33,68.87],[-116.22,68.85],[-116.06,68.84],[-116.07,68.86],[-116.25,68.96],[-116.24,68.97],[-116.17,68.98],[-115.94,68.96],[-115.88,68.99],[-115.81,68.99],[-115.63,68.97],[-115.44,68.94],[-115.24,68.89],[-114.99,68.85],[-114.62,68.75],[-114.41,68.66],[-114.22,68.55],[-114.11,68.48],[-114.09,68.44],[-114.05,68.41],[-113.99,68.41],[-113.96,68.4],[-114.02,68.31],[-114.05,68.28],[-114.1,68.27],[-114.27,68.25],[-114.77,68.27],[-114.85,68.2],[-115.13,68.13],[-115.18,68.1],[-115.19,68.08],[-115.17,68.02],[-115.2,68],[-115.43,67.92],[-115.43,67.9],[-115.29,67.87],[-115.13,67.82],[-115.01,67.81],[-114.86,67.81],[-114.66,67.8],[-114.43,67.75],[-114.27,67.73],[-114.18,67.74],[-114.05,67.73],[-113.89,67.71],[-113.68,67.7],[-113.21,67.7],[-113.07,67.69],[-112.88,67.68],[-112.5,67.68],[-112.44,67.68],[-112.31,67.72],[-112.24,67.73],[-112.1,67.73],[-111.71,67.76],[-111.58,67.76],[-111.45,67.78],[-111.29,67.82],[-111.19,67.82],[-111.15,67.8],[-111.09,67.79],[-110.99,67.79],[-110.8,67.83],[-110.37,67.95],[-110.22,67.95],[-110.1,67.99],[-110.07,67.99],[-110.04,67.98],[-109.94,67.89],[-109.9,67.87],[-109.83,67.87],[-109.76,67.82],[-109.69,67.75],[-109.63,67.73],[-109.22,67.73],[-109.08,67.71],[-109.04,67.69],[-108.99,67.64],[-108.97,67.53],[-108.95,67.49],[-108.89,67.44],[-108.85,67.42],[-108.82,67.44],[-108.72,67.58],[-108.68,67.61],[-108.61,67.6],[-108.59,67.59],[-108.49,67.48],[-108.35,67.4],[-107.99,67.26],[-107.93,67.2],[-107.91,67.16],[-107.93,67.13],[-107.99,67.1],[-108.09,67.07],[-108.22,67.05],[-108.34,67.06],[-108.46,67.09],[-108.5,67.09],[-108.46,67.06],[-108.22,66.94],[-108.16,66.89],[-108.1,66.86],[-108.05,66.84],[-108,66.82],[-107.96,66.78],[-107.76,66.68],[-107.7,66.64],[-107.48,66.49],[-107.37,66.43],[-107.29,66.4],[-107.26,66.4],[-107.28,66.42],[-107.56,66.62],[-107.71,66.74],[-107.73,66.77],[-107.74,66.81],[-107.75,66.96],[-107.73,66.98],[-107.63,67],[-107.5,66.94],[-107.45,66.93],[-107.42,66.93],[-107.4,66.95],[-107.33,66.93],[-107.2,66.88],[-107.16,66.88],[-107.25,66.98],[-107.32,67.02],[-107.35,67.05],[-107.28,67.1],[-107.32,67.13],[-107.48,67.2],[-107.57,67.27],[-107.64,67.38],[-107.65,67.43],[-107.64,67.47],[-107.65,67.51],[-107.75,67.59],[-107.87,67.64],[-107.95,67.7],[-107.97,67.73],[-107.96,67.82],[-107.89,67.86],[-107.76,67.91],[-107.73,67.96],[-107.79,68.01],[-107.8,68.04],[-107.76,68.03],[-107.51,68.06],[-107.45,68.05],[-107.35,68.06],[-107.22,68.09],[-107.12,68.11],[-106.99,68.11],[-106.92,68.11],[-106.84,68.13],[-106.79,68.14],[-106.71,68.21],[-106.67,68.22],[-106.53,68.21],[-106.46,68.2],[-106.42,68.2],[-106.43,68.29],[-106.4,68.32],[-106.27,68.38],[-106.13,68.39],[-106.04,68.41],[-105.93,68.44],[-105.86,68.48],[-105.78,68.53],[-105.75,68.59],[-105.77,68.61],[-105.93,68.64],[-106.03,68.62],[-106.24,68.58],[-106.46,68.52],[-106.54,68.46],[-106.57,68.39],[-106.61,68.36],[-106.78,68.39],[-106.85,68.39],[-106.95,68.37],[-107.04,68.35],[-107.15,68.3],[-107.3,68.3],[-107.5,68.32],[-107.62,68.33],[-107.74,68.29],[-107.73,68.25],[-107.68,68.2],[-107.73,68.17],[-108.03,68.16],[-108.1,68.17],[-108.26,68.15],[-108.32,68.15],[-108.37,68.18],[-108.69,68.28],[-108.72,68.3],[-108.64,68.38],[-108.35,68.6],[-108.31,68.61],[-107.77,68.65],[-107.44,68.69],[-106.83,68.81],[-106.71,68.82],[-106.32,68.9],[-106.16,68.92],[-106.02,68.91],[-105.8,68.86],[-105.69,68.83],[-105.61,68.78],[-105.54,68.72],[-105.46,68.58],[-105.43,68.46],[-105.38,68.41],[-105.19,68.33],[-105.1,68.3],[-105.04,68.29],[-104.99,68.31],[-104.96,68.31],[-104.94,68.3],[-104.91,68.25],[-104.88,68.25],[-104.77,68.25],[-104.65,68.23],[-104.64,68.21],[-104.66,68.15],[-104.63,68.12],[-104.49,68.06],[-104.35,68.04],[-104.19,68.03],[-103.9,68.04],[-103.66,68.07],[-103.47,68.12],[-103.32,68.06],[-103.02,67.94],[-102.84,67.85],[-102.69,67.81],[-102.39,67.76],[-102.32,67.74],[-102.21,67.73],[-102.06,67.75],[-101.88,67.75],[-101.69,67.71],[-101.55,67.69],[-101.1,67.76],[-101.03,67.77],[-100.86,67.8],[-100.75,67.81],[-100.62,67.81],[-100.52,67.82],[-100.46,67.84],[-100.21,67.84],[-99.77,67.81],[-99.47,67.78],[-99.29,67.75],[-99.15,67.72],[-99.03,67.72],[-98.92,67.73],[-98.81,67.74],[-98.7,67.78],[-98.45,67.8],[-98.41,67.81],[-98.42,67.83],[-98.47,67.86],[-98.61,67.91],[-98.7,67.97],[-98.72,68],[-98.72,68.04],[-98.69,68.07],[-98.63,68.07],[-98.54,68.05],[-98.41,67.99],[-98.06,67.77],[-97.98,67.74],[-97.93,67.71],[-97.61,67.63],[-97.45,67.62],[-97.27,67.67],[-97.19,67.7],[-97.16,67.73],[-97.16,67.75],[-97.14,67.8],[-97.16,67.82],[-97.21,67.86],[-97.34,67.9],[-97.55,67.96],[-97.74,67.98],[-97.91,67.95],[-98.11,67.9],[-98.19,67.92],[-98.44,68.06],[-98.5,68.12],[-98.5,68.13],[-98.39,68.12],[-98.38,68.13],[-98.45,68.2],[-98.49,68.22],[-98.63,68.33],[-98.65,68.36],[-98.56,68.37],[-98.52,68.38],[-98.47,68.38],[-98.22,68.32],[-98.09,68.35],[-97.79,68.39],[-97.91,68.45],[-97.94,68.51],[-97.93,68.52],[-97.83,68.53],[-97.64,68.48],[-97.55,68.47],[-97.48,68.5],[-97.41,68.5],[-97.34,68.48],[-97.27,68.45],[-97.14,68.38],[-97.07,68.33],[-97,68.26],[-96.98,68.26],[-96.63,68.25],[-96.43,68.31],[-96.43,68.29],[-96.48,68.24],[-96.73,68.06],[-96.72,68.04],[-96.59,68.05],[-96.53,68.06],[-96.49,68.08],[-96.46,68.14],[-96.44,68.15],[-96.08,68.24],[-95.97,68.25],[-96.04,68.16],[-96.17,67.83],[-96.2,67.72],[-96.23,67.68],[-96.37,67.55],[-96.37,67.51],[-96.21,67.4],[-96.19,67.38],[-96.17,67.29],[-96.14,67.27],[-96.01,67.27],[-95.88,67.3],[-95.72,67.32],[-95.7,67.3],[-95.78,67.19],[-95.78,67.18],[-95.63,67.21],[-95.56,67.22],[-95.53,67.21],[-95.42,67.16],[-95.4,67.12],[-95.41,67.06],[-95.42,67.01],[-95.46,66.99],[-95.5,66.98],[-95.56,66.97],[-95.61,66.98],[-95.77,66.97],[-95.86,66.98],[-95.95,67.01],[-96.02,67.02],[-96.1,66.99],[-96.22,67],[-96.35,67.07],[-96.4,67.06],[-96.42,67.05],[-96.42,67.04],[-96.36,66.99],[-95.89,66.74],[-95.81,66.69],[-95.8,66.62],[-95.79,66.62],[-95.74,66.69],[-95.77,66.73],[-96.02,66.87],[-96.05,66.92],[-96.04,66.94],[-95.97,66.95],[-95.63,66.92],[-95.49,66.92],[-95.4,66.95],[-95.35,66.98],[-95.32,67.15],[-95.26,67.26],[-95.3,67.36],[-95.39,67.52],[-95.46,67.61],[-95.63,67.7],[-95.65,67.74],[-95.46,68.02],[-95.43,68.05],[-95.38,68.06],[-95.23,68.06],[-95.13,68.08],[-94.96,68.05],[-94.86,68.04],[-94.74,68.07],[-94.49,68.19],[-94.38,68.23],[-94.25,68.3],[-94.1,68.4],[-93.93,68.47],[-93.65,68.54],[-93.48,68.6],[-93.45,68.62],[-93.61,68.62],[-93.64,68.63],[-93.68,68.69],[-93.66,68.78],[-93.66,68.84],[-93.68,68.89],[-93.72,68.93],[-93.77,68.97],[-93.81,68.99],[-93.85,69],[-93.88,69],[-93.9,68.98],[-93.94,68.89],[-93.99,68.82],[-94.06,68.78],[-94.22,68.76],[-94.48,68.74],[-94.59,68.78],[-94.6,68.8],[-94.56,68.91],[-94.48,68.96],[-94.24,69.05],[-94.08,69.12],[-94.08,69.14],[-94.22,69.14],[-94.26,69.15],[-94.28,69.24],[-94.28,69.28],[-94.25,69.31],[-94.16,69.34],[-93.85,69.38],[-93.62,69.42],[-93.61,69.4],[-93.8,69.28],[-93.82,69.25],[-93.75,69.23],[-93.57,69.3],[-93.45,69.36],[-93.43,69.38],[-93.54,69.38],[-93.54,69.41],[-93.52,69.45],[-93.53,69.48],[-93.65,69.52],[-93.79,69.5],[-93.92,69.46],[-94.02,69.45],[-94.16,69.45],[-94.27,69.46],[-94.34,69.47],[-94.42,69.52],[-94.51,69.58],[-94.63,69.65],[-94.68,69.66],[-94.71,69.65],[-94.79,69.59],[-94.82,69.58],[-95.29,69.67],[-95.49,69.72],[-95.59,69.76],[-95.71,69.78],[-95.85,69.79],[-95.96,69.8],[-96.05,69.83],[-96.12,69.87],[-96.17,69.92],[-96.27,69.99],[-96.49,70.12],[-96.55,70.21],[-96.56,70.24],[-96.55,70.33],[-96.34,70.47],[-96.3,70.51],[-96.23,70.54],[-96.12,70.56],[-96.05,70.57],[-95.88,70.55],[-95.98,70.59],[-95.99,70.62],[-95.89,70.69],[-95.91,70.7],[-96.19,70.64],[-96.26,70.64],[-96.36,70.68],[-96.55,70.81],[-96.55,70.89],[-96.49,71],[-96.47,71.07],[-96.52,71.13],[-96.5,71.14],[-96.45,71.16],[-96.42,71.18],[-96.45,71.24],[-96.41,71.27],[-96.27,71.34],[-96.14,71.4],[-96.06,71.41],[-95.99,71.41],[-95.92,71.39],[-95.85,71.36],[-95.73,71.33],[-95.63,71.32],[-95.56,71.34],[-95.45,71.46],[-95.41,71.49],[-95.45,71.51],[-95.67,71.5],[-95.77,71.51],[-95.83,71.53],[-95.87,71.57],[-95.84,71.6],[-95.62,71.69],[-95.51,71.78],[-95.2,71.9],[-94.89,71.96],[-94.73,71.98],[-94.61,71.99],[-94.56,71.98],[-94.49,71.92],[-94.48,71.85],[-94.31,71.76],[-94.17,71.76],[-94.09,71.77],[-93.81,71.77],[-93.75,71.74],[-93.75,71.72],[-93.78,71.67],[-93.76,71.64],[-93.58,71.57],[-93.41,71.52],[-93.26,71.46],[-93.03,71.34],[-92.98,71.3],[-92.95,71.26],[-92.89,71.12],[-92.88,71.07],[-92.9,70.92],[-92.92,70.89],[-92.98,70.85],[-92.96,70.84],[-92.78,70.8],[-92.64,70.72],[-92.57,70.69],[-92.39,70.65],[-92.36,70.63],[-92.32,70.61],[-92.21,70.49],[-92.05,70.39],[-92.04,70.37],[-92.07,70.32],[-92.05,70.3],[-91.98,70.29],[-91.93,70.29],[-91.88,70.33],[-91.82,70.34],[-91.76,70.33],[-91.72,70.3],[-91.65,70.23],[-91.56,70.18],[-91.57,70.16],[-91.62,70.15],[-91.86,70.13],[-91.99,70.14],[-92.12,70.17],[-92.21,70.2],[-92.29,70.24],[-92.32,70.24],[-92.36,70.2],[-92.45,70.15],[-92.51,70.1],[-92.45,70.08],[-92.13,70.08],[-92.06,70.07],[-91.98,70.04],[-92.07,69.98],[-92.28,69.89],[-92.75,69.71],[-92.89,69.67],[-92.85,69.65],[-92.8,69.65],[-92.64,69.66],[-92.49,69.68],[-92.31,69.67],[-92.23,69.65],[-92.26,69.63],[-92.21,69.6],[-91.91,69.53],[-91.72,69.55],[-91.53,69.62],[-91.38,69.65],[-91.2,69.64],[-91.15,69.64],[-91.17,69.62],[-91.31,69.58],[-91.43,69.54],[-91.44,69.53],[-91.29,69.54],[-90.95,69.52],[-90.79,69.51],[-90.67,69.52],[-90.55,69.5],[-90.45,69.48],[-90.42,69.46],[-90.51,69.45],[-90.61,69.45],[-90.68,69.43],[-90.75,69.39],[-90.79,69.35],[-90.82,69.29],[-90.89,69.27],[-91,69.28],[-91.05,69.29],[-91.02,69.32],[-91.06,69.32],[-91.15,69.3],[-91.22,69.3],[-91.24,69.29],[-90.74,69.11],[-90.59,68.95],[-90.48,68.88],[-90.47,68.86],[-90.54,68.82],[-90.54,68.79],[-90.51,68.69],[-90.53,68.61],[-90.57,68.47],[-90.53,68.43],[-90.42,68.39],[-90.36,68.35],[-90.32,68.33],[-90.29,68.29],[-90.25,68.27],[-90.2,68.26],[-90.17,68.27],[-90.16,68.31],[-90.12,68.34],[-90.01,68.4],[-89.9,68.49],[-89.88,68.52],[-89.9,68.59],[-89.88,68.63],[-89.78,68.74],[-89.75,68.81],[-89.72,68.93],[-89.67,69.01],[-89.55,69.08],[-89.35,69.23],[-89.28,69.26],[-89.2,69.27],[-89.06,69.27],[-88.95,69.22],[-88.81,69.14],[-88.64,69.06],[-88.32,68.95],[-88.22,68.92],[-88.04,68.81],[-87.96,68.71],[-87.91,68.56],[-87.87,68.48],[-87.83,68.45],[-87.81,68.4],[-87.81,68.35],[-87.83,68.3],[-87.85,68.27],[-87.89,68.25],[-87.99,68.24],[-88.11,68.25],[-88.15,68.27],[-88.21,68.33],[-88.24,68.34],[-88.35,68.29],[-88.36,68.26],[-88.32,68.17],[-88.33,67.99],[-88.31,67.95],[-88.2,67.77],[-88,67.63],[-87.5,67.36],[-87.47,67.32],[-87.42,67.21],[-87.39,67.19],[-87.36,67.18],[-87.32,67.17],[-87.27,67.18],[-87.08,67.27],[-86.92,67.36],[-86.81,67.4],[-86.75,67.41],[-86.68,67.42],[-86.61,67.45],[-86.56,67.48],[-86.54,67.52],[-86.5,67.65],[-86.48,67.71],[-86.4,67.8],[-86.37,67.82],[-85.98,68.05],[-85.95,68.07],[-85.79,68.33],[-85.73,68.45],[-85.72,68.52],[-85.74,68.58],[-85.73,68.63],[-85.69,68.67],[-85.64,68.7],[-85.56,68.73],[-85.52,68.77],[-85.49,68.77],[-85.43,68.77],[-85.34,68.75],[-85.28,68.74],[-84.87,68.77],[-84.87,68.79],[-85.11,68.84],[-85.1,68.87],[-85.08,68.91],[-85.01,68.95],[-84.92,68.96],[-84.9,68.99],[-84.89,69.02],[-84.86,69.07],[-84.89,69.09],[-85.11,69.17],[-85.24,69.16],[-85.28,69.17],[-85.39,69.23],[-85.43,69.32],[-85.43,69.35],[-85.42,69.41],[-85.4,69.43],[-85.41,69.45],[-85.44,69.49],[-85.44,69.52],[-85.42,69.55],[-85.43,69.58],[-85.48,69.62],[-85.5,69.65],[-85.45,69.75],[-85.45,69.78],[-85.5,69.82],[-85.53,69.84],[-85.51,69.85],[-85.42,69.85],[-85.3,69.84],[-85.18,69.81],[-85.02,69.8],[-84.83,69.84],[-84.65,69.85],[-84.32,69.84],[-84.24,69.84],[-83.92,69.75],[-83.67,69.7],[-83.55,69.7],[-82.99,69.69],[-82.75,69.7],[-82.62,69.69],[-82.37,69.64],[-82.39,69.6],[-82.5,69.53],[-82.63,69.52],[-82.75,69.49],[-82.64,69.46],[-82.31,69.41],[-82.23,69.33],[-82.21,69.3],[-82.25,69.26],[-82.23,69.25],[-82.15,69.25],[-81.95,69.28],[-81.73,69.26],[-81.41,69.2],[-81.38,69.19],[-81.32,69.14],[-81.33,69.12],[-81.61,69],[-81.76,68.96],[-81.95,68.91],[-81.96,68.88],[-81.69,68.88],[-81.48,68.87],[-81.38,68.85],[-81.33,68.83],[-81.26,68.78],[-81.25,68.74],[-81.26,68.69],[-81.28,68.66],[-81.53,68.56],[-81.64,68.52],[-81.83,68.49],[-81.91,68.46],[-82.01,68.46],[-82.11,68.5],[-82.21,68.51],[-82.4,68.48],[-82.5,68.48],[-82.55,68.47],[-82.55,68.45],[-82.46,68.38],[-82.41,68.36],[-82.39,68.34],[-82.43,68.31],[-82.42,68.3],[-82.39,68.29],[-82.22,68.15],[-82.19,68.13],[-82.15,68.14],[-82.08,68.18],[-82.03,68.2],[-82.01,68.19],[-82.01,68.17],[-82.09,68.05],[-82.1,68.02],[-82.1,67.99],[-82.06,67.93],[-81.98,67.86],[-81.87,67.8],[-81.71,67.72],[-81.49,67.64],[-81.41,67.6],[-81.29,67.5],[-81.27,67.46],[-81.3,67.36],[-81.39,67.19],[-81.44,67.09],[-81.47,67.07],[-81.63,67],[-81.72,66.99],[-81.87,66.99],[-81.93,66.97],[-82.01,66.92],[-82.11,66.83],[-82.2,66.76],[-82.26,66.74],[-82.37,66.71],[-82.55,66.62],[-82.64,66.59],[-82.95,66.55],[-83.2,66.43],[-83.3,66.39],[-83.41,66.37],[-83.52,66.37],[-83.59,66.39],[-83.63,66.46],[-83.65,66.48],[-83.74,66.53],[-83.92,66.68],[-84,66.73],[-84.05,66.74],[-84.15,66.73],[-84.21,66.74],[-84.32,66.78],[-84.37,66.81],[-84.36,66.82],[-84.27,66.84],[-84.31,66.86],[-84.47,66.93],[-84.53,66.96],[-84.54,66.97],[-84.69,67.02],[-84.85,67.03],[-85.04,66.96],[-85.11,66.91],[-85.11,66.89],[-85.02,66.87],[-84.98,66.88],[-84.9,66.93],[-84.86,66.94],[-84.74,66.93],[-84.64,66.9],[-84.6,66.88],[-84.59,66.86],[-84.32,66.71],[-84.22,66.68],[-84.18,66.65],[-84.15,66.59],[-84.09,66.53],[-83.96,66.42],[-83.83,66.29],[-83.8,66.24],[-83.87,66.21],[-83.91,66.21],[-84.01,66.23],[-84.29,66.29],[-84.32,66.29],[-84.4,66.26],[-84.46,66.19],[-84.48,66.18],[-84.63,66.21],[-84.91,66.27],[-85.1,66.33],[-85.19,66.37],[-85.31,66.44],[-85.44,66.54],[-85.6,66.57],[-85.79,66.53],[-86.06,66.52],[-86.63,66.53],[-86.71,66.52],[-86.74,66.51],[-86.69,66.46],[-86.7,66.44],[-86.74,66.43],[-86.75,66.42],[-86.69,66.36],[-86.58,66.32],[-86.3,66.27],[-86.11,66.23],[-86,66.19],[-85.96,66.15],[-85.96,66.12],[-86.01,66.05],[-86.04,66.02],[-86.7,65.67],[-86.95,65.53],[-87.08,65.44],[-87.19,65.38],[-87.29,65.35],[-87.45,65.34],[-87.68,65.34],[-87.97,65.35],[-88.12,65.39],[-88.39,65.52],[-88.59,65.59],[-88.67,65.61],[-88.74,65.68],[-88.81,65.69],[-88.95,65.7],[-89.09,65.74],[-89.42,65.86],[-89.59,65.91],[-89.75,65.94],[-89.89,65.94],[-89.94,65.93],[-89.85,65.87],[-89.89,65.87],[-90,65.88],[-90.12,65.88],[-90.32,65.93],[-90.51,65.92],[-90.66,65.93],[-90.83,65.95],[-91.01,65.97],[-91.31,65.96],[-91.41,65.96],[-91.43,65.95],[-91.29,65.89],[-91.04,65.83],[-91.07,65.89],[-91.06,65.9],[-90.98,65.92],[-90.6,65.88],[-90.16,65.81],[-90.05,65.81],[-89.92,65.78],[-89.79,65.74],[-89.6,65.65],[-89.24,65.45],[-89.13,65.4],[-88.97,65.35],[-88.2,65.28],[-87.93,65.28],[-87.39,65.26],[-87.11,65.22],[-87.03,65.2],[-87,65.11],[-87.03,65.06],[-87.18,64.93],[-87.28,64.83],[-87.89,64.4],[-87.96,64.3],[-88,64.24],[-88.11,64.18],[-88.38,64.09],[-88.65,64.01],[-88.82,63.99],[-88.96,64.01],[-89.06,64.03],[-89.2,64.11],[-89.21,64.11],[-89.11,63.98],[-89.13,63.97],[-89.21,63.98],[-89.4,64.04],[-89.46,64.03],[-89.5,64.01],[-89.55,64.01],[-89.62,64.03],[-89.73,64.08],[-89.76,64.1],[-89.79,64.17],[-89.81,64.18],[-90.04,64.14],[-90.08,64.13],[-89.99,64.1],[-89.95,64.08],[-89.86,63.98],[-89.86,63.96],[-89.92,63.94],[-90.14,63.98],[-90.17,63.98],[-90.06,63.88],[-90.02,63.83],[-90.01,63.8],[-90.15,63.69],[-90.25,63.64],[-90.37,63.62],[-90.45,63.64],[-90.53,63.67],[-90.6,63.66],[-90.64,63.62],[-90.71,63.6],[-90.81,63.58],[-90.95,63.59],[-91.11,63.62],[-91.54,63.73],[-91.67,63.74],[-91.93,63.76],[-91.96,63.77],[-91.95,63.79],[-91.92,63.8],[-91.93,63.81],[-91.98,63.82],[-92.04,63.81],[-92.09,63.78],[-92.2,63.78],[-92.34,63.79],[-92.55,63.83],[-92.97,63.94],[-93.43,64.03],[-93.7,64.15],[-93.6,64.04],[-93.6,64],[-93.66,63.97],[-93.66,63.94],[-93.56,63.87],[-93.42,63.84],[-93.27,63.84],[-93.27,63.85],[-93.33,63.87],[-93.38,63.9],[-93.41,63.94],[-93.38,63.95],[-93.25,63.93],[-93.17,63.9],[-92.53,63.76],[-92.34,63.73],[-92.2,63.71],[-92.16,63.69],[-92.21,63.66],[-92.46,63.57],[-92.47,63.56],[-92.29,63.56],[-92.08,63.64],[-91.96,63.68],[-91.84,63.7],[-91.69,63.66],[-91.49,63.56],[-91.33,63.51],[-91.1,63.48],[-90.97,63.44],[-90.75,63.35],[-90.71,63.3],[-90.69,63.11],[-90.7,63.06],[-90.73,63.02],[-90.78,62.97],[-90.87,62.95],[-91.01,62.94],[-91.11,62.92],[-91.35,62.82],[-91.45,62.8],[-91.87,62.83],[-92.03,62.86],[-92.11,62.86],[-92.15,62.84],[-92.2,62.83],[-92.36,62.82],[-92.39,62.8],[-92.38,62.77],[-92.35,62.73],[-92.31,62.71],[-92.24,62.68],[-92.15,62.67],[-91.96,62.64],[-91.94,62.59],[-91.94,62.58],[-92.01,62.54],[-92.08,62.54],[-92.21,62.59],[-92.27,62.59],[-92.32,62.56],[-92.4,62.56],[-92.5,62.56],[-92.55,62.55],[-