From 87dec9d433ab193743971ca687a2b955a8eee480 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sun, 2 Aug 2020 00:42:09 +0100 Subject: [PATCH 01/50] Remove a remnant of "Also FST4W" mode --- lib/decoder.f90 | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/decoder.f90 b/lib/decoder.f90 index a3269aef9..86725928d 100644 --- a/lib/decoder.f90 +++ b/lib/decoder.f90 @@ -191,7 +191,6 @@ subroutine multimode_decoder(ss,id2,params,nfsample) ! We're in FST4 mode ndepth=iand(params%ndepth,3) iwspr=0 - if(iand(params%ndepth,128).ne.0) iwspr=2 call timer('dec240 ',0) call my_fst4%decode(fst4_decoded,id2,params%nutc, & params%nQSOProgress,params%nfqso,params%nfa,params%nfb, & From 0767feb53375a63d5b833352409aa8fec8c39e2b Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sun, 2 Aug 2020 23:04:17 +0100 Subject: [PATCH 02/50] Updated INSTALL file --- INSTALL | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/INSTALL b/INSTALL index 42169fb38..c96e7d3b3 100644 --- a/INSTALL +++ b/INSTALL @@ -28,7 +28,7 @@ For MS Windows see the section "Building from Source on MS Windows" below. For Apple Mac see the section "Building from Source on Apple Mac". -Qt v5, preferably v5.5 or later is required to build WSJT-X. +Qt v5, preferably v5.9 or later is required to build WSJT-X. Qt v5 multimedia support, serial port, and Linguist is necessary as well as the core Qt v5 components, normally installing the Qt @@ -43,8 +43,8 @@ the libfftw library development package. Normally installing the library development package pulls in all the FFTW v3 libraries including the single precision variant. -The Hamlib library optionally requires the libusb-1.0 library, if the -development version (libusb-1.0-dev) is available Hamlib will +The Hamlib library optionally requires the libusb-1.0-1 library, if +the development version (libusb-1.0-0-dev) is available Hamlib will configure its custom USB device back end drivers. Most rigs do not require this so normally you can choose not to install libusb-1.0-dev but if you have a SoftRock USB or similar SDR that uses a custom USB @@ -89,7 +89,8 @@ $ git clone git://git.code.sf.net/p/wsjt/wsjtx src To build WSJT-X you will need CMake and asciidoc installed. $ cd ~/wsjtx-prefix/build -$ cmake -D CMAKE_PREFIX_PATH=~/hamlib-prefix ../src +$ cmake -D CMAKE_PREFIX_PATH=~/hamlib-prefix -DWSJT_SKIP_MANPAGES=ON \ + -DWSJT_GENERATE_DOCS=OFF ../src $ cmake --build . $ cmake --build . --target install @@ -99,7 +100,8 @@ configure step like: $ cd ~/wsjtx-prefix/build $ cmake -D CMAKE_PREFIX_PATH=~/hamlib-prefix \ - -D CMAKE_INSTALL_PREFIX=~/wsjtx-prefix ../src + -DWSJT_SKIP_MANPAGES=ON -DWSJT_GENERATE_DOCS=OFF \ + -D CMAKE_INSTALL_PREFIX=~/wsjtx-prefix ../src $ cmake --build . $ cmake --build . --target install @@ -316,7 +318,7 @@ configure: $ cd ~/wsjtx-prefix/build $ FC=gfortran-mp-5 \ cmake \ - -D CMAKE_PREFIX_PATH="~/Qt/5.7/clang_64;~/hamlib-prefix;/opt/local" \ + -D CMAKE_PREFIX_PATH="~/Qt/5.9/clang_64;~/hamlib-prefix;/opt/local" \ -D CMAKE_INSTALL_PREFIX=~/wsjtx-prefix \ -D CMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk \ ~/wsjtx-prefix/src From 8e95daf963bfc5bc5797634e98b4a80a4ff54738 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Mon, 3 Aug 2020 01:39:25 +0100 Subject: [PATCH 03/50] Remove some diagnostic prints --- Modulator/Modulator.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/Modulator/Modulator.cpp b/Modulator/Modulator.cpp index 52319eb2a..d43de8292 100644 --- a/Modulator/Modulator.cpp +++ b/Modulator/Modulator.cpp @@ -172,15 +172,12 @@ qint64 Modulator::readData (char * data, qint64 maxSize) { samples = load (0, samples); // silence } while (--m_silentFrames && samples != end); - qDebug () << "played:" << framesGenerated << "silent frames"; if (!m_silentFrames) { Q_EMIT stateChanged ((m_state = Active)); } } - // qDebug() << "m_silentFrames:" << m_silentFrames << "m_ic:" << m_ic << "m_state:" << m_state; - m_cwLevel = false; m_ramp = 0; // prepare for CW wave shaping } From caba1fbe729e40c034991211b0be4c45d31fe4e5 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Mon, 3 Aug 2020 02:11:46 +0100 Subject: [PATCH 04/50] Validate grids in 77-bit and 50-bit message unpacking --- lib/77bit/packjt77.f90 | 58 ++++++++++++++++++++++++++++++------------ 1 file changed, 42 insertions(+), 16 deletions(-) diff --git a/lib/77bit/packjt77.f90 b/lib/77bit/packjt77.f90 index a2499625c..cd17e8b47 100644 --- a/lib/77bit/packjt77.f90 +++ b/lib/77bit/packjt77.f90 @@ -216,7 +216,7 @@ subroutine unpack77(c77,nrx,msg,unpk77_success) character*38 c character*36 a2 integer hashmy10,hashmy12,hashmy22,hashdx10,hashdx12,hashdx22 - logical unpk28_success,unpk77_success + logical unpk28_success,unpk77_success,unpkg4_success logical dxcall13_set,mycall13_set data a2/'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'/,nzzz/46656/ @@ -363,10 +363,11 @@ subroutine unpack77(c77,nrx,msg,unpk77_success) idbm=nint(idbm*10.0/3.0) call unpack28(n28,call_1,unpk28_success) if(.not.unpk28_success) unpk77_success=.false. - call to_grid4(igrid4,grid4) + call to_grid4(igrid4,grid4,unpkg4_success) + if(.not.unpkg4_success) unpk77_success=.false. write(crpt,'(i3)') idbm msg=trim(call_1)//' '//grid4//' '//trim(adjustl(crpt)) - call save_hash_call(call_1,n10,n12,n22) !### Is this OK here? ### + if (unpk77_success) call save_hash_call(call_1,n10,n12,n22) !### Is this OK here? ### else if(itype.eq.2) then ! WSPR Type 2 @@ -416,10 +417,9 @@ subroutine unpack77(c77,nrx,msg,unpk77_success) n28=n22+2063592 call unpack28(n28,call_1,unpk28_success) if(.not.unpk28_success) unpk77_success=.false. - call to_grid(igrid6,grid6) + call to_grid(igrid6,grid6,unpkg4_success) + if(.not.unpkg4_success) unpk77_success=.false. msg=trim(call_1)//' '//grid6 - - endif else if(i3.eq.1 .or. i3.eq.2) then @@ -448,7 +448,8 @@ subroutine unpack77(c77,nrx,msg,unpk77_success) if(i.ge.4) call add_call_to_recent_calls(call_2) endif if(igrid4.le.MAXGRID4) then - call to_grid4(igrid4,grid4) + call to_grid4(igrid4,grid4,unpkg4_success) + if(.not.unpkg4_success) unpk77_success=.false. if(ir.eq.0) msg=trim(call_1)//' '//trim(call_2)//' '//grid4 if(ir.eq.1) msg=trim(call_1)//' '//trim(call_2)//' R '//grid4 if(msg(1:3).eq.'CQ ' .and. ir.eq.1) unpk77_success=.false. @@ -565,7 +566,7 @@ subroutine unpack77(c77,nrx,msg,unpk77_success) nrs=52+irpt write(cexch,1022) nrs,iserial 1022 format(i2,i4.4) - call to_grid6(igrid6,grid6) + call to_grid6(igrid6,grid6,unpk77_success) if(ir.eq.0) msg=trim(call_1)//' '//trim(call_2)//' '//cexch//' '//grid6 if(ir.eq.1) msg=trim(call_1)//' '//trim(call_2)//' R '//cexch//' '//grid6 @@ -1495,60 +1496,84 @@ subroutine add_call_to_recent_calls(callsign) return end subroutine add_call_to_recent_calls -subroutine to_grid4(n,grid4) +subroutine to_grid4(n,grid4,ok) character*4 grid4 - + logical ok + + ok=.false. j1=n/(18*10*10) + if (j1.lt.0.or.j1.gt.17) goto 900 n=n-j1*18*10*10 j2=n/(10*10) + if (j2.lt.0.or.j2.gt.17) goto 900 n=n-j2*10*10 j3=n/10 + if (j3.lt.0.or.j3.gt.9) goto 900 j4=n-j3*10 + if (j4.lt.0.or.j4.gt.9) goto 900 grid4(1:1)=char(j1+ichar('A')) grid4(2:2)=char(j2+ichar('A')) grid4(3:3)=char(j3+ichar('0')) grid4(4:4)=char(j4+ichar('0')) - - return + ok=.true. + +900 return end subroutine to_grid4 -subroutine to_grid6(n,grid6) +subroutine to_grid6(n,grid6,ok) character*6 grid6 + logical ok + ok=.false. j1=n/(18*10*10*24*24) + if (j1.lt.0.or.j1.gt.17) goto 900 n=n-j1*18*10*10*24*24 j2=n/(10*10*24*24) + if (j2.lt.0.or.j2.gt.17) goto 900 n=n-j2*10*10*24*24 j3=n/(10*24*24) + if (j3.lt.0.or.j3.gt.9) goto 900 n=n-j3*10*24*24 j4=n/(24*24) + if (j4.lt.0.or.j4.gt.9) goto 900 n=n-j4*24*24 j5=n/24 + if (j5.lt.0.or.j5.gt.23) goto 900 j6=n-j5*24 + if (j6.lt.0.or.j6.gt.23) goto 900 grid6(1:1)=char(j1+ichar('A')) grid6(2:2)=char(j2+ichar('A')) grid6(3:3)=char(j3+ichar('0')) grid6(4:4)=char(j4+ichar('0')) grid6(5:5)=char(j5+ichar('A')) grid6(6:6)=char(j6+ichar('A')) + ok=.true. - return +900 return end subroutine to_grid6 -subroutine to_grid(n,grid6) +subroutine to_grid(n,grid6,ok) ! 4-, or 6-character grid character*6 grid6 + logical ok + ok=.false. j1=n/(18*10*10*25*25) + if (j1.lt.0.or.j1.gt.17) goto 900 n=n-j1*18*10*10*25*25 j2=n/(10*10*25*25) + if (j2.lt.0.or.j2.gt.17) goto 900 n=n-j2*10*10*25*25 j3=n/(10*25*25) + if (j3.lt.0.or.j3.gt.9) goto 900 n=n-j3*10*25*25 j4=n/(25*25) + if (j4.lt.0.or.j4.gt.9) goto 900 n=n-j4*25*25 j5=n/25 + if (j5.lt.0.or.j5.gt.24) goto 900 j6=n-j5*25 + if (j6.lt.0.or.j6.gt.24) goto 900 grid6='' grid6(1:1)=char(j1+ichar('A')) grid6(2:2)=char(j2+ichar('A')) @@ -1558,8 +1583,9 @@ subroutine to_grid(n,grid6) grid6(5:5)=char(j5+ichar('A')) grid6(6:6)=char(j6+ichar('A')) endif + ok=.true. - return +900 return end subroutine to_grid end module packjt77 From fb8b938ac7e39606841f2b14fec9aa4118de733b Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Tue, 4 Aug 2020 11:43:19 +0100 Subject: [PATCH 05/50] Make FST4 std message generation consistent with other 77-bit modes --- widgets/mainwindow.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 528184278..6c2a32c25 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -5359,7 +5359,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional) } } - if((m_mode!="MSK144" and m_mode!="FT8" and m_mode!="FT4")) { + if((m_mode!="MSK144" and m_mode!="FT8" and m_mode!="FT4" && m_mode != "FST4")) { t=t00 + rpt; msgtype(t, ui->tx2); t=t0 + "R" + rpt; @@ -5412,7 +5412,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional) case Configuration::type_2_msg_1_full: msgtype(t + my_grid, ui->tx1); if (!eme_short_codes) { - if((m_mode=="MSK144" || m_mode=="FT8" || m_mode=="FT4") && + if((m_mode=="MSK144" || m_mode=="FT8" || m_mode=="FT4" || m_mode == "FST4") && SpecOp::NA_VHF == m_config.special_op_id()) { msgtype(t + "R " + my_grid, ui->tx3); // #### Unreachable code } else { @@ -5425,7 +5425,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional) break; case Configuration::type_2_msg_3_full: - if ((m_mode=="MSK144" || m_mode=="FT8" || m_mode=="FT4") && + if ((m_mode=="MSK144" || m_mode=="FT8" || m_mode=="FT4" || m_mode == "FST4") && SpecOp::NA_VHF == m_config.special_op_id()) { msgtype(t + "R " + my_grid, ui->tx3); msgtype(t + "RRR", ui->tx4); @@ -5441,7 +5441,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional) case Configuration::type_2_msg_5_only: msgtype(t00 + my_grid, ui->tx1); if (!eme_short_codes) { - if ((m_mode=="MSK144" || m_mode=="FT8" || m_mode=="FT4") && + if ((m_mode=="MSK144" || m_mode=="FT8" || m_mode=="FT4" || m_mode == "FST4") && SpecOp::NA_VHF == m_config.special_op_id()) { msgtype(t + "R " + my_grid, ui->tx3); // #### Unreachable code msgtype(t + "RRR", ui->tx4); From d2525c73a3e3f3032ba87320dddccceac7c23de3 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Tue, 4 Aug 2020 11:44:26 +0100 Subject: [PATCH 06/50] Minor cosmetic main layout changes --- widgets/mainwindow.ui | 438 +++++++++++++++++++++--------------------- 1 file changed, 219 insertions(+), 219 deletions(-) diff --git a/widgets/mainwindow.ui b/widgets/mainwindow.ui index c777609b0..5fe6be695 100644 --- a/widgets/mainwindow.ui +++ b/widgets/mainwindow.ui @@ -553,43 +553,68 @@ - - - - - - 0 - 0 - + + + + + false + + + <html><head/><body><p>If orange or red there has been a rig control failure, click to reset and read the dial frequency. S implies split mode.</p></body></html> + + + If orange or red there has been a rig control failure, click to reset and read the dial frequency. S implies split mode. - QLabel { - font-family: MS Shell Dlg 2; - font-size: 16pt; - background-color : black; - color : yellow; + QPushButton { + font-family: helvetica; + font-size: 9pt; + font-weight: bold; + background-color: white; + color: black; + border-style: solid; + border-width:1px; + border-radius:10px; + border-color: gray; + max-width:20px; + max-height:20px; + min-width:20px; + min-height:20px; +} +QPushButton[state="error"] { + background-color: red; +} +QPushButton[state="warning"] { + background-color: orange; +} +QPushButton[state="ok"] { + background-color: #00ff00; } - - QFrame::StyledPanel - - - QFrame::Sunken - - - 2 - - - 0 - - <html><head/><body><p align="center"> 2015 Jun 17 </p><p align="center"> 01:23:45 </p></body></html> + ? - - Qt::AlignCenter + + + + + + <html><head/><body><p>Select operating band or enter frequency in MHz or enter kHz increment followed by k.</p></body></html> - - 5 + + Frequency entry + + + Select operating band or enter frequency in MHz or enter kHz increment followed by k. + + + true + + + QComboBox::NoInsert + + + QComboBox::AdjustToMinimumContentsLength @@ -1103,19 +1128,6 @@ When not checked you can view the calibration results. - - - - Qt::Vertical - - - - 20 - 40 - - - - @@ -1148,6 +1160,19 @@ When not checked you can view the calibration results. + + + + Qt::Vertical + + + + 20 + 40 + + + + @@ -2440,6 +2465,40 @@ list. The list can be maintained in Settings (F2). + + + + + 0 + 0 + + + + USB dial frequency + + + QLabel { + font-family: MS Shell Dlg 2; + font-size: 16pt; + color : yellow; + background-color : black; +} +QLabel[oob="true"] { + background-color: red; +} + + + + 14.078 000 + + + Qt::AlignCenter + + + 5 + + + @@ -2447,6 +2506,123 @@ list. The list can be maintained in Settings (F2). + + + + + 0 + 0 + + + + QLabel { + font-family: MS Shell Dlg 2; + font-size: 16pt; + background-color : black; + color : yellow; +} + + + QFrame::StyledPanel + + + QFrame::Sunken + + + 2 + + + 0 + + + <html><head/><body><p align="center"> 2015 Jun 17 </p><p align="center"> 01:23:45 </p></body></html> + + + Qt::AlignCenter + + + 5 + + + + + + + + 0 + 0 + + + + + 100 + 16777215 + + + + <html><head/><body><p>30dB recommended when only noise present<br/>Green when good<br/>Red when clipping may occur<br/>Yellow when too low</p></body></html> + + + Rx Signal + + + 30dB recommended when only noise present +Green when good +Red when clipping may occur +Yellow when too low + + + QFrame::Panel + + + QFrame::Sunken + + + + + + + Adjust Tx audio level + + + 450 + + + 0 + + + Qt::Vertical + + + true + + + true + + + QSlider::TicksBelow + + + 50 + + + + + + + Qt::AlignCenter + + + % + + + NB + + + 25 + + + @@ -2723,182 +2899,6 @@ list. The list can be maintained in Settings (F2). - - - - <html><head/><body><p>Select operating band or enter frequency in MHz or enter kHz increment followed by k.</p></body></html> - - - Frequency entry - - - Select operating band or enter frequency in MHz or enter kHz increment followed by k. - - - true - - - QComboBox::NoInsert - - - QComboBox::AdjustToMinimumContentsLength - - - - - - - false - - - <html><head/><body><p>If orange or red there has been a rig control failure, click to reset and read the dial frequency. S implies split mode.</p></body></html> - - - If orange or red there has been a rig control failure, click to reset and read the dial frequency. S implies split mode. - - - QPushButton { - font-family: helvetica; - font-size: 9pt; - font-weight: bold; - background-color: white; - color: black; - border-style: solid; - border-width:1px; - border-radius:10px; - border-color: gray; - max-width:20px; - max-height:20px; - min-width:20px; - min-height:20px; -} -QPushButton[state="error"] { - background-color: red; -} -QPushButton[state="warning"] { - background-color: orange; -} -QPushButton[state="ok"] { - background-color: #00ff00; -} - - - ? - - - - - - - Adjust Tx audio level - - - 450 - - - 0 - - - Qt::Vertical - - - true - - - true - - - QSlider::TicksBelow - - - 50 - - - - - - - - 0 - 0 - - - - - 100 - 16777215 - - - - <html><head/><body><p>30dB recommended when only noise present<br/>Green when good<br/>Red when clipping may occur<br/>Yellow when too low</p></body></html> - - - Rx Signal - - - 30dB recommended when only noise present -Green when good -Red when clipping may occur -Yellow when too low - - - QFrame::Panel - - - QFrame::Sunken - - - - - - - - 0 - 0 - - - - USB dial frequency - - - QLabel { - font-family: MS Shell Dlg 2; - font-size: 16pt; - color : yellow; - background-color : black; -} -QLabel[oob="true"] { - background-color: red; -} - - - - 14.078 000 - - - Qt::AlignCenter - - - 5 - - - - - - - Qt::AlignCenter - - - % - - - NB - - - 25 - - - From 09dc647c125e6f58e86e9d97d701f0372fb07148 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Tue, 4 Aug 2020 11:49:33 +0100 Subject: [PATCH 07/50] Make tool-tips more generic on T/R period --- widgets/mainwindow.ui | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/widgets/mainwindow.ui b/widgets/mainwindow.ui index 5fe6be695..422227bac 100644 --- a/widgets/mainwindow.ui +++ b/widgets/mainwindow.ui @@ -2156,7 +2156,7 @@ list. The list can be maintained in Settings (F2). - Percentage of 2-minute sequences devoted to transmitting. + Percentage of minute sequences devoted to transmitting. Qt::AlignCenter @@ -2376,7 +2376,7 @@ list. The list can be maintained in Settings (F2). - Transmit during the next 2-minute sequence. + <html><head/><body><p>Transmit during the next sequence.</p></body></html> QPushButton:checked { From 0ba5d7e1bf623c40d8b0f2816a3b4fd53e3f7e6c Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Fri, 7 Aug 2020 21:28:52 +0100 Subject: [PATCH 08/50] More flexibility for QDateTime round/truncate routine --- .gitignore | 1 + CMakeLists.txt | 4 +- qt_helpers.cpp | 8 +-- qt_helpers.hpp | 8 +-- tests/CMakeLists.txt | 23 +++++++ tests/test_qt_helpers.cpp | 138 ++++++++++++++++++++++++++++++++++++++ widgets/mainwindow.cpp | 4 +- 7 files changed, 175 insertions(+), 11 deletions(-) create mode 100644 tests/CMakeLists.txt create mode 100644 tests/test_qt_helpers.cpp diff --git a/.gitignore b/.gitignore index 2bd99ec81..9c636d134 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ jnq* *.mod *.pro.user *.txt +!**/CMakeLists.txt cmake-build-debug cmake-build-release CMakeFiles diff --git a/CMakeLists.txt b/CMakeLists.txt index f160d6b82..17f863042 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -926,7 +926,9 @@ endif () if (WSJT_GENERATE_DOCS) add_subdirectory (doc) endif (WSJT_GENERATE_DOCS) - +if (EXISTS ${CMAKE_SOURCE_DIR}/tests AND IS_DIRECTORY ${CMAKE_SOURCE_DIR}/tests) + add_subdirectory (tests) +endif () # # Library building setup diff --git a/qt_helpers.cpp b/qt_helpers.cpp index 3f41d0f87..dd474e191 100644 --- a/qt_helpers.cpp +++ b/qt_helpers.cpp @@ -37,14 +37,14 @@ void update_dynamic_property (QWidget * widget, char const * property, QVariant widget->update (); } -QDateTime qt_round_date_time_to (QDateTime dt, int seconds) +QDateTime qt_round_date_time_to (QDateTime dt, int milliseconds) { - dt.setSecsSinceEpoch (dt.addSecs (seconds - 1).toSecsSinceEpoch () / seconds * seconds); + dt.setMSecsSinceEpoch (dt.addMSecs (milliseconds / 2).toMSecsSinceEpoch () / milliseconds * milliseconds); return dt; } -QDateTime qt_truncate_date_time_to (QDateTime dt, int seconds) +QDateTime qt_truncate_date_time_to (QDateTime dt, int milliseconds) { - dt.setSecsSinceEpoch (dt.toSecsSinceEpoch () / seconds * seconds); + dt.setMSecsSinceEpoch (dt.toMSecsSinceEpoch () / milliseconds * milliseconds); return dt; } diff --git a/qt_helpers.hpp b/qt_helpers.hpp index 638c50e2a..aae8c5f07 100644 --- a/qt_helpers.hpp +++ b/qt_helpers.hpp @@ -69,11 +69,11 @@ QString font_as_stylesheet (QFont const&); // conditional style sheet updates void update_dynamic_property (QWidget *, char const * property, QVariant const& value); -// round a QDateTime instance to an interval -QDateTime qt_round_date_time_to (QDateTime dt, int seconds); +// round a QDateTime instance to an integral interval of milliseconds +QDateTime qt_round_date_time_to (QDateTime dt, int milliseconds); -// truncate a QDateTime to an interval -QDateTime qt_truncate_date_time_to (QDateTime dt, int seconds); +// truncate a QDateTime to an integral interval of milliseconds +QDateTime qt_truncate_date_time_to (QDateTime dt, int milliseconds); template class VPtr diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 000000000..4b3462337 --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,23 @@ +find_package (Qt5Test 5 REQUIRED) + +# +# Compiler options +# +set (CMAKE_CXX_STANDARD 11) +add_compile_options ("$<$:-Wall;-Wno-conversion;-fno-second-underscore;-fno-f2c>") +add_compile_options ("$<$,$>:-fbounds-check>") +add_compile_options ("$<$,$>>:-funroll-all-loops>") +add_compile_options ("$<$,$>,$,$,$>>:-Wall;-Wextra>") +add_compile_options ("$<$,$>:-Wno-pragmas>") +add_compile_options ("$<$,$>,$>>:-fdata-sections;-ffunction-sections>") +if (${OPENMP_FOUND} OR APPLE) + add_compile_options ("$<$,$>,$>:${OpenMP_C_FLAGS}>") +endif () + +# Tell CMake to run moc when necessary +set (CMAKE_AUTOMOC ON) +include_directories (${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}) + +add_executable (test_qt_helpers test_qt_helpers.cpp) +target_link_libraries (test_qt_helpers wsjt_qt Qt5::Test) +add_test (test_qt_helpers test_qt_helpers) diff --git a/tests/test_qt_helpers.cpp b/tests/test_qt_helpers.cpp new file mode 100644 index 000000000..cb6744df2 --- /dev/null +++ b/tests/test_qt_helpers.cpp @@ -0,0 +1,138 @@ +#include +#include +#include + +#include "qt_helpers.hpp" + +class TestQtHelpers + : public QObject +{ + Q_OBJECT + +public: + +private: + Q_SLOT void round_15s_date_time_up () + { + QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 500}}; + QCOMPARE (qt_round_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 30))); + } + + Q_SLOT void truncate_15s_date_time_up () + { + QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 500}}; + QCOMPARE (qt_truncate_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15))); + } + + Q_SLOT void round_15s_date_time_down () + { + QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 499}}; + QCOMPARE (qt_round_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15))); + } + + Q_SLOT void truncate_15s_date_time_down () + { + QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 499}}; + QCOMPARE (qt_truncate_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15))); + } + + Q_SLOT void round_15s_date_time_on () + { + QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 15}}; + QCOMPARE (qt_round_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15))); + } + + Q_SLOT void truncate_15s_date_time_on () + { + QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 15}}; + QCOMPARE (qt_truncate_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15))); + } + + Q_SLOT void round_15s_date_time_under () + { + QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 14, 999}}; + QCOMPARE (qt_round_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15))); + } + + Q_SLOT void truncate_15s_date_time_under () + { + QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 14, 999}}; + QCOMPARE (qt_truncate_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15))); + } + + Q_SLOT void round_15s_date_time_over () + { + QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 15, 1}}; + QCOMPARE (qt_round_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15))); + } + + Q_SLOT void truncate_15s_date_time_over () + { + QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 15, 1}}; + QCOMPARE (qt_truncate_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15))); + } + + Q_SLOT void round_7p5s_date_time_up () + { + QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 26, 250}}; + QCOMPARE (qt_round_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 30))); + } + + Q_SLOT void truncate_7p5s_date_time_up () + { + QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 26, 250}}; + QCOMPARE (qt_truncate_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500))); + } + + Q_SLOT void round_7p5s_date_time_down () + { + QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 26, 249}}; + QCOMPARE (qt_round_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500))); + } + + Q_SLOT void truncate_7p5s_date_time_down () + { + QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 26, 249}}; + QCOMPARE (qt_truncate_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500))); + } + + Q_SLOT void round_7p5s_date_time_on () + { + QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 500}}; + QCOMPARE (qt_round_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500))); + } + + Q_SLOT void truncate_7p5s_date_time_on () + { + QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 500}}; + QCOMPARE (qt_truncate_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500))); + } + + Q_SLOT void round_7p5s_date_time_under () + { + QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 499}}; + QCOMPARE (qt_round_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500))); + } + + Q_SLOT void truncate_7p5s_date_time_under () + { + QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 499}}; + QCOMPARE (qt_truncate_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15))); + } + + Q_SLOT void round_7p5s_date_time_over () + { + QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 501}}; + QCOMPARE (qt_round_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500))); + } + + Q_SLOT void truncate_7p5s_date_time_over () + { + QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 501}}; + QCOMPARE (qt_truncate_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500))); + } +}; + +QTEST_MAIN (TestQtHelpers); + +#include "test_qt_helpers.moc" diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 6c2a32c25..b91207089 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -8017,8 +8017,8 @@ void MainWindow::p1ReadFromStdout() //p1readFromStdout QString MainWindow::beacon_start_time (int n) { - auto bt = qt_truncate_date_time_to (QDateTime::currentDateTimeUtc ().addSecs (n), m_TRperiod); - if (m_TRperiod < 60) + auto bt = qt_truncate_date_time_to (QDateTime::currentDateTimeUtc ().addSecs (n), m_TRperiod * 1.e3); + if (m_TRperiod < 60.) { return bt.toString ("HHmmss"); } From 7bafb5b71e27b023b9cf33955ae217cad37f26e6 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Fri, 7 Aug 2020 22:40:15 +0100 Subject: [PATCH 09/50] Qt5.7 backwards compatibility --- Network/MessageClient.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Network/MessageClient.cpp b/Network/MessageClient.cpp index b545dd44e..1d571a5dd 100644 --- a/Network/MessageClient.cpp +++ b/Network/MessageClient.cpp @@ -465,7 +465,11 @@ void MessageClient::set_server (QString const& server) { // queue a host address lookup TRACE_UDP ("server host DNS lookup:" << server); +#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0) m_->dns_lookup_id_ = QHostInfo::lookupHost (server, &*m_, &MessageClient::impl::host_info_results); +#else + m_->dns_lookup_id_ = QHostInfo::lookupHost (server, &*m_, SLOT (host_info_results (QHostInfo))); +#endif } } From 31742156fd22ff878d765a0c4f9267136610279f Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Fri, 7 Aug 2020 22:53:21 +0100 Subject: [PATCH 10/50] Qt v5.8 backwards compatibility --- Network/PSKReporter.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/Network/PSKReporter.cpp b/Network/PSKReporter.cpp index 5a367e58f..59408c284 100644 --- a/Network/PSKReporter.cpp +++ b/Network/PSKReporter.cpp @@ -402,7 +402,13 @@ void PSKReporter::impl::send_report (bool send_residue) writeUtfString (tx_out, spot.grid_); tx_out << quint8 (1u) // REPORTER_SOURCE_AUTOMATIC - << static_cast (spot.time_.toSecsSinceEpoch ()); + << static_cast ( +#if QT_VERSION >= QT_VERSION_CHECK(5, 8, 0) + spot.time_.toSecsSinceEpoch () +#else + spot.time_.toMSecsSinceEpoch () / 1000 +#endif + ); } auto len = payload_.size () + tx_data_.size (); @@ -429,7 +435,13 @@ void PSKReporter::impl::send_report (bool send_residue) // insert Length and Export Time set_length (message, payload_); message.device ()->seek (2 * sizeof (quint16)); - message << static_cast (QDateTime::currentDateTime ().toSecsSinceEpoch ()); + message << static_cast ( +#if QT_VERSION >= QT_VERSION_CHECK(5, 8, 0) + QDateTime::currentDateTime ().toSecsSinceEpoch () +#else + QDateTime::currentDateTime ().toMSecsSinceEpoch () / 1000 +#endif + ); // Send data to PSK Reporter site socket_->write (payload_); // TODO: handle errors From bf58cd43aa32aee8ecb3cd4b55116074143e4d45 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sat, 8 Aug 2020 13:20:52 +0100 Subject: [PATCH 11/50] Improve contrast of coloured widgets in dark style --- widgets/mainwindow.cpp | 56 +++++++++++++++++++++--------------------- widgets/mainwindow.ui | 1 + 2 files changed, 29 insertions(+), 28 deletions(-) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index b91207089..e9a533e1d 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -943,8 +943,8 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, enable_DXCC_entity (m_config.DXCC ()); // sets text window proportions and (re)inits the logbook - ui->label_9->setStyleSheet("QLabel{background-color: #aabec8}"); - ui->label_10->setStyleSheet("QLabel{background-color: #aabec8}"); + ui->label_9->setStyleSheet("QLabel{color: #000000; background-color: #aabec8}"); + ui->label_10->setStyleSheet("QLabel{color: #000000; background-color: #aabec8}"); // this must be done before initializing the mode as some modes need // to turn off split on the rig e.g. WSPR @@ -1244,7 +1244,7 @@ void MainWindow::readSettings() } ui->WSPR_prefer_type_1_check_box->setChecked (m_settings->value ("WSPRPreferType1", true).toBool ()); m_uploadWSPRSpots=m_settings->value("UploadSpots",false).toBool(); - if(!m_uploadWSPRSpots) ui->cbUploadWSPR_Spots->setStyleSheet("QCheckBox{background-color: yellow}"); + if(!m_uploadWSPRSpots) ui->cbUploadWSPR_Spots->setStyleSheet("QCheckBox{color: #000000; background-color: yellow}"); ui->cbNoOwnCall->setChecked(m_settings->value("NoOwnCall",false).toBool()); ui->band_hopping_group_box->setChecked (m_settings->value ("BandHopping", false).toBool()); // setup initial value of tx attenuator @@ -2280,7 +2280,7 @@ void MainWindow::createStatusBar() //createStatusBar { tx_status_label.setAlignment (Qt::AlignHCenter); tx_status_label.setMinimumSize (QSize {150, 18}); - tx_status_label.setStyleSheet ("QLabel{background-color: #00ff00}"); + tx_status_label.setStyleSheet ("QLabel{color: #000000; background-color: #00ff00}"); tx_status_label.setFrameStyle (QFrame::Panel | QFrame::Sunken); statusBar()->addWidget (&tx_status_label); @@ -2328,37 +2328,37 @@ void MainWindow::setup_status_bar (bool vhf) mode_label.setText (m_mode); } if ("ISCAT" == m_mode) { - mode_label.setStyleSheet ("QLabel{background-color: #ff9933}"); + mode_label.setStyleSheet ("QLabel{color: #000000; background-color: #ff9933}"); } else if ("JT9" == m_mode) { - mode_label.setStyleSheet ("QLabel{background-color: #ff6ec7}"); + mode_label.setStyleSheet ("QLabel{color: #000000; background-color: #ff6ec7}"); } else if ("JT4" == m_mode) { - mode_label.setStyleSheet ("QLabel{background-color: #cc99ff}"); + mode_label.setStyleSheet ("QLabel{color: #000000; background-color: #cc99ff}"); } else if ("Echo" == m_mode) { - mode_label.setStyleSheet ("QLabel{background-color: #66ffff}"); + mode_label.setStyleSheet ("QLabel{color: #000000; background-color: #66ffff}"); } else if ("JT9+JT65" == m_mode) { - mode_label.setStyleSheet ("QLabel{background-color: #ffff66}"); + mode_label.setStyleSheet ("QLabel{color: #000000; background-color: #ffff66}"); } else if ("JT65" == m_mode) { - mode_label.setStyleSheet ("QLabel{background-color: #66ff66}"); + mode_label.setStyleSheet ("QLabel{color: #000000; background-color: #66ff66}"); } else if ("QRA64" == m_mode) { - mode_label.setStyleSheet ("QLabel{background-color: #99ff33}"); + mode_label.setStyleSheet ("QLabel{color: #000000; background-color: #99ff33}"); } else if ("MSK144" == m_mode) { - mode_label.setStyleSheet ("QLabel{background-color: #ff6666}"); + mode_label.setStyleSheet ("QLabel{color: #000000; background-color: #ff6666}"); } else if ("FT4" == m_mode) { - mode_label.setStyleSheet ("QLabel{background-color: #ff0099}"); + mode_label.setStyleSheet ("QLabel{color: #000000; background-color: #ff0099}"); } else if ("FT8" == m_mode) { - mode_label.setStyleSheet ("QLabel{background-color: #ff6699}"); + mode_label.setStyleSheet ("QLabel{color: #000000; background-color: #ff6699}"); } else if ("FST4" == m_mode) { - mode_label.setStyleSheet ("QLabel{background-color: #99ff66}"); + mode_label.setStyleSheet ("QLabel{color: #000000; background-color: #99ff66}"); } else if ("FST4W" == m_mode) { - mode_label.setStyleSheet ("QLabel{background-color: #6699ff}"); + mode_label.setStyleSheet ("QLabel{color: #000000; background-color: #6699ff}"); } else if ("FreqCal" == m_mode) { - mode_label.setStyleSheet ("QLabel{background-color: #ff9933}"); + mode_label.setStyleSheet ("QLabel{color: #000000; background-color: #ff9933}"); } last_tx_label.setText (QString {}); if (m_mode.contains (QRegularExpression {R"(^(Echo|ISCAT))"})) { if (band_hopping_label.isVisible ()) statusBar ()->removeWidget (&band_hopping_label); } else if (m_mode=="WSPR") { - mode_label.setStyleSheet ("QLabel{background-color: #ff66ff}"); + mode_label.setStyleSheet ("QLabel{color: #000000; background-color: #ff66ff}"); if (!band_hopping_label.isVisible ()) { statusBar ()->addWidget (&band_hopping_label); band_hopping_label.show (); @@ -2689,7 +2689,7 @@ void MainWindow::on_actionOpen_triggered() //Open File m_path=fname; int i1=fname.lastIndexOf("/"); QString baseName=fname.mid(i1+1); - tx_status_label.setStyleSheet("QLabel{background-color: #99ffff}"); + tx_status_label.setStyleSheet("QLabel{color: #000000; background-color: #99ffff}"); tx_status_label.setText(" " + baseName + " "); on_stopButton_clicked(); m_diskData=true; @@ -2769,7 +2769,7 @@ void MainWindow::on_actionOpen_next_in_directory_triggered() //Open Next m_path=fname; int i1=fname.lastIndexOf("/"); QString baseName=fname.mid(i1+1); - tx_status_label.setStyleSheet("QLabel{background-color: #99ffff}"); + tx_status_label.setStyleSheet("QLabel{color: #000000; background-color: #99ffff}"); tx_status_label.setText(" " + baseName + " "); m_diskData=true; read_wav_file (fname); @@ -4276,11 +4276,11 @@ void MainWindow::guiUpdate() m_nsendingsh=0; if(s[4]==64) m_nsendingsh=1; if(m_nsendingsh==1 or m_currentMessageType==7) { - tx_status_label.setStyleSheet("QLabel{background-color: #66ffff}"); + tx_status_label.setStyleSheet("QLabel{color: #000000; background-color: #66ffff}"); } else if(m_nsendingsh==-1 or m_currentMessageType==6) { - tx_status_label.setStyleSheet("QLabel{background-color: #ffccff}"); + tx_status_label.setStyleSheet("QLabel{color: #000000; background-color: #ffccff}"); } else { - tx_status_label.setStyleSheet("QLabel{background-color: #ffff33}"); + tx_status_label.setStyleSheet("QLabel{color: #000000; background-color: #ffff33}"); } if(m_tune) { tx_status_label.setText("Tx: TUNE"); @@ -4299,11 +4299,11 @@ void MainWindow::guiUpdate() } } else if(m_monitoring) { if (!m_tx_watchdog) { - tx_status_label.setStyleSheet("QLabel{background-color: #00ff00}"); + tx_status_label.setStyleSheet("QLabel{color: #000000; background-color: #00ff00}"); auto t = tr ("Receiving"); if(m_mode=="MSK144") { int npct=int(100.0*m_fCPUmskrtd/0.298667); - if(npct>90) tx_status_label.setStyleSheet("QLabel{background-color: #ff0000}"); + if(npct>90) tx_status_label.setStyleSheet("QLabel{color: #000000; background-color: #ff0000}"); t += QString {" %1%"}.arg (npct, 2); } tx_status_label.setText (t); @@ -5017,7 +5017,7 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie // m_nextGrid=message_words.at(3); // m_nextRpt=message.report(); // ui->labNextCall->setText("Next: " + m_nextCall); -// ui->labNextCall->setStyleSheet("QLabel {background-color: #66ff66}"); +// ui->labNextCall->setStyleSheet("QLabel {color: #000000; background-color: #66ff66}"); // } return; } @@ -8125,7 +8125,7 @@ void MainWindow::on_cbUploadWSPR_Spots_toggled(bool b) m_uploadWSPRSpots=b; if(m_uploadWSPRSpots) ui->cbUploadWSPR_Spots->setStyleSheet(""); if(!m_uploadWSPRSpots) ui->cbUploadWSPR_Spots->setStyleSheet( - "QCheckBox{background-color: yellow}"); + "QCheckBox{color: #000000; background-color: yellow}"); } void MainWindow::on_WSPRfreqSpinBox_valueChanged(int n) @@ -8442,7 +8442,7 @@ void MainWindow::tx_watchdog (bool triggered) m_bTxTime=false; if (m_tune) stop_tuning (); if (m_auto) auto_tx_mode (false); - tx_status_label.setStyleSheet ("QLabel{background-color: #ff0000}"); + tx_status_label.setStyleSheet ("QLabel{color: #000000; background-color: #ff0000}"); tx_status_label.setText (tr ("Runaway Tx watchdog")); QApplication::alert (this); } diff --git a/widgets/mainwindow.ui b/widgets/mainwindow.ui index 422227bac..4eed5fecd 100644 --- a/widgets/mainwindow.ui +++ b/widgets/mainwindow.ui @@ -376,6 +376,7 @@ QPushButton:checked { + color: #000000; background-color: #00ff00; border-style: outset; border-width: 1px; From 9c436686408f16c3b05d2912bf6c16b999c84a98 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sat, 8 Aug 2020 13:43:41 +0100 Subject: [PATCH 12/50] Break unnecessary Qt link dependencies in Fortran utilities --- CMakeLists.txt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 17f863042..7b0931ace 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -222,9 +222,12 @@ set (WSJT_QT_CONF_DESTINATION ${QT_CONF_DESTINATION} CACHE PATH "Path for the qt # # Project sources # +set (fort_qt_CXXSRCS + lib/shmem.cpp + ) + set (wsjt_qt_CXXSRCS qt_helpers.cpp - lib/shmem.cpp widgets/MessageBox.cpp MetaDataRegistry.cpp Network/NetworkServerLookup.cpp @@ -730,6 +733,7 @@ set (qcp_CXXSRCS set (all_CXXSRCS ${wsjt_CXXSRCS} + ${fort_qt_CXXSRCS} ${wsjt_qt_CXXSRCS} ${wsjt_qtmm_CXXSRCS} ${wsjtx_CXXSRCS} @@ -1258,6 +1262,11 @@ if (WIN32) target_link_libraries (wsjt_qt Qt5::AxContainer Qt5::AxBase) endif (WIN32) +# build a library of package Qt functionality used in Fortran utilities +add_library (fort_qt STATIC ${fort_qt_CXXSRCS}) +target_link_libraries (fort_qt Qt5::Core) + +# build a library of WSJT Qt multimedia components add_library (wsjt_qtmm STATIC ${wsjt_qtmm_CXXSRCS} ${wsjt_qtmm_GENUISRCS}) target_link_libraries (wsjt_qtmm Qt5::Multimedia) @@ -1305,9 +1314,9 @@ if (${OPENMP_FOUND} OR APPLE) LINK_FLAGS -Wl,--stack,16777216 ) endif () - target_link_libraries (jt9 wsjt_fort_omp wsjt_cxx wsjt_qt) + target_link_libraries (jt9 wsjt_fort_omp wsjt_cxx fort_qt) else (${OPENMP_FOUND} OR APPLE) - target_link_libraries (jt9 wsjt_fort wsjt_cxx Qt5::Core) + target_link_libraries (jt9 wsjt_fort wsjt_cxx fort_qt) endif (${OPENMP_FOUND} OR APPLE) if(WSJT_BUILD_UTILS) From f975f2c181d8f4fef16a735d242dc2535d97ac0b Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sat, 8 Aug 2020 15:06:31 +0100 Subject: [PATCH 13/50] Further widget contrast improvements for use with dark stylesheets --- Configuration.ui | 6 ++++-- widgets/mainwindow.ui | 5 +++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Configuration.ui b/Configuration.ui index bc8e7f596..eae6ab94f 100644 --- a/Configuration.ui +++ b/Configuration.ui @@ -1493,7 +1493,8 @@ both here. false - background-color: rgb(255, 255, 255); + background-color: rgb(255, 255, 255); +color: rgb(0, 0, 0); TextLabel @@ -1541,7 +1542,8 @@ both here. - background-color: rgb(255, 255, 255); + background-color: rgb(255, 255, 255); +color: rgb(0, 0, 0); TextLabel diff --git a/widgets/mainwindow.ui b/widgets/mainwindow.ui index 4eed5fecd..ece61762c 100644 --- a/widgets/mainwindow.ui +++ b/widgets/mainwindow.ui @@ -448,6 +448,7 @@ QPushButton:checked { + color: rgb(0, 0, 0); background-color: cyan; border-style: outset; border-width: 1px; @@ -481,6 +482,7 @@ QPushButton:checked { + color: rgb(0, 0, 0); background-color: red; border-style: outset; border-width: 1px; @@ -524,6 +526,7 @@ QPushButton:checked { + color: rgb(0, 0, 0); background-color: red; border-style: outset; border-width: 1px; @@ -998,6 +1001,7 @@ Not available to nonstandard callsign holders. QPushButton:checked { + color: rgb(0, 0, 0); background-color: red; border-style: outset; border-width: 1px; @@ -2381,6 +2385,7 @@ list. The list can be maintained in Settings (F2). QPushButton:checked { + color: rgb(0, 0, 0); background-color: red; border-style: outset; border-width: 1px; From a0ceace5b48ed56bd393ed14b833606f3638483d Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sat, 8 Aug 2020 16:25:14 +0100 Subject: [PATCH 14/50] User configurable audio device buffer sizes Adjusting these may help with audio drop-outs, particularly on slower CPU systems or heavily loaded systems. Smaller buffer sizes leave less margin for process interruptions, larger sizes waste resources that could impact other processes. --- Audio/soundin.cpp | 5 +- Audio/soundout.cpp | 19 ++--- Audio/soundout.h | 6 +- Configuration.cpp | 52 +++++++++--- Configuration.hpp | 2 + Configuration.ui | 185 +++++++++++++++++++++++++++++------------ widgets/mainwindow.cpp | 25 +++--- widgets/mainwindow.h | 2 - 8 files changed, 201 insertions(+), 95 deletions(-) diff --git a/Audio/soundin.cpp b/Audio/soundin.cpp index e08d45271..3e61b41b1 100644 --- a/Audio/soundin.cpp +++ b/Audio/soundin.cpp @@ -41,7 +41,8 @@ bool SoundInput::audioError () const return result; } -void SoundInput::start(QAudioDeviceInfo const& device, int framesPerBuffer, AudioDevice * sink, unsigned downSampleFactor, AudioDevice::Channel channel) +void SoundInput::start(QAudioDeviceInfo const& device, int framesPerBuffer, AudioDevice * sink + , unsigned downSampleFactor, AudioDevice::Channel channel) { Q_ASSERT (sink); @@ -79,7 +80,9 @@ void SoundInput::start(QAudioDeviceInfo const& device, int framesPerBuffer, Audi connect (m_stream.data(), &QAudioInput::stateChanged, this, &SoundInput::handleStateChanged); + qDebug () << "SoundIn default buffer size (bytes):" << m_stream->bufferSize (); m_stream->setBufferSize (m_stream->format ().bytesForFrames (framesPerBuffer)); + qDebug () << "SoundIn selected buffer size (bytes):" << m_stream->bufferSize (); if (sink->initialize (QIODevice::WriteOnly, channel)) { m_stream->start (sink); diff --git a/Audio/soundout.cpp b/Audio/soundout.cpp index 0264ad91e..48bea9cc6 100644 --- a/Audio/soundout.cpp +++ b/Audio/soundout.cpp @@ -9,15 +9,6 @@ #include "moc_soundout.cpp" -/* -#if defined (WIN32) -# define MS_BUFFERED 1000u -#else -# define MS_BUFFERED 2000u -#endif -*/ -# define MS_BUFFERED 200u - bool SoundOutput::audioError () const { bool result (true); @@ -50,11 +41,11 @@ bool SoundOutput::audioError () const return result; } -void SoundOutput::setFormat (QAudioDeviceInfo const& device, unsigned channels, unsigned msBuffered) +void SoundOutput::setFormat (QAudioDeviceInfo const& device, unsigned channels, int frames_buffered) { Q_ASSERT (0 < channels && channels < 3); - m_msBuffered = msBuffered; + m_framesBuffered = frames_buffered; QAudioFormat format (device.preferredFormat ()); // qDebug () << "Preferred audio output format:" << format; @@ -101,9 +92,9 @@ void SoundOutput::restart (QIODevice * source) // we have to set this before every start on the stream because the // Windows implementation seems to forget the buffer size after a // stop. - m_stream->setBufferSize (m_stream->format().bytesForDuration((m_msBuffered ? m_msBuffered : MS_BUFFERED) * 1000)); - // qDebug() << "B" << m_stream->bufferSize() << - // m_stream->periodSize() << m_stream->notifyInterval(); + qDebug () << "SoundOut default buffer size (bytes):" << m_stream->bufferSize (); + m_stream->setBufferSize (m_stream->format().bytesForFrames (m_framesBuffered)); + qDebug () << "SoundOut selected buffer size (bytes):" << m_stream->bufferSize (); m_stream->setCategory ("production"); m_stream->start (source); } diff --git a/Audio/soundout.h b/Audio/soundout.h index 1e4b3a948..2699176f3 100644 --- a/Audio/soundout.h +++ b/Audio/soundout.h @@ -18,7 +18,7 @@ class SoundOutput public: SoundOutput () - : m_msBuffered {0u} + : m_framesBuffered {0} , m_volume {1.0} { } @@ -26,7 +26,7 @@ public: qreal attenuation () const; public Q_SLOTS: - void setFormat (QAudioDeviceInfo const& device, unsigned channels, unsigned msBuffered = 0u); + void setFormat (QAudioDeviceInfo const& device, unsigned channels, int frames_buffered = 0); void restart (QIODevice *); void suspend (); void resume (); @@ -47,7 +47,7 @@ private Q_SLOTS: private: QScopedPointer m_stream; - unsigned m_msBuffered; + int m_framesBuffered; qreal m_volume; }; diff --git a/Configuration.cpp b/Configuration.cpp index 0cbe744e6..4aeda730d 100644 --- a/Configuration.cpp +++ b/Configuration.cpp @@ -242,6 +242,8 @@ namespace // Magic numbers for file validation constexpr quint32 qrg_magic {0xadbccbdb}; constexpr quint32 qrg_version {100}; // M.mm + + constexpr int default_audio_buffer_size = 10; } @@ -649,9 +651,11 @@ private: QAudioDeviceInfo audio_input_device_; bool default_audio_input_device_selected_; AudioDevice::Channel audio_input_channel_; + int audio_input_buffer_size_; QAudioDeviceInfo audio_output_device_; bool default_audio_output_device_selected_; AudioDevice::Channel audio_output_channel_; + int audio_output_buffer_size_; friend class Configuration; }; @@ -681,8 +685,10 @@ bool Configuration::is_active () const {return m_->isVisible ();} QAudioDeviceInfo const& Configuration::audio_input_device () const {return m_->audio_input_device_;} AudioDevice::Channel Configuration::audio_input_channel () const {return m_->audio_input_channel_;} +int Configuration::audio_input_buffer_size () const {return m_->audio_input_buffer_size_ * 1024;} QAudioDeviceInfo const& Configuration::audio_output_device () const {return m_->audio_output_device_;} AudioDevice::Channel Configuration::audio_output_channel () const {return m_->audio_output_channel_;} +int Configuration::audio_output_buffer_size () const {return m_->audio_output_buffer_size_ * 1024;} bool Configuration::restart_audio_input () const {return m_->restart_sound_input_device_;} bool Configuration::restart_audio_output () const {return m_->restart_sound_output_device_;} auto Configuration::type_2_msg_gen () const -> Type2MsgGen {return m_->type_2_msg_gen_;} @@ -977,7 +983,9 @@ Configuration::impl::impl (Configuration * self, QNetworkAccessManager * network , degrade_ {0.} // initialize to zero each run, not // saved in settings , default_audio_input_device_selected_ {false} + , audio_input_buffer_size_ {default_audio_buffer_size} , default_audio_output_device_selected_ {false} + , audio_output_buffer_size_ {default_audio_buffer_size} { ui_->setupUi (this); @@ -1189,18 +1197,6 @@ Configuration::impl::impl (Configuration * self, QNetworkAccessManager * network // ui_->highlighting_list_view->setModel (&next_decode_highlighing_model_); - // - // load combo boxes with audio setup choices - // - default_audio_input_device_selected_ = load_audio_devices (QAudio::AudioInput, ui_->sound_input_combo_box, &audio_input_device_); - default_audio_output_device_selected_ = load_audio_devices (QAudio::AudioOutput, ui_->sound_output_combo_box, &audio_output_device_); - - update_audio_channels (ui_->sound_input_combo_box, ui_->sound_input_combo_box->currentIndex (), ui_->sound_input_channel_combo_box, false); - update_audio_channels (ui_->sound_output_combo_box, ui_->sound_output_combo_box->currentIndex (), ui_->sound_output_channel_combo_box, true); - - ui_->sound_input_channel_combo_box->setCurrentIndex (audio_input_channel_); - ui_->sound_output_channel_combo_box->setCurrentIndex (audio_output_channel_); - enumerate_rigs (); initialize_models (); @@ -1238,6 +1234,21 @@ void Configuration::impl::initialize_models () ui_->sbDegrade->setValue (degrade_); ui_->sbBandwidth->setValue (RxBandwidth_); ui_->PTT_method_button_group->button (rig_params_.ptt_type)->setChecked (true); + + // + // load combo boxes with audio setup choices + // + default_audio_input_device_selected_ = load_audio_devices (QAudio::AudioInput, ui_->sound_input_combo_box, &audio_input_device_); + default_audio_output_device_selected_ = load_audio_devices (QAudio::AudioOutput, ui_->sound_output_combo_box, &audio_output_device_); + + update_audio_channels (ui_->sound_input_combo_box, ui_->sound_input_combo_box->currentIndex (), ui_->sound_input_channel_combo_box, false); + update_audio_channels (ui_->sound_output_combo_box, ui_->sound_output_combo_box->currentIndex (), ui_->sound_output_channel_combo_box, true); + + ui_->sound_input_channel_combo_box->setCurrentIndex (audio_input_channel_); + ui_->audio_ip_buffer_spin_box->setValue (audio_input_buffer_size_); + ui_->sound_output_channel_combo_box->setCurrentIndex (audio_output_channel_); + ui_->audio_op_buffer_spin_box->setValue (audio_output_buffer_size_); + ui_->save_path_display_label->setText (save_directory_.absolutePath ()); ui_->azel_path_display_label->setText (azel_directory_.absolutePath ()); ui_->CW_id_after_73_check_box->setChecked (id_after_73_); @@ -1446,6 +1457,10 @@ void Configuration::impl::read_settings () audio_input_channel_ = AudioDevice::fromString (settings_->value ("AudioInputChannel", "Mono").toString ()); audio_output_channel_ = AudioDevice::fromString (settings_->value ("AudioOutputChannel", "Mono").toString ()); + // retrieve audio buffer size values + audio_input_buffer_size_ = settings_->value ("AudioInputBufferSize", default_audio_buffer_size).toInt (); + audio_output_buffer_size_ = settings_->value ("AudioOutputBufferSize", default_audio_buffer_size).toInt (); + type_2_msg_gen_ = settings_->value ("Type2MsgGen", QVariant::fromValue (Configuration::type_2_msg_3_full)).value (); monitor_off_at_startup_ = settings_->value ("MonitorOFF", false).toBool (); @@ -1587,6 +1602,8 @@ void Configuration::impl::write_settings () settings_->setValue ("AudioInputChannel", AudioDevice::toString (audio_input_channel_)); settings_->setValue ("AudioOutputChannel", AudioDevice::toString (audio_output_channel_)); + settings_->setValue ("AudioInputBufferSize", audio_input_buffer_size_); + settings_->setValue ("AudioOutputBufferSize", audio_output_buffer_size_); settings_->setValue ("Type2MsgGen", QVariant::fromValue (type_2_msg_gen_)); settings_->setValue ("MonitorOFF", monitor_off_at_startup_); settings_->setValue ("MonitorLastUsed", monitor_last_used_); @@ -2041,6 +2058,17 @@ void Configuration::impl::accept () } Q_ASSERT (audio_output_channel_ <= AudioDevice::Both); + if (audio_input_buffer_size_ != ui_->audio_ip_buffer_spin_box->value ()) + { + audio_input_buffer_size_ = ui_->audio_ip_buffer_spin_box->value (); + restart_sound_input_device_ = true; + } + if (audio_output_buffer_size_ != ui_->audio_op_buffer_spin_box->value ()) + { + audio_output_buffer_size_ = ui_->audio_op_buffer_spin_box->value (); + restart_sound_output_device_ = true; + } + my_callsign_ = ui_->callsign_line_edit->text (); my_grid_ = ui_->grid_line_edit->text (); FD_exchange_= ui_->Field_Day_Exchange->text ().toUpper (); diff --git a/Configuration.hpp b/Configuration.hpp index 882a78629..3087ea855 100644 --- a/Configuration.hpp +++ b/Configuration.hpp @@ -87,8 +87,10 @@ public: QAudioDeviceInfo const& audio_input_device () const; AudioDevice::Channel audio_input_channel () const; + int audio_input_buffer_size () const; QAudioDeviceInfo const& audio_output_device () const; AudioDevice::Channel audio_output_channel () const; + int audio_output_buffer_size () const; // These query methods should be used after a call to exec() to // determine if either the audio input or audio output stream diff --git a/Configuration.ui b/Configuration.ui index eae6ab94f..57dca9b04 100644 --- a/Configuration.ui +++ b/Configuration.ui @@ -6,8 +6,8 @@ 0 0 - 559 - 553 + 553 + 563 @@ -1349,46 +1349,6 @@ radio interface behave as expected. Soundcard - - - - - 1 - 0 - - - - Select the audio CODEC to use for transmitting. -If this is your default device for system sounds then -ensure that all system sounds are disabled otherwise -you will broadcast any systems sounds generated during -transmitting periods. - - - - - - - - 1 - 0 - - - - Select the audio CODEC to use for receiving. - - - - - - - &Input: - - - sound_input_combo_box - - - @@ -1416,6 +1376,16 @@ transmitting periods. + + + + &Input: + + + sound_input_combo_box + + + @@ -1446,6 +1416,81 @@ both here. + + + + Audio output buffer size in kilo-frames + +Adjust for minimum dropped samples reported. Too low values are likely to cause dropped samples causing audio drop-outs. + + + k + + + 4 + + + 128 + + + 10 + + + + + + + + 1 + 0 + + + + Select the audio CODEC to use for receiving. + + + + + + + Audio input buffer size in kilo-frames + +Adjust for minimum dropped samples reported. Too low values are likely to cause dropped samples causing audio drop-outs. + + + k + + + + + + 4 + + + 128 + + + 10 + + + + + + + + 1 + 0 + + + + Select the audio CODEC to use for transmitting. +If this is your default device for system sounds then +ensure that all system sounds are disabled otherwise +you will broadcast any systems sounds generated during +transmitting periods. + + + @@ -1456,6 +1501,26 @@ both here. + + + + Buffer: + + + audio_ip_buffer_spin_box + + + + + + + Buffer: + + + audio_op_buffer_spin_box + + + @@ -2951,14 +3016,20 @@ Right click for insert and delete options. use_dynamic_grid region_combo_box type_2_msg_gen_combo_box + decodes_from_top_check_box + insert_blank_check_box + miles_check_box TX_messages_check_box DXCC_check_box + ppfx_check_box font_push_button decoded_text_font_push_button monitor_off_check_box monitor_last_used_check_box quick_call_check_box disable_TX_on_73_check_box + force_call_1st_check_box + alternate_bindings_check_box CW_id_after_73_check_box enable_VHF_features_check_box tx_QSY_check_box @@ -2977,8 +3048,8 @@ Right click for insert and delete options. CAT_one_stop_bit_radio_button CAT_two_stop_bit_radio_button CAT_handshake_default_radio_button - CAT_handshake_none_radio_button CAT_handshake_xon_radio_button + CAT_handshake_none_radio_button CAT_handshake_hardware_radio_button force_DTR_combo_box force_RTS_combo_box @@ -2999,8 +3070,10 @@ Right click for insert and delete options. test_PTT_push_button sound_input_combo_box sound_input_channel_combo_box + audio_ip_buffer_spin_box sound_output_combo_box sound_output_channel_combo_box + audio_op_buffer_spin_box save_path_select_push_button azel_path_select_push_button checkBoxPwrBandTxMemory @@ -3016,6 +3089,7 @@ Right click for insert and delete options. clear_DX_check_box opCallEntry psk_reporter_check_box + psk_reporter_tcpip_check_box udp_server_line_edit udp_server_port_spin_box accept_udp_requests_check_box @@ -3030,9 +3104,13 @@ Right click for insert and delete options. stations_table_view highlighting_list_view reset_highlighting_to_defaults_push_button + highlight_by_mode_check_box + only_fields_check_box + include_WAE_check_box + rescan_log_push_button LotW_CSV_URL_line_edit - LotW_CSV_fetch_push_button LotW_days_since_upload_spin_box + LotW_CSV_fetch_push_button sbNtrials sbAggressive cbTwoPass @@ -3041,13 +3119,18 @@ Right click for insert and delete options. sbTxDelay cbx2ToneSpacing cbx4ToneSpacing + rbLowSidelobes + rbMaxSensitivity + gbSpecialOpActivity rbFox + rbHound rbNA_VHF_Contest - rbEU_VHF_Contest rbField_Day Field_Day_Exchange + rbEU_VHF_Contest rbRTTY_Roundup RTTY_Exchange + rbWW_DIGI @@ -3117,13 +3200,13 @@ Right click for insert and delete options. - - - - - - + + + + + + diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index e9a533e1d..c9ee10b8a 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -394,8 +394,6 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, }, m_sfx {"P", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A"}, mem_jt9 {shdmem}, - m_msAudioOutputBuffered (0u), - m_framesAudioInputBuffered (RX_SAMPLE_RATE / 10), m_downSampleFactor (downSampleFactor), m_audioThreadPriority (QThread::HighPriority), m_bandEdited {false}, @@ -937,8 +935,12 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, connect (&m_wav_future_watcher, &QFutureWatcher::finished, this, &MainWindow::diskDat); connect(&watcher3, SIGNAL(finished()),this,SLOT(fast_decode_done())); - Q_EMIT startAudioInputStream (m_config.audio_input_device (), m_framesAudioInputBuffered, m_detector, m_downSampleFactor, m_config.audio_input_channel ()); - Q_EMIT initializeAudioOutputStream (m_config.audio_output_device (), AudioDevice::Mono == m_config.audio_output_channel () ? 1 : 2, m_msAudioOutputBuffered); + Q_EMIT startAudioInputStream (m_config.audio_input_device () + , m_config.audio_input_buffer_size () + , m_detector, m_downSampleFactor, m_config.audio_input_channel ()); + Q_EMIT initializeAudioOutputStream (m_config.audio_output_device () + , AudioDevice::Mono == m_config.audio_output_channel () ? 1 : 2 + , m_config.audio_output_buffer_size ()); Q_EMIT transmitFrequency (ui->TxFreqSpinBox->value () - m_XIT); enable_DXCC_entity (m_config.DXCC ()); // sets text window proportions and (re)inits the logbook @@ -1277,8 +1279,6 @@ void MainWindow::readSettings() // use these initialisation settings to tune the audio o/p buffer // size and audio thread priority m_settings->beginGroup ("Tune"); - m_msAudioOutputBuffered = m_settings->value ("Audio/OutputBufferMs").toInt (); - m_framesAudioInputBuffered = m_settings->value ("Audio/InputBufferFrames", RX_SAMPLE_RATE / 10).toInt (); m_audioThreadPriority = static_cast (m_settings->value ("Audio/ThreadPriority", QThread::HighPriority).toInt () % 8); m_settings->endGroup (); @@ -1799,15 +1799,16 @@ void MainWindow::on_actionSettings_triggered() //Setup Dialog if(m_config.spot_to_psk_reporter ()) pskSetLocal (); if(m_config.restart_audio_input ()) { - Q_EMIT startAudioInputStream (m_config.audio_input_device (), - m_framesAudioInputBuffered, m_detector, m_downSampleFactor, - m_config.audio_input_channel ()); + Q_EMIT startAudioInputStream (m_config.audio_input_device () + , m_config.audio_input_buffer_size () + , m_detector, m_downSampleFactor + , m_config.audio_input_channel ()); } if(m_config.restart_audio_output ()) { - Q_EMIT initializeAudioOutputStream (m_config.audio_output_device (), - AudioDevice::Mono == m_config.audio_output_channel () ? 1 : 2, - m_msAudioOutputBuffered); + Q_EMIT initializeAudioOutputStream (m_config.audio_output_device () + , AudioDevice::Mono == m_config.audio_output_channel () ? 1 : 2 + , m_config.audio_output_buffer_size ()); } displayDialFrequency (); diff --git a/widgets/mainwindow.h b/widgets/mainwindow.h index 79f65d080..2f95ac801 100644 --- a/widgets/mainwindow.h +++ b/widgets/mainwindow.h @@ -666,8 +666,6 @@ private: QSharedMemory *mem_jt9; QString m_QSOText; - unsigned m_msAudioOutputBuffered; - unsigned m_framesAudioInputBuffered; unsigned m_downSampleFactor; QThread::Priority m_audioThreadPriority; bool m_bandEdited; From f32c927306cc701a00288ebc357d291d6b2af1b4 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sat, 8 Aug 2020 16:52:03 +0100 Subject: [PATCH 15/50] Control audio buffer size defaults from Configuration class --- Configuration.ui | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Configuration.ui b/Configuration.ui index 57dca9b04..eaa68bf30 100644 --- a/Configuration.ui +++ b/Configuration.ui @@ -1432,9 +1432,6 @@ Adjust for minimum dropped samples reported. Too low values are likely to cause 128 - - 10 - @@ -1469,9 +1466,6 @@ Adjust for minimum dropped samples reported. Too low values are likely to cause 128 - - 10 - From 6ea62d9476cbe2a8c61bb0fe9fc165131bc17049 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sat, 8 Aug 2020 16:53:24 +0100 Subject: [PATCH 16/50] Remove default audio devices from audio configuration This enforces an audio input device in the settings dialog since we can't do anything without an input device. A nil audio output device is allowed with a warning. --- Audio/soundin.cpp | 5 +- Audio/soundout.cpp | 4 +- Configuration.cpp | 175 +++++++-------------------------------------- 3 files changed, 31 insertions(+), 153 deletions(-) diff --git a/Audio/soundin.cpp b/Audio/soundin.cpp index 3e61b41b1..e6e8ef783 100644 --- a/Audio/soundin.cpp +++ b/Audio/soundin.cpp @@ -63,14 +63,13 @@ void SoundInput::start(QAudioDeviceInfo const& device, int framesPerBuffer, Audi Q_EMIT error (tr ("Requested input audio format is not valid.")); return; } - - if (!device.isFormatSupported (format)) + else if (!device.isFormatSupported (format)) { // qDebug () << "Nearest supported audio format:" << device.nearestFormat (format); Q_EMIT error (tr ("Requested input audio format is not supported on device.")); return; } -// qDebug () << "Selected audio input format:" << format; + // qDebug () << "Selected audio input format:" << format; m_stream.reset (new QAudioInput {device, format}); if (audioError ()) diff --git a/Audio/soundout.cpp b/Audio/soundout.cpp index 48bea9cc6..ecd7ce723 100644 --- a/Audio/soundout.cpp +++ b/Audio/soundout.cpp @@ -59,11 +59,11 @@ void SoundOutput::setFormat (QAudioDeviceInfo const& device, unsigned channels, { Q_EMIT error (tr ("Requested output audio format is not valid.")); } - if (!device.isFormatSupported (format)) + else if (!device.isFormatSupported (format)) { Q_EMIT error (tr ("Requested output audio format is not supported on device.")); } -// qDebug () << "Selected audio output format:" << format; + qDebug () << "Selected audio output format:" << format; m_stream.reset (new QAudioOutput (device, format)); audioError (); diff --git a/Configuration.cpp b/Configuration.cpp index 4aeda730d..2a09dad6a 100644 --- a/Configuration.cpp +++ b/Configuration.cpp @@ -431,7 +431,7 @@ private: void read_settings (); void write_settings (); - bool load_audio_devices (QAudio::Mode, QComboBox *, QAudioDeviceInfo *); + void load_audio_devices (QAudio::Mode, QComboBox *, QAudioDeviceInfo *); void update_audio_channels (QComboBox const *, int, QComboBox *, bool); void initialize_models (); @@ -479,8 +479,6 @@ private: Q_SLOT void on_force_DTR_combo_box_currentIndexChanged (int); Q_SLOT void on_force_RTS_combo_box_currentIndexChanged (int); Q_SLOT void on_rig_combo_box_currentIndexChanged (int); - Q_SLOT void on_sound_input_combo_box_currentTextChanged (QString const&); - Q_SLOT void on_sound_output_combo_box_currentTextChanged (QString const&); Q_SLOT void on_add_macro_push_button_clicked (bool = false); Q_SLOT void on_delete_macro_push_button_clicked (bool = false); Q_SLOT void on_PTT_method_button_group_buttonClicked (int); @@ -649,11 +647,9 @@ private: bool pwrBandTuneMemory_; QAudioDeviceInfo audio_input_device_; - bool default_audio_input_device_selected_; AudioDevice::Channel audio_input_channel_; int audio_input_buffer_size_; QAudioDeviceInfo audio_output_device_; - bool default_audio_output_device_selected_; AudioDevice::Channel audio_output_channel_; int audio_output_buffer_size_; @@ -982,9 +978,7 @@ Configuration::impl::impl (Configuration * self, QNetworkAccessManager * network , transceiver_command_number_ {0} , degrade_ {0.} // initialize to zero each run, not // saved in settings - , default_audio_input_device_selected_ {false} , audio_input_buffer_size_ {default_audio_buffer_size} - , default_audio_output_device_selected_ {false} , audio_output_buffer_size_ {default_audio_buffer_size} { ui_->setupUi (this); @@ -1238,8 +1232,11 @@ void Configuration::impl::initialize_models () // // load combo boxes with audio setup choices // - default_audio_input_device_selected_ = load_audio_devices (QAudio::AudioInput, ui_->sound_input_combo_box, &audio_input_device_); - default_audio_output_device_selected_ = load_audio_devices (QAudio::AudioOutput, ui_->sound_output_combo_box, &audio_output_device_); + // + // load combo boxes with audio setup choices + // + load_audio_devices (QAudio::AudioInput, ui_->sound_input_combo_box, &audio_input_device_); + load_audio_devices (QAudio::AudioOutput, ui_->sound_output_combo_box, &audio_output_device_); update_audio_channels (ui_->sound_input_combo_box, ui_->sound_input_combo_box->currentIndex (), ui_->sound_input_channel_combo_box, false); update_audio_channels (ui_->sound_output_combo_box, ui_->sound_output_combo_box->currentIndex (), ui_->sound_output_channel_combo_box, true); @@ -1406,23 +1403,11 @@ void Configuration::impl::read_settings () // retrieve audio input device // auto saved_name = settings_->value ("SoundInName").toString (); - - // deal with special Windows default audio devices - auto default_device = QAudioDeviceInfo::defaultInputDevice (); - if (saved_name == default_device.deviceName ()) + Q_FOREACH (auto const& p, QAudioDeviceInfo::availableDevices (QAudio::AudioInput)) // available audio input devices { - audio_input_device_ = default_device; - default_audio_input_device_selected_ = true; - } - else - { - default_audio_input_device_selected_ = false; - Q_FOREACH (auto const& p, QAudioDeviceInfo::availableDevices (QAudio::AudioInput)) // available audio input devices + if (p.deviceName () == saved_name) { - if (p.deviceName () == saved_name) - { - audio_input_device_ = p; - } + audio_input_device_ = p; } } } @@ -1432,23 +1417,11 @@ void Configuration::impl::read_settings () // retrieve audio output device // auto saved_name = settings_->value("SoundOutName").toString(); - - // deal with special Windows default audio devices - auto default_device = QAudioDeviceInfo::defaultOutputDevice (); - if (saved_name == default_device.deviceName ()) + Q_FOREACH (auto const& p, QAudioDeviceInfo::availableDevices (QAudio::AudioOutput)) // available audio output devices { - audio_output_device_ = default_device; - default_audio_output_device_selected_ = true; - } - else - { - default_audio_output_device_selected_ = false; - Q_FOREACH (auto const& p, QAudioDeviceInfo::availableDevices (QAudio::AudioOutput)) // available audio output devices + if (p.deviceName () == saved_name) { - if (p.deviceName () == saved_name) - { - audio_output_device_ = p; - } + audio_output_device_ = p; } } } @@ -1581,25 +1554,8 @@ void Configuration::impl::write_settings () settings_->setValue ("PTTport", rig_params_.ptt_port); settings_->setValue ("SaveDir", save_directory_.absolutePath ()); settings_->setValue ("AzElDir", azel_directory_.absolutePath ()); - - if (default_audio_input_device_selected_) - { - settings_->setValue ("SoundInName", QAudioDeviceInfo::defaultInputDevice ().deviceName ()); - } - else - { - settings_->setValue ("SoundInName", audio_input_device_.deviceName ()); - } - - if (default_audio_output_device_selected_) - { - settings_->setValue ("SoundOutName", QAudioDeviceInfo::defaultOutputDevice ().deviceName ()); - } - else - { - settings_->setValue ("SoundOutName", audio_output_device_.deviceName ()); - } - + settings_->setValue ("SoundInName", audio_input_device_.deviceName ()); + settings_->setValue ("SoundOutName", audio_output_device_.deviceName ()); settings_->setValue ("AudioInputChannel", AudioDevice::toString (audio_input_channel_)); settings_->setValue ("AudioOutputChannel", AudioDevice::toString (audio_output_channel_)); settings_->setValue ("AudioInputBufferSize", audio_input_buffer_size_); @@ -1816,8 +1772,8 @@ bool Configuration::impl::validate () if (ui_->sound_output_combo_box->currentIndex () < 0 && !QAudioDeviceInfo::availableDevices (QAudio::AudioOutput).empty ()) { - MessageBox::critical_message (this, tr ("Invalid audio out device")); - return false; + MessageBox::warning_message (this, tr ("Invalid audio output device")); + // don't reject as we can work without an audio output } if (!ui_->PTT_method_button_group->checkedButton ()->isEnabled ()) @@ -1990,25 +1946,12 @@ void Configuration::impl::accept () auto const& device_name = ui_->sound_input_combo_box->currentText (); if (device_name != audio_input_device_.deviceName ()) { - auto const& default_device = QAudioDeviceInfo::defaultInputDevice (); - if (device_name == default_device.deviceName ()) + audio_input_device_ = QAudioDeviceInfo {}; + Q_FOREACH (auto const& d, QAudioDeviceInfo::availableDevices (QAudio::AudioInput)) { - audio_input_device_ = default_device; - } - else - { - bool found {false}; - Q_FOREACH (auto const& d, QAudioDeviceInfo::availableDevices (QAudio::AudioInput)) + if (device_name == d.deviceName ()) { - if (device_name == d.deviceName ()) - { - audio_input_device_ = d; - found = true; - } - } - if (!found) - { - audio_input_device_ = default_device; + audio_input_device_ = d; } } restart_sound_input_device_ = true; @@ -2019,25 +1962,12 @@ void Configuration::impl::accept () auto const& device_name = ui_->sound_output_combo_box->currentText (); if (device_name != audio_output_device_.deviceName ()) { - auto const& default_device = QAudioDeviceInfo::defaultOutputDevice (); - if (device_name == default_device.deviceName ()) + audio_output_device_ = QAudioDeviceInfo {}; + Q_FOREACH (auto const& d, QAudioDeviceInfo::availableDevices (QAudio::AudioOutput)) { - audio_output_device_ = default_device; - } - else - { - bool found {false}; - Q_FOREACH (auto const& d, QAudioDeviceInfo::availableDevices (QAudio::AudioOutput)) + if (device_name == d.deviceName ()) { - if (device_name == d.deviceName ()) - { - audio_output_device_ = d; - found = true; - } - } - if (!found) - { - audio_output_device_ = default_device; + audio_output_device_ = d; } } restart_sound_output_device_ = true; @@ -2334,16 +2264,6 @@ void Configuration::impl::on_PTT_method_button_group_buttonClicked (int /* id */ set_rig_invariants (); } -void Configuration::impl::on_sound_input_combo_box_currentTextChanged (QString const& text) -{ - default_audio_input_device_selected_ = QAudioDeviceInfo::defaultInputDevice ().deviceName () == text; -} - -void Configuration::impl::on_sound_output_combo_box_currentTextChanged (QString const& text) -{ - default_audio_output_device_selected_ = QAudioDeviceInfo::defaultOutputDevice ().deviceName () == text; -} - void Configuration::impl::on_add_macro_line_edit_editingFinished () { ui_->add_macro_line_edit->setText (ui_->add_macro_line_edit->text ().toUpper ()); @@ -2861,47 +2781,18 @@ void Configuration::impl::close_rig () } } -// load the available audio devices into the selection combo box and -// select the default device if the current device isn't set or isn't -// available -bool Configuration::impl::load_audio_devices (QAudio::Mode mode, QComboBox * combo_box, QAudioDeviceInfo * device) +// load the available audio devices into the selection combo box +void Configuration::impl::load_audio_devices (QAudio::Mode mode, QComboBox * combo_box, QAudioDeviceInfo * device) { using std::copy; using std::back_inserter; - bool result {false}; - combo_box->clear (); int current_index = -1; - int default_index = -1; - - int extra_items {0}; - - auto const& default_device = (mode == QAudio::AudioInput ? QAudioDeviceInfo::defaultInputDevice () : QAudioDeviceInfo::defaultOutputDevice ()); - - // deal with special default audio devices on Windows - if ("Default Input Device" == default_device.deviceName () - || "Default Output Device" == default_device.deviceName ()) - { - default_index = 0; - - QList channel_counts; - auto scc = default_device.supportedChannelCounts (); - copy (scc.cbegin (), scc.cend (), back_inserter (channel_counts)); - - combo_box->addItem (default_device.deviceName (), channel_counts); - ++extra_items; - if (default_device == *device) - { - current_index = 0; - result = true; - } - } - Q_FOREACH (auto const& p, QAudioDeviceInfo::availableDevices (mode)) { -// qDebug () << "Audio device: input:" << (QAudio::AudioInput == mode) << "name:" << p.deviceName () << "preferred format:" << p.preferredFormat () << "endians:" << p.supportedByteOrders () << "codecs:" << p.supportedCodecs () << "channels:" << p.supportedChannelCounts () << "rates:" << p.supportedSampleRates () << "sizes:" << p.supportedSampleSizes () << "types:" << p.supportedSampleTypes (); + // qDebug () << "Audio device: input:" << (QAudio::AudioInput == mode) << "name:" << p.deviceName () << "preferred format:" << p.preferredFormat () << "endians:" << p.supportedByteOrders () << "codecs:" << p.supportedCodecs () << "channels:" << p.supportedChannelCounts () << "rates:" << p.supportedSampleRates () << "sizes:" << p.supportedSampleSizes () << "types:" << p.supportedSampleTypes (); // convert supported channel counts into something we can store in the item model QList channel_counts; @@ -2913,20 +2804,8 @@ bool Configuration::impl::load_audio_devices (QAudio::Mode mode, QComboBox * com { current_index = combo_box->count () - 1; } - else if (p == default_device) - { - default_index = combo_box->count () - 1; - } - } - if (current_index < 0) // not found - use default - { - *device = default_device; - result = true; - current_index = default_index; } combo_box->setCurrentIndex (current_index); - - return result; } // enable only the channels that are supported by the selected audio device From 02e19b687f1bad8e6539d95f78241d465ed5e6b0 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sat, 8 Aug 2020 17:12:48 +0100 Subject: [PATCH 17/50] Status message to report approximate # of dropped Rx audio frames This is a first cut at this to evaluate buffer size adjustments on supported platforms. A final version might limit status bar reports to >1000 dropped frames or similar. --- Audio/soundin.cpp | 18 ++++++++++++++++-- Audio/soundin.h | 6 +++++- main.cpp | 2 +- widgets/mainwindow.cpp | 30 ++++++++++++++++++++++-------- widgets/mainwindow.h | 1 + 5 files changed, 45 insertions(+), 12 deletions(-) diff --git a/Audio/soundin.cpp b/Audio/soundin.cpp index e6e8ef783..5589393b9 100644 --- a/Audio/soundin.cpp +++ b/Audio/soundin.cpp @@ -117,9 +117,9 @@ void SoundInput::resume () } } -void SoundInput::handleStateChanged (QAudio::State newState) const +void SoundInput::handleStateChanged (QAudio::State newState) { - // qDebug () << "SoundInput::handleStateChanged: newState:" << newState; + qDebug () << "SoundInput::handleStateChanged: newState:" << newState; switch (newState) { @@ -128,6 +128,7 @@ void SoundInput::handleStateChanged (QAudio::State newState) const break; case QAudio::ActiveState: + reset (false); Q_EMIT status (tr ("Receiving")); break; @@ -154,6 +155,19 @@ void SoundInput::handleStateChanged (QAudio::State newState) const } } +void SoundInput::reset (bool report_dropped_frames) +{ + if (m_stream) + { + if (report_dropped_frames) + { + auto lost_usec = m_stream->elapsedUSecs () - m_stream->processedUSecs () - cummulative_lost_usec_; + Q_EMIT dropped_frames (m_stream->format ().framesForDuration (lost_usec), lost_usec); + } + cummulative_lost_usec_ = m_stream->elapsedUSecs () - m_stream->processedUSecs (); + } +} + void SoundInput::stop() { if (m_stream) diff --git a/Audio/soundin.h b/Audio/soundin.h index 325d5e89d..7e2c71d39 100644 --- a/Audio/soundin.h +++ b/Audio/soundin.h @@ -24,6 +24,7 @@ public: SoundInput (QObject * parent = nullptr) : QObject {parent} , m_sink {nullptr} + , cummulative_lost_usec_ {0} { } @@ -35,18 +36,21 @@ public: Q_SLOT void suspend (); Q_SLOT void resume (); Q_SLOT void stop (); + Q_SLOT void reset (bool report_dropped_frames); Q_SIGNAL void error (QString message) const; Q_SIGNAL void status (QString message) const; + Q_SIGNAL void dropped_frames (qint32 dropped, qint64 usec); private: // used internally - Q_SLOT void handleStateChanged (QAudio::State) const; + Q_SLOT void handleStateChanged (QAudio::State); bool audioError () const; QScopedPointer m_stream; QPointer m_sink; + qint64 cummulative_lost_usec_; }; #endif diff --git a/main.cpp b/main.cpp index 62e85e90f..c167a0396 100644 --- a/main.cpp +++ b/main.cpp @@ -97,7 +97,7 @@ namespace int main(int argc, char *argv[]) { // ### Add timestamps to all debug messages -// qSetMessagePattern ("[%{time yyyyMMdd HH:mm:ss.zzz t} %{if-debug}D%{endif}%{if-info}I%{endif}%{if-warning}W%{endif}%{if-critical}C%{endif}%{if-fatal}F%{endif}] %{message}"); + qSetMessagePattern ("[%{time yyyyMMdd HH:mm:ss.zzz t} %{if-debug}D%{endif}%{if-info}I%{endif}%{if-warning}W%{endif}%{if-critical}C%{endif}%{if-fatal}F%{endif}] %{message}"); init_random_seed (); diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index c9ee10b8a..6625e8fd9 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -469,9 +469,13 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, connect (this, &MainWindow::startAudioInputStream, m_soundInput, &SoundInput::start); connect (this, &MainWindow::suspendAudioInputStream, m_soundInput, &SoundInput::suspend); connect (this, &MainWindow::resumeAudioInputStream, m_soundInput, &SoundInput::resume); + connect (this, &MainWindow::reset_audio_input_stream, m_soundInput, &SoundInput::reset); connect (this, &MainWindow::finished, m_soundInput, &SoundInput::stop); connect(m_soundInput, &SoundInput::error, this, &MainWindow::showSoundInError); // connect(m_soundInput, &SoundInput::status, this, &MainWindow::showStatusMessage); + connect (m_soundInput, &SoundInput::dropped_frames, this, [this] (qint32 dropped_frames, qint64 usec) { + showStatusMessage (tr ("%1 (%2 sec) audio frames dropped").arg (dropped_frames).arg (usec / 1.e6)); + }); connect (&m_audioThread, &QThread::finished, m_soundInput, &QObject::deleteLater); connect (this, &MainWindow::finished, this, &MainWindow::close); @@ -935,12 +939,18 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, connect (&m_wav_future_watcher, &QFutureWatcher::finished, this, &MainWindow::diskDat); connect(&watcher3, SIGNAL(finished()),this,SLOT(fast_decode_done())); - Q_EMIT startAudioInputStream (m_config.audio_input_device () - , m_config.audio_input_buffer_size () - , m_detector, m_downSampleFactor, m_config.audio_input_channel ()); - Q_EMIT initializeAudioOutputStream (m_config.audio_output_device () - , AudioDevice::Mono == m_config.audio_output_channel () ? 1 : 2 - , m_config.audio_output_buffer_size ()); + if (!m_config.audio_input_device ().isNull ()) + { + Q_EMIT startAudioInputStream (m_config.audio_input_device () + , m_config.audio_input_buffer_size () + , m_detector, m_downSampleFactor, m_config.audio_input_channel ()); + } + if (!m_config.audio_output_device ().isNull ()) + { + Q_EMIT initializeAudioOutputStream (m_config.audio_output_device () + , AudioDevice::Mono == m_config.audio_output_channel () ? 1 : 2 + , m_config.audio_output_buffer_size ()); + } Q_EMIT transmitFrequency (ui->TxFreqSpinBox->value () - m_XIT); enable_DXCC_entity (m_config.DXCC ()); // sets text window proportions and (re)inits the logbook @@ -1536,6 +1546,10 @@ void MainWindow::dataSink(qint64 frames) if(m_mode!="WSPR") decode(); //Start decoder if(m_mode=="FT8" and !m_diskData and (m_ihsym==m_earlyDecode or m_ihsym==m_earlyDecode2)) return; + if (!m_diskData) + { + Q_EMIT reset_audio_input_stream (true); // signals dropped samples + } if(!m_diskData and (m_saveAll or m_saveDecoded or m_mode=="WSPR" or m_mode=="FST4W")) { //Always save unless "Save None"; may delete later if(m_TRperiod < 60) { @@ -2280,10 +2294,10 @@ bool MainWindow::eventFilter (QObject * object, QEvent * event) void MainWindow::createStatusBar() //createStatusBar { tx_status_label.setAlignment (Qt::AlignHCenter); - tx_status_label.setMinimumSize (QSize {150, 18}); + tx_status_label.setMinimumSize (QSize {100, 18}); tx_status_label.setStyleSheet ("QLabel{color: #000000; background-color: #00ff00}"); tx_status_label.setFrameStyle (QFrame::Panel | QFrame::Sunken); - statusBar()->addWidget (&tx_status_label); + statusBar()->addPermanentWidget (&tx_status_label); config_label.setAlignment (Qt::AlignHCenter); config_label.setMinimumSize (QSize {80, 18}); diff --git a/widgets/mainwindow.h b/widgets/mainwindow.h index 2f95ac801..a1673ec71 100644 --- a/widgets/mainwindow.h +++ b/widgets/mainwindow.h @@ -346,6 +346,7 @@ private: int TRperiod=60) const; Q_SIGNAL void outAttenuationChanged (qreal) const; Q_SIGNAL void toggleShorthand () const; + Q_SIGNAL void reset_audio_input_stream (bool report_dropped_frames) const; private: void set_mode (QString const& mode); From 2e413713a379bf2443c01d5a1264d1bc7e11cce7 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sat, 8 Aug 2020 19:40:42 +0100 Subject: [PATCH 18/50] Tidy dropped frame status bar message --- Audio/soundin.cpp | 1 + widgets/mainwindow.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Audio/soundin.cpp b/Audio/soundin.cpp index 5589393b9..a2856c255 100644 --- a/Audio/soundin.cpp +++ b/Audio/soundin.cpp @@ -163,6 +163,7 @@ void SoundInput::reset (bool report_dropped_frames) { auto lost_usec = m_stream->elapsedUSecs () - m_stream->processedUSecs () - cummulative_lost_usec_; Q_EMIT dropped_frames (m_stream->format ().framesForDuration (lost_usec), lost_usec); + qDebug () << "SoundInput::reset: frames dropped:" << m_stream->format ().framesForDuration (lost_usec) << "sec:" << lost_usec / 1.e6; } cummulative_lost_usec_ = m_stream->elapsedUSecs () - m_stream->processedUSecs (); } diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 6625e8fd9..f6cd97753 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -474,7 +474,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, connect(m_soundInput, &SoundInput::error, this, &MainWindow::showSoundInError); // connect(m_soundInput, &SoundInput::status, this, &MainWindow::showStatusMessage); connect (m_soundInput, &SoundInput::dropped_frames, this, [this] (qint32 dropped_frames, qint64 usec) { - showStatusMessage (tr ("%1 (%2 sec) audio frames dropped").arg (dropped_frames).arg (usec / 1.e6)); + showStatusMessage (tr ("%1 (%2 sec) audio frames dropped").arg (dropped_frames).arg (usec / 1.e6, 5, 'f', 3)); }); connect (&m_audioThread, &QThread::finished, m_soundInput, &QObject::deleteLater); From 94d66bc8481cbe2070ec46558e2fdd8714f197de Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sat, 8 Aug 2020 21:25:32 +0100 Subject: [PATCH 19/50] Make FST4W scheduling l10n agnostic --- widgets/mainwindow.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 6c2a32c25..cceb990c0 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -5741,7 +5741,7 @@ void MainWindow::on_tx6_editingFinished() //tx6 edited void MainWindow::on_RoundRobin_currentTextChanged(QString text) { - ui->sbTxPercent->setEnabled(text=="Random"); + ui->sbTxPercent->setEnabled (text == tr ("Random")); m_WSPR_tx_next = false; // cancel any pending Tx to avoid // undesirable consecutive Tx periods } @@ -6642,7 +6642,7 @@ void MainWindow::WSPR_config(bool b) ui->label_7->setVisible(!b and ui->cbMenus->isChecked()); ui->logQSOButton->setVisible(!b); ui->DecodeButton->setEnabled(!b); - ui->sbTxPercent->setEnabled (m_mode != "FST4W" || "Random" == ui->RoundRobin->currentText ()); + ui->sbTxPercent->setEnabled (m_mode != "FST4W" || tr ("Random") == ui->RoundRobin->currentText ()); ui->band_hopping_group_box->setVisible(true); ui->RoundRobin->setVisible(m_mode=="FST4W"); ui->RoundRobin->lineEdit()->setAlignment(Qt::AlignCenter); @@ -8141,7 +8141,7 @@ void MainWindow::on_pbTxNext_clicked(bool b) void MainWindow::WSPR_scheduling () { QString t=ui->RoundRobin->currentText(); - if(m_mode=="FST4W" and t!="Random") { + if(m_mode=="FST4W" and t != tr ("Random")) { bool ok; int i=t.left (1).toInt (&ok) - 1; if (!ok) return; From b5765401dc26acb41dac905c91ae0b2b61f7cf85 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Sun, 9 Aug 2020 14:21:25 -0400 Subject: [PATCH 20/50] TEMPORARY: Diagnostic routine for the "Save All" missing files problem. --- lib/symspec.f90 | 32 ++++++++++++++++++++++++++++++++ widgets/mainwindow.cpp | 2 ++ 2 files changed, 34 insertions(+) diff --git a/lib/symspec.f90 b/lib/symspec.f90 index a3bed192f..64c88815e 100644 --- a/lib/symspec.f90 +++ b/lib/symspec.f90 @@ -126,3 +126,35 @@ subroutine symspec(shared_data,k,TRperiod,nsps,ingain,bLowSidelobes, & return end subroutine symspec + +subroutine chk_samples(ihsym,k,nstop) + + integer*8 count0,count1,clkfreq + integer itime(8) + real*8 dtime,fsample + character*12 ctime + data count0/-1/,k0/99999999/,maxhsym/0/ + save count0,k0,maxhsym + + if(k.lt.k0 .or. count0.eq.-1) then + call system_clock(count0,clkfreq) + maxhsym=0 + endif + if((mod(ihsym,100).eq.0 .or. ihsym.ge.nstop-100) .and. & + k0.ne.99999999) then + call system_clock(count1,clkfreq) + dtime=dfloat(count1-count0)/dfloat(clkfreq) + if(dtime.lt.28.0) return + if(dtime.gt.1.d-6) fsample=(k-3456)/dtime + call date_and_time(values=itime) + sec=itime(7)+0.001*itime(8) + write(ctime,3000) itime(5)-itime(4)/60,itime(6),sec +3000 format(i2.2,':',i2.2,':',f6.3) + write(33,3033) ctime,dtime,ihsym,nstop,k,fsample +3033 format(a12,f12.6,2i7,i10,f15.3) + flush(33) + endif + k0=k + + return +end subroutine chk_samples diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 56c99f1a6..2a09e185e 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -178,6 +178,7 @@ extern "C" { void get_ft4msg_(int* idecode, char* line, int len); + void chk_samples_(int* m_ihsym,int* k, int* m_hsymStop); } int volatile itone[NUM_ISCAT_SYMBOLS]; //Audio tones for all Tx symbols @@ -1439,6 +1440,7 @@ void MainWindow::dataSink(qint64 frames) if(m_mode.startsWith("FST4")) npct=ui->sbNB->value(); symspec_(&dec_data,&k,&m_TRperiod,&nsps,&m_inGain,&bLowSidelobes,&nsmo,&m_px,s, &m_df3,&m_ihsym,&m_npts8,&m_pxmax,&npct); + chk_samples_(&m_ihsym,&k,&m_hsymStop); if(m_mode=="WSPR" or m_mode=="FST4W") wspr_downsample_(dec_data.d2,&k); if(m_ihsym <=0) return; if(ui) ui->signal_meter_widget->setValue(m_px,m_pxmax); // Update thermometer From 1892f39df37c7fb52a95792c7328c2e8b87caf75 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Mon, 10 Aug 2020 01:42:26 +0100 Subject: [PATCH 21/50] Revert "TEMPORARY: Diagnostic routine for the "Save All" missing files problem." This reverts commit b5765401dc26acb41dac905c91ae0b2b61f7cf85. --- lib/symspec.f90 | 32 -------------------------------- widgets/mainwindow.cpp | 2 -- 2 files changed, 34 deletions(-) diff --git a/lib/symspec.f90 b/lib/symspec.f90 index 64c88815e..a3bed192f 100644 --- a/lib/symspec.f90 +++ b/lib/symspec.f90 @@ -126,35 +126,3 @@ subroutine symspec(shared_data,k,TRperiod,nsps,ingain,bLowSidelobes, & return end subroutine symspec - -subroutine chk_samples(ihsym,k,nstop) - - integer*8 count0,count1,clkfreq - integer itime(8) - real*8 dtime,fsample - character*12 ctime - data count0/-1/,k0/99999999/,maxhsym/0/ - save count0,k0,maxhsym - - if(k.lt.k0 .or. count0.eq.-1) then - call system_clock(count0,clkfreq) - maxhsym=0 - endif - if((mod(ihsym,100).eq.0 .or. ihsym.ge.nstop-100) .and. & - k0.ne.99999999) then - call system_clock(count1,clkfreq) - dtime=dfloat(count1-count0)/dfloat(clkfreq) - if(dtime.lt.28.0) return - if(dtime.gt.1.d-6) fsample=(k-3456)/dtime - call date_and_time(values=itime) - sec=itime(7)+0.001*itime(8) - write(ctime,3000) itime(5)-itime(4)/60,itime(6),sec -3000 format(i2.2,':',i2.2,':',f6.3) - write(33,3033) ctime,dtime,ihsym,nstop,k,fsample -3033 format(a12,f12.6,2i7,i10,f15.3) - flush(33) - endif - k0=k - - return -end subroutine chk_samples diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 2a09e185e..56c99f1a6 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -178,7 +178,6 @@ extern "C" { void get_ft4msg_(int* idecode, char* line, int len); - void chk_samples_(int* m_ihsym,int* k, int* m_hsymStop); } int volatile itone[NUM_ISCAT_SYMBOLS]; //Audio tones for all Tx symbols @@ -1440,7 +1439,6 @@ void MainWindow::dataSink(qint64 frames) if(m_mode.startsWith("FST4")) npct=ui->sbNB->value(); symspec_(&dec_data,&k,&m_TRperiod,&nsps,&m_inGain,&bLowSidelobes,&nsmo,&m_px,s, &m_df3,&m_ihsym,&m_npts8,&m_pxmax,&npct); - chk_samples_(&m_ihsym,&k,&m_hsymStop); if(m_mode=="WSPR" or m_mode=="FST4W") wspr_downsample_(dec_data.d2,&k); if(m_ihsym <=0) return; if(ui) ui->signal_meter_widget->setValue(m_px,m_pxmax); // Update thermometer From ecde374cee29864f56da3942eaeb716a52949bc0 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Mon, 10 Aug 2020 11:01:38 +0100 Subject: [PATCH 22/50] Trying a fixed audio input buffer size --- Audio/soundin.cpp | 6 +++++- Detector/Detector.cpp | 8 ++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Audio/soundin.cpp b/Audio/soundin.cpp index a2856c255..8fede3524 100644 --- a/Audio/soundin.cpp +++ b/Audio/soundin.cpp @@ -81,11 +81,13 @@ void SoundInput::start(QAudioDeviceInfo const& device, int framesPerBuffer, Audi qDebug () << "SoundIn default buffer size (bytes):" << m_stream->bufferSize (); m_stream->setBufferSize (m_stream->format ().bytesForFrames (framesPerBuffer)); + m_stream->setBufferSize (m_stream->format ().bytesForFrames (3456 * 4 * 5)); qDebug () << "SoundIn selected buffer size (bytes):" << m_stream->bufferSize (); if (sink->initialize (QIODevice::WriteOnly, channel)) { m_stream->start (sink); audioError (); + cummulative_lost_usec_ = -1; } else { @@ -159,7 +161,9 @@ void SoundInput::reset (bool report_dropped_frames) { if (m_stream) { - if (report_dropped_frames) + if (cummulative_lost_usec_ >= 0 // don't report first time as we + // don't yet known latency + && report_dropped_frames) { auto lost_usec = m_stream->elapsedUSecs () - m_stream->processedUSecs () - cummulative_lost_usec_; Q_EMIT dropped_frames (m_stream->format ().framesForDuration (lost_usec), lost_usec); diff --git a/Detector/Detector.cpp b/Detector/Detector.cpp index 06b9c6b2d..7feb5a298 100644 --- a/Detector/Detector.cpp +++ b/Detector/Detector.cpp @@ -56,6 +56,7 @@ void Detector::clear () qint64 Detector::writeData (char const * data, qint64 maxSize) { + qDebug () << "Detector::writeData: size:" << maxSize; static unsigned mstr0=999999; qint64 ms0 = QDateTime::currentMSecsSinceEpoch() % 86400000; unsigned mstr = ms0 % int(1000.0*m_period); // ms into the nominal Tx start time @@ -119,8 +120,7 @@ qint64 Detector::writeData (char const * data, qint64 maxSize) remaining -= numFramesProcessed; } - - - return maxSize; // we drop any data past the end of the buffer on - // the floor until the next period starts + // we drop any data past the end of the buffer on the floor until + // the next period starts + return maxSize; } From 0cf14dfcc9e3f3a6f353bda809c3f4d06ad27c91 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Tue, 11 Aug 2020 13:48:01 +0100 Subject: [PATCH 23/50] Remove user adjustable audio buffer sizes from Settings Fixed buffer sizes are used. Rx use s 3456 x 1st downsample rate x 5 audio frames of buffer space. On Windows this means that each chunk (periodSize()) delivered from the audio stream is our initial DSP processing chunk size, thus matching audio buffer latency exactly with WSJT-X's own front end latency. This should result in optimal resilience to high system loads that might starve the soundcard ADC of buffers to fill and case dropped audio frames. For Tx a buffer sufficient for 1 s of audio is used at present, on Windows the period size will be set to 1/40 of that which gives reasonably low latency and plenty of resilience to high system loads that might starve the soundcard DAC of audio frames to render. Note that a 1 s buffer will make the "Pwr" slider slow to respond, we may have to reduce the Tx audio buffer size if this is seen as a problem. --- Audio/soundin.cpp | 13 ++-- Audio/soundout.cpp | 19 ++---- Configuration.cpp | 27 -------- Configuration.hpp | 2 - Configuration.ui | 135 +++++++++++----------------------------- Detector/Detector.cpp | 2 +- Modulator/Modulator.cpp | 2 +- widgets/mainwindow.cpp | 40 ++++++++---- 8 files changed, 79 insertions(+), 161 deletions(-) diff --git a/Audio/soundin.cpp b/Audio/soundin.cpp index 8fede3524..19c41f61b 100644 --- a/Audio/soundin.cpp +++ b/Audio/soundin.cpp @@ -79,15 +79,16 @@ void SoundInput::start(QAudioDeviceInfo const& device, int framesPerBuffer, Audi connect (m_stream.data(), &QAudioInput::stateChanged, this, &SoundInput::handleStateChanged); - qDebug () << "SoundIn default buffer size (bytes):" << m_stream->bufferSize (); - m_stream->setBufferSize (m_stream->format ().bytesForFrames (framesPerBuffer)); - m_stream->setBufferSize (m_stream->format ().bytesForFrames (3456 * 4 * 5)); - qDebug () << "SoundIn selected buffer size (bytes):" << m_stream->bufferSize (); + //qDebug () << "SoundIn default buffer size (bytes):" << m_stream->bufferSize () << "period size:" << m_stream->periodSize (); + // the Windows MME version of QAudioInput uses 1/5 of the buffer + // size for period size other platforms seem to optimize themselves + m_stream->setBufferSize (m_stream->format ().bytesForFrames (framesPerBuffer * 5)); if (sink->initialize (QIODevice::WriteOnly, channel)) { m_stream->start (sink); audioError (); cummulative_lost_usec_ = -1; + //qDebug () << "SoundIn selected buffer size (bytes):" << m_stream->bufferSize () << "peirod size:" << m_stream->periodSize (); } else { @@ -121,7 +122,7 @@ void SoundInput::resume () void SoundInput::handleStateChanged (QAudio::State newState) { - qDebug () << "SoundInput::handleStateChanged: newState:" << newState; + //qDebug () << "SoundInput::handleStateChanged: newState:" << newState; switch (newState) { @@ -167,7 +168,7 @@ void SoundInput::reset (bool report_dropped_frames) { auto lost_usec = m_stream->elapsedUSecs () - m_stream->processedUSecs () - cummulative_lost_usec_; Q_EMIT dropped_frames (m_stream->format ().framesForDuration (lost_usec), lost_usec); - qDebug () << "SoundInput::reset: frames dropped:" << m_stream->format ().framesForDuration (lost_usec) << "sec:" << lost_usec / 1.e6; + //qDebug () << "SoundInput::reset: frames dropped:" << m_stream->format ().framesForDuration (lost_usec) << "sec:" << lost_usec / 1.e6; } cummulative_lost_usec_ = m_stream->elapsedUSecs () - m_stream->processedUSecs (); } diff --git a/Audio/soundout.cpp b/Audio/soundout.cpp index ecd7ce723..71625a3f6 100644 --- a/Audio/soundout.cpp +++ b/Audio/soundout.cpp @@ -79,24 +79,17 @@ void SoundOutput::restart (QIODevice * source) { Q_ASSERT (m_stream); - // - // This buffer size is critical since for proper sound streaming. If - // it is too short; high activity levels on the machine can starve - // the audio buffer. On the other hand the Windows implementation - // seems to take the length of the buffer in time to stop the audio - // stream even if reset() is used. - // - // 2 seconds seems a reasonable compromise except for Windows - // where things are probably broken. - // // we have to set this before every start on the stream because the // Windows implementation seems to forget the buffer size after a // stop. - qDebug () << "SoundOut default buffer size (bytes):" << m_stream->bufferSize (); - m_stream->setBufferSize (m_stream->format().bytesForFrames (m_framesBuffered)); - qDebug () << "SoundOut selected buffer size (bytes):" << m_stream->bufferSize (); + //qDebug () << "SoundOut default buffer size (bytes):" << m_stream->bufferSize () << "period size:" << m_stream->periodSize (); + if (m_framesBuffered) + { + m_stream->setBufferSize (m_stream->format().bytesForFrames (m_framesBuffered)); + } m_stream->setCategory ("production"); m_stream->start (source); + //qDebug () << "SoundOut selected buffer size (bytes):" << m_stream->bufferSize () << "period size:" << m_stream->periodSize (); } void SoundOutput::suspend () diff --git a/Configuration.cpp b/Configuration.cpp index 2a09dad6a..9b7d99eaf 100644 --- a/Configuration.cpp +++ b/Configuration.cpp @@ -242,8 +242,6 @@ namespace // Magic numbers for file validation constexpr quint32 qrg_magic {0xadbccbdb}; constexpr quint32 qrg_version {100}; // M.mm - - constexpr int default_audio_buffer_size = 10; } @@ -648,10 +646,8 @@ private: QAudioDeviceInfo audio_input_device_; AudioDevice::Channel audio_input_channel_; - int audio_input_buffer_size_; QAudioDeviceInfo audio_output_device_; AudioDevice::Channel audio_output_channel_; - int audio_output_buffer_size_; friend class Configuration; }; @@ -681,10 +677,8 @@ bool Configuration::is_active () const {return m_->isVisible ();} QAudioDeviceInfo const& Configuration::audio_input_device () const {return m_->audio_input_device_;} AudioDevice::Channel Configuration::audio_input_channel () const {return m_->audio_input_channel_;} -int Configuration::audio_input_buffer_size () const {return m_->audio_input_buffer_size_ * 1024;} QAudioDeviceInfo const& Configuration::audio_output_device () const {return m_->audio_output_device_;} AudioDevice::Channel Configuration::audio_output_channel () const {return m_->audio_output_channel_;} -int Configuration::audio_output_buffer_size () const {return m_->audio_output_buffer_size_ * 1024;} bool Configuration::restart_audio_input () const {return m_->restart_sound_input_device_;} bool Configuration::restart_audio_output () const {return m_->restart_sound_output_device_;} auto Configuration::type_2_msg_gen () const -> Type2MsgGen {return m_->type_2_msg_gen_;} @@ -978,8 +972,6 @@ Configuration::impl::impl (Configuration * self, QNetworkAccessManager * network , transceiver_command_number_ {0} , degrade_ {0.} // initialize to zero each run, not // saved in settings - , audio_input_buffer_size_ {default_audio_buffer_size} - , audio_output_buffer_size_ {default_audio_buffer_size} { ui_->setupUi (this); @@ -1242,9 +1234,7 @@ void Configuration::impl::initialize_models () update_audio_channels (ui_->sound_output_combo_box, ui_->sound_output_combo_box->currentIndex (), ui_->sound_output_channel_combo_box, true); ui_->sound_input_channel_combo_box->setCurrentIndex (audio_input_channel_); - ui_->audio_ip_buffer_spin_box->setValue (audio_input_buffer_size_); ui_->sound_output_channel_combo_box->setCurrentIndex (audio_output_channel_); - ui_->audio_op_buffer_spin_box->setValue (audio_output_buffer_size_); ui_->save_path_display_label->setText (save_directory_.absolutePath ()); ui_->azel_path_display_label->setText (azel_directory_.absolutePath ()); @@ -1430,10 +1420,6 @@ void Configuration::impl::read_settings () audio_input_channel_ = AudioDevice::fromString (settings_->value ("AudioInputChannel", "Mono").toString ()); audio_output_channel_ = AudioDevice::fromString (settings_->value ("AudioOutputChannel", "Mono").toString ()); - // retrieve audio buffer size values - audio_input_buffer_size_ = settings_->value ("AudioInputBufferSize", default_audio_buffer_size).toInt (); - audio_output_buffer_size_ = settings_->value ("AudioOutputBufferSize", default_audio_buffer_size).toInt (); - type_2_msg_gen_ = settings_->value ("Type2MsgGen", QVariant::fromValue (Configuration::type_2_msg_3_full)).value (); monitor_off_at_startup_ = settings_->value ("MonitorOFF", false).toBool (); @@ -1558,8 +1544,6 @@ void Configuration::impl::write_settings () settings_->setValue ("SoundOutName", audio_output_device_.deviceName ()); settings_->setValue ("AudioInputChannel", AudioDevice::toString (audio_input_channel_)); settings_->setValue ("AudioOutputChannel", AudioDevice::toString (audio_output_channel_)); - settings_->setValue ("AudioInputBufferSize", audio_input_buffer_size_); - settings_->setValue ("AudioOutputBufferSize", audio_output_buffer_size_); settings_->setValue ("Type2MsgGen", QVariant::fromValue (type_2_msg_gen_)); settings_->setValue ("MonitorOFF", monitor_off_at_startup_); settings_->setValue ("MonitorLastUsed", monitor_last_used_); @@ -1988,17 +1972,6 @@ void Configuration::impl::accept () } Q_ASSERT (audio_output_channel_ <= AudioDevice::Both); - if (audio_input_buffer_size_ != ui_->audio_ip_buffer_spin_box->value ()) - { - audio_input_buffer_size_ = ui_->audio_ip_buffer_spin_box->value (); - restart_sound_input_device_ = true; - } - if (audio_output_buffer_size_ != ui_->audio_op_buffer_spin_box->value ()) - { - audio_output_buffer_size_ = ui_->audio_op_buffer_spin_box->value (); - restart_sound_output_device_ = true; - } - my_callsign_ = ui_->callsign_line_edit->text (); my_grid_ = ui_->grid_line_edit->text (); FD_exchange_= ui_->Field_Day_Exchange->text ().toUpper (); diff --git a/Configuration.hpp b/Configuration.hpp index 3087ea855..882a78629 100644 --- a/Configuration.hpp +++ b/Configuration.hpp @@ -87,10 +87,8 @@ public: QAudioDeviceInfo const& audio_input_device () const; AudioDevice::Channel audio_input_channel () const; - int audio_input_buffer_size () const; QAudioDeviceInfo const& audio_output_device () const; AudioDevice::Channel audio_output_channel () const; - int audio_output_buffer_size () const; // These query methods should be used after a call to exec() to // determine if either the audio input or audio output stream diff --git a/Configuration.ui b/Configuration.ui index eaa68bf30..610bc85ad 100644 --- a/Configuration.ui +++ b/Configuration.ui @@ -6,8 +6,8 @@ 0 0 - 553 - 563 + 554 + 557 @@ -1349,31 +1349,14 @@ radio interface behave as expected. Soundcard - - - - Select the channel to use for receiving. + + + + Ou&tput: + + + sound_output_combo_box - - - Mono - - - - - Left - - - - - Right - - - - - Both - - @@ -1416,24 +1399,6 @@ both here. - - - - Audio output buffer size in kilo-frames - -Adjust for minimum dropped samples reported. Too low values are likely to cause dropped samples causing audio drop-outs. - - - k - - - 4 - - - 128 - - - @@ -1447,27 +1412,6 @@ Adjust for minimum dropped samples reported. Too low values are likely to cause - - - - Audio input buffer size in kilo-frames - -Adjust for minimum dropped samples reported. Too low values are likely to cause dropped samples causing audio drop-outs. - - - k - - - - - - 4 - - - 128 - - - @@ -1485,34 +1429,31 @@ transmitting periods. - - - - Ou&tput: - - - sound_output_combo_box - - - - - - - Buffer: - - - audio_ip_buffer_spin_box - - - - - - - Buffer: - - - audio_op_buffer_spin_box + + + + Select the channel to use for receiving. + + + Mono + + + + + Left + + + + + Right + + + + + Both + + @@ -3064,10 +3005,8 @@ Right click for insert and delete options. test_PTT_push_button sound_input_combo_box sound_input_channel_combo_box - audio_ip_buffer_spin_box sound_output_combo_box sound_output_channel_combo_box - audio_op_buffer_spin_box save_path_select_push_button azel_path_select_push_button checkBoxPwrBandTxMemory @@ -3194,13 +3133,13 @@ Right click for insert and delete options. - - - + - + + + diff --git a/Detector/Detector.cpp b/Detector/Detector.cpp index 7feb5a298..d70dd42ff 100644 --- a/Detector/Detector.cpp +++ b/Detector/Detector.cpp @@ -56,7 +56,7 @@ void Detector::clear () qint64 Detector::writeData (char const * data, qint64 maxSize) { - qDebug () << "Detector::writeData: size:" << maxSize; + //qDebug () << "Detector::writeData: size:" << maxSize; static unsigned mstr0=999999; qint64 ms0 = QDateTime::currentMSecsSinceEpoch() % 86400000; unsigned mstr = ms0 % int(1000.0*m_period); // ms into the nominal Tx start time diff --git a/Modulator/Modulator.cpp b/Modulator/Modulator.cpp index d43de8292..e99b21a46 100644 --- a/Modulator/Modulator.cpp +++ b/Modulator/Modulator.cpp @@ -142,7 +142,7 @@ void Modulator::close () qint64 Modulator::readData (char * data, qint64 maxSize) { - // qDebug () << "readData: maxSize:" << maxSize; + //qDebug () << "readData: maxSize:" << maxSize; double toneFrequency=1500.0; if(m_nsps==6) { diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 56c99f1a6..beadaadc8 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -209,6 +209,8 @@ namespace QRegularExpression grid_regexp {"\\A(?![Rr]{2}73)[A-Ra-r]{2}[0-9]{2}([A-Xa-x]{2}){0,1}\\z"}; auto quint32_max = std::numeric_limits::max (); constexpr int N_WIDGETS {34}; + constexpr int rx_chunk_size {3456}; // audio samples at 12000 Hz + constexpr int tx_audio_buffer_size {48000}; // audio samples at 48000 Hz bool message_is_73 (int type, QStringList const& msg_parts) { @@ -474,7 +476,18 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, connect(m_soundInput, &SoundInput::error, this, &MainWindow::showSoundInError); // connect(m_soundInput, &SoundInput::status, this, &MainWindow::showStatusMessage); connect (m_soundInput, &SoundInput::dropped_frames, this, [this] (qint32 dropped_frames, qint64 usec) { - showStatusMessage (tr ("%1 (%2 sec) audio frames dropped").arg (dropped_frames).arg (usec / 1.e6, 5, 'f', 3)); + if (dropped_frames > 4800) // 1/10 second + { + showStatusMessage (tr ("%1 (%2 sec) audio frames dropped").arg (dropped_frames).arg (usec / 1.e6, 5, 'f', 3)); + } + if (dropped_frames > 24000) // 1/2 + // second + { + MessageBox::warning_message (this + , tr ("Audio Source") + , tr ("Excessive dropped samples") + , tr ("Reduce system load, or increase audio buffer size")); + } }); connect (&m_audioThread, &QThread::finished, m_soundInput, &QObject::deleteLater); @@ -942,14 +955,14 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, if (!m_config.audio_input_device ().isNull ()) { Q_EMIT startAudioInputStream (m_config.audio_input_device () - , m_config.audio_input_buffer_size () + , rx_chunk_size * m_downSampleFactor , m_detector, m_downSampleFactor, m_config.audio_input_channel ()); } if (!m_config.audio_output_device ().isNull ()) { Q_EMIT initializeAudioOutputStream (m_config.audio_output_device () , AudioDevice::Mono == m_config.audio_output_channel () ? 1 : 2 - , m_config.audio_output_buffer_size ()); + , tx_audio_buffer_size); } Q_EMIT transmitFrequency (ui->TxFreqSpinBox->value () - m_XIT); @@ -1628,14 +1641,15 @@ QString MainWindow::save_wave_file (QString const& name, short const * data, int format.setChannelCount (1); format.setSampleSize (16); format.setSampleType (QAudioFormat::SignedInt); - auto source = QString {"%1, %2"}.arg (my_callsign).arg (my_grid); - auto comment = QString {"Mode=%1%2, Freq=%3%4"} - .arg (mode) - .arg (QString {(mode.contains ('J') && !mode.contains ('+')) || mode.startsWith ("FST4") - ? QString {", Sub Mode="} + QChar {'A' + sub_mode} - : QString {}}) - .arg (Radio::frequency_MHz_string (frequency)) - .arg (QString {mode!="WSPR" ? QString {", DXCall=%1, DXGrid=%2"} + auto source = QString {"%1; %2"}.arg (my_callsign).arg (my_grid); + auto comment = QString {"Mode=%1%2; Freq=%3%4"} + .arg (mode) + .arg (QString {(mode.contains ('J') && !mode.contains ('+')) + || mode.startsWith ("FST4") || mode.startsWith ("QRA") + ? QString {"; Sub Mode="} + QString::number (int (samples / 12000)) + QChar {'A' + sub_mode} + : QString {}}) + .arg (Radio::frequency_MHz_string (frequency)) + .arg (QString {mode!="WSPR" ? QString {"; DXCall=%1; DXGrid=%2"} .arg (his_call) .arg (his_grid).toLocal8Bit () : ""}); BWFFile::InfoDictionary list_info { @@ -1814,7 +1828,7 @@ void MainWindow::on_actionSettings_triggered() //Setup Dialog if(m_config.restart_audio_input ()) { Q_EMIT startAudioInputStream (m_config.audio_input_device () - , m_config.audio_input_buffer_size () + , rx_chunk_size * m_downSampleFactor , m_detector, m_downSampleFactor , m_config.audio_input_channel ()); } @@ -1822,7 +1836,7 @@ void MainWindow::on_actionSettings_triggered() //Setup Dialog if(m_config.restart_audio_output ()) { Q_EMIT initializeAudioOutputStream (m_config.audio_output_device () , AudioDevice::Mono == m_config.audio_output_channel () ? 1 : 2 - , m_config.audio_output_buffer_size ()); + , tx_audio_buffer_size); } displayDialFrequency (); From 4f68dfda402aa6d40fbde3ee18fd4e535779e4d3 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Tue, 11 Aug 2020 14:27:46 +0100 Subject: [PATCH 24/50] Only tune audio buffer sizes on Windows --- Audio/soundin.cpp | 4 ++++ Audio/soundout.cpp | 2 ++ 2 files changed, 6 insertions(+) diff --git a/Audio/soundin.cpp b/Audio/soundin.cpp index 19c41f61b..ad9e43444 100644 --- a/Audio/soundin.cpp +++ b/Audio/soundin.cpp @@ -82,7 +82,11 @@ void SoundInput::start(QAudioDeviceInfo const& device, int framesPerBuffer, Audi //qDebug () << "SoundIn default buffer size (bytes):" << m_stream->bufferSize () << "period size:" << m_stream->periodSize (); // the Windows MME version of QAudioInput uses 1/5 of the buffer // size for period size other platforms seem to optimize themselves +#if defined (Q_OS_WIN) m_stream->setBufferSize (m_stream->format ().bytesForFrames (framesPerBuffer * 5)); +#else + Q_UNUSED (framesPerBuffer); +#endif if (sink->initialize (QIODevice::WriteOnly, channel)) { m_stream->start (sink); diff --git a/Audio/soundout.cpp b/Audio/soundout.cpp index 71625a3f6..cda5fa333 100644 --- a/Audio/soundout.cpp +++ b/Audio/soundout.cpp @@ -85,7 +85,9 @@ void SoundOutput::restart (QIODevice * source) //qDebug () << "SoundOut default buffer size (bytes):" << m_stream->bufferSize () << "period size:" << m_stream->periodSize (); if (m_framesBuffered) { +#if defined (Q_OS_WIN) m_stream->setBufferSize (m_stream->format().bytesForFrames (m_framesBuffered)); +#endif } m_stream->setCategory ("production"); m_stream->start (source); From 8e37dbd8c166878c5047eb24a98d1056474be8ee Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Tue, 11 Aug 2020 16:08:21 +0100 Subject: [PATCH 25/50] Increased threshold for status message and warning on dropped frames --- widgets/mainwindow.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index beadaadc8..b9025ad6a 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -476,17 +476,16 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, connect(m_soundInput, &SoundInput::error, this, &MainWindow::showSoundInError); // connect(m_soundInput, &SoundInput::status, this, &MainWindow::showStatusMessage); connect (m_soundInput, &SoundInput::dropped_frames, this, [this] (qint32 dropped_frames, qint64 usec) { - if (dropped_frames > 4800) // 1/10 second + if (dropped_frames > 48000 / 5) // 1/5 second { showStatusMessage (tr ("%1 (%2 sec) audio frames dropped").arg (dropped_frames).arg (usec / 1.e6, 5, 'f', 3)); } - if (dropped_frames > 24000) // 1/2 - // second + if (dropped_frames > 48000) // 1 second { MessageBox::warning_message (this , tr ("Audio Source") , tr ("Excessive dropped samples") - , tr ("Reduce system load, or increase audio buffer size")); + , tr ("Reduce system load")); } }); connect (&m_audioThread, &QThread::finished, m_soundInput, &QObject::deleteLater); From e27b09b5902ab5b87b1eae2b732d94cf8f72b781 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Tue, 11 Aug 2020 16:09:51 +0100 Subject: [PATCH 26/50] Revert Tx status widget on status bar to non-permanent placement --- widgets/mainwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index b9025ad6a..da27e66b1 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -2310,7 +2310,7 @@ void MainWindow::createStatusBar() //createStatusBar tx_status_label.setMinimumSize (QSize {100, 18}); tx_status_label.setStyleSheet ("QLabel{color: #000000; background-color: #00ff00}"); tx_status_label.setFrameStyle (QFrame::Panel | QFrame::Sunken); - statusBar()->addPermanentWidget (&tx_status_label); + statusBar()->addWidget (&tx_status_label); config_label.setAlignment (Qt::AlignHCenter); config_label.setMinimumSize (QSize {80, 18}); From 185f57013658530f6c39e7dcd891f89bc2c63550 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Tue, 11 Aug 2020 20:07:00 +0100 Subject: [PATCH 27/50] Avoid accessing shared memory after it has been deleted --- widgets/mainwindow.cpp | 114 +++++++++++++++++++++-------------------- 1 file changed, 59 insertions(+), 55 deletions(-) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index da27e66b1..c9d8d662a 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -3137,56 +3137,58 @@ void MainWindow::decode() //decode() //newdat=1 ==> this is new data, must do the big FFT //nagain=1 ==> decode only at fQSO +/- Tol - char *to = (char*)mem_jt9->data(); - char *from = (char*) dec_data.ipc; - int size=sizeof(struct dec_data); - if(dec_data.params.newdat==0) { - int noffset {offsetof (struct dec_data, params.nutc)}; - to += noffset; - from += noffset; - size -= noffset; - } - if(m_mode=="ISCAT" or m_mode=="MSK144" or m_bFast9) { - float t0=m_t0; - float t1=m_t1; - qApp->processEvents(); //Update the waterfall - if(m_nPick > 0) { - t0=m_t0Pick; - t1=m_t1Pick; + if (auto * to = reinterpret_cast (mem_jt9->data())) + { + char *from = (char*) dec_data.ipc; + int size=sizeof(struct dec_data); + if(dec_data.params.newdat==0) { + int noffset {offsetof (struct dec_data, params.nutc)}; + to += noffset; + from += noffset; + size -= noffset; + } + if(m_mode=="ISCAT" or m_mode=="MSK144" or m_bFast9) { + float t0=m_t0; + float t1=m_t1; + qApp->processEvents(); //Update the waterfall + if(m_nPick > 0) { + t0=m_t0Pick; + t1=m_t1Pick; + } + static short int d2b[360000]; + narg[0]=dec_data.params.nutc; + if(m_kdone>int(12000.0*m_TRperiod)) { + m_kdone=int(12000.0*m_TRperiod); + } + narg[1]=m_kdone; + narg[2]=m_nSubMode; + narg[3]=dec_data.params.newdat; + narg[4]=dec_data.params.minSync; + narg[5]=m_nPick; + narg[6]=1000.0*t0; + narg[7]=1000.0*t1; + narg[8]=2; //Max decode lines per decode attempt + if(dec_data.params.minSync<0) narg[8]=50; + if(m_mode=="ISCAT") narg[9]=101; //ISCAT + if(m_mode=="JT9") narg[9]=102; //Fast JT9 + if(m_mode=="MSK144") narg[9]=104; //MSK144 + narg[10]=ui->RxFreqSpinBox->value(); + narg[11]=ui->sbFtol->value (); + narg[12]=0; + narg[13]=-1; + narg[14]=m_config.aggressive(); + memcpy(d2b,dec_data.d2,2*360000); + watcher3.setFuture (QtConcurrent::run (std::bind (fast_decode_,&d2b[0], + &narg[0],&m_TRperiod,&m_msg[0][0], + dec_data.params.mycall,dec_data.params.hiscall,8000,12,12))); + } else { + mem_jt9->lock (); + memcpy(to, from, qMin(mem_jt9->size(), size)); + mem_jt9->unlock (); + to_jt9(m_ihsym,1,-1); //Send m_ihsym to jt9[.exe] and start decoding + decodeBusy(true); + } } - static short int d2b[360000]; - narg[0]=dec_data.params.nutc; - if(m_kdone>int(12000.0*m_TRperiod)) { - m_kdone=int(12000.0*m_TRperiod); - } - narg[1]=m_kdone; - narg[2]=m_nSubMode; - narg[3]=dec_data.params.newdat; - narg[4]=dec_data.params.minSync; - narg[5]=m_nPick; - narg[6]=1000.0*t0; - narg[7]=1000.0*t1; - narg[8]=2; //Max decode lines per decode attempt - if(dec_data.params.minSync<0) narg[8]=50; - if(m_mode=="ISCAT") narg[9]=101; //ISCAT - if(m_mode=="JT9") narg[9]=102; //Fast JT9 - if(m_mode=="MSK144") narg[9]=104; //MSK144 - narg[10]=ui->RxFreqSpinBox->value(); - narg[11]=ui->sbFtol->value (); - narg[12]=0; - narg[13]=-1; - narg[14]=m_config.aggressive(); - memcpy(d2b,dec_data.d2,2*360000); - watcher3.setFuture (QtConcurrent::run (std::bind (fast_decode_,&d2b[0], - &narg[0],&m_TRperiod,&m_msg[0][0], - dec_data.params.mycall,dec_data.params.hiscall,8000,12,12))); - } else { - mem_jt9->lock (); - memcpy(to, from, qMin(mem_jt9->size(), size)); - mem_jt9->unlock (); - to_jt9(m_ihsym,1,-1); //Send m_ihsym to jt9[.exe] and start decoding - decodeBusy(true); - } } void::MainWindow::fast_decode_done() @@ -3234,12 +3236,14 @@ void::MainWindow::fast_decode_done() void MainWindow::to_jt9(qint32 n, qint32 istart, qint32 idone) { - dec_data_t * dd = reinterpret_cast (mem_jt9->data()); - mem_jt9->lock (); - dd->ipc[0]=n; - if(istart>=0) dd->ipc[1]=istart; - if(idone>=0) dd->ipc[2]=idone; - mem_jt9->unlock (); + if (auto * dd = reinterpret_cast (mem_jt9->data())) + { + mem_jt9->lock (); + dd->ipc[0]=n; + if(istart>=0) dd->ipc[1]=istart; + if(idone>=0) dd->ipc[2]=idone; + mem_jt9->unlock (); + } } void MainWindow::decodeDone () From c06758007162a5874718249055d86523a0bcc889 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Tue, 11 Aug 2020 20:09:42 +0100 Subject: [PATCH 28/50] Performance optimization of frequencies and station info table views --- Configuration.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Configuration.cpp b/Configuration.cpp index 9b7d99eaf..0d45e2a7a 100644 --- a/Configuration.cpp +++ b/Configuration.cpp @@ -1124,7 +1124,9 @@ Configuration::impl::impl (Configuration * self, QNetworkAccessManager * network ui_->frequencies_table_view->setModel (&next_frequencies_); ui_->frequencies_table_view->horizontalHeader ()->setSectionResizeMode (QHeaderView::ResizeToContents); + ui_->frequencies_table_view->horizontalHeader ()->setResizeContentsPrecision (0); ui_->frequencies_table_view->verticalHeader ()->setSectionResizeMode (QHeaderView::ResizeToContents); + ui_->frequencies_table_view->verticalHeader ()->setResizeContentsPrecision (0); ui_->frequencies_table_view->sortByColumn (FrequencyList_v2::frequency_column, Qt::AscendingOrder); ui_->frequencies_table_view->setColumnHidden (FrequencyList_v2::frequency_mhz_column, true); @@ -1164,7 +1166,9 @@ Configuration::impl::impl (Configuration * self, QNetworkAccessManager * network stations_.sort (StationList::band_column); ui_->stations_table_view->setModel (&next_stations_); ui_->stations_table_view->horizontalHeader ()->setSectionResizeMode (QHeaderView::ResizeToContents); + ui_->stations_table_view->horizontalHeader ()->setResizeContentsPrecision (0); ui_->stations_table_view->verticalHeader ()->setSectionResizeMode (QHeaderView::ResizeToContents); + ui_->stations_table_view->verticalHeader ()->setResizeContentsPrecision (0); ui_->stations_table_view->sortByColumn (StationList::band_column, Qt::AscendingOrder); // stations delegates From e69226b29ac31e3e4d31a2d2a71cd0cf260d5511 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Wed, 12 Aug 2020 02:33:15 +0100 Subject: [PATCH 29/50] Avoid enumerating audio devices until absolutely necessary Enumerating audio devices with QAudioDeviceInfo::availableDevices() takes a long time on Linux with pulseaudio. This change only enumerates up to the selected device when configuring and only enumerates the whole list when the Settings->Audio tab is current. This change also warns with a message box when Tx is started with no audio output device configured. --- Audio/soundout.cpp | 6 +++- Configuration.cpp | 82 +++++++++++++++++++++++----------------------- 2 files changed, 46 insertions(+), 42 deletions(-) diff --git a/Audio/soundout.cpp b/Audio/soundout.cpp index cda5fa333..16a515370 100644 --- a/Audio/soundout.cpp +++ b/Audio/soundout.cpp @@ -77,7 +77,11 @@ void SoundOutput::setFormat (QAudioDeviceInfo const& device, unsigned channels, void SoundOutput::restart (QIODevice * source) { - Q_ASSERT (m_stream); + if (!m_stream) + { + Q_EMIT error (tr ("No audio output device configured.")); + return; + } // we have to set this before every start on the stream because the // Windows implementation seems to forget the buffer size after a diff --git a/Configuration.cpp b/Configuration.cpp index 0d45e2a7a..59be7f867 100644 --- a/Configuration.cpp +++ b/Configuration.cpp @@ -137,6 +137,8 @@ #include #include #include +#include +#include #include #include #include @@ -401,6 +403,7 @@ class Configuration::impl final public: using FrequencyDelta = Radio::FrequencyDelta; using port_type = Configuration::port_type; + using audio_info_type = QPair >; explicit impl (Configuration * self , QNetworkAccessManager * network_manager @@ -429,6 +432,7 @@ private: void read_settings (); void write_settings (); + Q_SLOT void lazy_models_load (int); void load_audio_devices (QAudio::Mode, QComboBox *, QAudioDeviceInfo *); void update_audio_channels (QComboBox const *, int, QComboBox *, bool); @@ -1094,6 +1098,7 @@ Configuration::impl::impl (Configuration * self, QNetworkAccessManager * network // // setup hooks to keep audio channels aligned with devices // + connect (ui_->configuration_tabs, &QTabWidget::currentChanged, this, &Configuration::impl::lazy_models_load); { using namespace std; using namespace std::placeholders; @@ -1201,6 +1206,29 @@ Configuration::impl::~impl () write_settings (); } +void Configuration::impl::lazy_models_load (int current_tab_index) +{ + switch (current_tab_index) + { + case 2: // Audio + // + // load combo boxes with audio setup choices + // + load_audio_devices (QAudio::AudioInput, ui_->sound_input_combo_box, &audio_input_device_); + load_audio_devices (QAudio::AudioOutput, ui_->sound_output_combo_box, &audio_output_device_); + + update_audio_channels (ui_->sound_input_combo_box, ui_->sound_input_combo_box->currentIndex (), ui_->sound_input_channel_combo_box, false); + update_audio_channels (ui_->sound_output_combo_box, ui_->sound_output_combo_box->currentIndex (), ui_->sound_output_channel_combo_box, true); + + ui_->sound_input_channel_combo_box->setCurrentIndex (audio_input_channel_); + ui_->sound_output_channel_combo_box->setCurrentIndex (audio_output_channel_); + break; + + default: + break; + } +} + void Configuration::impl::initialize_models () { auto pal = ui_->callsign_line_edit->palette (); @@ -1225,21 +1253,6 @@ void Configuration::impl::initialize_models () ui_->sbBandwidth->setValue (RxBandwidth_); ui_->PTT_method_button_group->button (rig_params_.ptt_type)->setChecked (true); - // - // load combo boxes with audio setup choices - // - // - // load combo boxes with audio setup choices - // - load_audio_devices (QAudio::AudioInput, ui_->sound_input_combo_box, &audio_input_device_); - load_audio_devices (QAudio::AudioOutput, ui_->sound_output_combo_box, &audio_output_device_); - - update_audio_channels (ui_->sound_input_combo_box, ui_->sound_input_combo_box->currentIndex (), ui_->sound_input_channel_combo_box, false); - update_audio_channels (ui_->sound_output_combo_box, ui_->sound_output_combo_box->currentIndex (), ui_->sound_output_channel_combo_box, true); - - ui_->sound_input_channel_combo_box->setCurrentIndex (audio_input_channel_); - ui_->sound_output_channel_combo_box->setCurrentIndex (audio_output_channel_); - ui_->save_path_display_label->setText (save_directory_.absolutePath ()); ui_->azel_path_display_label->setText (azel_directory_.absolutePath ()); ui_->CW_id_after_73_check_box->setChecked (id_after_73_); @@ -1402,6 +1415,7 @@ void Configuration::impl::read_settings () if (p.deviceName () == saved_name) { audio_input_device_ = p; + break; } } } @@ -1416,6 +1430,7 @@ void Configuration::impl::read_settings () if (p.deviceName () == saved_name) { audio_output_device_ = p; + break; } } } @@ -1750,15 +1765,13 @@ void Configuration::impl::set_rig_invariants () bool Configuration::impl::validate () { - if (ui_->sound_input_combo_box->currentIndex () < 0 - && !QAudioDeviceInfo::availableDevices (QAudio::AudioInput).empty ()) + if (ui_->sound_input_combo_box->currentIndex () < 0) { MessageBox::critical_message (this, tr ("Invalid audio input device")); return false; } - if (ui_->sound_output_combo_box->currentIndex () < 0 - && !QAudioDeviceInfo::availableDevices (QAudio::AudioOutput).empty ()) + if (ui_->sound_output_combo_box->currentIndex () < 0) { MessageBox::warning_message (this, tr ("Invalid audio output device")); // don't reject as we can work without an audio output @@ -1931,33 +1944,19 @@ void Configuration::impl::accept () // Check to see whether SoundInThread must be restarted, // and save user parameters. { - auto const& device_name = ui_->sound_input_combo_box->currentText (); - if (device_name != audio_input_device_.deviceName ()) + auto const& selected_device = ui_->sound_input_combo_box->currentData ().value ().first; + if (selected_device != audio_input_device_) { - audio_input_device_ = QAudioDeviceInfo {}; - Q_FOREACH (auto const& d, QAudioDeviceInfo::availableDevices (QAudio::AudioInput)) - { - if (device_name == d.deviceName ()) - { - audio_input_device_ = d; - } - } + audio_input_device_ = selected_device; restart_sound_input_device_ = true; } } { - auto const& device_name = ui_->sound_output_combo_box->currentText (); - if (device_name != audio_output_device_.deviceName ()) + auto const& selected_device = ui_->sound_output_combo_box->currentData ().value ().first; + if (selected_device != audio_output_device_) { - audio_output_device_ = QAudioDeviceInfo {}; - Q_FOREACH (auto const& d, QAudioDeviceInfo::availableDevices (QAudio::AudioOutput)) - { - if (device_name == d.deviceName ()) - { - audio_output_device_ = d; - } - } + audio_output_device_ = selected_device; restart_sound_output_device_ = true; } } @@ -2776,7 +2775,7 @@ void Configuration::impl::load_audio_devices (QAudio::Mode mode, QComboBox * com auto scc = p.supportedChannelCounts (); copy (scc.cbegin (), scc.cend (), back_inserter (channel_counts)); - combo_box->addItem (p.deviceName (), channel_counts); + combo_box->addItem (p.deviceName (), QVariant::fromValue (audio_info_type {p, channel_counts})); if (p == *device) { current_index = combo_box->count () - 1; @@ -2794,7 +2793,8 @@ void Configuration::impl::update_audio_channels (QComboBox const * source_combo_ combo_box->setItemData (i, combo_box_item_disabled, Qt::UserRole - 1); } - Q_FOREACH (QVariant const& v, source_combo_box->itemData (index).toList ()) + Q_FOREACH (QVariant const& v + , (source_combo_box->itemData (index).value ().second)) { // enable valid options int n {v.toInt ()}; From 11abe7c60f9de3b17f6b8a027baee5fdf20f7f0b Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Thu, 13 Aug 2020 10:30:49 +0100 Subject: [PATCH 30/50] Cosmetic reformating --- Audio/AudioDevice.hpp | 52 +++++++++++++++++++++--------------------- widgets/mainwindow.cpp | 20 ++++++++-------- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/Audio/AudioDevice.hpp b/Audio/AudioDevice.hpp index c4354687c..3ab19f0f4 100644 --- a/Audio/AudioDevice.hpp +++ b/Audio/AudioDevice.hpp @@ -43,23 +43,23 @@ protected: qint16 const * begin (reinterpret_cast (source)); for ( qint16 const * i = begin; i != begin + numFrames * (bytesPerFrame () / sizeof (qint16)); i += bytesPerFrame () / sizeof (qint16)) { - switch (m_channel) - { - case Mono: - *dest++ = *i; - break; + switch (m_channel) + { + case Mono: + *dest++ = *i; + break; - case Right: - *dest++ = *(i + 1); - break; + case Right: + *dest++ = *(i + 1); + break; - case Both: // should be able to happen but if it - // does we'll take left - Q_ASSERT (Both == m_channel); - case Left: - *dest++ = *i; - break; - } + case Both: // should be able to happen but if it + // does we'll take left + Q_ASSERT (Both == m_channel); + case Left: + *dest++ = *i; + break; + } } } @@ -68,23 +68,23 @@ protected: switch (m_channel) { case Mono: - *dest++ = sample; - break; + *dest++ = sample; + break; case Left: - *dest++ = sample; - *dest++ = 0; - break; + *dest++ = sample; + *dest++ = 0; + break; case Right: - *dest++ = 0; - *dest++ = sample; - break; + *dest++ = 0; + *dest++ = sample; + break; case Both: - *dest++ = sample; - *dest++ = sample; - break; + *dest++ = sample; + *dest++ = sample; + break; } return dest; } diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index c9d8d662a..ed6692fdb 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -484,8 +484,8 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, { MessageBox::warning_message (this , tr ("Audio Source") - , tr ("Excessive dropped samples") - , tr ("Reduce system load")); + , tr ("Reduce system load") + , tr ("Excessive dropped samples - %1 (%2 sec) audio frames dropped").arg (dropped_frames).arg (usec / 1.e6, 5, 'f', 3)); } }); connect (&m_audioThread, &QThread::finished, m_soundInput, &QObject::deleteLater); @@ -2950,7 +2950,7 @@ void MainWindow::on_actionSpecial_mouse_commands_triggered() Click to set Rx frequency.
Shift-click to set Tx frequency.
Ctrl-click or Right-click to set Rx and Tx frequencies.
- Double-click to also decode at Rx frequency.
+ Double-click to also decode at Rx frequency.
@@ -2958,10 +2958,10 @@ void MainWindow::on_actionSpecial_mouse_commands_triggered() Double-click to copy second callsign to Dx Call,
locator to Dx Grid, change Rx and Tx frequency to
decoded signal's frequency, and generate standard
- messages.
- If Hold Tx Freq is checked or first callsign in message
- is your own call, Tx frequency is not changed unless
- Ctrl is held down.
+ messages.
+ If Hold Tx Freq is checked or first callsign in message
+ is your own call, Tx frequency is not changed unless
+ Ctrl is held down.
@@ -5270,11 +5270,11 @@ bool MainWindow::stdCall(QString const& w) { static QRegularExpression standard_call_re { R"( - ^\s* # optional leading spaces + ^\s* # optional leading spaces ( [A-Z]{0,2} | [A-Z][0-9] | [0-9][A-Z] ) # part 1 ( [0-9][A-Z]{0,3} ) # part 2 - (/R | /P)? # optional suffix - \s*$ # optional trailing spaces + (/R | /P)? # optional suffix + \s*$ # optional trailing spaces )", QRegularExpression::CaseInsensitiveOption | QRegularExpression::ExtendedPatternSyntaxOption}; return standard_call_re.match (w).hasMatch (); } From 7eb229ecdec0fd04e7656a0b25a55c0c86567f6e Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Thu, 13 Aug 2020 10:31:23 +0100 Subject: [PATCH 31/50] Reduce Tx audio buffer size improve Pwr control granularity --- widgets/mainwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index ed6692fdb..d66b98788 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -210,7 +210,7 @@ namespace auto quint32_max = std::numeric_limits::max (); constexpr int N_WIDGETS {34}; constexpr int rx_chunk_size {3456}; // audio samples at 12000 Hz - constexpr int tx_audio_buffer_size {48000}; // audio samples at 48000 Hz + constexpr int tx_audio_buffer_size {48000 / 5}; // audio frames at 48000 Hz bool message_is_73 (int type, QStringList const& msg_parts) { From f7377e686f400126bb8e2a366bf8c304002738cf Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Fri, 14 Aug 2020 14:47:07 +0100 Subject: [PATCH 32/50] Move bundled cty.dat from resources FS to installation data dir This file is only used at start up so there is little point to keeping it in program memory. --- CMakeLists.txt | 2 +- logbook/AD1CCty.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7b0931ace..be835a24d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -748,7 +748,6 @@ set (all_C_and_CXXSRCS ) set (TOP_LEVEL_RESOURCES - cty.dat icons/Darwin/wsjtx.iconset/icon_128x128.png contrib/gpl-v3-logo.svg artwork/splash.png @@ -1574,6 +1573,7 @@ install (FILES ) install (FILES + cty.dat contrib/Ephemeris/JPLEPH DESTINATION ${CMAKE_INSTALL_DATADIR}/${CMAKE_PROJECT_NAME} #COMPONENT runtime diff --git a/logbook/AD1CCty.cpp b/logbook/AD1CCty.cpp index 23d34fb43..4112ddfb3 100644 --- a/logbook/AD1CCty.cpp +++ b/logbook/AD1CCty.cpp @@ -319,12 +319,12 @@ AD1CCty::AD1CCty (Configuration const * configuration) { Q_ASSERT (configuration); // TODO: G4WJS - consider doing the following asynchronously to - // speed up startup. Not urgent as it takes less than 1s on a Core + // speed up startup. Not urgent as it takes less than 0.5s on a Core // i7 reading BIG CTY.DAT. QDir dataPath {QStandardPaths::writableLocation (QStandardPaths::DataLocation)}; m_->path_ = dataPath.exists (file_name) ? dataPath.absoluteFilePath (file_name) // user override - : QString {":/"} + file_name; // or original in the resources FS + : configuration->data_dir ().absoluteFilePath (file_name); // or original QFile file {m_->path_}; if (file.open (QFile::ReadOnly)) { From 7cc7687c90ab126057a323703093f159dab703a3 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sat, 15 Aug 2020 02:45:25 +0100 Subject: [PATCH 33/50] Fix an off-by-one defect in WSPR random scheduling Scheduler now correctly honours 0% and 100% schedules an dno longer need special cases in UI code. --- WSPR/WSPRBandHopping.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WSPR/WSPRBandHopping.cpp b/WSPR/WSPRBandHopping.cpp index 84d09116d..cf7cc2f94 100644 --- a/WSPR/WSPRBandHopping.cpp +++ b/WSPR/WSPRBandHopping.cpp @@ -220,7 +220,7 @@ public: , carry_ {false} , seed_ {{rand (), rand (), rand (), rand (), rand (), rand (), rand (), rand ()}} , gen_ {seed_} - , dist_ {1, 100} + , dist_ {0, 99} { auto num_bands = configuration_->bands ()->rowCount (); for (auto& flags : bands_) From e17ad223ae7008443c6a1a012f77fb723c19074c Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sat, 15 Aug 2020 02:57:23 +0100 Subject: [PATCH 34/50] Tx Next button enables automatic Tx Also a number of WSPR/FST4W code clean-ups including getting the Tx Next button to function as intended. --- widgets/mainwindow.cpp | 79 +++++++++++++++++------------------------- widgets/mainwindow.h | 2 -- widgets/mainwindow.ui | 15 ++++++-- 3 files changed, 44 insertions(+), 52 deletions(-) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index d66b98788..cbca7272b 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -285,7 +285,6 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, m_idleMinutes {0}, m_nSubMode {0}, m_nclearave {1}, - m_pctx {0}, m_nseq {0}, m_nWSPRdecodes {0}, m_k0 {9999999}, @@ -311,7 +310,6 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, m_bShMsgs {false}, m_bSWL {false}, m_uploading {false}, - m_txNext {false}, m_grid6 {false}, m_tuneup {false}, m_bTxTime {false}, @@ -996,7 +994,6 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, } m_saveDecoded=ui->actionSave_decoded->isChecked(); m_saveAll=ui->actionSave_all->isChecked(); - ui->sbTxPercent->setValue(m_pctx); ui->TxPowerComboBox->setCurrentIndex(int(.3 * m_dBm + .2)); ui->cbUploadWSPR_Spots->setChecked(m_uploadWSPRSpots); if((m_ndepth&7)==1) ui->actionQuickDecode->setChecked(true); @@ -1019,12 +1016,6 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, m_isort=-3; m_max_dB=70; m_CQtype="CQ"; - - if(m_mode=="WSPR" and m_pctx>0) { - QPalette palette {ui->sbTxPercent->palette ()}; - palette.setColor(QPalette::Base,Qt::yellow); - ui->sbTxPercent->setPalette(palette); - } fixStop(); VHF_features_enabled(m_config.enable_VHF_features()); m_wideGraph->setVHF(m_config.enable_VHF_features()); @@ -1168,7 +1159,7 @@ void MainWindow::writeSettings() m_settings->setValue("GUItab",ui->tabWidget->currentIndex()); m_settings->setValue("OutBufSize",outBufSize); m_settings->setValue ("HoldTxFreq", ui->cbHoldTxFreq->isChecked ()); - m_settings->setValue("PctTx",m_pctx); + m_settings->setValue("PctTx", ui->sbTxPercent->value ()); m_settings->setValue("dBm",m_dBm); m_settings->setValue("RR73",m_send_RR73); m_settings->setValue ("WSPRPreferType1", ui->WSPR_prefer_type_1_check_box->isChecked ()); @@ -1259,7 +1250,8 @@ void MainWindow::readSettings() ui->TxFreqSpinBox->setValue(0); // ensure a change is signaled ui->TxFreqSpinBox->setValue(m_settings->value("TxFreq",1500).toInt()); m_ndepth=m_settings->value("NDepth",3).toInt(); - m_pctx=m_settings->value("PctTx",20).toInt(); + ui->sbTxPercent->setValue (m_settings->value ("PctTx", 20).toInt ()); + on_sbTxPercent_valueChanged (ui->sbTxPercent->value ()); m_dBm=m_settings->value("dBm",37).toInt(); m_send_RR73=m_settings->value("RR73",false).toBool(); if(m_send_RR73) { @@ -1268,7 +1260,6 @@ void MainWindow::readSettings() } ui->WSPR_prefer_type_1_check_box->setChecked (m_settings->value ("WSPRPreferType1", true).toBool ()); m_uploadWSPRSpots=m_settings->value("UploadSpots",false).toBool(); - if(!m_uploadWSPRSpots) ui->cbUploadWSPR_Spots->setStyleSheet("QCheckBox{color: #000000; background-color: yellow}"); ui->cbNoOwnCall->setChecked(m_settings->value("NoOwnCall",false).toBool()); ui->band_hopping_group_box->setChecked (m_settings->value ("BandHopping", false).toBool()); // setup initial value of tx attenuator @@ -1937,18 +1928,14 @@ void MainWindow::on_autoButton_clicked (bool checked) m_nclearave=1; echocom_.nsum=0; } - if(m_mode=="WSPR" or m_mode=="FST4W") { - QPalette palette {ui->sbTxPercent->palette ()}; - if(m_auto or m_pctx==0) { - palette.setColor(QPalette::Base,Qt::white); - } else { - palette.setColor(QPalette::Base,Qt::yellow); - } - ui->sbTxPercent->setPalette(palette); - } m_tAutoOn=QDateTime::currentMSecsSinceEpoch()/1000; } +void MainWindow::on_sbTxPercent_valueChanged (int n) +{ + update_dynamic_property (ui->sbTxPercent, "notx", !n); +} + void MainWindow::auto_tx_mode (bool state) { ui->autoButton->setChecked (state); @@ -3753,16 +3740,11 @@ void MainWindow::guiUpdate() if(m_mode=="WSPR" or m_mode=="FST4W") { if(m_nseq==0 and m_ntr==0) { //Decide whether to Tx or Rx m_tuneup=false; //This is not an ATU tuneup - if(ui->sbTxPercent->isEnabled () && m_pctx==0) m_WSPR_tx_next = false; //Don't transmit if m_pctx=0 bool btx = m_auto && m_WSPR_tx_next; // To Tx, we need m_auto and // scheduled transmit - if(m_auto and m_txNext) btx=true; //TxNext button overrides - if(m_auto && ui->sbTxPercent->isEnabled () && m_pctx==100) btx=true; //Always transmit - if(btx) { m_ntr=-1; //This says we will have transmitted - m_txNext=false; - ui->pbTxNext->setChecked(false); + ui->pbTxNext->setChecked (false); m_bTxTime=true; //Start a WSPR or FST4W Tx sequence } else { // This will be a WSPR or FST4W Rx sequence. @@ -7210,14 +7192,15 @@ void MainWindow::handle_transceiver_update (Transceiver::TransceiverState const& { Transceiver::TransceiverState old_state {m_rigState}; //transmitDisplay (s.ptt ()); - if (s.ptt () && !m_rigState.ptt ()) { // safe to start audio + if (s.ptt () // && !m_rigState.ptt () + ) { // safe to start audio // (caveat - DX Lab Suite Commander) if (m_tx_when_ready && g_iptt) { // waiting to Tx and still needed int ms_delay=1000*m_config.txDelay(); if(m_mode=="FT4") ms_delay=20; ptt1Timer.start(ms_delay); //Start-of-transmission sequencer delay + m_tx_when_ready = false; } - m_tx_when_ready = false; } m_rigState = s; auto old_freqNominal = m_freqNominal; @@ -8104,17 +8087,18 @@ void MainWindow::uploadWSPRSpots (bool direct_post, QString const& decode_text) QString rfreq = QString("%1").arg((m_dialFreqRxWSPR + 1500) / 1e6, 0, 'f', 6); QString tfreq = QString("%1").arg((m_dialFreqRxWSPR + ui->TxFreqSpinBox->value()) / 1e6, 0, 'f', 6); + auto pct = QString::number (ui->autoButton->isChecked () ? ui->sbTxPercent->value () : 0); if (!direct_post) { wsprNet->upload (m_config.my_callsign (), m_config.my_grid (), rfreq, tfreq, - m_mode, m_TRperiod, QString::number (ui->autoButton->isChecked () ? m_pctx : 0), + m_mode, m_TRperiod, pct, QString::number (m_dBm), version (), m_config.writeable_data_dir ().absoluteFilePath ("wspr_spots.txt")); } else { wsprNet->post (m_config.my_callsign (), m_config.my_grid (), rfreq, tfreq, - m_mode, m_TRperiod, QString::number (ui->autoButton->isChecked () ? m_pctx : 0), + m_mode, m_TRperiod, pct, QString::number (m_dBm), version (), decode_text); } if (!decode_text.size ()) @@ -8140,24 +8124,9 @@ void MainWindow::on_TxPowerComboBox_currentIndexChanged(int index) m_dBm = ui->TxPowerComboBox->itemData (index).toInt (); } -void MainWindow::on_sbTxPercent_valueChanged(int n) -{ - m_pctx=n; - if(m_pctx>0) { - ui->pbTxNext->setEnabled(true); - } else { - m_txNext=false; - ui->pbTxNext->setChecked(false); - ui->pbTxNext->setEnabled(false); - } -} - void MainWindow::on_cbUploadWSPR_Spots_toggled(bool b) { m_uploadWSPRSpots=b; - if(m_uploadWSPRSpots) ui->cbUploadWSPR_Spots->setStyleSheet(""); - if(!m_uploadWSPRSpots) ui->cbUploadWSPR_Spots->setStyleSheet( - "QCheckBox{color: #000000; background-color: yellow}"); } void MainWindow::on_WSPRfreqSpinBox_valueChanged(int n) @@ -8167,11 +8136,21 @@ void MainWindow::on_WSPRfreqSpinBox_valueChanged(int n) void MainWindow::on_pbTxNext_clicked(bool b) { - m_txNext=b; + if (b && !ui->autoButton->isChecked ()) + { + m_WSPR_tx_next = false; // cancel any pending start from schedule + ui->autoButton->click (); // make sure Tx is possible + } } void MainWindow::WSPR_scheduling () { + if (ui->pbTxNext->isEnabled () && ui->pbTxNext->isChecked ()) + { + // Tx Next button overrides all scheduling + m_WSPR_tx_next = true; + return; + } QString t=ui->RoundRobin->currentText(); if(m_mode=="FST4W" and t != tr ("Random")) { bool ok; @@ -8184,10 +8163,14 @@ void MainWindow::WSPR_scheduling () int nsec=ms/1000; int ntr=m_TRperiod; int j=((nsec+ntr-1) % (n*ntr))/ntr; - m_WSPR_tx_next=(i==j); + m_WSPR_tx_next = i == j; return; } m_WSPR_tx_next = false; + if (!ui->sbTxPercent->isEnabled () || !ui->sbTxPercent->value ()) + { + return; // don't schedule if %age disabled or zero + } if (m_config.is_transceiver_online () // need working rig control for hopping && !m_config.is_dummy_rig () && ui->band_hopping_group_box->isChecked ()) { diff --git a/widgets/mainwindow.h b/widgets/mainwindow.h index a1673ec71..48cdf0c01 100644 --- a/widgets/mainwindow.h +++ b/widgets/mainwindow.h @@ -446,7 +446,6 @@ private: qint32 m_nclearave; qint32 m_minSync; qint32 m_dBm; - qint32 m_pctx; qint32 m_nseq; qint32 m_nWSPRdecodes; qint32 m_k0; @@ -505,7 +504,6 @@ private: bool m_bSWL; bool m_uploadWSPRSpots; bool m_uploading; - bool m_txNext; bool m_grid6; bool m_tuneup; bool m_bTxTime; diff --git a/widgets/mainwindow.ui b/widgets/mainwindow.ui index ece61762c..f16f26c42 100644 --- a/widgets/mainwindow.ui +++ b/widgets/mainwindow.ui @@ -2163,6 +2163,12 @@ list. The list can be maintained in Settings (F2). Percentage of minute sequences devoted to transmitting. + + QSpinBox:enabled[notx="true"] { + color: rgb(0, 0, 0); + background-color: rgb(255, 255, 0); +} + Qt::AlignCenter @@ -2346,6 +2352,12 @@ list. The list can be maintained in Settings (F2). Upload decoded messages to WSPRnet.org. + + QCheckBox:unchecked { + color: rgb(0, 0, 0); + background-color: rgb(255, 255, 0); +} + Upload spots @@ -2491,8 +2503,7 @@ list. The list can be maintained in Settings (F2). } QLabel[oob="true"] { background-color: red; -} - +} 14.078 000 From 45f28aff45b206811e777126bef6dc3fd1a9c933 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sat, 15 Aug 2020 03:01:54 +0100 Subject: [PATCH 35/50] Updated cty.dat file - 4th Aug 2020 Big CTY --- cty.dat | 1609 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 814 insertions(+), 795 deletions(-) diff --git a/cty.dat b/cty.dat index 991e3c52a..db7d3ba98 100644 --- a/cty.dat +++ b/cty.dat @@ -118,7 +118,7 @@ West Malaysia: 28: 54: AS: 3.95: -102.23: -8.0: 9M2: 9M,9W,=9M0SEA,=9M6/PA0RRS/2,=9M6/ZS6EZ/2,=9M6XX/2,=9M6YBG/2,=9M8DX/2,=9M8SYA/2,=9W6KOM/2, =9W6MAN/2; East Malaysia: 28: 54: OC: 2.68: -113.32: -8.0: 9M6: - =9M4CKT/6,=9M4CRP/6,=9M9/7M2VPR,=9M9/CCL, + =9M4CAK,=9M4CKT/6,=9M4CRP/6,=9M9/7M2VPR,=9M9/CCL, 9M6,9W6,=9M1CSS,=9M2/G3TMA/6,=9M2/PG5M/6,=9M2/R6AF/6,=9M2GCN/6,=9M2MDX/6,=9M4ARD/6,=9M4CBP, =9M4CCB,=9M4CKT,=9M4CMY,=9M4CRB,=9M4CRP,=9M4CWS,=9M4GCW,=9M4LHS,=9M4LTW,=9M4SAB,=9M4SEB,=9M4SHQ, =9M4SJO,=9M4SJS,=9M4SJSA,=9M4SJSB,=9M4SJSD,=9M4SJSL,=9M4SJSM,=9M4SJSP,=9M4SJST,=9M4SJSW,=9M4SJX, @@ -546,7 +546,7 @@ Antarctica: 13: 74: SA: -90.00: 0.00: 0.0: CE9: =R1ANP(39)[69],=RI1ANC/A(39)[69],=RI1ANN(39)[69],=RI1ANP(39)[69],=RI1ANZ(39)[69],=RI63ANT(39)[69], =VU3BPZ/RI1(39)[69], =R1ANH(32)[72], - =RI1ANC(29)[70],=RI1ANC/P(29)[70],=RI1ANM(29)[70],=RI1ANV(29)[70], + =RI1ANC(29)[70],=RI1ANC/P(29)[70],=RI1ANV(29)[70], =SM/OH2FFP(38)[67], =EM1HO[73],=EM1KCC[73],=EM1KGG[73],=EM1KY[73],=EM1U[73],=EM1U/P[73],=EM1UA[73],=EM1UC[73], =KC4/VE0HSS(32),=VE0HSS/KC4(32), @@ -603,7 +603,7 @@ Bolivia: 10: 12: SA: -17.00: 65.00: 4.0: CP: CP7[14]; Portugal: 14: 37: EU: 39.50: 8.00: 0.0: CT: CQ,CR,CS,CT,=CR5FB/LH,=CR6L/LT,=CR6YLH/LT,=CS2HNI/LH,=CS5ARAM/LH,=CS5E/LH,=CT/DJ5AA/LH,=CT1BWW/LH, - =CT1GFK/LH,=CT1GPQ/LGT,=CT7/ON4LO/LH,=CT7/ON7RU/LH; + =CT1GFK/LH,=CT1GPQ/LGT,=CT7/ON4LO/LH,=CT7/ON7RU/LH,=VERSION; Madeira Islands: 33: 36: AF: 32.75: 16.95: 0.0: CT3: CQ2,CQ3,CQ9,CR3,CR9,CS3,CS9,CT3,CT9,=CT9500AEP/J; Azores: 14: 36: EU: 38.70: 27.23: 1.0: CU: @@ -637,20 +637,21 @@ Fed. Rep. of Germany: 14: 28: EU: 51.00: -10.00: -1.0: DL: =DF0VK/LH,=DF0WAT/LH,=DF0WFB/LH,=DF0WH/LGT,=DF0WLG/LH,=DF1AG/LH,=DF1HF/LH,=DF2BR/LH,=DF3LY/L, =DF5A/LH,=DF5FO/LH,=DF8AN/LGT,=DF8AN/LH,=DF8AN/P/LH,=DF9HG/LH,=DG0GF/LH,=DG3XA/LH,=DH0IPA/LH, =DH1DH/LH,=DH1DH/M/LH,=DH6RS/LH,=DH7RK/LH,=DH9JK/LH,=DH9UW/YL,=DJ0PJ/LH,=DJ2OC/LH,=DJ3XG/LH, - =DJ5AA/LH,=DJ7AO/LH,=DJ7MH/LH,=DJ8RH/LH,=DJ9QE/LH,=DK0DAN/LH,=DK0FC/LGT,=DK0FC/LH,=DK0IZ/LH, - =DK0KTL/LH,=DK0LWL/LH,=DK0OC/LH,=DK0PRE/LH,=DK0RA/LH,=DK0RBY/LH,=DK0RU/LH,=DK0RZ/LH,=DK3DUA/LH, - =DK3R/LH,=DK4DS/LH,=DK4MT/LT,=DK5AN/P/LH,=DK5T/LH,=DK5T/LS,=DL/HB9DQJ/LH,=DL0AWG/LH,=DL0BLA/LH, - =DL0BPS/LH,=DL0BUX/LGT,=DL0BUX/LH,=DL0CA/LH,=DL0CUX/LGT,=DL0CUX/LV,=DL0DAB/LH,=DL0EJ/LH,=DL0EL/LH, - =DL0EM/LGT,=DL0EM/LH,=DL0EO/LGT,=DL0EO/LH,=DL0FFF/LGT,=DL0FFF/LH,=DL0FFF/LS,=DL0FHD/LH,=DL0FL/FF, - =DL0HDF/LH,=DL0HGW/LGT,=DL0HGW/LH,=DL0HST/LH,=DL0II/LH,=DL0IOO/LH,=DL0IPA/LH,=DL0LGT/LH, - =DL0LNW/LH,=DL0MCM/LH,=DL0MFH/LGT,=DL0MFH/LH,=DL0MFK/LGT,=DL0MFK/LH,=DL0MFN/LH,=DL0MHR/LH, - =DL0NH/LH,=DL0OF/LH,=DL0PAS/LH,=DL0PBS/LH,=DL0PJ/LH,=DL0RSH/LH,=DL0RUG/LGT,=DL0RUG/LH,=DL0RWE/LH, - =DL0SH/LH,=DL0SY/LH,=DL0TO/LH,=DL0UEM/LH,=DL0VV/LH,=DL0YLM/LH,=DL1BSN/LH,=DL1DUT/LH,=DL1ELU/LH, - =DL1HZM/YL,=DL1SKK/LH,=DL2FCA/YL,=DL2RPS/LH,=DL3ANK/LH,=DL3JJ/LH,=DL3KWR/YL,=DL3KZA/LH,=DL3RNZ/LH, - =DL4ABB/LH,=DL5CX/LH,=DL5KUA/LH,=DL5SE/LH,=DL65DARC/LH,=DL6ABN/LH,=DL6AP/LH,=DL6KWN/LH,=DL7ANC/LH, - =DL7BMG/LH,=DL7MFK/LH,=DL7UVO/LH,=DL7VDX/LH,=DL8HK/YL,=DL8MTG/LH,=DL8TG/LH,=DL8TG/LV,=DL8UAA/FF, - =DL9CU/LH,=DL9NEI/ND2N,=DL9OE/LH,=DL9SEP/P/LH,=DM19ERZ/BB,=DM19ERZ/BEF,=DM19ERZ/BHF,=DM19ERZ/BP, - =DM19ERZ/BRB,=DM19ERZ/BS,=DM19ERZ/HAM,=DM19ERZ/HSD,=DM19ERZ/MAZ,=DM19ERZ/SG,=DM2C/LH,=DM3B/LH, + =DJ5AA/LH,=DJ7AO/LH,=DJ7MH/LH,=DJ8RH/LH,=DJ9QE/LH,=DK0DAN/LH,=DK0FC/LGT,=DK0FC/LH,=DK0GYB/LH, + =DK0IZ/LH,=DK0KTL/LH,=DK0LWL/LH,=DK0OC/LH,=DK0PRE/LH,=DK0RA/LH,=DK0RBY/LH,=DK0RU/LH,=DK0RZ/LH, + =DK3DUA/LH,=DK3R/LH,=DK4DS/LH,=DK4MT/LT,=DK5AN/P/LH,=DK5T/LH,=DK5T/LS,=DL/HB9DQJ/LH,=DL0AWG/LH, + =DL0BLA/LH,=DL0BPS/LH,=DL0BUX/LGT,=DL0BUX/LH,=DL0CA/LH,=DL0CUX/LGT,=DL0CUX/LV,=DL0DAB/LH, + =DL0EJ/LH,=DL0EL/LH,=DL0EM/LGT,=DL0EM/LH,=DL0EO/LGT,=DL0EO/LH,=DL0FFF/LGT,=DL0FFF/LH,=DL0FFF/LS, + =DL0FHD/LH,=DL0FL/FF,=DL0HDF/LH,=DL0HGW/LGT,=DL0HGW/LH,=DL0HST/LH,=DL0II/LH,=DL0IOO/LH,=DL0IPA/LH, + =DL0LGT/LH,=DL0LNW/LH,=DL0MCM/LH,=DL0MFH/LGT,=DL0MFH/LH,=DL0MFK/LGT,=DL0MFK/LH,=DL0MFN/LH, + =DL0MHR/LH,=DL0NH/LH,=DL0OF/LH,=DL0PAS/LH,=DL0PBS/LH,=DL0PJ/LH,=DL0RSH/LH,=DL0RUG/LGT,=DL0RUG/LH, + =DL0RWE/LH,=DL0SH/LH,=DL0SY/LH,=DL0TO/LH,=DL0UEM/LH,=DL0VV/LH,=DL0YLM/LH,=DL1BSN/LH,=DL1DUT/LH, + =DL1ELU/LH,=DL1HZM/YL,=DL1SKK/LH,=DL2FCA/YL,=DL2RPS/LH,=DL3ANK/LH,=DL3JJ/LH,=DL3KWR/YL,=DL3KZA/LH, + =DL3RNZ/LH,=DL4ABB/LH,=DL5CX/LH,=DL5KUA/LH,=DL5SE/LH,=DL65DARC/LH,=DL6ABN/LH,=DL6AP/LH,=DL6KWN/LH, + =DL7ANC/LH,=DL7BMG/LH,=DL7MFK/LH,=DL7UVO/LH,=DL7VDX/LH,=DL8HK/YL,=DL8MTG/LH,=DL8TG/LH,=DL8TG/LV, + =DL8UAA/FF,=DL9CU/LH,=DL9NEI/ND2N,=DL9OE/LH,=DL9SEP/P/LH,=DM19ERZ/BB,=DM19ERZ/BEF,=DM19ERZ/BHF, + =DM19ERZ/BL,=DM19ERZ/BP,=DM19ERZ/BRB,=DM19ERZ/BS,=DM19ERZ/BU,=DM19ERZ/HAM,=DM19ERZ/HSD, + =DM19ERZ/MAF,=DM19ERZ/MAZ,=DM19ERZ/MF,=DM19ERZ/MS,=DM19ERZ/SG,=DM19ERZ/VL,=DM2C/LH,=DM3B/LH, =DM3G/LH,=DM3KF/LH,=DM5C/LH,=DM5JBN/LH,=DN0AWG/LH,=DN4MB/LH,=DN8RLS/YL,=DO1EEW/YL,=DO1OMA/LH, =DO5MCL/LH,=DO5MCL/YL,=DO6KDS/LH,=DO6UVM/LH,=DO7DC/LH,=DO7RKL/LH,=DQ4M/LH,=DQ4M/LT,=DR100MF/LS, =DR3M/LH,=DR4W/FF,=DR4X/LH,=DR9Z/LH; @@ -677,10 +678,10 @@ Spain: 14: 37: EU: 40.37: 4.88: -1.0: EA: AM,AN,AO,EA,EB,EC,ED,EE,EF,EG,EH,=AM95WARD,=AN92EXPO,=EF6,=EG90IARU, =AM1TDH/LH,=EA1APV/LH,=EA1BEY/Y,=EA1EEY/L,=EA1EEY/LGT,=EA1EEY/LH,=EA1EK/ZAP,=EA1FGS/LH,=EA1HLW/YL, =EA1RCG/CPV,=EA1RCG/SEU,=EA1RCG/YOA,=EA1RCI/CA,=EA1RCI/CR,=EA1RCI/CVG,=EA1RCI/DAC,=EA1RCI/ESM, - =EA1RCI/IA,=EA1RCI/ICA,=EA1RCI/JBN,=EA1RCI/KD,=EA1RCI/PAZ,=EA1RCI/PCV,=EA1RCI/RSM,=EA1RCI/YOA, - =EA1URL/CVL,=EA1URO/D,=EA1URO/KD,=EA5AER/P,=EA6QB/1,=EA8BFH/1,=EA8CZT/1,=EA8FC/1,=EA8RV/P, - =EA9CD/1,=EA9CI/1,=EA9CP/1,=EA9PD/1,=EB1DH/LH,=ED1IRM/LH,=EG1ILW/LH,=EG1LWB/LH,=EG1LWC/LH, - =EG1LWI/LH,=EG1LWN/LH,=EG1TDH/LH,=EG90IARU/1, + =EA1RCI/IA,=EA1RCI/ICA,=EA1RCI/JBN,=EA1RCI/KD,=EA1RCI/PAZ,=EA1RCI/PCV,=EA1RCI/RCC,=EA1RCI/RSM, + =EA1RCI/YOA,=EA1RCP/NM,=EA1URL/CVL,=EA1URO/D,=EA1URO/KD,=EA5AER/P,=EA6QB/1,=EA8BFH/1,=EA8CZT/1, + =EA8FC/1,=EA8RV/P,=EA9CD/1,=EA9CI/1,=EA9CP/1,=EA9PD/1,=EB1DH/LH,=ED1IRM/LH,=EG1ILW/LH,=EG1LWB/LH, + =EG1LWC/LH,=EG1LWI/LH,=EG1LWN/LH,=EG1TDH/LH,=EG90IARU/1, =AM08ATU/H,=AM08CAZ/H,=AM08CYQ/H,=AM08EIE/Z,=AM08FAC/H,=AN08ADE/H,=AO08BQH/Z,=AO08BTM/Z, =AO08CIK/H,=AO08CVV/Z,=AO08CXK/H,=AO08CYL/H,=AO08DI/Z,=AO08EIE/Z,=AO08HV/Z,=AO08ICA/Z,=AO08ID/Z, =AO08KJ/Z,=AO08KV/Z,=AO08OK/H,=AO08PB/Z,=AO08RKO/H,=AO08VK/Z,=AO2016DSS/LH,=EA2/ON7RU/LH, @@ -692,8 +693,8 @@ Spain: 14: 37: EU: 40.37: 4.88: -1.0: EA: =EA5/ON4LO/LH,=EA5ADM/P,=EA5CC/P,=EA5EQ/N,=EA5EZ/P,=EA5FL/LH,=EA5GVT/AVW,=EA5HCC/P,=EA5IKT/P, =EA5KB/LH,=EA5ND/D,=EA5RCK/CDI,=EA5RKD/PAZ,=EA5TOM/AVW,=EA5URE/IVA,=EA5URE/P,=EA5URM/C,=EA5URM/F, =EA5URM/G,=EA5URM/H,=EA5URM/I,=EA5URM/L,=EA5URR/PAZ,=EA5URV/CAC,=EA5ZD/URE,=EA6AKN/5,=EA8BFH/5, - =EA8CWF/5,=EA9BLJ/5,=EA9CI/5,=EA9CP/5,=EA9PD/5,=EC5K/VIC,=ED5MFP/C,=ED5MFP/G,=ED5MFP/H,=ED5MFP/I, - =ED5MFP/K,=ED5MFP/Q,=ED5MFP/R,=ED5MFP/S,=ED5URD/LH,=EG5FOM/LH,=EG90IARU/5,=EH5FL/LH, + =EA8CWF/5,=EA9BLJ/5,=EA9CI/5,=EA9CP/5,=EA9PD/5,=EC5EA/VIC,=EC5K/VIC,=ED5MFP/C,=ED5MFP/G,=ED5MFP/H, + =ED5MFP/I,=ED5MFP/K,=ED5MFP/Q,=ED5MFP/R,=ED5MFP/S,=ED5URD/LH,=EG5FOM/LH,=EG90IARU/5,=EH5FL/LH, =AO7WRD/MA,=EA6SK/7,=EA7CFU/U,=EA7FC/FCJ,=EA7HZ/F,=EA7OBH/LH,=EA7URA/GET,=EA7URA/PAZ,=EA7URA/SG, =EA7URA/YOTA,=EA7URE/PAZ,=EA7URF/PAZ,=EA7URI/MDL,=EA7URJ/CPM,=EA7URL/FSV,=EA7URM/PAZ,=EA7URP/LAI, =EA9AA/7,=EA9CP/7,=EA9FN/7,=EA9HU,=EA9HU/7,=EA9JS/7,=EA9LZ/7,=EA9PD/7,=EA9QD/7,=EA9UL/7,=EA9UV/7, @@ -704,7 +705,7 @@ Balearic Islands: 14: 37: EU: 39.60: -2.95: -1.0: EA6: =EA5ADM/6,=EA5BB/6,=EA5BK/6,=EA5BTL/6,=EA5EOR/6,=EA5ER/6,=EA5EZ/6,=EA5FL/P,=EA5HCC/6,=EA5IIG/6, =EA5IKT/6,=EA5RKB/6,=EA6/DJ5AA/LH,=EA6/DJ7AO/LH,=EA6/G0SGB/LH,=EA6HP/J,=EA6LU/P,=EA6URI/PAZ, =EA6URL/IF,=EA7DUT/6,=EA9CI/6,=EA9CP/6,=EB1BRH/6,=EB2GKK/6,=EB3CW/6,=EC5AC/6,=EC5BME/6,=EC5EA/P, - =EC5EC/6,=EC6TV/N,=EC7AT/6,=ED4SHF/6,=ED5ON/6,=EH90IARU/6; + =EC5EC/6,=EC6TV/N,=EC7AT/6,=ED3T/6,=ED4SHF/6,=ED5ON/6,=EH90IARU/6; Canary Islands: 33: 36: AF: 28.32: 15.85: 0.0: EA8: AM8,AN8,AO8,EA8,EB8,EC8,ED8,EE8,EF8,EG8,EH8,=AM70URE/8,=AN400L,=AN400U,=AO150ITU/8,=AO150U, =AO4AAA/8,=AO5DXX/8,=EA1AK/8,=EA1AP/8,=EA1EHW/8,=EA1YO/8,=EA3RKB/8,=EA4BQ/8,=EA4ESI/8,=EA4SV/8, @@ -762,7 +763,7 @@ Guadeloupe: 08: 11: NA: 16.13: 61.67: 4.0: FG: Mayotte: 39: 53: AF: -12.88: -45.15: -3.0: FH: FH,=TO0X,=TO2FH,=TO2TT,=TO4M,=TO6OK,=TO7BC,=TO7RJ,=TO8MZ,=TX0P,=TX5M,=TX5NK,=TX7LX; St. Barthelemy: 08: 11: NA: 17.90: 62.83: 4.0: FJ: - FJ,=TO2D,=TO2EE,=TO2SP,=TO3A,=TO3J,=TO3X,=TO4K,=TO5DX,=TO5E,=TO5FJ,=TO5RZ,=TO7ZG,=TO8YY; + FJ,=TO0Z,=TO2D,=TO2EE,=TO2SP,=TO3A,=TO3J,=TO3X,=TO4K,=TO5DX,=TO5E,=TO5FJ,=TO5RZ,=TO7ZG,=TO8YY; New Caledonia: 32: 56: OC: -21.50: -165.50: -11.0: FK: FK,=FK8VHY/P,=T8HRC,=TX1A,=TX1B,=TX1CW,=TX3SAM,=TX4A,=TX5CW,=TX5FS,=TX8A,=TX8B,=TX8C,=TX8CW,=TX8D, =TX8F,=TX8JOTA,=TX8NC,=TX90IARU; @@ -770,7 +771,7 @@ Chesterfield Islands: 30: 56: OC: -19.87: -158.32: -11.0: FK/c: =FK8C/AA7JV,=FK8IK/C,=TX0AT,=TX0C,=TX0DX,=TX3A,=TX3X,=TX9; Martinique: 08: 11: NA: 14.70: 61.03: 4.0: FM: FM,=TO0O,=TO1BT,=TO1C,=TO1J,=TO1N,=TO1YR,=TO2M,=TO2MB,=TO3FM,=TO3GA,=TO3JA,=TO3M,=TO3T,=TO3W, - =TO40CDXC,=TO4A,=TO4C,=TO4FM,=TO4GU,=TO4IPA,=TO4OC,=TO4YL,=TO5A,=TO5AA,=TO5J,=TO5K,=TO5O,=TO5PX, + =TO40CDXC,=TO4A,=TO4C,=TO4FM,=TO4GU,=TO4IPA,=TO4OC,=TO4YL,=TO5A,=TO5AA,=TO5J,=TO5K,=TO5PX,=TO5T, =TO5U,=TO5W,=TO5X,=TO5Y,=TO6ABM,=TO6M,=TO7A,=TO7BP,=TO7HAM,=TO7X,=TO8A,=TO8M,=TO8T,=TO8Z, =TO90IARU,=TO972A,=TO972M,=TO9A,=TO9R; French Polynesia: 32: 63: OC: -17.65: 149.40: 10.0: FO: @@ -791,7 +792,7 @@ Marquesas Islands: 31: 63: OC: -8.92: 140.07: 9.5: FO/m: =FO/W6TLD,=FO0ELY,=FO0POM,=FO0TOH,=FO5QS/M,=FO8RZ/P,=K7ST/FO,=TX0SIX,=TX4PG,=TX5A,=TX5SPM,=TX5VT, =TX7EU,=TX7G,=TX7M,=TX7MB,=TX7T; St. Pierre & Miquelon: 05: 09: NA: 46.77: 56.20: 3.0: FP: - FP,=TO200SPM,=TO2U,=TO5FP,=TO5M,=TO5T,=TO80SP; + FP,=TO200SPM,=TO2U,=TO5FP,=TO5M,=TO80SP; Reunion Island: 39: 53: AF: -21.12: -55.48: -4.0: FR: FR,=TO019IEEE,=TO0FAR,=TO0MPB,=TO0R,=TO19A,=TO1PF,=TO1PF/P,=TO1TAAF,=TO2R,=TO2R/P,=TO2Z,=TO3R, =TO5R,=TO7CC,=TO7DL,=TO90R; @@ -815,7 +816,7 @@ Wallis & Futuna Islands: 32: 62: OC: -13.30: 176.20: -12.0: FW: French Guiana: 09: 12: SA: 4.00: 53.00: 3.0: FY: FY,=TO1A,=TO2A,=TO2BC,=TO5BR,=TO5G,=TO5NED,=TO7C,=TO7IR,=TO7R; England: 14: 27: EU: 52.77: 1.47: 0.0: G: - 2E,G,M,NHS,=2E0GWD/P/LH,=2MT,=2O0YYY/P,=2Q0XYL/P,=2Q0YYY/P,=2SZ,=G0IBN/LH,=G0IBN/LV,=G0IBN/P/LV, + 2E,G,M,=2E0GWD/P/LH,=2MT,=2O0YYY/P,=2Q0XYL/P,=2Q0YYY/P,=2SZ,=G0IBN/LH,=G0IBN/LV,=G0IBN/P/LV, =G0SGB/LH,=G0VML/LV,=G3PRC/LH,=G6HH/LH,=GB0BLL/LH,=GB0BMB/LH,=GB0HLH/LH,=GB0NCI/LH,=GB0PL/LH, =GB0SLH/LH,=GB0WPS/JOTA,=GB1PBL/LH,=GB2APL/LH,=GB2BML/LGT,=GB2BML/LH,=GB2LZL/LH,=GB2PLH/LH, =GB2SCA/LH,=GB2SJ/LH,=GB2SML/LH,=GB2SNM/MILL,=GB3HQ/YOTA,=GB4CWM/YL,=GB4LL/LH,=GB4WL/LH,=GB5PW/LH, @@ -840,27 +841,27 @@ Northern Ireland: 14: 27: EU: 54.73: 6.68: 0.0: GI: =GB106TBC,=GB150WCB,=GB16SW,=GB1918EKN,=GB19CGI,=GB19CNI,=GB1AFP,=GB1BPM,=GB1DDG,=GB1HSC,=GB1IMD, =GB1RM,=GB1ROC,=GB1SOS,=GB1SPD,=GB1SRI,=GB1UAS,=GB1WWC,=GB2AD,=GB2AD/P,=GB2AS,=GB2BCW,=GB2BDS, =GB2BOA,=GB2CA,=GB2CRU,=GB2DCI,=GB2DMR,=GB2DPC,=GB2IL,=GB2LL,=GB2LOL,=GB2MAC,=GB2MRI,=GB2PDY, - =GB2PP,=GB2PSW,=GB2REL,=GB2SDD,=GB2SPD,=GB2SPR,=GB2STI,=GB2STP,=GB2SW,=GB2UAS,=GB3NGI,=GB4CSC, - =GB4CTL,=GB4NHS,=GB4ONI,=GB4PS,=GB4SOS,=GB4SPD,=GB4UAS,=GB50AAD,=GB50CSC,=GB5BIG,=GB5BL,=GB5BL/LH, - =GB5DPR,=GB5NHS,=GB5OMU,=GB5SPD,=GB6EPC,=GB6SPD,=GB6VCB,=GB75VEC,=GB8BKY,=GB8BRM,=GB8DS,=GB8EGT, - =GB8GLM,=GB8NHS,=GB8ROC,=GB8SJA,=GB8SPD,=GB90RSGB/82,=GB90SOM,=GB9RAF,=GB9SPD,=GN0LIX/LH, - =GN4GTY/LH,=GO0AQD,=GO0BJH,=GO0DUP,=GO3KVD,=GO3MMF,=GO3SG,=GO4DOH,=GO4GID,=GO4GUH,=GO4LKG,=GO4NKB, - =GO4ONL,=GO4OYM,=GO4SRQ,=GO4SZW,=GO6MTL,=GO7AXB,=GO7KMC,=GO8YYM,=GQ0AQD,=GQ0BJG,=GQ0NCA,=GQ0RQK, - =GQ0TJV,=GQ0UVD,=GQ1CET,=GQ3KVD,=GQ3MMF,=GQ3SG,=GQ3UZJ,=GQ3XRQ,=GQ4DOH,=GQ4GID,=GQ4GUH,=GQ4JTF, - =GQ4LKG,=GQ4LXL,=GQ4NKB,=GQ4ONL,=GQ4OYM,=GQ4SZW,=GQ6JPO,=GQ6MTL,=GQ7AXB,=GQ7JYK,=GQ7KMC,=GQ8RQI, - =GQ8YYM,=GR0BJH,=GR0BRO,=GR0DVU,=GR0RQK,=GR0RWO,=GR0UVD,=GR1CET,=GR3GTR,=GR3KDR,=GR3SG,=GR3WEM, - =GR4AAM,=GR4DHW,=GR4DOH,=GR4FUE,=GR4FUM,=GR4GID,=GR4GOS,=GR4GUH,=GR4KQU,=GR4LXL,=GR4NKB,=GR6JPO, - =GR7AXB,=GR7KMC,=GR8RKC,=GR8RQI,=GR8YYM,=GV1BZT,=GV3KVD,=GV3SG,=GV4FUE,=GV4GUH,=GV4JTF,=GV4LXL, - =GV4SRQ,=GV4WVN,=GV7AXB,=GV7THH,=MI5AFK/2K,=MN0NID/LH,=MO0ALS,=MO0BDZ,=MO0CBH,=MO0IOU,=MO0IRZ, - =MO0JFC,=MO0JFC/P,=MO0JML,=MO0JST,=MO0KYE,=MO0LPO,=MO0MOD,=MO0MOD/P,=MO0MSR,=MO0MVP,=MO0RRE, - =MO0RUC,=MO0RYL,=MO0TGO,=MO0VAX,=MO0ZXZ,=MO3RLA,=MO6AOX,=MO6NIR,=MO6TUM,=MO6WAG,=MO6WDB,=MO6YDR, - =MQ0ALS,=MQ0BDZ,=MQ0BPB,=MQ0GGB,=MQ0IRZ,=MQ0JFC,=MQ0JST,=MQ0KAM,=MQ0KYE,=MQ0MOD,=MQ0MSR,=MQ0MVP, - =MQ0RMD,=MQ0RRE,=MQ0RUC,=MQ0RYL,=MQ0TGO,=MQ0VAX,=MQ0ZXZ,=MQ3GHW,=MQ3RLA,=MQ3STV,=MQ5AFK,=MQ6AOX, - =MQ6BJG,=MQ6GDN,=MQ6WAG,=MQ6WDB,=MQ6WGM,=MR0GDO,=MR0GGB,=MR0JFC,=MR0KQU,=MR0LPO,=MR0MOD,=MR0MSR, - =MR0MVP,=MR0RUC,=MR0SAI,=MR0SMK,=MR0TFK,=MR0TLG,=MR0TMW,=MR0VAX,=MR0WWB,=MR1CCU,=MR3RLA,=MR3TFF, - =MR3WHM,=MR5AMO,=MR6CCU,=MR6CWC,=MR6GDN,=MR6MME,=MR6MRJ,=MR6OKS,=MR6OLA,=MR6PUX,=MR6WAG,=MR6XGZ, - =MV0ALS,=MV0GGB,=MV0IOU,=MV0JFC,=MV0JLC,=MV0MOD,=MV0MSR,=MV0MVP,=MV0TGO,=MV0VAX,=MV0WGM,=MV0ZAO, - =MV1VOX,=MV6DTE,=MV6GTY,=MV6NIR,=MV6TLG; + =GB2PP,=GB2PSW,=GB2REL,=GB2SDD,=GB2SPD,=GB2SPR,=GB2STI,=GB2STP,=GB2SW,=GB2UAS,=GB3NGI,=GB4AFD, + =GB4CSC,=GB4CTL,=GB4NHS,=GB4ONI,=GB4PS,=GB4SOS,=GB4SPD,=GB4UAS,=GB50AAD,=GB50CSC,=GB5AFD,=GB5BIG, + =GB5BL,=GB5BL/LH,=GB5DPR,=GB5NHS,=GB5OMU,=GB5SPD,=GB6EPC,=GB6SPD,=GB6VCB,=GB75VEC,=GB8BKY,=GB8BRM, + =GB8DS,=GB8EGT,=GB8GLM,=GB8NHS,=GB8ROC,=GB8SJA,=GB8SPD,=GB90RSGB/82,=GB90SOM,=GB9AFD,=GB9LQV, + =GB9RAF,=GB9SPD,=GN0LIX/LH,=GN4GTY/LH,=GO0AQD,=GO0BJH,=GO0DUP,=GO3KVD,=GO3MMF,=GO3SG,=GO4DOH, + =GO4GID,=GO4GUH,=GO4LKG,=GO4NKB,=GO4ONL,=GO4OYM,=GO4SRQ,=GO4SZW,=GO6MTL,=GO7AXB,=GO7KMC,=GO8YYM, + =GQ0AQD,=GQ0BJG,=GQ0NCA,=GQ0RQK,=GQ0TJV,=GQ0UVD,=GQ1CET,=GQ3KVD,=GQ3MMF,=GQ3SG,=GQ3UZJ,=GQ3XRQ, + =GQ4DOH,=GQ4GID,=GQ4GUH,=GQ4JTF,=GQ4LKG,=GQ4LXL,=GQ4NKB,=GQ4ONL,=GQ4OYM,=GQ4SZW,=GQ6JPO,=GQ6MTL, + =GQ7AXB,=GQ7JYK,=GQ7KMC,=GQ8RQI,=GQ8YYM,=GR0BJH,=GR0BRO,=GR0DVU,=GR0RQK,=GR0RWO,=GR0UVD,=GR1CET, + =GR3GTR,=GR3KDR,=GR3SG,=GR3WEM,=GR4AAM,=GR4DHW,=GR4DOH,=GR4FUE,=GR4FUM,=GR4GID,=GR4GOS,=GR4GUH, + =GR4KQU,=GR4LXL,=GR4NKB,=GR6JPO,=GR7AXB,=GR7KMC,=GR8RKC,=GR8RQI,=GR8YYM,=GV1BZT,=GV3KVD,=GV3SG, + =GV4FUE,=GV4GUH,=GV4JTF,=GV4LXL,=GV4SRQ,=GV4WVN,=GV7AXB,=GV7THH,=MI5AFK/2K,=MN0NID/LH,=MO0ALS, + =MO0BDZ,=MO0CBH,=MO0IOU,=MO0IRZ,=MO0JFC,=MO0JFC/P,=MO0JML,=MO0JST,=MO0KYE,=MO0LPO,=MO0MOD, + =MO0MOD/P,=MO0MSR,=MO0MVP,=MO0RRE,=MO0RUC,=MO0RYL,=MO0TGO,=MO0VAX,=MO0ZXZ,=MO3RLA,=MO6AOX,=MO6NIR, + =MO6TUM,=MO6WAG,=MO6WDB,=MO6YDR,=MQ0ALS,=MQ0BDZ,=MQ0BPB,=MQ0GGB,=MQ0IRZ,=MQ0JFC,=MQ0JST,=MQ0KAM, + =MQ0KYE,=MQ0MOD,=MQ0MSR,=MQ0MVP,=MQ0RMD,=MQ0RRE,=MQ0RUC,=MQ0RYL,=MQ0TGO,=MQ0VAX,=MQ0ZXZ,=MQ3GHW, + =MQ3RLA,=MQ3STV,=MQ5AFK,=MQ6AOX,=MQ6BJG,=MQ6GDN,=MQ6WAG,=MQ6WDB,=MQ6WGM,=MR0GDO,=MR0GGB,=MR0JFC, + =MR0KQU,=MR0LPO,=MR0MOD,=MR0MSR,=MR0MVP,=MR0RUC,=MR0SAI,=MR0SMK,=MR0TFK,=MR0TLG,=MR0TMW,=MR0VAX, + =MR0WWB,=MR1CCU,=MR3RLA,=MR3TFF,=MR3WHM,=MR5AMO,=MR6CCU,=MR6CWC,=MR6GDN,=MR6MME,=MR6MRJ,=MR6OKS, + =MR6OLA,=MR6PUX,=MR6WAG,=MR6XGZ,=MV0ALS,=MV0GGB,=MV0IOU,=MV0JFC,=MV0JLC,=MV0MOD,=MV0MSR,=MV0MVP, + =MV0TGO,=MV0VAX,=MV0WGM,=MV0ZAO,=MV1VOX,=MV6DTE,=MV6GTY,=MV6NIR,=MV6TLG; Jersey: 14: 27: EU: 49.22: 2.18: 0.0: GJ: 2J,GH,GJ,MH,MJ,=2R0ODX,=GB0JSA,=GB19CJ,=GB2BYL,=GB2JSA,=GB50JSA,=GB5OJR,=GB8LMI,=GH5DX/NHS, =GJ3DVC/L,=GJ6WRI/LH,=GJ8PVL/LH,=GO8PVL,=GQ8PVL,=GR6TMM,=MO0ASP,=MQ0ASP,=MR0ASP,=MR0RZD,=MV0ASP; @@ -875,9 +876,9 @@ Shetland Islands: 14: 27: EU: 60.50: 1.50: 0.0: *GM/s: =GM6RQW,=GM6RTO,=GM6VZB,=GM6WVI,=GM6YQA,=GM7AFE,=GM7GWW,=GM7RKD,=GM8LNH,=GM8MMA,=GM8YEC,=GS0AAA, =GS0GRC,=GS3BSQ,=GS3ZET,=GS7V,=GS8YL,=MA0XAU,=MA1FJM,=MA6PTE,=MM/DJ6OZ,=MM/DL5KUA,=MM/OK1HDU, =MM/OK7U,=MM/PA9D,=MM/PF9DC,=MM/W5ZE/P,=MM0/DJ6AU,=MM0/PA8MO,=MM0ECG,=MM0KAL,=MM0LON,=MM0LON/M, - =MM0LSM,=MM0NQY,=MM0SHF/P,=MM0VIK,=MM0XAU,=MM0ZAL,=MM0ZCG,=MM0ZRC,=MM1FJM,=MM3VQO,=MM3ZET,=MM5PSL, - =MM5PSL/P,=MM5YLO,=MM5YLO/P,=MM6ACW,=MM6BDU,=MM6BZQ,=MM6IKB,=MM6IMB,=MM6MFA,=MM6PTE,=MM6SJK, - =MM6YLO,=MM6ZBG,=MM6ZDW,=MM8A,=MO5PSL,=MQ5PSL,=MR5PSL,=MS0OXE,=MS0ZCG,=MS0ZET; + =MM0LSM,=MM0NQY,=MM0SHF/P,=MM0VIK,=MM0XAU,=MM0ZAL,=MM0ZCG,=MM0ZRC,=MM1FEO,=MM1FJM,=MM3VQO,=MM3ZET, + =MM5PSL,=MM5PSL/P,=MM5YLO,=MM5YLO/P,=MM6ACW,=MM6BDU,=MM6BZQ,=MM6IKB,=MM6IMB,=MM6MFA,=MM6PTE, + =MM6SJK,=MM6YLO,=MM6ZBG,=MM6ZDW,=MM8A,=MO5PSL,=MQ5PSL,=MR5PSL,=MS0OXE,=MS0ZCG,=MS0ZET; Scotland: 14: 27: EU: 56.82: 4.18: 0.0: GM: 2A,2M,GM,GS,MA,MM,MS,=2O0BSE,=2O0BZB,=2O0HJS,=2O0IMP,=2O0IOB,=2O0IVG,=2O0LIM,=2O0LJM,=2O0TOK, =2O1MIC,=2O1SJB,=2Q0BSE,=2Q0BZB,=2Q0FYG,=2Q0HJS,=2Q0IMP,=2Q0IOB,=2Q0JOK,=2Q0LDO,=2Q0TAX,=2Q0TOK, @@ -885,74 +886,75 @@ Scotland: 14: 27: EU: 56.82: 4.18: 0.0: GM: =2R0IMP,=2R0IOB,=2R0ISM,=2R0JVR,=2R0KAU,=2R0KAU/P,=2R0NCM,=2R0OXX,=2R0YCG,=2R0ZPS,=2R1MIC,=2R1SJB, =2V0GUL,=2V0IVG,=2V0JCH,=2V0KAU,=2V0TAX,=2V1HFE,=2V1MIC,=2V1SJB,=G0FBJ,=GA6NX/LH,=GB0AYR,=GB0BAJ, =GB0BCG,=GB0BCK,=GB0BD,=GB0BDC,=GB0BL,=GB0BNA,=GB0BNC,=GB0BOC,=GB0BOL,=GB0BSS,=GB0BWT,=GB0CCF, - =GB0CHL,=GB0CLH,=GB0CML,=GB0CNL,=GB0CWF,=GB0CWS,=GB0DAM,=GB0DAW,=GB0DBS,=GB0DHL,=GB0DPK,=GB0EPC, - =GB0FFS,=GB0FSG,=GB0GDS,=GB0GDS/J,=GB0GGR,=GB0GRN,=GB0GTD,=GB0HHW,=GB0HLD,=GB0JOG,=GB0KEY,=GB0KGS, - =GB0KKS,=GB0KLT,=GB0LCS,=GB0LCW,=GB0LTM,=GB0MLH,=GB0MLM,=GB0MOD,=GB0MOG,=GB0MOL,=GB0MSL,=GB0MUL, - =GB0NGG,=GB0NHL,=GB0NHL/LH,=GB0NHS,=GB0NRL,=GB0OYT,=GB0PLS,=GB0POS,=GB0PPE,=GB0PSW,=GB0RGC, - =GB0SAA,=GB0SBC,=GB0SCD,=GB0SFM,=GB0SHP,=GB0SI,=GB0SK,=GB0SKG,=GB0SKY,=GB0SLB,=GB0SRC,=GB0SSB, - =GB0TH,=GB0THL,=GB0TNL,=GB0TTS,=GB0WRH,=GB100MAS,=GB100MUC,=GB100ZET,=GB10SP,=GB150NRL,=GB18FIFA, - =GB19CGM,=GB19CS,=GB1AJ,=GB1ASC,=GB1ASH,=GB1BD,=GB1BOL,=GB1CFL,=GB1COR,=GB1DHL,=GB1FB,=GB1FRS, - =GB1FVS,=GB1FVT,=GB1GEO,=GB1HRS,=GB1KGG,=GB1KLD,=GB1LAY,=GB1LGG,=GB1LL,=GB1MAY,=GB1NHL,=GB1OL, - =GB1OL/LH,=GB1PC,=GB1RB,=GB1RHU,=GB1SLH,=GB1TAY,=GB1WLG,=GB250RB,=GB2AES,=GB2AGG,=GB2AL,=GB2AMS, - =GB2AST,=GB2ATC,=GB2AYR,=GB2BAJ,=GB2BHM,=GB2BHS,=GB2BMJ,=GB2BOL,=GB2CAS,=GB2CHC,=GB2CM,=GB2CMA, - =GB2CVL,=GB2CWR,=GB2DAS,=GB2DAW,=GB2DHS,=GB2DL,=GB2DRC,=GB2DT,=GB2DTM,=GB2ELH,=GB2ELH/LH,=GB2EPC, - =GB2FBM,=GB2FEA,=GB2FSM,=GB2FSW,=GB2GEO,=GB2GKR,=GB2GNL,=GB2GNL/LH,=GB2GTM,=GB2GVC,=GB2HLB, - =GB2HMC,=GB2HRH,=GB2IGB,=GB2IGS,=GB2IMG,=GB2IMM,=GB2INV,=GB2IOT,=GB2JCM,=GB2KDR,=GB2KGB,=GB2KW, - =GB2LBN,=GB2LBN/LH,=GB2LCL,=GB2LCP,=GB2LCT,=GB2LDG,=GB2LG,=GB2LGB,=GB2LHI,=GB2LK,=GB2LK/LH, - =GB2LMG,=GB2LP,=GB2LS,=GB2LS/LH,=GB2LSS,=GB2LT,=GB2LT/LH,=GB2LXX,=GB2M,=GB2MAS,=GB2MBB,=GB2MDG, - =GB2MN,=GB2MOF,=GB2MSL,=GB2MUC,=GB2MUL,=GB2NBC,=GB2NEF,=GB2NL,=GB2NMM,=GB2OL,=GB2OWM,=GB2PBF, - =GB2PG,=GB2QM,=GB2RB,=GB2RDR,=GB2ROC,=GB2RRL,=GB2RWW,=GB2SAA,=GB2SAM,=GB2SAS,=GB2SB,=GB2SBG, - =GB2SHL/LH,=GB2SKG,=GB2SLH,=GB2SMM,=GB2SOH,=GB2SQN,=GB2SR,=GB2SSB,=GB2SUM,=GB2SWF,=GB2TDS,=GB2THL, - =GB2THL/LH,=GB2TNL,=GB2VCB,=GB2VEF,=GB2WAM,=GB2WBF,=GB2WG,=GB2WLS,=GB2YLS,=GB2ZE,=GB3ANG,=GB3GKR, - =GB3LER,=GB3LER/B,=GB3ORK,=GB3ORK/B,=GB3SWF,=GB3WOI,=GB4AAS,=GB4AST,=GB4BBR,=GB4BG,=GB4CGS, - =GB4CMA,=GB4DAS,=GB4DHX,=GB4DTD,=GB4DUK,=GB4EPC,=GB4FFS,=GB4GD,=GB4GDS,=GB4GS,=GB4IE,=GB4JCM, - =GB4JOA,=GB4JPJ,=GB4JYS,=GB4LER,=GB4MSE,=GB4NFE,=GB4PAS,=GB4SK,=GB4SKO,=GB4SLH,=GB4SMM,=GB4SRO, - =GB4SWF,=GB50FVS,=GB50GDS,=GB50GT,=GB50JS,=GB5AG,=GB5AST,=GB5BBS,=GB5BOH,=GB5C,=GB5CCC,=GB5CS, - =GB5CWL,=GB5DHL,=GB5DX,=GB5EMF,=GB5FHC,=GB5FLM,=GB5JS,=GB5LTH,=GB5RO,=GB5RO/LH,=GB5RR,=GB5SI, - =GB5TAM,=GB5TI,=GB60CRB,=GB6BEN,=GB6TAA,=GB6WW,=GB75CC,=GB75GD,=GB7SRW,=GB80GD,=GB8AYR,=GB8CSL, - =GB8FSG,=GB8RU,=GB8RUM,=GB90RSGB/11,=GB90RSGB/12,=GB90RSGB/21,=GB90RSGB/22,=GB90RSGB/23,=GB999SPC, - =GG100AGG,=GG100GA,=GG100GCC,=GG100GGP,=GG100GGR,=GG100GLD,=GG100SBG,=GM/DL5SE/LH,=GM0AZC/2K, - =GM0DHZ/P,=GM0GFL/P,=GM0KTO/2K,=GM0MUN/2K,=GM0SGB/M,=GM0SGB/P,=GM0WED/NHS,=GM0WUX/2K,=GM3JIJ/2K, - =GM3OFT/P,=GM3TKV/LH,=GM3TTC/P,=GM3TXF/P,=GM3USR/P,=GM3VLB/P,=GM3WFK/P,=GM3YDN/NHS,=GM4AFF/P, - =GM4CHX/2K,=GM4CHX/P,=GM4SQM/NHS,=GM4SQN/NHS,=GM4WSB/M,=GM4WSB/P,=GM4ZVD/P,=GM6JNJ/NHS,=GM6WRW/P, - =GO0AEG,=GO0AIR,=GO0BKC,=GO0DBW,=GO0DBW/M,=GO0DEQ,=GO0GMN,=GO0OGN,=GO0SYY,=GO0TUB,=GO0VRP,=GO0WEZ, - =GO1BAN,=GO1BKF,=GO1MQE,=GO1TBW,=GO2MP,=GO3HVK,=GO3JIJ,=GO3NIG,=GO3VTB,=GO4BLO,=GO4CAU,=GO4CFS, - =GO4CHX,=GO4CXM,=GO4DLG,=GO4EMX,=GO4FAM,=GO4FAU,=GO4JOJ,=GO4JPZ,=GO4JR,=GO4MOX,=GO4MSL,=GO4PRB, - =GO4UBJ,=GO4VTB,=GO4WZG,=GO4XQJ,=GO6JEP,=GO6JRX,=GO6KON,=GO6LYJ,=GO6VCV,=GO7GAX,=GO7GDE,=GO7HUD, - =GO7TUD,=GO7WEF,=GO8CBQ,=GO8MHU,=GO8SVB,=GO8TTD,=GQ0AEG,=GQ0AIR,=GQ0BKC,=GQ0BWR,=GQ0DBW,=GQ0DEQ, - =GQ0DUX,=GQ0FNE,=GQ0GMN,=GQ0HUO,=GQ0KWL,=GQ0MUN,=GQ0NTL,=GQ0OGN,=GQ0RNR,=GQ0TKV/P,=GQ0VRP,=GQ0WEZ, - =GQ0WNR,=GQ1BAN,=GQ1BKF,=GQ1MQE,=GQ1TBW,=GQ3JIJ,=GQ3JQJ,=GQ3NIG,=GQ3NTL,=GQ3TKP,=GQ3TKP/P,=GQ3TKV, - =GQ3TKV/P,=GQ3VTB,=GQ3WUX,=GQ3ZBE,=GQ4AGG,=GQ4BAE,=GQ4BLO,=GQ4CAU,=GQ4CFS,=GQ4CHX,=GQ4CHX/P, - =GQ4CXM,=GQ4DLG,=GQ4ELV,=GQ4EMX,=GQ4FAU,=GQ4JOJ,=GQ4JPZ,=GQ4JR,=GQ4MSL,=GQ4OBG,=GQ4PRB,=GQ4UIB, - =GQ4UPL,=GQ4VTB,=GQ4WZG,=GQ4XQJ,=GQ4YMM,=GQ6JEP,=GQ6JRX,=GQ6KON,=GQ6LYJ,=GQ7GAX,=GQ7GDE,=GQ7HUD, - =GQ7TUD,=GQ7UED,=GQ7WEF,=GQ8CBQ,=GQ8MHU,=GQ8PLR,=GQ8SVB,=GQ8TTD,=GR0AXY,=GR0CDV,=GR0DBW,=GR0EKM, - =GR0GMN,=GR0GRD,=GR0HPK,=GR0HPL,=GR0HUO,=GR0OGN,=GR0PNS,=GR0SYV,=GR0TTV,=GR0TUB,=GR0UKZ,=GR0VRP, - =GR0WED,=GR0WNR,=GR150NIB,=GR1BAN,=GR1MWK,=GR1TBW,=GR1ZIV,=GR3JFG,=GR3MZX,=GR3NIG,=GR3OFT,=GR3PPE, - =GR3PYU,=GR3VAL,=GR3VTB,=GR3WFJ,=GR3YXJ,=GR3ZDH,=GR4BDJ,=GR4BLO,=GR4CAU,=GR4CCN,=GR4CFS,=GR4CMI, - =GR4CXM,=GR4DLG,=GR4EMX,=GR4EOU,=GR4FQE,=GR4GIF,=GR4JOJ,=GR4NSZ,=GR4PRB,=GR4SQM,=GR4VTB,=GR4XAW, - =GR4XMD,=GR4XQJ,=GR4YMM,=GR6JEP,=GR6JNJ,=GR7AAJ,=GR7GAX,=GR7GDE,=GR7GMC,=GR7HHB,=GR7HUD,=GR7LNO, - =GR7NZI,=GR7TUD,=GR7USC,=GR7VSB,=GR8CBQ,=GR8KJO,=GR8KPH,=GR8MHU,=GR8OFQ,=GR8SVB,=GS4WAB/P,=GV0DBW, - =GV0GMN,=GV0GRD,=GV0LZE,=GV0OBX,=GV0OGN,=GV0SYV,=GV0VRP,=GV1BAN,=GV3EEW,=GV3JIJ,=GV3NHQ,=GV3NIG, - =GV3NKG,=GV3NNZ,=GV3PIP,=GV3ULP,=GV3VTB,=GV4BLO,=GV4EMX,=GV4HRJ,=GV4ILS,=GV4JOJ,=GV4KLN,=GV4LVW, - =GV4PRB,=GV4VTB,=GV4XQJ,=GV6KON,=GV7DHA,=GV7GDE,=GV7GMC,=GV8AVM,=GV8DPV,=GV8LYS,=MB18FIFA, - =MM/DH5JBR/P,=MM/DJ4OK/M,=MM/DJ8OK/M,=MM/DL5SE/LH,=MM/F5BLC/P,=MM/F5LMJ/P,=MM/HB9IAB/P, - =MM/KE5TF/P,=MM/N5ET/P,=MM/OK1FZM/P,=MM/W5ZE/P,=MM0BNN/LH,=MM0BQI/2K,=MM0BQN/2K,=MM0BYE/2K, - =MM0DFV/P,=MM0DHQ/NHS,=MM0LON/M,=MM0SHF/P,=MM0YHB/P,=MM0ZOL/LH,=MM3AWD/NHS,=MM3DDQ/NHS,=MM5PSL/P, - =MM5YLO/P,=MM7WAB/NHS,=MO0BFF,=MO0CWJ,=MO0CYR,=MO0DBC,=MO0DNX,=MO0FMF,=MO0GXQ,=MO0HZT,=MO0JST/P, - =MO0KJG,=MO0KSS,=MO0NFC,=MO0SGQ,=MO0SJT,=MO0TGB,=MO0TSG,=MO0WKC,=MO0XXW,=MO0ZBH,=MO1AWV,=MO1HMV, - =MO3BCA,=MO3BRR,=MO3GPL,=MO3OQR,=MO3TUP,=MO3UVL,=MO3YHA,=MO3YMU,=MO3ZRF,=MO5PSL,=MO6BJJ,=MO6CCS, - =MO6CHM,=MO6CRQ,=MO6CRQ/M,=MO6DGZ,=MO6HUT,=MO6KAU,=MO6KAU/M,=MO6KSJ,=MO6MCV,=MO6SRL,=MO6TEW, - =MQ0BNN/P,=MQ0BQM,=MQ0BRG,=MQ0CIN,=MQ0CXA,=MQ0CYR,=MQ0DNX,=MQ0DXD,=MQ0EQE,=MQ0FMF,=MQ0GXQ,=MQ0GYX, - =MQ0GYX/P,=MQ0KJG,=MQ0KSS,=MQ0LEN,=MQ0NFC,=MQ0NJC,=MQ0SJT,=MQ0TSG,=MQ0WKC,=MQ0XXW,=MQ0ZBH,=MQ1AWV, - =MQ1HMV,=MQ1JWF,=MQ3BCA,=MQ3BRR,=MQ3ERZ,=MQ3FET,=MQ3OVK,=MQ3SVK,=MQ3UIX,=MQ3UVL,=MQ3YHA,=MQ3YMU, - =MQ3ZRF,=MQ5PSL,=MQ6AQM,=MQ6BJJ,=MQ6CCS,=MQ6CHM,=MQ6CRQ,=MQ6DGZ,=MQ6HUT,=MQ6KAJ,=MQ6KAU,=MQ6KSJ, - =MQ6KUA,=MQ6LMP,=MQ6MCV,=MR0BQN,=MR0CWB,=MR0CXA,=MR0DHQ,=MR0DWF,=MR0DXD,=MR0DXH,=MR0EPC,=MR0EQE, - =MR0FME,=MR0FMF,=MR0GCF,=MR0GGG,=MR0GGI,=MR0GOR,=MR0HAI,=MR0HVU,=MR0OIL,=MR0POD,=MR0PSL,=MR0RDM, - =MR0SGQ,=MR0SJT,=MR0TAI,=MR0TSG,=MR0TSS,=MR0VTV,=MR0WEI,=MR0XAF,=MR0XXP,=MR0XXW,=MR1AWV,=MR1HMV, - =MR1JWF,=MR1VTB,=MR3AWA,=MR3AWD,=MR3BRR,=MR3PTS,=MR3UIX,=MR3UVL,=MR3WJZ,=MR3XGP,=MR3YHA,=MR3YPH, - =MR3ZCS,=MR5PSL,=MR6AHB,=MR6ARN,=MR6ATU,=MR6CHM,=MR6CTH,=MR6CTL,=MR6HFC,=MR6MCV,=MR6RLL,=MR6SSI, - =MR6TMS,=MV0DXH,=MV0FME,=MV0FMF,=MV0GHM,=MV0HAR,=MV0LGS,=MV0NFC,=MV0NJS,=MV0SGQ,=MV0SJT,=MV0XXW, - =MV1VTB,=MV3BRR,=MV3CVB,=MV3YHA,=MV3YMU,=MV5PSL,=MV6BJJ,=MV6KSJ,=MV6NRQ; + =GB0CHL,=GB0CLH,=GB0CML,=GB0CNL,=GB0CSL,=GB0CWF,=GB0CWS,=GB0DAM,=GB0DAW,=GB0DBS,=GB0DHL,=GB0DPK, + =GB0EPC,=GB0FFS,=GB0FSG,=GB0GDS,=GB0GDS/J,=GB0GGR,=GB0GRN,=GB0GTD,=GB0HHW,=GB0HLD,=GB0JOG,=GB0KEY, + =GB0KGS,=GB0KKS,=GB0KLT,=GB0LCS,=GB0LCW,=GB0LTM,=GB0MLH,=GB0MLM,=GB0MOD,=GB0MOG,=GB0MOL,=GB0MSL, + =GB0MUL,=GB0NGG,=GB0NHL,=GB0NHL/LH,=GB0NHS,=GB0NRL,=GB0OYT,=GB0PLS,=GB0POS,=GB0PPE,=GB0PSW, + =GB0RGC,=GB0SAA,=GB0SBC,=GB0SCD,=GB0SFM,=GB0SHP,=GB0SI,=GB0SK,=GB0SKG,=GB0SKY,=GB0SLB,=GB0SRC, + =GB0SSB,=GB0TH,=GB0THL,=GB0TNL,=GB0TTS,=GB0WRH,=GB100MAS,=GB100MUC,=GB100ZET,=GB10SP,=GB150NRL, + =GB18FIFA,=GB19CGM,=GB19CS,=GB1AJ,=GB1ASC,=GB1ASH,=GB1BD,=GB1BOL,=GB1CFL,=GB1COR,=GB1DHL,=GB1FB, + =GB1FRS,=GB1FVS,=GB1FVT,=GB1GEO,=GB1GND,=GB1HRS,=GB1KGG,=GB1KLD,=GB1LAY,=GB1LGG,=GB1LL,=GB1MAY, + =GB1NHL,=GB1OL,=GB1OL/LH,=GB1PC,=GB1RB,=GB1RHU,=GB1RST,=GB1SLH,=GB1TAY,=GB1WLG,=GB250RB,=GB2AES, + =GB2AGG,=GB2AL,=GB2AMS,=GB2AST,=GB2ATC,=GB2AYR,=GB2BAJ,=GB2BHM,=GB2BHS,=GB2BMJ,=GB2BOL,=GB2CAS, + =GB2CHC,=GB2CM,=GB2CMA,=GB2CVL,=GB2CWR,=GB2DAS,=GB2DAW,=GB2DHS,=GB2DL,=GB2DRC,=GB2DT,=GB2DTM, + =GB2ELH,=GB2ELH/LH,=GB2EPC,=GB2FBM,=GB2FEA,=GB2FSM,=GB2FSW,=GB2GEO,=GB2GKR,=GB2GNL,=GB2GNL/LH, + =GB2GTM,=GB2GVC,=GB2HLB,=GB2HMC,=GB2HRH,=GB2IGB,=GB2IGS,=GB2IMG,=GB2IMM,=GB2INV,=GB2IOT,=GB2JCM, + =GB2KDR,=GB2KGB,=GB2KW,=GB2LBN,=GB2LBN/LH,=GB2LCL,=GB2LCP,=GB2LCT,=GB2LDG,=GB2LG,=GB2LGB,=GB2LHI, + =GB2LK,=GB2LK/LH,=GB2LMG,=GB2LP,=GB2LS,=GB2LS/LH,=GB2LSS,=GB2LT,=GB2LT/LH,=GB2LXX,=GB2M,=GB2MAS, + =GB2MBB,=GB2MDG,=GB2MN,=GB2MOF,=GB2MSL,=GB2MUC,=GB2MUL,=GB2NBC,=GB2NEF,=GB2NL,=GB2NMM,=GB2OL, + =GB2OWM,=GB2PBF,=GB2PG,=GB2QM,=GB2RB,=GB2RDR,=GB2ROC,=GB2RRL,=GB2RWW,=GB2SAA,=GB2SAM,=GB2SAS, + =GB2SB,=GB2SBG,=GB2SHL/LH,=GB2SKG,=GB2SLH,=GB2SMM,=GB2SOH,=GB2SQN,=GB2SR,=GB2SSB,=GB2SUM,=GB2SWF, + =GB2TDS,=GB2THL,=GB2THL/LH,=GB2TNL,=GB2VCB,=GB2VEF,=GB2WAM,=GB2WBF,=GB2WG,=GB2WLS,=GB2YLS,=GB2ZE, + =GB3ANG,=GB3GKR,=GB3LER,=GB3LER/B,=GB3ORK,=GB3ORK/B,=GB3SWF,=GB3WOI,=GB4AAS,=GB4AST,=GB4BBR, + =GB4BG,=GB4CGS,=GB4CMA,=GB4DAS,=GB4DHX,=GB4DTD,=GB4DUK,=GB4EPC,=GB4FFS,=GB4GD,=GB4GDS,=GB4GS, + =GB4IE,=GB4JCM,=GB4JOA,=GB4JPJ,=GB4JYS,=GB4LER,=GB4MSE,=GB4NFE,=GB4PAS,=GB4SK,=GB4SKO,=GB4SLH, + =GB4SMM,=GB4SRO,=GB4SWF,=GB50FVS,=GB50GDS,=GB50GT,=GB50JS,=GB5AG,=GB5AST,=GB5BBS,=GB5BOH,=GB5C, + =GB5CCC,=GB5CS,=GB5CWL,=GB5DHL,=GB5DX,=GB5EMF,=GB5FHC,=GB5FLM,=GB5JS,=GB5LTH,=GB5RO,=GB5RO/LH, + =GB5RR,=GB5SI,=GB5TAM,=GB5TI,=GB60CRB,=GB6BEN,=GB6TAA,=GB6WW,=GB75CC,=GB75GD,=GB7SRW,=GB80GD, + =GB8AYR,=GB8CSL,=GB8FSG,=GB8RU,=GB8RUM,=GB90RSGB/11,=GB90RSGB/12,=GB90RSGB/21,=GB90RSGB/22, + =GB90RSGB/23,=GB999SPC,=GB9UL,=GG100AGG,=GG100GA,=GG100GCC,=GG100GGP,=GG100GGR,=GG100GLD, + =GG100SBG,=GM/DL5SE/LH,=GM0AZC/2K,=GM0DHZ/P,=GM0GFL/P,=GM0KTO/2K,=GM0MUN/2K,=GM0SGB/M,=GM0SGB/P, + =GM0WED/NHS,=GM0WUX/2K,=GM3JIJ/2K,=GM3OFT/P,=GM3TKV/LH,=GM3TTC/P,=GM3TXF/P,=GM3USR/P,=GM3VLB/P, + =GM3WFK/P,=GM3YDN/NHS,=GM4AFF/P,=GM4CHX/2K,=GM4CHX/P,=GM4SQM/NHS,=GM4SQN/NHS,=GM4WSB/M,=GM4WSB/P, + =GM4ZVD/P,=GM6JNJ/NHS,=GM6WRW/P,=GO0AEG,=GO0AIR,=GO0BKC,=GO0DBW,=GO0DBW/M,=GO0DEQ,=GO0GMN,=GO0OGN, + =GO0SYY,=GO0TUB,=GO0VRP,=GO0WEZ,=GO1BAN,=GO1BKF,=GO1MQE,=GO1TBW,=GO2MP,=GO3HVK,=GO3JIJ,=GO3NIG, + =GO3VTB,=GO4BLO,=GO4CAU,=GO4CFS,=GO4CHX,=GO4CXM,=GO4DLG,=GO4EMX,=GO4FAM,=GO4FAU,=GO4JOJ,=GO4JPZ, + =GO4JR,=GO4MOX,=GO4MSL,=GO4PRB,=GO4UBJ,=GO4VTB,=GO4WZG,=GO4XQJ,=GO6JEP,=GO6JRX,=GO6KON,=GO6LYJ, + =GO6VCV,=GO7GAX,=GO7GDE,=GO7HUD,=GO7TUD,=GO7WEF,=GO8CBQ,=GO8MHU,=GO8SVB,=GO8TTD,=GQ0AEG,=GQ0AIR, + =GQ0BKC,=GQ0BWR,=GQ0DBW,=GQ0DEQ,=GQ0DUX,=GQ0FNE,=GQ0GMN,=GQ0HUO,=GQ0KWL,=GQ0MUN,=GQ0NTL,=GQ0OGN, + =GQ0RNR,=GQ0TKV/P,=GQ0VRP,=GQ0WEZ,=GQ0WNR,=GQ1BAN,=GQ1BKF,=GQ1MQE,=GQ1TBW,=GQ3JIJ,=GQ3JQJ,=GQ3NIG, + =GQ3NTL,=GQ3TKP,=GQ3TKP/P,=GQ3TKV,=GQ3TKV/P,=GQ3VTB,=GQ3WUX,=GQ3ZBE,=GQ4AGG,=GQ4BAE,=GQ4BLO, + =GQ4CAU,=GQ4CFS,=GQ4CHX,=GQ4CHX/P,=GQ4CXM,=GQ4DLG,=GQ4ELV,=GQ4EMX,=GQ4FAU,=GQ4JOJ,=GQ4JPZ,=GQ4JR, + =GQ4MSL,=GQ4OBG,=GQ4PRB,=GQ4UIB,=GQ4UPL,=GQ4VTB,=GQ4WZG,=GQ4XQJ,=GQ4YMM,=GQ6JEP,=GQ6JRX,=GQ6KON, + =GQ6LYJ,=GQ7GAX,=GQ7GDE,=GQ7HUD,=GQ7TUD,=GQ7UED,=GQ7WEF,=GQ8CBQ,=GQ8MHU,=GQ8PLR,=GQ8SVB,=GQ8TTD, + =GR0AXY,=GR0CDV,=GR0DBW,=GR0EKM,=GR0GMN,=GR0GRD,=GR0HPK,=GR0HPL,=GR0HUO,=GR0OGN,=GR0PNS,=GR0SYV, + =GR0TTV,=GR0TUB,=GR0UKZ,=GR0VRP,=GR0WED,=GR0WNR,=GR150NIB,=GR1BAN,=GR1MWK,=GR1TBW,=GR1ZIV,=GR3JFG, + =GR3MZX,=GR3NIG,=GR3OFT,=GR3PPE,=GR3PYU,=GR3VAL,=GR3VTB,=GR3WFJ,=GR3YXJ,=GR3ZDH,=GR4BDJ,=GR4BLO, + =GR4CAU,=GR4CCN,=GR4CFS,=GR4CMI,=GR4CXM,=GR4DLG,=GR4EMX,=GR4EOU,=GR4FQE,=GR4GIF,=GR4JOJ,=GR4NSZ, + =GR4PRB,=GR4SQM,=GR4VTB,=GR4XAW,=GR4XMD,=GR4XQJ,=GR4YMM,=GR6JEP,=GR6JNJ,=GR7AAJ,=GR7GAX,=GR7GDE, + =GR7GMC,=GR7HHB,=GR7HUD,=GR7LNO,=GR7NZI,=GR7TUD,=GR7USC,=GR7VSB,=GR8CBQ,=GR8KJO,=GR8KPH,=GR8MHU, + =GR8OFQ,=GR8SVB,=GS4WAB/P,=GV0DBW,=GV0GMN,=GV0GRD,=GV0LZE,=GV0OBX,=GV0OGN,=GV0SYV,=GV0VRP,=GV1BAN, + =GV3EEW,=GV3JIJ,=GV3NHQ,=GV3NIG,=GV3NKG,=GV3NNZ,=GV3PIP,=GV3ULP,=GV3VTB,=GV4BLO,=GV4EMX,=GV4HRJ, + =GV4ILS,=GV4JOJ,=GV4KLN,=GV4LVW,=GV4PRB,=GV4VTB,=GV4XQJ,=GV6KON,=GV7DHA,=GV7GDE,=GV7GMC,=GV8AVM, + =GV8DPV,=GV8LYS,=MB18FIFA,=MM/DH5JBR/P,=MM/DJ4OK/M,=MM/DJ8OK/M,=MM/DL5SE/LH,=MM/F5BLC/P, + =MM/F5LMJ/P,=MM/HB9IAB/P,=MM/KE5TF/P,=MM/N5ET/P,=MM/OK1FZM/P,=MM/W5ZE/P,=MM0BNN/LH,=MM0BQI/2K, + =MM0BQN/2K,=MM0BYE/2K,=MM0DFV/P,=MM0DHQ/NHS,=MM0LON/M,=MM0SHF/P,=MM0YHB/P,=MM0ZOL/LH,=MM3AWD/NHS, + =MM3DDQ/NHS,=MM5PSL/P,=MM5YLO/P,=MM7WAB/NHS,=MO0BFF,=MO0CWJ,=MO0CYR,=MO0DBC,=MO0DNX,=MO0FMF, + =MO0GXQ,=MO0HZT,=MO0JST/P,=MO0KJG,=MO0KSS,=MO0NFC,=MO0SGQ,=MO0SJT,=MO0TGB,=MO0TSG,=MO0WKC,=MO0XXW, + =MO0ZBH,=MO1AWV,=MO1HMV,=MO3BCA,=MO3BRR,=MO3GPL,=MO3OQR,=MO3TUP,=MO3UVL,=MO3YHA,=MO3YMU,=MO3ZCB/P, + =MO3ZRF,=MO5PSL,=MO6BJJ,=MO6CCS,=MO6CHM,=MO6CRQ,=MO6CRQ/M,=MO6DGZ,=MO6HUT,=MO6KAU,=MO6KAU/M, + =MO6KSJ,=MO6MCV,=MO6SRL,=MO6TEW,=MQ0BNN/P,=MQ0BQM,=MQ0BRG,=MQ0CIN,=MQ0CXA,=MQ0CYR,=MQ0DNX,=MQ0DXD, + =MQ0EQE,=MQ0FMF,=MQ0GXQ,=MQ0GYX,=MQ0GYX/P,=MQ0KJG,=MQ0KSS,=MQ0LEN,=MQ0NFC,=MQ0NJC,=MQ0SJT,=MQ0TSG, + =MQ0WKC,=MQ0XXW,=MQ0ZBH,=MQ1AWV,=MQ1HMV,=MQ1JWF,=MQ3BCA,=MQ3BRR,=MQ3ERZ,=MQ3FET,=MQ3OVK,=MQ3SVK, + =MQ3UIX,=MQ3UVL,=MQ3YHA,=MQ3YMU,=MQ3ZRF,=MQ5PSL,=MQ6AQM,=MQ6BJJ,=MQ6CCS,=MQ6CHM,=MQ6CRQ,=MQ6DGZ, + =MQ6HUT,=MQ6KAJ,=MQ6KAU,=MQ6KSJ,=MQ6KUA,=MQ6LMP,=MQ6MCV,=MR0BQN,=MR0CWB,=MR0CXA,=MR0DHQ,=MR0DWF, + =MR0DXD,=MR0DXH,=MR0EPC,=MR0EQE,=MR0FME,=MR0FMF,=MR0GCF,=MR0GGG,=MR0GGI,=MR0GOR,=MR0HAI,=MR0HVU, + =MR0OIL,=MR0POD,=MR0PSL,=MR0RDM,=MR0SGQ,=MR0SJT,=MR0TAI,=MR0TSG,=MR0TSS,=MR0VTV,=MR0WEI,=MR0XAF, + =MR0XXP,=MR0XXW,=MR1AWV,=MR1HMV,=MR1JWF,=MR1VTB,=MR3AWA,=MR3AWD,=MR3BRR,=MR3PTS,=MR3UIX,=MR3UVL, + =MR3WJZ,=MR3XGP,=MR3YHA,=MR3YPH,=MR3ZCS,=MR5PSL,=MR6AHB,=MR6ARN,=MR6ATU,=MR6CHM,=MR6CTH,=MR6CTL, + =MR6HFC,=MR6MCV,=MR6RLL,=MR6SSI,=MR6TMS,=MV0DXH,=MV0FME,=MV0FMF,=MV0GHM,=MV0HAR,=MV0LGS,=MV0NFC, + =MV0NJS,=MV0SGQ,=MV0SJT,=MV0XXW,=MV1VTB,=MV3BRR,=MV3CVB,=MV3YHA,=MV3YMU,=MV5PSL,=MV6BJJ,=MV6KSJ, + =MV6NRQ; Guernsey: 14: 27: EU: 49.45: 2.58: 0.0: GU: 2U,GP,GU,MP,MU,=2O0FER,=2Q0ARE,=2Q0FER,=2U0ARE/2K,=GB0HAM,=GB0SRK,=GB0U,=GB19CG,=GB2AFG,=GB2FG, =GB2GU,=GB2JTA,=GB4SGG,=GB50GSY,=GO8FBO,=GQ8FBO,=GU0DXX/2K,=GU4GG/2K,=MO0FAL,=MO0KWD,=MQ0FAL, @@ -967,63 +969,63 @@ Wales: 14: 27: EU: 52.28: 3.73: 0.0: GW: =GB0BRE,=GB0BTB,=GB0BVL,=GB0BYL,=GB0CAC,=GB0CCE,=GB0CEW,=GB0CFD,=GB0CGG,=GB0CLC,=GB0CQD,=GB0CSA, =GB0CSR,=GB0CTK,=GB0CVA,=GB0DFD,=GB0DMT,=GB0DS,=GB0DVP,=GB0EUL,=GB0FHD,=GB0FHI,=GB0GDD,=GB0GIG, =GB0GIW,=GB0GLV,=GB0GMD,=GB0GRM,=GB0HEL,=GB0HGC,=GB0HLT,=GB0HMM,=GB0HMT,=GB0KF,=GB0L,=GB0LBG, - =GB0LM,=GB0LVF,=GB0MFH,=GB0MIW,=GB0ML,=GB0MPA,=GB0MSB,=GB0MUU,=GB0MWL,=GB0NAW,=GB0NEW,=GB0NG, - =GB0NLC,=GB0PBR,=GB0PEM,=GB0PGG,=GB0PLB,=GB0PLL,=GB0PSG,=GB0RME,=GB0ROC,=GB0RPO,=GB0RS,=GB0RSC, - =GB0RSF,=GB0RWM,=GB0SCB,=GB0SDD,=GB0SGC,=GB0SH,=GB0SH/LH,=GB0SOA,=GB0SPE,=GB0SPS,=GB0TD,=GB0TL, - =GB0TPR,=GB0TS,=GB0TTT,=GB0VCA,=GB0VEE,=GB0VK,=GB0WHH,=GB0WHR,=GB0WIW,=GB0WUL,=GB0YG,=GB100AB, - =GB100BP,=GB100CSW,=GB100GGC,=GB100GGM,=GB100HD,=GB100LB,=GB100LSG,=GB100MCV,=GB100TMD,=GB10SOTA, - =GB19CGW,=GB19CW,=GB19SG,=GB1AD,=GB1ATC,=GB1BAF,=GB1BGS,=GB1BPL,=GB1BSW,=GB1BW,=GB1CCC,=GB1CDS, - =GB1CPG,=GB1DS,=GB1FHS,=GB1HAS,=GB1HTW,=GB1JC,=GB1KEY,=GB1LSG,=GB1LW,=GB1OOC,=GB1PCA,=GB1PCS, - =GB1PD,=GB1PGW,=GB1PJ,=GB1PLL,=GB1SDD,=GB1SEA,=GB1SL,=GB1SPN,=GB1SSL,=GB1TDS,=GB1WAA,=GB1WIW, - =GB1WSM,=GB2000SET,=GB2003SET,=GB200HNT,=GB200TT,=GB250TMB,=GB250TT,=GB2ADU,=GB2BEF,=GB2BGG, - =GB2BOM,=GB2BOW,=GB2BPM,=GB2BYF,=GB2CC,=GB2CI,=GB2COB,=GB2CR,=GB2CRS,=GB2DWR,=GB2EI,=GB2FC, - =GB2FLB,=GB2GGM,=GB2GLS,=GB2GOL,=GB2GSG,=GB2GVA,=GB2HDG,=GB2HMM,=GB2IMD,=GB2LBR,=GB2LM,=GB2LNP, - =GB2LSA,=GB2LSA/LH,=GB2LSH,=GB2MD,=GB2MGY,=GB2MIL,=GB2MLM,=GB2MMC,=GB2MOP,=GB2NF,=GB2NPH,=GB2NPL, - =GB2OOA,=GB2ORM,=GB2PRC,=GB2RFS,=GB2RSG,=GB2RTB,=GB2SAC,=GB2SCC,=GB2SCD,=GB2SCP,=GB2SFM,=GB2SIP, - =GB2SLA,=GB2TD,=GB2TD/LH,=GB2TTA,=GB2VK,=GB2WAA,=GB2WHO,=GB2WNA,=GB2WSF,=GB2WT,=GB3HLS,=GB3LMW, - =GB4ADU,=GB4AFS,=GB4AOS,=GB4BB,=GB4BIT,=GB4BOJ,=GB4BPL,=GB4BPL/LH,=GB4BPL/P,=GB4BPR,=GB4BRS/P, - =GB4BSG,=GB4CI,=GB4CTC,=GB4EUL,=GB4FAA,=GB4GM,=GB4GSS,=GB4HFH,=GB4HI,=GB4HLB,=GB4HMD,=GB4HMM, - =GB4LRG,=GB4MBC,=GB4MD,=GB4MDH,=GB4MDI,=GB4MJS,=GB4MPI,=GB4MUU,=GB4NDG,=GB4NPL,=GB4NTB,=GB4ON, - =GB4OST,=GB4PAT,=GB4PCS,=GB4PD,=GB4POW,=GB4RC,=GB4RME,=GB4RSL,=GB4SDD,=GB4SLC,=GB4SSP,=GB4SUB, - =GB4TMS,=GB4UKG,=GB4VJD,=GB4WT,=GB4WWI,=GB4XT,=GB50ABS,=GB50EVS,=GB50RSC,=GB50SGP,=GB5AC,=GB5FI, - =GB5GEO,=GB5MD,=GB5ONG,=GB5PSJ,=GB5SIP,=GB5VEP,=GB5WT,=GB60DITP,=GB60ER,=GB60PW,=GB60SPS,=GB60VLY, - =GB65BTF,=GB6AC,=GB6BLB,=GB6CRI,=GB6GGM,=GB6OQA,=GB6ORA,=GB6PLB,=GB6RNLI,=GB6TS,=GB6TSG,=GB6WT, - =GB6WWT,=GB70BTF,=GB750CC,=GB75ATC,=GB75BB,=GB8CCC,=GB8HI,=GB8MD,=GB8MG,=GB8ND,=GB8OAE,=GB8OQE, - =GB8RAF,=GB8WOW,=GB8WT,=GB90RSGB/62,=GB90RSGB/72,=GB9GGM,=GC4BRS/LH,=GG100ACD,=GG100ANG,=GG100CPG, - =GG100RGG,=GG100SG,=GO0DIV,=GO0EZQ,=GO0EZY,=GO0JEQ,=GO0MNP,=GO0MNP/P,=GO0NPL,=GO0PLB,=GO0PNI, - =GO0PUP,=GO0VKW,=GO0VML,=GO0VSW,=GO1DPL,=GO1IOT,=GO1JFV,=GO1MVL,=GO1PKM,=GO3PLB,=GO3UOF,=GO3UOF/M, - =GO3XJQ,=GO4BKG,=GO4BLE,=GO4CQZ,=GO4DTQ,=GO4GTI,=GO4JKR,=GO4JUN,=GO4JUW,=GO4MVA,=GO4NOO,=GO4OKT, - =GO4SUE,=GO4SUE/P,=GO4TNZ,=GO4WXM,=GO6IMS,=GO6NKG,=GO6UKO,=GO7DWR,=GO7SBO,=GO7VJK,=GO7VQD,=GO8BQK, - =GO8IQC,=GO8JOY,=GO8OKR,=GQ0ANA,=GQ0DIV,=GQ0JEQ,=GQ0JRF,=GQ0MNO,=GQ0MNP,=GQ0NPL,=GQ0PUP,=GQ0RYT, - =GQ0SLM,=GQ0TQM,=GQ0VKW,=GQ0VML,=GQ0VSW,=GQ0WVL,=GQ1FKY,=GQ1FOA/P,=GQ1IOT,=GQ1JFV,=GQ1MVL,=GQ1NRS, - =GQ1WRV,=GQ1ZKN,=GQ3IRK,=GQ3PLB,=GQ3SB,=GQ3UOF,=GQ3VEN,=GQ3VKL,=GQ3WSU,=GQ3XJA,=GQ3XJQ,=GQ4BKG, - =GQ4BLE,=GQ4CQZ,=GQ4EZW,=GQ4GSH,=GQ4GTI,=GQ4IIL,=GQ4JKR,=GQ4JUN,=GQ4JUW,=GQ4LZP,=GQ4MVA,=GQ4NOO, - =GQ4OKT,=GQ4SUE,=GQ4VNS,=GQ4VZJ,=GQ4WXM,=GQ4WXM/P,=GQ6IMS,=GQ6ITJ,=GQ6NKG,=GQ6UKO,=GQ7BQK,=GQ7DWR, - =GQ7FBV,=GQ7SBO,=GQ7UNJ,=GQ7UNV,=GQ7VJK,=GQ7VQD,=GQ8BQK,=GQ8IQC,=GQ8JOY,=GQ8OKR,=GR0ANA,=GR0DIV, - =GR0DSP,=GR0HUS,=GR0JEQ,=GR0MYY,=GR0NPL,=GR0PSV,=GR0RYT,=GR0SYN,=GR0TKX,=GR0VKW,=GR0WGK,=GR1FJI, - =GR1HNG,=GR1LFX,=GR1LHV,=GR1MCD,=GR1SGG,=GR1WVY,=GR1YQM,=GR3SB,=GR3SFC,=GR3TKH,=GR3UOF,=GR3XJQ, - =GR4BKG,=GR4BLE,=GR4CQZ,=GR4GNY,=GR4GTI,=GR4HZA,=GR4JUN,=GR4JUW,=GR4OGO,=GR4SUE,=GR4VSS/P,=GR4XXJ, - =GR4ZOM,=GR5PH,=GR6NKG,=GR6SIX,=GR6STK,=GR6UKO,=GR6ZDH,=GR7AAV,=GR7HOC,=GR7NAU,=GR7TKZ,=GR7UNV, - =GR7VQD,=GR8BQK,=GR8IQC,=GR8OGI,=GR8TRO,=GV0ANA,=GV0DCK,=GV0DIV,=GV0EME,=GV0FRE,=GV0MNP,=GV0NPL, - =GV1FKY,=GV1IOT,=GV1JFV,=GV1NBW,=GV1YQM,=GV3ATZ,=GV3TJE/P,=GV3UOF,=GV3WEZ,=GV3XJQ,=GV4BKG,=GV4BRS, - =GV4CQZ,=GV4JKR,=GV4JQP,=GV4NQJ,=GV4PUC,=GV6BRC,=GV6JPC,=GV6NKG,=GV7UNV,=GV7VJK,=GV8IQC, - =GW0AWT/2K,=GW0GEI/2K,=GW0GIH/2K,=GW0MNO/2K,=GW0VSW/2K,=GW3JXN/2K,=GW3KJN/2K,=GW4IIL/2K, - =GW4VHP/2K,=M2000Y/97A,=MO0AQZ,=MO0ATI,=MO0COE,=MO0CVT,=MO0EQL,=MO0EZQ,=MO0GXE,=MO0HCX,=MO0IBZ, - =MO0IML,=MO0KLW,=MO0LDJ,=MO0LLK,=MO0LUK,=MO0LZZ,=MO0MAU,=MO0MUM,=MO0MWZ,=MO0OWW,=MO0SGD,=MO0SGR, - =MO0TBB,=MO0TMI,=MO0TTU,=MO0UPH,=MO0VVO,=MO1CFA,=MO1CFN,=MO3DAO,=MO3DQB,=MO3GKI,=MO3OJA,=MO3PUU, - =MO3RNI,=MO3UEZ,=MO3WPH,=MO3YVO,=MO3ZCO,=MO6DVP,=MO6GWK,=MO6GWR,=MO6GWR/P,=MO6MAU,=MO6PAM,=MO6PLC, - =MO6PUT,=MO6SEF,=MO6TBD,=MO6TBP,=MO6WLB,=MQ0AQZ,=MQ0ATI,=MQ0AWW,=MQ0CDO,=MQ0CNA,=MQ0CVT,=MQ0DHF, - =MQ0EQL,=MQ0GXE,=MQ0GYV,=MQ0HCX,=MQ0IBZ,=MQ0IML,=MQ0LDJ,=MQ0LLK,=MQ0LUK,=MQ0LZZ,=MQ0MAU,=MQ0MUM, - =MQ0MWA,=MQ0MWZ,=MQ0OWW,=MQ0PAD,=MQ0RHD,=MQ0SGD,=MQ0SGR,=MQ0TBB,=MQ0TMI,=MQ0TTU,=MQ0UPH,=MQ0UPH/P, - =MQ0VVO,=MQ0XMC/P,=MQ1CFA,=MQ1CFN,=MQ1EYO/P,=MQ1LCR,=MQ3DAO,=MQ3EPA,=MQ3GKI,=MQ3JAT,=MQ3NDB, - =MQ3OJA,=MQ3USK,=MQ3WPH,=MQ3ZCB/P,=MQ5AND,=MQ5EPA,=MQ5VZW,=MQ6DVP,=MQ6KLL,=MQ6MAU,=MQ6PAM,=MQ6PLC, - =MQ6RHD,=MQ6SEF,=MQ6TBD,=MQ6TBP,=MR0AQZ,=MR0BXJ,=MR0CVT,=MR0GUK,=MR0GXE,=MR0IDX,=MR0JGE,=MR0LAO, - =MR0LDJ,=MR0MAU,=MR0RLD,=MR0TTR,=MR0TTU,=MR0YAD,=MR0ZAP,=MR1CFN,=MR1EAA,=MR1LCR,=MR1MAJ/P,=MR1MDH, - =MR3AVB,=MR3AVC,=MR3CBF,=MR3NYR,=MR3OBL,=MR3SET/P,=MR3UFN,=MR3XZP,=MR3YKL,=MR3YLO,=MR3YVO, - =MR3ZCB/P,=MR5HOC,=MR6ADZ,=MR6KDA,=MR6VHF,=MR6YDP,=MV0AEL,=MV0BLM,=MV0EDX,=MV0GWT,=MV0GXE, - =MV0HGY/P,=MV0IML,=MV0LLK,=MV0PJJ,=MV0PJJ/P,=MV0RRD,=MV0SGD,=MV0SGR,=MV0TBB,=MV0TDQ,=MV0UAA, - =MV0USK,=MV0VRQ,=MV0WYN,=MV1CFA,=MV1CFN,=MV1EYP/P,=MV3RNI,=MV6CQN,=MV6GWR,=MV6GWR/P,=MV6URC, - =MV6ZOL,=MW0CND/2K,=MW0DHF/LH,=MW5AAM/2K,=MW5GOL/LH; + =GB0LM,=GB0LVF,=GB0MFH,=GB0MIW,=GB0ML,=GB0MPA,=GB0MSB,=GB0MUU,=GB0MWL,=GB0MZX,=GB0NAW,=GB0NEW, + =GB0NG,=GB0NLC,=GB0PBR,=GB0PEM,=GB0PGG,=GB0PLB,=GB0PLL,=GB0PSG,=GB0RME,=GB0ROC,=GB0RPO,=GB0RS, + =GB0RSC,=GB0RSF,=GB0RWM,=GB0SCB,=GB0SDD,=GB0SGC,=GB0SH,=GB0SH/LH,=GB0SOA,=GB0SPE,=GB0SPS,=GB0TD, + =GB0TL,=GB0TPR,=GB0TS,=GB0TTT,=GB0VCA,=GB0VEE,=GB0VK,=GB0WHH,=GB0WHR,=GB0WIW,=GB0WMZ,=GB0WUL, + =GB0YG,=GB100AB,=GB100BP,=GB100CSW,=GB100GGC,=GB100GGM,=GB100HD,=GB100LB,=GB100LSG,=GB100MCV, + =GB100RS,=GB100TMD,=GB10SOTA,=GB19CGW,=GB19CW,=GB19SG,=GB1AD,=GB1ATC,=GB1BAF,=GB1BGS,=GB1BPL, + =GB1BSW,=GB1BW,=GB1CCC,=GB1CDS,=GB1CPG,=GB1DS,=GB1FHS,=GB1HAS,=GB1HTW,=GB1JC,=GB1KEY,=GB1LSG, + =GB1LW,=GB1OOC,=GB1PCA,=GB1PCS,=GB1PD,=GB1PGW,=GB1PJ,=GB1PLL,=GB1SDD,=GB1SEA,=GB1SL,=GB1SPN, + =GB1SSL,=GB1STC,=GB1TDS,=GB1WAA,=GB1WIW,=GB1WSM,=GB2000SET,=GB2003SET,=GB200HNT,=GB200TT, + =GB250TMB,=GB250TT,=GB2ADU,=GB2BEF,=GB2BGG,=GB2BOM,=GB2BOW,=GB2BPM,=GB2BYF,=GB2CC,=GB2CI,=GB2COB, + =GB2CR,=GB2CRS,=GB2DWR,=GB2EI,=GB2FC,=GB2FLB,=GB2GGM,=GB2GLS,=GB2GOL,=GB2GSG,=GB2GVA,=GB2HDG, + =GB2HMM,=GB2IMD,=GB2LBR,=GB2LM,=GB2LNP,=GB2LSA,=GB2LSA/LH,=GB2LSH,=GB2MD,=GB2MGY,=GB2MIL,=GB2MLM, + =GB2MMC,=GB2MOP,=GB2NF,=GB2NPH,=GB2NPL,=GB2OOA,=GB2ORM,=GB2PRC,=GB2RFS,=GB2RSG,=GB2RTB,=GB2SAC, + =GB2SCC,=GB2SCD,=GB2SCP,=GB2SFM,=GB2SIP,=GB2SLA,=GB2TD,=GB2TD/LH,=GB2TTA,=GB2VK,=GB2WAA,=GB2WHO, + =GB2WIW,=GB2WNA,=GB2WSF,=GB2WT,=GB3HLS,=GB3LMW,=GB4ADU,=GB4AFS,=GB4AOS,=GB4BB,=GB4BIT,=GB4BOJ, + =GB4BPL,=GB4BPL/LH,=GB4BPL/P,=GB4BPR,=GB4BRS/P,=GB4BSG,=GB4CI,=GB4CTC,=GB4EUL,=GB4FAA,=GB4GM, + =GB4GSS,=GB4HFH,=GB4HI,=GB4HLB,=GB4HMD,=GB4HMM,=GB4LRG,=GB4MBC,=GB4MD,=GB4MDH,=GB4MDI,=GB4MJS, + =GB4MPI,=GB4MUU,=GB4NDG,=GB4NPL,=GB4NTB,=GB4ON,=GB4OST,=GB4PAT,=GB4PCS,=GB4PD,=GB4POW,=GB4RC, + =GB4RME,=GB4RSL,=GB4SDD,=GB4SLC,=GB4SSP,=GB4SUB,=GB4TMS,=GB4UKG,=GB4VJD,=GB4WT,=GB4WWI,=GB4XT, + =GB50ABS,=GB50EVS,=GB50RSC,=GB50SGP,=GB5AC,=GB5FI,=GB5GEO,=GB5MD,=GB5ONG,=GB5PSJ,=GB5SIP,=GB5VEP, + =GB5WT,=GB60DITP,=GB60ER,=GB60PW,=GB60SPS,=GB60VLY,=GB65BTF,=GB6AC,=GB6BLB,=GB6CRI,=GB6GGM, + =GB6OQA,=GB6ORA,=GB6PLB,=GB6RNLI,=GB6TS,=GB6TSG,=GB6WT,=GB6WWT,=GB70BTF,=GB750CC,=GB75ATC,=GB75BB, + =GB8CCC,=GB8HI,=GB8MD,=GB8MG,=GB8ND,=GB8OAE,=GB8OQE,=GB8RAF,=GB8WOW,=GB8WT,=GB90RSGB/62, + =GB90RSGB/72,=GB9GGM,=GC4BRS/LH,=GG100ACD,=GG100ANG,=GG100CPG,=GG100RGG,=GG100SG,=GO0DIV,=GO0EZQ, + =GO0EZY,=GO0JEQ,=GO0MNP,=GO0MNP/P,=GO0NPL,=GO0PLB,=GO0PNI,=GO0PUP,=GO0VKW,=GO0VML,=GO0VSW,=GO1DPL, + =GO1IOT,=GO1JFV,=GO1MVL,=GO1PKM,=GO3PLB,=GO3UOF,=GO3UOF/M,=GO3XJQ,=GO4BKG,=GO4BLE,=GO4CQZ,=GO4DTQ, + =GO4GTI,=GO4JKR,=GO4JUN,=GO4JUW,=GO4MVA,=GO4NOO,=GO4OKT,=GO4SUE,=GO4SUE/P,=GO4TNZ,=GO4WXM,=GO6IMS, + =GO6NKG,=GO6UKO,=GO7DWR,=GO7SBO,=GO7VJK,=GO7VQD,=GO8BQK,=GO8IQC,=GO8JOY,=GO8OKR,=GQ0ANA,=GQ0DIV, + =GQ0JEQ,=GQ0JRF,=GQ0MNO,=GQ0MNP,=GQ0NPL,=GQ0PUP,=GQ0RYT,=GQ0SLM,=GQ0TQM,=GQ0VKW,=GQ0VML,=GQ0VSW, + =GQ0WVL,=GQ1FKY,=GQ1FOA/P,=GQ1IOT,=GQ1JFV,=GQ1MVL,=GQ1NRS,=GQ1WRV,=GQ1ZKN,=GQ3IRK,=GQ3PLB,=GQ3SB, + =GQ3UOF,=GQ3VEN,=GQ3VKL,=GQ3WSU,=GQ3XJA,=GQ3XJQ,=GQ4BKG,=GQ4BLE,=GQ4CQZ,=GQ4EZW,=GQ4GSH,=GQ4GTI, + =GQ4IIL,=GQ4JKR,=GQ4JUN,=GQ4JUW,=GQ4LZP,=GQ4MVA,=GQ4NOO,=GQ4OKT,=GQ4SUE,=GQ4VNS,=GQ4VZJ,=GQ4WXM, + =GQ4WXM/P,=GQ6IMS,=GQ6ITJ,=GQ6NKG,=GQ6UKO,=GQ7BQK,=GQ7DWR,=GQ7FBV,=GQ7SBO,=GQ7UNJ,=GQ7UNV,=GQ7VJK, + =GQ7VQD,=GQ8BQK,=GQ8IQC,=GQ8JOY,=GQ8OKR,=GR0ANA,=GR0DIV,=GR0DSP,=GR0HUS,=GR0JEQ,=GR0MYY,=GR0NPL, + =GR0PSV,=GR0RYT,=GR0SYN,=GR0TKX,=GR0VKW,=GR0WGK,=GR1FJI,=GR1HNG,=GR1LFX,=GR1LHV,=GR1MCD,=GR1SGG, + =GR1WVY,=GR1YQM,=GR3SB,=GR3SFC,=GR3TKH,=GR3UOF,=GR3XJQ,=GR4BKG,=GR4BLE,=GR4CQZ,=GR4GNY,=GR4GTI, + =GR4HZA,=GR4JUN,=GR4JUW,=GR4OGO,=GR4SUE,=GR4VSS/P,=GR4XXJ,=GR4ZOM,=GR5PH,=GR6NKG,=GR6SIX,=GR6STK, + =GR6UKO,=GR6ZDH,=GR7AAV,=GR7HOC,=GR7NAU,=GR7TKZ,=GR7UNV,=GR7VQD,=GR8BQK,=GR8IQC,=GR8OGI,=GR8TRO, + =GV0ANA,=GV0DCK,=GV0DIV,=GV0EME,=GV0FRE,=GV0MNP,=GV0NPL,=GV1FKY,=GV1IOT,=GV1JFV,=GV1NBW,=GV1YQM, + =GV3ATZ,=GV3TJE/P,=GV3UOF,=GV3WEZ,=GV3XJQ,=GV4BKG,=GV4BRS,=GV4CQZ,=GV4JKR,=GV4JQP,=GV4NQJ,=GV4PUC, + =GV6BRC,=GV6JPC,=GV6NKG,=GV7UNV,=GV7VJK,=GV8IQC,=GW0AWT/2K,=GW0GEI/2K,=GW0GIH/2K,=GW0MNO/2K, + =GW0VSW/2K,=GW3JXN/2K,=GW3KJN/2K,=GW4IIL/2K,=GW4VHP/2K,=M2000Y/97A,=MO0AQZ,=MO0ATI,=MO0COE, + =MO0CVT,=MO0EQL,=MO0EZQ,=MO0GXE,=MO0HCX,=MO0IBZ,=MO0IML,=MO0KLW,=MO0LDJ,=MO0LLK,=MO0LUK,=MO0LZZ, + =MO0MAU,=MO0MUM,=MO0MWZ,=MO0OWW,=MO0SGD,=MO0SGR,=MO0TBB,=MO0TMI,=MO0TTU,=MO0UPH,=MO0VVO,=MO1CFA, + =MO1CFN,=MO3DAO,=MO3DQB,=MO3GKI,=MO3OJA,=MO3PUU,=MO3RNI,=MO3UEZ,=MO3WPH,=MO3YVO,=MO3ZCO,=MO6DVP, + =MO6GWK,=MO6GWR,=MO6GWR/P,=MO6MAU,=MO6PAM,=MO6PLC,=MO6PUT,=MO6SEF,=MO6TBD,=MO6TBP,=MO6WLB,=MQ0AQZ, + =MQ0ATI,=MQ0AWW,=MQ0CDO,=MQ0CNA,=MQ0CVT,=MQ0DHF,=MQ0EQL,=MQ0GXE,=MQ0GYV,=MQ0HCX,=MQ0IBZ,=MQ0IML, + =MQ0LDJ,=MQ0LLK,=MQ0LUK,=MQ0LZZ,=MQ0MAU,=MQ0MUM,=MQ0MWA,=MQ0MWZ,=MQ0OWW,=MQ0PAD,=MQ0RHD,=MQ0SGD, + =MQ0SGR,=MQ0TBB,=MQ0TMI,=MQ0TTU,=MQ0UPH,=MQ0UPH/P,=MQ0VVO,=MQ0XMC/P,=MQ1CFA,=MQ1CFN,=MQ1EYO/P, + =MQ1LCR,=MQ3DAO,=MQ3EPA,=MQ3GKI,=MQ3JAT,=MQ3NDB,=MQ3OJA,=MQ3USK,=MQ3WPH,=MQ3ZCB/P,=MQ5AND,=MQ5EPA, + =MQ5VZW,=MQ6DVP,=MQ6KLL,=MQ6MAU,=MQ6PAM,=MQ6PLC,=MQ6RHD,=MQ6SEF,=MQ6TBD,=MQ6TBP,=MR0AQZ,=MR0BXJ, + =MR0CVT,=MR0GUK,=MR0GXE,=MR0IDX,=MR0JGE,=MR0LAO,=MR0LDJ,=MR0MAU,=MR0RLD,=MR0TTR,=MR0TTU,=MR0YAD, + =MR0ZAP,=MR1CFN,=MR1EAA,=MR1LCR,=MR1MAJ/P,=MR1MDH,=MR3AVB,=MR3AVC,=MR3CBF,=MR3NYR,=MR3OBL, + =MR3SET/P,=MR3UFN,=MR3XZP,=MR3YKL,=MR3YLO,=MR3YVO,=MR3ZCB/P,=MR5HOC,=MR6ADZ,=MR6KDA,=MR6VHF, + =MR6YDP,=MV0AEL,=MV0BLM,=MV0EDX,=MV0GWT,=MV0GXE,=MV0HGY/P,=MV0IML,=MV0LLK,=MV0PJJ,=MV0PJJ/P, + =MV0RRD,=MV0SGD,=MV0SGR,=MV0TBB,=MV0TDQ,=MV0UAA,=MV0USK,=MV0VRQ,=MV0WYN,=MV1CFA,=MV1CFN,=MV1EYP/P, + =MV3RNI,=MV6CQN,=MV6GWR,=MV6GWR/P,=MV6URC,=MV6ZOL,=MW0CND/2K,=MW0DHF/LH,=MW5AAM/2K,=MW5GOL/LH; Solomon Islands: 28: 51: OC: -9.00: -160.00: -11.0: H4: H4,=H40/H44RK; Temotu Province: 32: 51: OC: -10.72: -165.80: -11.0: H40: @@ -1078,8 +1080,8 @@ Italy: 15: 28: EU: 42.82: -12.58: -1.0: I: I,=II0PN/MM(40),=II1RT/N, =4U0WFP,=4U4F,=4U5F,=4U6F,=4U7F,=4U7FOC,=4U80FOC,=4U8F,=4U8FOC,=II0IDR/NAVY,=IK0ATK/N,=IK0CNA/LH, =IK0JFS/N,=IK0XFD/N,=IQ0AP/J,=IQ0CV/LH,=IQ0FM/LH,=IQ0FR/LH,=IQ0GV/AAW,=IR0BP/J,=IU0FSC/LH, - =IW0HP/N,=IW9GSH/0,=IZ0BXZ/N,=IZ0DBA/N,=IZ0EGC/N,=IZ0FVD/N,=IZ0HTW/PS,=IZ0HTW/SP,=IZ0IAT/LH, - =IZ0IJC/FF,=IZ0IJC/N, + =IW0HP/N,=IW9GSH/0,=IZ0BXZ/N,=IZ0DBA/N,=IZ0EGC/N,=IZ0EUX/I/AZ,=IZ0FVD/N,=IZ0HTW/PS,=IZ0HTW/SP, + =IZ0IAT/LH,=IZ0IJC/FF,=IZ0IJC/N,=IZ0XZD/RO, =I1MQ/N,=I1ULJ/N,=I1XSG/N,=I1YRL/GRA,=II1PV/LH,=IK1RED/N,=IK1VDN/N,=IP1T/LH,=IQ1L/LH,=IQ1NM/REX, =IQ1SP/N,=IU1LCI/EMG,=IY1SP/ASB,=IY1SP/MTN,=IZ0IJC/BSM,=IZ1CLA/N,=IZ1ESH/EMG,=IZ1FCF/N, =IZ1GDB/EMG,=IZ1POA/N,=IZ1RGI/ECO,=IZ5GST/1/LH, @@ -1087,10 +1089,10 @@ Italy: 15: 28: EU: 42.82: -12.58: -1.0: I: =IQ2MI/J,=IW2NUY/N,=IZ2MYA/EXPO, =I3GJJ/J,=I3TXQ/N,=IK3TZB/N,=IQ3DD/MCC,=IQ3FL/J,=IQ3TS/LH,=IW3BSQ/LH,=IZ3DBA/N,=IZ3GHP/N, =IZ3QCH/N,=IZ3SZQ/N, - =I4CQO/N,=II4CPG/LH,=II4GOR/LH,=IQ4FA/J,=IQ4FJ/J,=IQ4RA/LH,=IQ4RN/LGT,=IQ4RN/LH,=IT9RGY/4, - =IW4EGX/LH,=IZ4AIH/J, - =I5OYY/N,=II5BP/J,=IK5IWU/N,=IK5TSZ/N,=IP5P/LH,=IQ5AA/J,=IQ5AE/J,=IQ5LI/J,=IQ5LV/J,=IU5JHK/J, - =IW5DAX/J,=IZ5AHB/N, + =I4CQO/N,=II4CPG/LH,=II4GOR/LH,=IK4UXA/4ME,=IQ4FA/J,=IQ4FJ/J,=IQ4RA/LH,=IQ4RN/LGT,=IQ4RN/LH, + =IT9RGY/4,=IW4EGX/LH,=IZ4AIH/J, + =I5OYY/N,=II5BP/J,=IK5IWU/N,=IK5TBI/I/CT,=IK5TBI/NAVY,=IK5TSZ/N,=IP5P/LH,=IQ5AA/J,=IQ5AE/J, + =IQ5LI/J,=IQ5LV/J,=IU5JHK/J,=IW5DAX/J,=IZ5AHB/N, =I6DHY/CASA,=I6FDJ/LH,=I6FDJ/N,=I6HWD/CA,=I6HWD/LH,=I6KIU/6/LH,=IK6FAW/J,=IK6XOU/LH,=IK6XUL/LH, =IK6YXM/N,=IQ6FU/LH,=IQ6PS/LH,=IQ6SB/LGH,=IQ6SB/LGT,=IQ6SB/LH,=IQ6VP/J,=IZ6ASI/LH,=IZ6ASI/N, =IZ6CDI/O,=IZ6RWD/O,=IZ6TGS/LH,=IZ6TGS/N, @@ -1098,13 +1100,13 @@ Italy: 15: 28: EU: 42.82: -12.58: -1.0: I: =I7XUW/MI/224,=II7IAOI/N,=II7PT/C,=II7PT/D,=II7PT/E,=II7PT/F,=II7PT/G,=II7PT/H,=II7PT/L, =II8ICN/NAVY,=IK7JWX/LH,=IK7SHC/MT,=IQ7ML/J,=IQ7ML/LH,=IQ7QK/LH,=IU7SCT/J,=IZ2DPX/7/LH,=IZ7DKA/YL, =IZ7KDX/LH,=IZ7LDC/LH, - =IK2RLS/8/LH,=IK8IJN/I/US,=IK8TEO/N,=IQ8OM/N,=IQ8PC/BWL,=IQ8XS/CEU,=IQ8YZ/SH,=IT9AAK/8, - =IU8CEU/8CZ,=IW8FFG/J,=IZ8AJQ/LGT,=IZ8AJQ/LH,=IZ8DBJ/LGT,=IZ8DBJ/LH,=IZ8FMU/KR,=IZ8IZK/YL, - =IZ8JPV/N,=IZ8QNX/N, + =IK2RLS/8/LH,=IK8IJN/8US,=IK8IJN/I/US,=IK8TEO/N,=IK8VHP/OA,=IQ8OM/N,=IQ8PC/BWL,=IQ8XS/CEU, + =IQ8YZ/SH,=IT9AAK/8,=IU8CEU/8CZ,=IU8FWT/I/CP,=IW8EHK/8BN,=IW8FFG/J,=IZ8AJQ/LGT,=IZ8AJQ/LH, + =IZ8DBJ/LGT,=IZ8DBJ/LH,=IZ8FMU/KR,=IZ8IZK/YL,=IZ8JPV/N,=IZ8QNX/N,=IZ8VNQ/LI, =IA5/IW3ILP/L, =IC8/DJ5AA/LH, =IN3IKF/J,=IN3TJK/YL, - =II3T/LH,=IQ3TS/LGT,=IQ3V/LH,=IV3TRK/N; + =II3T/LH,=IQ3TS/LGT,=IQ3V/LH,=IV3DSB/I/BR,=IV3TRK/N; African Italy: 33: 37: AF: 35.67: -12.67: -1.0: *IG9: IG9,IH9,=IO9Y,=IY9A; Sardinia: 15: 28: EU: 40.15: -9.27: -1.0: IS: @@ -1113,11 +1115,13 @@ Sardinia: 15: 28: EU: 40.15: -9.27: -1.0: IS: =IQ0AH/P,=IQ0AI,=IQ0AI/P,=IQ0AK,=IQ0AK/P,=IQ0AL,=IQ0AL/P,=IQ0AM,=IQ0AM/P,=IQ0EH,=IQ0EH/P,=IQ0HO, =IQ0ID,=IQ0ID/P,=IQ0JY,=IQ0NU,=IQ0NU/P,=IQ0NV,=IQ0NV/P,=IQ0OG,=IQ0OH,=IQ0QP,=IQ0QP/LH,=IQ0QP/P, =IQ0SS,=IQ0SS/P,=IQ0US,=IQ0UT,=IQ0XP,=IR0EO,=IR0FOC,=IR0IDP,=IR0IDP/1,=IR0IDP/2,=IR0IDP/3,=IR0LVC, - =IR0MDC,=IS0/4Z5KJ/LH,=IS0/DL5SE/LH,=IS0ICE/N,=IS0IGV/N,=IS0PGF/N,=IS0SDX/N,=IW0HRI,=IY0GA,=IY0NV; + =IR0MDC,=IS0/4Z5KJ/LH,=IS0/DL5SE/LH,=IS0FAP/I/LR,=IS0ICE/N,=IS0IGV/N,=IS0PGF/N,=IS0SDX/N,=IW0HRI, + =IY0GA,=IY0NV; Sicily: 15: 28: EU: 37.50: -14.00: -1.0: *IT9: IB9,ID9,IE9,IF9,II9,IJ9,IO9,IQ9,IR9,IT9,IU9,IW9,IY9,=II0GDF/9,=IQ1QQ/9,=IT9CHU/J,=IT9CKA/CA, =IT9CLY/JZK,=IT9DSA/CA,=IT9DTU/N,=IT9GDS/WLK,=IT9HBS/LH,=IT9JZK/WLK,=IT9KKE/JZK,=IT9MRM/N, - =IT9MRZ/LH,=IT9NCO/LH,=IT9NCO/N,=IT9OTF/JZK,=IT9RRU/LH,=IT9RYH/J,=IT9RYH/N,=IT9ZSB/LH,=IW0HBY/9; + =IT9MRZ/LH,=IT9NCO/LH,=IT9NCO/N,=IT9OTF/JZK,=IT9RRU/LH,=IT9RYH/J,=IT9RYH/N,=IT9YBL/SG,=IT9ZSB/LH, + =IW0HBY/9; Djibouti: 37: 48: AF: 11.75: -42.35: -3.0: J2: J2; Grenada: 08: 11: NA: 12.13: 61.68: 4.0: J3: @@ -1168,20 +1172,20 @@ United States: 05: 08: NA: 37.53: 91.67: 5.0: K: WE0(4)[7],WF0(4)[7],WG0(4)[7],WI0(4)[7],WJ0(4)[7],WK0(4)[7],WM0(4)[7],WN0(4)[7],WO0(4)[7], WQ0(4)[7],WR0(4)[7],WS0(4)[7],WT0(4)[7],WU0(4)[7],WV0(4)[7],WW0(4)[7],WX0(4)[7],WY0(4)[7], WZ0(4)[7],=AH2BW(4)[7],=AH2BY(4)[7],=AH6ES/0(4)[7],=AH6FY(4)[7],=AH6MD(4)[7],=AH6N(4)[7], - =AH6N/0(4)[7],=AH6O(4)[7],=AH6OS(4)[7],=AH6PC(4)[7],=AH6RS(4)[7],=AL0G(4)[7],=AL1VE/R(4)[7], - =AL3E(4)[7],=AL3V(4)[7],=AL6E(4)[7],=AL7BX(4)[7],=AL7EK(4)[7],=AL7FU(4)[7],=AL7GQ(4)[7], - =AL7NY(4)[7],=AL7O/0(4)[7],=AL7OC(4)[7],=AL7OX(4)[7],=AL7QQ(4)[7],=AL7QQ/P(4)[7],=AL9DB(4)[7], - =KH0EX(4)[7],=KH2CZ(4)[7],=KH2FM(4)[7],=KH2JK(4)[7],=KH2OP(4)[7],=KH2OP/0(4)[7],=KH2SL(4)[7], - =KH6DM(4)[7],=KH6HNL(4)[7],=KH6HTV(4)[7],=KH6HTV/0(4)[7],=KH6JEM(4)[7],=KH6JFH(4)[7],=KH6NM(4)[7], - =KH6NR(4)[7],=KH6OY(4)[7],=KH6RON(4)[7],=KH6SB(4)[7],=KH6TL(4)[7],=KH6UC(4)[7],=KH6VHF(4)[7], - =KH6VO(4)[7],=KH7AL/M(4)[7],=KH7AL/P(4)[7],=KH7BU(4)[7],=KH7GF(4)[7],=KH7HA(4)[7],=KH7HY(4)[7], - =KH7OX(4)[7],=KH7QI(4)[7],=KH7QJ(4)[7],=KH7QT(4)[7],=KH8CW(4)[7],=KL0DW(4)[7],=KL0EQ(4)[7], - =KL0FOX(4)[7],=KL0GP(4)[7],=KL0GQ(4)[7],=KL0MW(4)[7],=KL0N(4)[7],=KL0SV(4)[7],=KL0UP(4)[7], - =KL0VM(4)[7],=KL0WIZ(4)[7],=KL0XN(4)[7],=KL1HT(4)[7],=KL1IF(4)[7],=KL1IF/M(4)[7],=KL1J(4)[7], - =KL1LD(4)[7],=KL1PV(4)[7],=KL1TU(4)[7],=KL1V/M(4)[7],=KL1VN(4)[7],=KL2A/0(4)[7],=KL2FU(4)[7], - =KL2GR(4)[7],=KL2NS(4)[7],=KL2QO(4)[7],=KL2SX(4)[7],=KL2YI(4)[7],=KL3LY(4)[7],=KL3MA(4)[7], - =KL3MB(4)[7],=KL3MC(4)[7],=KL3MW(4)[7],=KL3QS(4)[7],=KL3SM(4)[7],=KL3VN(4)[7],=KL4IY(4)[7], - =KL4JN(4)[7],=KL7DE(4)[7],=KL7DTJ(4)[7],=KL7ED(4)[7],=KL7EP(4)[7],=KL7EP/0(4)[7],=KL7GKY/0(4)[7], + =AH6N/0(4)[7],=AH6O(4)[7],=AH6OS(4)[7],=AH6PC(4)[7],=AH6RS(4)[7],=AL0G(4)[7],=AL3E(4)[7], + =AL3V(4)[7],=AL6E(4)[7],=AL7BX(4)[7],=AL7EK(4)[7],=AL7FU(4)[7],=AL7GQ(4)[7],=AL7NY(4)[7], + =AL7O/0(4)[7],=AL7OX(4)[7],=AL7QQ(4)[7],=AL7QQ/P(4)[7],=AL9DB(4)[7],=KH0EX(4)[7],=KH2CZ(4)[7], + =KH2FM(4)[7],=KH2JK(4)[7],=KH2OP(4)[7],=KH2OP/0(4)[7],=KH2SL(4)[7],=KH6DM(4)[7],=KH6HNL(4)[7], + =KH6HTV(4)[7],=KH6HTV/0(4)[7],=KH6JEM(4)[7],=KH6JFH(4)[7],=KH6NM(4)[7],=KH6NR(4)[7],=KH6OY(4)[7], + =KH6RON(4)[7],=KH6SB(4)[7],=KH6TL(4)[7],=KH6UC(4)[7],=KH6VHF(4)[7],=KH6VO(4)[7],=KH7AL/M(4)[7], + =KH7AL/P(4)[7],=KH7BU(4)[7],=KH7GF(4)[7],=KH7HA(4)[7],=KH7HY(4)[7],=KH7OX(4)[7],=KH7QI(4)[7], + =KH7QJ(4)[7],=KH7QT(4)[7],=KH8CW(4)[7],=KL0DW(4)[7],=KL0EQ(4)[7],=KL0FOX(4)[7],=KL0GP(4)[7], + =KL0GQ(4)[7],=KL0MW(4)[7],=KL0N(4)[7],=KL0SV(4)[7],=KL0UP(4)[7],=KL0VM(4)[7],=KL0WIZ(4)[7], + =KL0XM(4)[7],=KL0XN(4)[7],=KL1HT(4)[7],=KL1IF(4)[7],=KL1IF/M(4)[7],=KL1J(4)[7],=KL1LD(4)[7], + =KL1PV(4)[7],=KL1TU(4)[7],=KL1V/M(4)[7],=KL1VN(4)[7],=KL2A/0(4)[7],=KL2FU(4)[7],=KL2GR(4)[7], + =KL2NS(4)[7],=KL2QO(4)[7],=KL2SX(4)[7],=KL2YI(4)[7],=KL3LY(4)[7],=KL3MA(4)[7],=KL3MB(4)[7], + =KL3MC(4)[7],=KL3MW(4)[7],=KL3QS(4)[7],=KL3SM(4)[7],=KL3VN(4)[7],=KL4IY(4)[7],=KL4JN(4)[7], + =KL7DE(4)[7],=KL7DTJ(4)[7],=KL7DYS(4)[7],=KL7ED(4)[7],=KL7EP(4)[7],=KL7EP/0(4)[7],=KL7GKY/0(4)[7], =KL7GLK(4)[7],=KL7GLK/0(4)[7],=KL7GLK/B(4)[7],=KL7HR(4)[7],=KL7IWT(4)[7],=KL7IXI(4)[7], =KL7JGJ(4)[7],=KL7JIE(4)[7],=KL7JIM(4)[7],=KL7JR/0(4)[7],=KL7MH(4)[7],=KL7MP(4)[7],=KL7MV(4)[7], =KL7NW(4)[7],=KL7PE/M(4)[7],=KL7QW(4)[7],=KL7QW/0(4)[7],=KL7RH(4)[7],=KL7RZ(4)[7],=KL7SB/0(4)[7], @@ -1196,12 +1200,12 @@ United States: 05: 08: NA: 37.53: 91.67: 5.0: K: =WH7PV(4)[7],=WH9AAH(4)[7],=WL0JF(4)[7],=WL1ON(4)[7],=WL7AEC(4)[7],=WL7AJA(4)[7],=WL7ANY(4)[7], =WL7ATK(4)[7],=WL7BRV(4)[7],=WL7BT(4)[7],=WL7CEG(4)[7],=WL7CLI(4)[7],=WL7CPW(4)[7],=WL7CQF(4)[7], =WL7CRT(4)[7],=WL7CY(4)[7],=WL7J(4)[7],=WL7JB(4)[7],=WL7LZ(4)[7],=WL7LZ/M(4)[7],=WL7RV(4)[7], - =WL7S(4)[7],=WL7YM(4)[7],=WP2B/0(4)[7],=WP3QH(4)[7],=WP3Y(4)[7],=WP4BTQ(4)[7],=WP4GQR(4)[7], - =WP4LC(4)[7],=WP4NPV(4)[7], - =AH2V(5)[8],=AH2W(5)[8],=AH6BV(5)[8],=AL0A(5)[8],=AL1O(5)[8],=AL4V(5)[8],=AL6L(5)[8],=AL6M(5)[8], - =AL7EL(5)[8],=AL7GD(5)[8],=AL7LV(5)[8],=AL7QS(5)[8],=AL8E(5)[8],=KH2AB(5)[8],=KH2BA(5)[8], - =KH2EH(5)[8],=KH6GR(5)[8],=KH6HZ(5)[8],=KH6IKI(5)[8],=KH6JKQ(5)[8],=KH6JUK(5)[8],=KH6RF(5)[8], - =KH6RF/1(5)[8],=KH6RF/M(5)[8],=KH7CD(5)[8],=KH7CD/1(5)[8],=KH7PL(5)[8],=KH8AC(5)[8], + =WL7S(4)[7],=WL7YM(4)[7],=WP2B/0(4)[7],=WP3QH(4)[7],=WP4BTQ(4)[7],=WP4GQR(4)[7],=WP4LC(4)[7], + =WP4NPV(4)[7], + =AH2V(5)[8],=AH2W(5)[8],=AH6BV(5)[8],=AL0A(5)[8],=AL1K(5)[8],=AL1O(5)[8],=AL4V(5)[8],=AL6L(5)[8], + =AL6M(5)[8],=AL7EL(5)[8],=AL7GD(5)[8],=AL7LV(5)[8],=AL7QS(5)[8],=AL8E(5)[8],=KH2AB(5)[8], + =KH2BA(5)[8],=KH2EH(5)[8],=KH6GR(5)[8],=KH6HZ(5)[8],=KH6IKI(5)[8],=KH6JKQ(5)[8],=KH6JUK(5)[8], + =KH6RF(5)[8],=KH6RF/1(5)[8],=KH6RF/M(5)[8],=KH7CD(5)[8],=KH7CD/1(5)[8],=KH7PL(5)[8],=KH8AC(5)[8], =KH8AC/1(5)[8],=KL1OC(5)[8],=KL1T(5)[8],=KL1WD(5)[8],=KL2A/1(5)[8],=KL2DM(5)[8],=KL2GA(5)[8], =KL2IC(5)[8],=KL2KL(5)[8],=KL2MU(5)[8],=KL3UX(5)[8],=KL3VA(5)[8],=KL4XK(5)[8],=KL7CE/1(5)[8], =KL7IOP(5)[8],=KL7IXX(5)[8],=KL7JHM(5)[8],=KL7JJN(5)[8],=KL7JR/1(5)[8],=KL7JT(5)[8],=KL7LK(5)[8], @@ -1213,11 +1217,12 @@ United States: 05: 08: NA: 37.53: 91.67: 5.0: K: =NP2FZ/1(5)[8],=NP2GG(5)[8],=NP2PN(5)[8],=NP3IV(5)[8],=NP3LN(5)[8],=NP3WX(5)[8],=NP4AO(5)[8], =NP4AZ(5)[8],=NP4ER(5)[8],=VE1BES/M(5)[8],=VE3CMB/M(5)[8],=VE4CCN/M(5)[8],=WH0EWX(5)[8], =WH2B(5)[8],=WH6CT(5)[8],=WH6DSN(5)[8],=WH6EI(5)[8],=WH6FBH(5)[8],=WH6MY(5)[8],=WH6SW(5)[8], - =WH6SW/1(5)[8],=WH7TP(5)[8],=WH7YQ(5)[8],=WH7YR(5)[8],=WL1B(5)[8],=WL7B(5)[8],=WL7CC(5)[8], - =WL7CUP(5)[8],=WL7CVD(5)[8],=WL7WO(5)[8],=WL7WO/1(5)[8],=WL7Z/1(5)[8],=WP2MG(5)[8],=WP3GN(5)[8], + =WH6SW/1(5)[8],=WH7TP(5)[8],=WH7YQ(5)[8],=WH7YR(5)[8],=WL7B(5)[8],=WL7CC(5)[8],=WL7CUP(5)[8], + =WL7CVD(5)[8],=WL7WO(5)[8],=WL7WO/1(5)[8],=WL7Z/1(5)[8],=WP2MG(5)[8],=WP3AC(5)[8],=WP3GN(5)[8], =WP3NN(5)[8],=WP3QV(5)[8],=WP3QV/1(5)[8],=WP3WV(5)[8],=WP4AKE(5)[8],=WP4AZJ(5)[8],=WP4BC(5)[8], =WP4BF(5)[8],=WP4CGI(5)[8],=WP4CJH(5)[8],=WP4JF(5)[8],=WP4KQ(5)[8],=WP4MKJ(5)[8],=WP4MMV(5)[8], - =WP4MOC(5)[8],=WP4NKW(5)[8],=WP4NUV(5)[8],=WP4NYY(5)[8],=WP4OFO(5)[8],=WP4OIG(5)[8],=WP4OJK(5)[8], + =WP4MOC(5)[8],=WP4NKW(5)[8],=WP4NUV(5)[8],=WP4NYT(5)[8],=WP4NYY(5)[8],=WP4OFO(5)[8],=WP4OIG(5)[8], + =WP4OJK(5)[8],=WP4RQ(5)[8], =AH0BR(5)[8],=AH2AL(5)[8],=AH2CG(5)[8],=AH2O(5)[8],=AH6K(5)[8],=AL0Q(5)[8],=AL0Y(5)[8], =AL2O(5)[8],=AL7RG(5)[8],=KH2CW(5)[8],=KH2P(5)[8],=KH2R(5)[8],=KH4AG(5)[8],=KH6ALN(5)[8], =KH6HFO(5)[8],=KH6HO(5)[8],=KH7GA(5)[8],=KH7JO(5)[8],=KH7JO/2(5)[8],=KH7MX(5)[8],=KH7NE(5)[8], @@ -1246,110 +1251,112 @@ United States: 05: 08: NA: 37.53: 91.67: 5.0: K: =NL7CK(5)[8],=NL7PJ(5)[8],=NL7V/3(5)[8],=NL7WA(5)[8],=NL7XM(5)[8],=NL7XM/B(5)[8],=NP2EP(5)[8], =NP2G(5)[8],=NP2NC(5)[8],=NP3ES(5)[8],=NP3IP(5)[8],=NP3YN(5)[8],=NP4RH(5)[8],=NP4YZ(5)[8], =WH6ADS(5)[8],=WH6AWO(5)[8],=WH6AZN(5)[8],=WH6CE(5)[8],=WH6CTO(5)[8],=WH6DOA(5)[8],=WH6ECO(5)[8], - =WH6EEL(5)[8],=WH6EEN(5)[8],=WH6EIJ(5)[8],=WH6GEU(5)[8],=WH6IO(5)[8],=WH6OB(5)[8],=WH6RN(5)[8], - =WH7F(5)[8],=WH7USA(5)[8],=WL7AF(5)[8],=WL7L(5)[8],=WP2XX(5)[8],=WP3BX(5)[8],=WP3CC(5)[8], - =WP3EC(5)[8],=WP3FK(5)[8],=WP4DA(5)[8],=WP4DCK(5)[8],=WP4EDM(5)[8],=WP4GJL(5)[8],=WP4HRK(5)[8], - =WP4HSZ(5)[8],=WP4KDN(5)[8],=WP4KKX(5)[8],=WP4KTU(5)[8],=WP4LEM(5)[8],=WP4LNP(5)[8],=WP4MNV(5)[8], - =WP4MSX(5)[8],=WP4MYN(5)[8],=WP4NXG(5)[8],=WP4OSQ(5)[8],=WP4PPH(5)[8],=WP4PQN(5)[8],=WP4PUR(5)[8], - =WP4PYL(5)[8],=WP4PYM(5)[8],=WP4PYT(5)[8],=WP4PYU(5)[8],=WP4PYV(5)[8],=WP4PYZ(5)[8],=WP4PZA(5)[8], + =WH6EEL(5)[8],=WH6EEN(5)[8],=WH6EIJ(5)[8],=WH6FPS(5)[8],=WH6GEU(5)[8],=WH6IO(5)[8],=WH6OB(5)[8], + =WH6RN(5)[8],=WH7F(5)[8],=WH7USA(5)[8],=WL7AF(5)[8],=WL7L(5)[8],=WP2XX(5)[8],=WP3BX(5)[8], + =WP3CC(5)[8],=WP3EC(5)[8],=WP3FK(5)[8],=WP4DA(5)[8],=WP4DCK(5)[8],=WP4EDM(5)[8],=WP4GJL(5)[8], + =WP4HRK(5)[8],=WP4HSZ(5)[8],=WP4KDN(5)[8],=WP4KKX(5)[8],=WP4KTU(5)[8],=WP4LEM(5)[8],=WP4LNP(5)[8], + =WP4MNV(5)[8],=WP4MSX(5)[8],=WP4MYN(5)[8],=WP4NXG(5)[8],=WP4OSQ(5)[8],=WP4PPH(5)[8],=WP4PQN(5)[8], + =WP4PUR(5)[8],=WP4PYL(5)[8],=WP4PYM(5)[8],=WP4PYT(5)[8],=WP4PYU(5)[8],=WP4PYV(5)[8],=WP4PYZ(5)[8], + =WP4PZA(5)[8], =AH0BV(5)[8],=AH0BZ(5)[8],=AH0G(5)[8],=AH2AJ(5)[8],=AH2AM(5)[8],=AH2AV/4(5)[8],=AH2DF(5)[8], =AH2EB(5)[8],=AH2X(5)[8],=AH3B(5)[8],=AH6AL(5)[8],=AH6AT(5)[8],=AH6AU(5)[8],=AH6BJ(5)[8], =AH6C(5)[8],=AH6EZ/4(5)[8],=AH6FX(5)[8],=AH6FX/4(5)[8],=AH6IC(5)[8],=AH6IJ(5)[8],=AH6IW(5)[8], - =AH6JH(5)[8],=AH6JN/4(5)[8],=AH6JN/M(5)[8],=AH6KS(5)[8],=AH6KT(5)[8],=AH6KT/4(5)[8],=AH6LS(5)[8], - =AH6OB(5)[8],=AH6TI(5)[8],=AH7DN(5)[8],=AH7I(5)[8],=AH7I/4(5)[8],=AH7MI(5)[8],=AH8B(5)[8], - =AH8M(5)[8],=AH8M/M(5)[8],=AH8T(5)[8],=AL0I(5)[8],=AL1A(5)[8],=AL3G(5)[8],=AL3M(5)[8],=AL4T(5)[8], - =AL4T/4(5)[8],=AL4U(5)[8],=AL4X(5)[8],=AL5A(5)[8],=AL7AL(5)[8],=AL7AM(5)[8],=AL7BA(5)[8], - =AL7FR(5)[8],=AL7GF(5)[8],=AL7GK(5)[8],=AL7HG(5)[8],=AL7HW(5)[8],=AL7HW/4(5)[8],=AL7IS(5)[8], - =AL7KT(5)[8],=AL7LH(5)[8],=AL7NL(5)[8],=AL7NM(5)[8],=AL7NS(5)[8],=AL7NS/140(5)[8],=AL7PL(5)[8], - =AL7QI(5)[8],=AL7RE(5)[8],=AL7RL(5)[8],=G8ERJ(5)[8],=GO4AZM(5)[8],=GQ4AZM(5)[8],=GR4AZM(5)[8], - =KH0CW(5)[8],=KH0HR(5)[8],=KH0NI(5)[8],=KH0ZZ(5)[8],=KH2BX(5)[8],=KH2D(5)[8],=KH2D/4(5)[8], - =KH2GUM/P(5)[8],=KH2HB(5)[8],=KH2KD(5)[8],=KH2N(5)[8],=KH2NC(5)[8],=KH2PM(5)[8],=KH2RL(5)[8], - =KH2TI(5)[8],=KH2UG(5)[8],=KH2UV(5)[8],=KH2UZ(5)[8],=KH2VM(5)[8],=KH3AC(5)[8],=KH3AG(5)[8], - =KH6AE(5)[8],=KH6AME(5)[8],=KH6CG(5)[8],=KH6CG/4(5)[8],=KH6CT(5)[8],=KH6ED(5)[8],=KH6HHS(5)[8], - =KH6HHS/4(5)[8],=KH6HOW(5)[8],=KH6ILR(5)[8],=KH6ILR/4(5)[8],=KH6ITI(5)[8],=KH6JAU(5)[8], - =KH6JIM(5)[8],=KH6JJD(5)[8],=KH6JNW(5)[8],=KH6JUA(5)[8],=KH6KZ(5)[8],=KH6M(5)[8],=KH6M/4(5)[8], - =KH6M/M(5)[8],=KH6MT(5)[8],=KH6MT/4(5)[8],=KH6NC(5)[8],=KH6NI(5)[8],=KH6OU(5)[8],=KH6POI(5)[8], - =KH6PU(5)[8],=KH6RP(5)[8],=KH6TY(5)[8],=KH6TY/R(5)[8],=KH6UN(5)[8],=KH6WE(5)[8],=KH6XH(5)[8], - =KH7DM(5)[8],=KH7DY(5)[8],=KH7FC(5)[8],=KH7FU(5)[8],=KH7GM(5)[8],=KH7GZ(5)[8],=KH7HJ/4(5)[8], - =KH7OC(5)[8],=KH7OV(5)[8],=KH7WK(5)[8],=KH7XS/4(5)[8],=KH7XT(5)[8],=KH7ZC(5)[8],=KH8DO(5)[8], - =KH8U(5)[8],=KL0AG(5)[8],=KL0IP(5)[8],=KL0KC(5)[8],=KL0KE/4(5)[8],=KL0L(5)[8],=KL0MG(5)[8], - =KL0MP(5)[8],=KL0S(5)[8],=KL0SS(5)[8],=KL0ST(5)[8],=KL0TY(5)[8],=KL0UA(5)[8],=KL0UD(5)[8], - =KL0VU(5)[8],=KL0WF(5)[8],=KL1KP(5)[8],=KL1NK(5)[8],=KL1NS(5)[8],=KL1OK(5)[8],=KL1PA(5)[8], - =KL1SS(5)[8],=KL2AK(5)[8],=KL2CX(5)[8],=KL2EY(5)[8],=KL2GG(5)[8],=KL2GP(5)[8],=KL2HV(5)[8], - =KL2MQ(5)[8],=KL2NN(5)[8],=KL2UM(5)[8],=KL2UQ(5)[8],=KL2XI(5)[8],=KL3BG(5)[8],=KL3EV(5)[8], - =KL3HG(5)[8],=KL3IA(5)[8],=KL3KB(5)[8],=KL3KG(5)[8],=KL3NR(5)[8],=KL3WM(5)[8],=KL3X(5)[8], - =KL3XB(5)[8],=KL4CO(5)[8],=KL4DD(5)[8],=KL4H(5)[8],=KL4J(5)[8],=KL5X(5)[8],=KL5YJ(5)[8], - =KL7A(5)[8],=KL7DA(5)[8],=KL7DA/4(5)[8],=KL7FO(5)[8],=KL7GLL(5)[8],=KL7H(5)[8],=KL7HIM(5)[8], - =KL7HNY(5)[8],=KL7HOT(5)[8],=KL7HQW(5)[8],=KL7HV(5)[8],=KL7HX(5)[8],=KL7I(5)[8],=KL7IEK(5)[8], - =KL7IKZ(5)[8],=KL7IV(5)[8],=KL7IVY(5)[8],=KL7IWF(5)[8],=KL7JDS(5)[8],=KL7JR(5)[8],=KL7LS(5)[8], - =KL7MJ(5)[8],=KL7NCO(5)[8],=KL7NL(5)[8],=KL7NL/4(5)[8],=KL7NT(5)[8],=KL7OO(5)[8],=KL7P/4(5)[8], - =KL7PS(5)[8],=KL7QH(5)[8],=KL7QU(5)[8],=KL7SR(5)[8],=KL7TZ(5)[8],=KL7USI/4(5)[8],=KL7XA(5)[8], - =KL9A/1(5)[8],=KP2AF(5)[8],=KP2AV(5)[8],=KP2AV/4(5)[8],=KP2CH(5)[8],=KP2CR(5)[8],=KP2L(5)[8], - =KP2L/4(5)[8],=KP2N(5)[8],=KP2R(5)[8],=KP2U(5)[8],=KP2US(5)[8],=KP2V(5)[8],=KP3AMG(5)[8], - =KP3BL(5)[8],=KP3BP(5)[8],=KP3J(5)[8],=KP3SK(5)[8],=KP3U(5)[8],=KP4AD(5)[8],=KP4AOD(5)[8], - =KP4AOD/4(5)[8],=KP4AYI(5)[8],=KP4BBN(5)[8],=KP4BEC(5)[8],=KP4BM(5)[8],=KP4BOB(5)[8], - =KP4CBP(5)[8],=KP4CEL(5)[8],=KP4CH(5)[8],=KP4CPP(5)[8],=KP4CSJ(5)[8],=KP4CSZ(5)[8],=KP4CW(5)[8], - =KP4CZ(5)[8],=KP4DAC(5)[8],=KP4DDS(5)[8],=KP4DPQ(5)[8],=KP4DQS(5)[8],=KP4EDL(5)[8],=KP4EIA(5)[8], - =KP4EMY(5)[8],=KP4ENK(5)[8],=KP4EOR(5)[8],=KP4EOR/4(5)[8],=KP4ERT(5)[8],=KP4ESC(5)[8], - =KP4FBS(5)[8],=KP4FGI(5)[8],=KP4FIR(5)[8],=KP4FJE(5)[8],=KP4FLP(5)[8],=KP4FOF(5)[8],=KP4HE(5)[8], - =KP4HN(5)[8],=KP4II(5)[8],=KP4IRI(5)[8],=KP4IT(5)[8],=KP4JC(5)[8],=KP4JCC(5)[8],=KP4JOS(5)[8], - =KP4JWR(5)[8],=KP4KA(5)[8],=KP4KD(5)[8],=KP4KD/4(5)[8],=KP4KE/4(5)[8],=KP4KF(5)[8],=KP4LEU(5)[8], - =KP4LF(5)[8],=KP4LQ(5)[8],=KP4LUV(5)[8],=KP4LX(5)[8],=KP4MA(5)[8],=KP4MHC(5)[8],=KP4MPR(5)[8], - =KP4MSP(5)[8],=KP4NI(5)[8],=KP4OO(5)[8],=KP4PC(5)[8],=KP4PEC(5)[8],=KP4PF(5)[8],=KP4PMD(5)[8], + =AH6JH(5)[8],=AH6JN/4(5)[8],=AH6JN/M(5)[8],=AH6KS(5)[8],=AH6KT(5)[8],=AH6KT/4(5)[8],=AH6LQ(5)[8], + =AH6LS(5)[8],=AH6OB(5)[8],=AH6TI(5)[8],=AH7DN(5)[8],=AH7I(5)[8],=AH7I/4(5)[8],=AH7MI(5)[8], + =AH8B(5)[8],=AH8M(5)[8],=AH8M/M(5)[8],=AH8R(5)[8],=AH8T(5)[8],=AL0I(5)[8],=AL1A(5)[8],=AL3G(5)[8], + =AL3M(5)[8],=AL4T(5)[8],=AL4T/4(5)[8],=AL4U(5)[8],=AL4X(5)[8],=AL5A(5)[8],=AL7AL(5)[8], + =AL7AM(5)[8],=AL7BA(5)[8],=AL7FR(5)[8],=AL7GF(5)[8],=AL7GK(5)[8],=AL7HG(5)[8],=AL7HW(5)[8], + =AL7HW/4(5)[8],=AL7IS(5)[8],=AL7KT(5)[8],=AL7LH(5)[8],=AL7NL(5)[8],=AL7NM(5)[8],=AL7NS(5)[8], + =AL7NS/140(5)[8],=AL7PL(5)[8],=AL7QI(5)[8],=AL7RE(5)[8],=AL7RL(5)[8],=G8ERJ(5)[8],=GO4AZM(5)[8], + =GQ4AZM(5)[8],=GR4AZM(5)[8],=KH0CW(5)[8],=KH0HR(5)[8],=KH0NI(5)[8],=KH0ZZ(5)[8],=KH2BX(5)[8], + =KH2D(5)[8],=KH2D/4(5)[8],=KH2GUM/P(5)[8],=KH2HB(5)[8],=KH2KD(5)[8],=KH2N(5)[8],=KH2NC(5)[8], + =KH2PM(5)[8],=KH2RL(5)[8],=KH2TI(5)[8],=KH2UG(5)[8],=KH2UV(5)[8],=KH2UZ(5)[8],=KH2VM(5)[8], + =KH3AC(5)[8],=KH3AG(5)[8],=KH6AE(5)[8],=KH6AME(5)[8],=KH6CG(5)[8],=KH6CG/4(5)[8],=KH6CT(5)[8], + =KH6ED(5)[8],=KH6HHS(5)[8],=KH6HHS/4(5)[8],=KH6HOW(5)[8],=KH6ILR(5)[8],=KH6ILR/4(5)[8], + =KH6ITI(5)[8],=KH6JAU(5)[8],=KH6JIM(5)[8],=KH6JJD(5)[8],=KH6JNW(5)[8],=KH6JUA(5)[8],=KH6KZ(5)[8], + =KH6M(5)[8],=KH6M/4(5)[8],=KH6M/M(5)[8],=KH6MT(5)[8],=KH6MT/4(5)[8],=KH6NC(5)[8],=KH6NI(5)[8], + =KH6OU(5)[8],=KH6POI(5)[8],=KH6PU(5)[8],=KH6RP(5)[8],=KH6TY(5)[8],=KH6TY/R(5)[8],=KH6UN(5)[8], + =KH6WE(5)[8],=KH6XH(5)[8],=KH7DA(5)[8],=KH7DM(5)[8],=KH7DY(5)[8],=KH7FC(5)[8],=KH7FU(5)[8], + =KH7GM(5)[8],=KH7GZ(5)[8],=KH7HJ/4(5)[8],=KH7OC(5)[8],=KH7OV(5)[8],=KH7WK(5)[8],=KH7WU(5)[8], + =KH7XS/4(5)[8],=KH7XT(5)[8],=KH7ZC(5)[8],=KH8DO(5)[8],=KH8U(5)[8],=KL0AG(5)[8],=KL0BG(5)[8], + =KL0IP(5)[8],=KL0KC(5)[8],=KL0KE/4(5)[8],=KL0L(5)[8],=KL0MG(5)[8],=KL0MP(5)[8],=KL0S(5)[8], + =KL0SS(5)[8],=KL0ST(5)[8],=KL0TY(5)[8],=KL0UA(5)[8],=KL0UD(5)[8],=KL0VU(5)[8],=KL0WF(5)[8], + =KL1KP(5)[8],=KL1NK(5)[8],=KL1NS(5)[8],=KL1OK(5)[8],=KL1PA(5)[8],=KL1SS(5)[8],=KL2AK(5)[8], + =KL2CX(5)[8],=KL2EY(5)[8],=KL2GG(5)[8],=KL2GP(5)[8],=KL2HV(5)[8],=KL2MQ(5)[8],=KL2NN(5)[8], + =KL2UM(5)[8],=KL2UQ(5)[8],=KL2XI(5)[8],=KL3BG(5)[8],=KL3EV(5)[8],=KL3HG(5)[8],=KL3IA(5)[8], + =KL3KB(5)[8],=KL3KG(5)[8],=KL3NR(5)[8],=KL3WM(5)[8],=KL3X(5)[8],=KL3XB(5)[8],=KL4CO(5)[8], + =KL4DD(5)[8],=KL4H(5)[8],=KL4J(5)[8],=KL5X(5)[8],=KL5YJ(5)[8],=KL7A(5)[8],=KL7AF(5)[8], + =KL7DA(5)[8],=KL7DA/4(5)[8],=KL7FO(5)[8],=KL7GLL(5)[8],=KL7H(5)[8],=KL7HIM(5)[8],=KL7HNY(5)[8], + =KL7HOT(5)[8],=KL7HQW(5)[8],=KL7HV(5)[8],=KL7HX(5)[8],=KL7I(5)[8],=KL7IEK(5)[8],=KL7IKZ(5)[8], + =KL7IV(5)[8],=KL7IVY(5)[8],=KL7IWF(5)[8],=KL7JDS(5)[8],=KL7JR(5)[8],=KL7LS(5)[8],=KL7MJ(5)[8], + =KL7NCO(5)[8],=KL7NL(5)[8],=KL7NL/4(5)[8],=KL7NT(5)[8],=KL7OO(5)[8],=KL7P/4(5)[8],=KL7PS(5)[8], + =KL7QH(5)[8],=KL7QU(5)[8],=KL7SR(5)[8],=KL7TZ(5)[8],=KL7USI/4(5)[8],=KL7XA(5)[8],=KL9A/1(5)[8], + =KP2AF(5)[8],=KP2AV(5)[8],=KP2AV/4(5)[8],=KP2CH(5)[8],=KP2CR(5)[8],=KP2L(5)[8],=KP2L/4(5)[8], + =KP2N(5)[8],=KP2R(5)[8],=KP2U(5)[8],=KP2US(5)[8],=KP2V(5)[8],=KP3AMG(5)[8],=KP3BL(5)[8], + =KP3BP(5)[8],=KP3SK(5)[8],=KP3U(5)[8],=KP4AD(5)[8],=KP4AOD(5)[8],=KP4AOD/4(5)[8],=KP4AYI(5)[8], + =KP4BBN(5)[8],=KP4BEC(5)[8],=KP4BM(5)[8],=KP4BOB(5)[8],=KP4CBP(5)[8],=KP4CEL(5)[8],=KP4CH(5)[8], + =KP4CPP(5)[8],=KP4CSJ(5)[8],=KP4CSZ(5)[8],=KP4CW(5)[8],=KP4CZ(5)[8],=KP4DAC(5)[8],=KP4DDS(5)[8], + =KP4DPQ(5)[8],=KP4DQS(5)[8],=KP4EDL(5)[8],=KP4EF(5)[8],=KP4EIA(5)[8],=KP4EMY(5)[8],=KP4ENK(5)[8], + =KP4EOR(5)[8],=KP4EOR/4(5)[8],=KP4ERT(5)[8],=KP4ESC(5)[8],=KP4FBS(5)[8],=KP4FGI(5)[8], + =KP4FIR(5)[8],=KP4FJE(5)[8],=KP4FLP(5)[8],=KP4FOF(5)[8],=KP4HE(5)[8],=KP4HN(5)[8],=KP4II(5)[8], + =KP4IRI(5)[8],=KP4IT(5)[8],=KP4JC(5)[8],=KP4JCC(5)[8],=KP4JOS(5)[8],=KP4JWR(5)[8],=KP4KA(5)[8], + =KP4KD(5)[8],=KP4KD/4(5)[8],=KP4KE/4(5)[8],=KP4KF(5)[8],=KP4LEU(5)[8],=KP4LF(5)[8],=KP4LMD(5)[8], + =KP4LQ(5)[8],=KP4LUV(5)[8],=KP4LX(5)[8],=KP4MA(5)[8],=KP4MHC(5)[8],=KP4MPR(5)[8],=KP4MSP(5)[8], + =KP4NI(5)[8],=KP4OO(5)[8],=KP4PC(5)[8],=KP4PEC(5)[8],=KP4PF(5)[8],=KP4PM(5)[8],=KP4PMD(5)[8], =KP4Q(5)[8],=KP4QT(5)[8],=KP4QT/4(5)[8],=KP4REY(5)[8],=KP4RGD(5)[8],=KP4RGT(5)[8],=KP4ROP(5)[8], - =KP4RRC(5)[8],=KP4RT(5)[8],=KP4RZ(5)[8],=KP4SU(5)[8],=KP4TL(5)[8],=KP4TR(5)[8],=KP4UFO(5)[8], - =KP4USA(5)[8],=KP4WK(5)[8],=KP4WW(5)[8],=KP4WY(5)[8],=KP4XP(5)[8],=KP4Y(5)[8],=KP4YLV(5)[8], - =KP4ZV(5)[8],=KP4ZX(5)[8],=NH2A(5)[8],=NH2BQ(5)[8],=NH2DB(5)[8],=NH2F(5)[8],=NH2GY(5)[8], - =NH6AU(5)[8],=NH6AX(5)[8],=NH6BD/4(5)[8],=NH6E(5)[8],=NH6GE(5)[8],=NH6GR(5)[8],=NH6HX(5)[8], - =NH6HX/4(5)[8],=NH6JX(5)[8],=NH6KI(5)[8],=NH6QR(5)[8],=NH6SR(5)[8],=NH6T(5)[8],=NH6TL(5)[8], - =NH7AA(5)[8],=NH7AQ(5)[8],=NH7AR(5)[8],=NH7FG(5)[8],=NH7OI(5)[8],=NH7T/4(5)[8],=NH7UN(5)[8], - =NH7XN(5)[8],=NH7YL(5)[8],=NL5L(5)[8],=NL7AJ(5)[8],=NL7AU(5)[8],=NL7AU/4(5)[8],=NL7BV(5)[8], - =NL7KL(5)[8],=NL7KX(5)[8],=NL7LO(5)[8],=NL7LR(5)[8],=NL7LY(5)[8],=NL7MD(5)[8],=NL7MR(5)[8], - =NL7OB(5)[8],=NL7OS(5)[8],=NL7P(5)[8],=NL7PV(5)[8],=NL7U(5)[8],=NL7VV(5)[8],=NL7VX(5)[8], - =NL7VX/4(5)[8],=NL7VX/M(5)[8],=NL7YZ(5)[8],=NP2B(5)[8],=NP2B/4(5)[8],=NP2BB(5)[8],=NP2BW(5)[8], - =NP2C(5)[8],=NP2C/4(5)[8],=NP2CB(5)[8],=NP2D(5)[8],=NP2DJ(5)[8],=NP2EI(5)[8],=NP2FJ(5)[8], - =NP2FT(5)[8],=NP2GN(5)[8],=NP2GW(5)[8],=NP2HQ(5)[8],=NP2HS(5)[8],=NP2HW(5)[8],=NP2IE(5)[8], - =NP2IF(5)[8],=NP2IJ(5)[8],=NP2IS(5)[8],=NP2IW(5)[8],=NP2IX(5)[8],=NP2JA(5)[8],=NP2JS(5)[8], - =NP2JV(5)[8],=NP2L(5)[8],=NP2LC(5)[8],=NP2MM(5)[8],=NP2MN(5)[8],=NP2MP(5)[8],=NP2MR(5)[8], - =NP2MR/4(5)[8],=NP2O(5)[8],=NP2OL(5)[8],=NP2OO(5)[8],=NP2OR(5)[8],=NP2PA(5)[8],=NP2R(5)[8], - =NP2T(5)[8],=NP2W(5)[8],=NP3AX(5)[8],=NP3BL(5)[8],=NP3CC(5)[8],=NP3CI(5)[8],=NP3CM(5)[8], - =NP3CT(5)[8],=NP3FR(5)[8],=NP3G(5)[8],=NP3HD(5)[8],=NP3HG(5)[8],=NP3HN(5)[8],=NP3HP(5)[8], - =NP3HU(5)[8],=NP3IL(5)[8],=NP3IU(5)[8],=NP3K(5)[8],=NP3KM(5)[8],=NP3MM(5)[8],=NP3MX(5)[8], - =NP3NC(5)[8],=NP3OW(5)[8],=NP3QT(5)[8],=NP3R(5)[8],=NP3ST(5)[8],=NP3TM(5)[8],=NP3UM(5)[8], - =NP3VJ(5)[8],=NP4AS(5)[8],=NP4AV(5)[8],=NP4CC(5)[8],=NP4CK(5)[8],=NP4CV(5)[8],=NP4DM(5)[8], - =NP4EM(5)[8],=NP4GH(5)[8],=NP4GW(5)[8],=NP4J(5)[8],=NP4JL(5)[8],=NP4JU(5)[8],=NP4KV(5)[8], - =NP4M(5)[8],=NP4ND(5)[8],=NP4PF(5)[8],=NP4RJ(5)[8],=NP4SY(5)[8],=NP4TR(5)[8],=NP4WT(5)[8], - =NP4XB(5)[8],=WH2AAT(5)[8],=WH2ABJ(5)[8],=WH2G(5)[8],=WH6A(5)[8],=WH6ACF(5)[8],=WH6AJS(5)[8], - =WH6AQ(5)[8],=WH6AVU(5)[8],=WH6AX(5)[8],=WH6BRQ(5)[8],=WH6CEF(5)[8],=WH6CMT(5)[8],=WH6CNC(5)[8], - =WH6CTC(5)[8],=WH6CXA(5)[8],=WH6CXT(5)[8],=WH6DBX(5)[8],=WH6DMJ(5)[8],=WH6DNF(5)[8],=WH6DOL(5)[8], - =WH6DUJ(5)[8],=WH6DXT(5)[8],=WH6DZ(5)[8],=WH6ECQ(5)[8],=WH6EFI(5)[8],=WH6EIK(5)[8],=WH6EIR(5)[8], - =WH6EKW(5)[8],=WH6ELG(5)[8],=WH6ELM(5)[8],=WH6ETE(5)[8],=WH6ETF(5)[8],=WH6FCP(5)[8],=WH6FGK(5)[8], - =WH6HA(5)[8],=WH6IF(5)[8],=WH6IZ(5)[8],=WH6J(5)[8],=WH6L(5)[8],=WH6LE(5)[8],=WH6LE/4(5)[8], - =WH6LE/M(5)[8],=WH6LE/P(5)[8],=WH6NE(5)[8],=WH6WX(5)[8],=WH6YH(5)[8],=WH6YH/4(5)[8],=WH6YM(5)[8], - =WH6ZF(5)[8],=WH7GD(5)[8],=WH7HX(5)[8],=WH7NI(5)[8],=WH7XK(5)[8],=WH7XU(5)[8],=WH7YL(5)[8], - =WH7YV(5)[8],=WH7ZM(5)[8],=WH9AAF(5)[8],=WL4X(5)[8],=WL7AUL(5)[8],=WL7AX(5)[8],=WL7BAL(5)[8], - =WL7CHA(5)[8],=WL7CIB(5)[8],=WL7CKJ(5)[8],=WL7COL(5)[8],=WL7CPA(5)[8],=WL7CQT(5)[8],=WL7CUY(5)[8], - =WL7E/4(5)[8],=WL7GV(5)[8],=WL7SR(5)[8],=WL7UN(5)[8],=WL7YX(5)[8],=WP2AGD(5)[8],=WP2AGO(5)[8], - =WP2AHC(5)[8],=WP2AIG(5)[8],=WP2BB(5)[8],=WP2C(5)[8],=WP2L(5)[8],=WP2MA(5)[8],=WP2P(5)[8], - =WP3AY(5)[8],=WP3BC(5)[8],=WP3DW(5)[8],=WP3HL(5)[8],=WP3JE(5)[8],=WP3JQ(5)[8],=WP3JU(5)[8], - =WP3K(5)[8],=WP3LE(5)[8],=WP3MB(5)[8],=WP3ME(5)[8],=WP3NIS(5)[8],=WP3O(5)[8],=WP3QE(5)[8], - =WP3ZA(5)[8],=WP4AIE(5)[8],=WP4AIL(5)[8],=WP4AIZ(5)[8],=WP4ALH(5)[8],=WP4AQK(5)[8],=WP4AVW(5)[8], - =WP4B(5)[8],=WP4BFP(5)[8],=WP4BGM(5)[8],=WP4BIN(5)[8],=WP4BJS(5)[8],=WP4BK(5)[8],=WP4BOC(5)[8], - =WP4BQV(5)[8],=WP4BXS(5)[8],=WP4CKW(5)[8],=WP4CLS(5)[8],=WP4CMH(5)[8],=WP4DC(5)[8],=WP4DCB(5)[8], - =WP4DFK(5)[8],=WP4DNE(5)[8],=WP4DPX(5)[8],=WP4ENX(5)[8],=WP4EXH(5)[8],=WP4FEI(5)[8],=WP4FRK(5)[8], - =WP4FS(5)[8],=WP4GAK(5)[8],=WP4GFH(5)[8],=WP4GX(5)[8],=WP4GYA(5)[8],=WP4HFZ(5)[8],=WP4HNN(5)[8], - =WP4HOX(5)[8],=WP4IF(5)[8],=WP4IJ(5)[8],=WP4IK(5)[8],=WP4ILP(5)[8],=WP4JC(5)[8],=WP4JKO(5)[8], - =WP4JQJ(5)[8],=WP4JSR(5)[8],=WP4JT(5)[8],=WP4KCJ(5)[8],=WP4KDH(5)[8],=WP4KFP(5)[8],=WP4KGI(5)[8], - =WP4KI(5)[8],=WP4KJV(5)[8],=WP4KPK(5)[8],=WP4KSK(5)[8],=WP4KTD(5)[8],=WP4LBK(5)[8],=WP4LDG(5)[8], - =WP4LDL(5)[8],=WP4LDP(5)[8],=WP4LE(5)[8],=WP4LEO(5)[8],=WP4LHA(5)[8],=WP4LTA(5)[8],=WP4MAE(5)[8], - =WP4MD(5)[8],=WP4MO(5)[8],=WP4MQF(5)[8],=WP4MWE(5)[8],=WP4MWS(5)[8],=WP4MXE(5)[8],=WP4MYG(5)[8], - =WP4MYK(5)[8],=WP4NAI(5)[8],=WP4NAQ(5)[8],=WP4NBF(5)[8],=WP4NBG(5)[8],=WP4NFU(5)[8],=WP4NKU(5)[8], - =WP4NLQ(5)[8],=WP4NVL(5)[8],=WP4NWV(5)[8],=WP4NWW(5)[8],=WP4O/4(5)[8],=WP4O/M(5)[8],=WP4OAT(5)[8], - =WP4OBD(5)[8],=WP4OBH(5)[8],=WP4ODR(5)[8],=WP4ODT(5)[8],=WP4OEO(5)[8],=WP4OFA(5)[8],=WP4OHJ(5)[8], - =WP4OLM(5)[8],=WP4OMG(5)[8],=WP4OMV(5)[8],=WP4ONR(5)[8],=WP4OOI(5)[8],=WP4OPD(5)[8],=WP4OPF(5)[8], - =WP4OPG(5)[8],=WP4OTP(5)[8],=WP4OXA(5)[8],=WP4P(5)[8],=WP4PR(5)[8],=WP4PUV(5)[8],=WP4PWV(5)[8], - =WP4PXG(5)[8],=WP4QER(5)[8],=WP4QGV(5)[8],=WP4QHU(5)[8],=WP4TD(5)[8],=WP4TX(5)[8],=WP4UC(5)[8], - =WP4UM(5)[8],=WP4VL(5)[8],=WP4VM(5)[8],=WP4YG(5)[8], + =KP4RRC(5)[8],=KP4RT(5)[8],=KP4RZ(5)[8],=KP4SU(5)[8],=KP4SWR(5)[8],=KP4TL(5)[8],=KP4TR(5)[8], + =KP4UFO(5)[8],=KP4USA(5)[8],=KP4WK(5)[8],=KP4WW(5)[8],=KP4WY(5)[8],=KP4XP(5)[8],=KP4Y(5)[8], + =KP4YLV(5)[8],=KP4ZV(5)[8],=KP4ZX(5)[8],=NH2A(5)[8],=NH2BQ(5)[8],=NH2DB(5)[8],=NH2F(5)[8], + =NH2GY(5)[8],=NH6AU(5)[8],=NH6AX(5)[8],=NH6BD/4(5)[8],=NH6E(5)[8],=NH6GE(5)[8],=NH6GR(5)[8], + =NH6HX(5)[8],=NH6HX/4(5)[8],=NH6JX(5)[8],=NH6KI(5)[8],=NH6QR(5)[8],=NH6SR(5)[8],=NH6T(5)[8], + =NH6TL(5)[8],=NH7AA(5)[8],=NH7AQ(5)[8],=NH7AR(5)[8],=NH7FG(5)[8],=NH7FV(5)[8],=NH7OI(5)[8], + =NH7T/4(5)[8],=NH7UN(5)[8],=NH7XN(5)[8],=NH7YL(5)[8],=NL7AJ(5)[8],=NL7AU(5)[8],=NL7AU/4(5)[8], + =NL7BV(5)[8],=NL7KL(5)[8],=NL7KX(5)[8],=NL7LO(5)[8],=NL7LR(5)[8],=NL7LY(5)[8],=NL7MD(5)[8], + =NL7MR(5)[8],=NL7OB(5)[8],=NL7OS(5)[8],=NL7P(5)[8],=NL7PV(5)[8],=NL7U(5)[8],=NL7VV(5)[8], + =NL7VX(5)[8],=NL7VX/4(5)[8],=NL7VX/M(5)[8],=NL7YZ(5)[8],=NP2B(5)[8],=NP2B/4(5)[8],=NP2BB(5)[8], + =NP2BW(5)[8],=NP2C(5)[8],=NP2C/4(5)[8],=NP2CB(5)[8],=NP2D(5)[8],=NP2DB(5)[8],=NP2DJ(5)[8], + =NP2EI(5)[8],=NP2FJ(5)[8],=NP2FT(5)[8],=NP2GN(5)[8],=NP2GW(5)[8],=NP2HQ(5)[8],=NP2HS(5)[8], + =NP2HW(5)[8],=NP2IE(5)[8],=NP2IF(5)[8],=NP2IJ(5)[8],=NP2IS(5)[8],=NP2IW(5)[8],=NP2IX(5)[8], + =NP2JA(5)[8],=NP2JS(5)[8],=NP2JV(5)[8],=NP2L(5)[8],=NP2LC(5)[8],=NP2MM(5)[8],=NP2MN(5)[8], + =NP2MP(5)[8],=NP2MR(5)[8],=NP2MR/4(5)[8],=NP2O(5)[8],=NP2OL(5)[8],=NP2OO(5)[8],=NP2OR(5)[8], + =NP2PA(5)[8],=NP2R(5)[8],=NP2T(5)[8],=NP2W(5)[8],=NP3AX(5)[8],=NP3BL(5)[8],=NP3CC(5)[8], + =NP3CI(5)[8],=NP3CM(5)[8],=NP3CT(5)[8],=NP3FR(5)[8],=NP3G(5)[8],=NP3HD(5)[8],=NP3HG(5)[8], + =NP3HN(5)[8],=NP3HP(5)[8],=NP3HU(5)[8],=NP3IL(5)[8],=NP3IU(5)[8],=NP3K(5)[8],=NP3KM(5)[8], + =NP3MM(5)[8],=NP3MX(5)[8],=NP3NC(5)[8],=NP3OW(5)[8],=NP3QT(5)[8],=NP3R(5)[8],=NP3ST(5)[8], + =NP3TM(5)[8],=NP3UM(5)[8],=NP3VJ(5)[8],=NP4AS(5)[8],=NP4AV(5)[8],=NP4CC(5)[8],=NP4CK(5)[8], + =NP4CV(5)[8],=NP4DM(5)[8],=NP4EM(5)[8],=NP4GH(5)[8],=NP4GW(5)[8],=NP4J(5)[8],=NP4JL(5)[8], + =NP4JU(5)[8],=NP4KV(5)[8],=NP4M(5)[8],=NP4ND(5)[8],=NP4PF(5)[8],=NP4RJ(5)[8],=NP4SY(5)[8], + =NP4TR(5)[8],=NP4WT(5)[8],=NP4XB(5)[8],=WH2AAT(5)[8],=WH2ABJ(5)[8],=WH2G(5)[8],=WH6A(5)[8], + =WH6ACF(5)[8],=WH6AJS(5)[8],=WH6AQ(5)[8],=WH6AVU(5)[8],=WH6AX(5)[8],=WH6BRQ(5)[8],=WH6CEF(5)[8], + =WH6CMT(5)[8],=WH6CNC(5)[8],=WH6CTC(5)[8],=WH6CXA(5)[8],=WH6CXT(5)[8],=WH6DBX(5)[8],=WH6DMJ(5)[8], + =WH6DNF(5)[8],=WH6DOL(5)[8],=WH6DUJ(5)[8],=WH6DXT(5)[8],=WH6DZ(5)[8],=WH6ECQ(5)[8],=WH6EFI(5)[8], + =WH6EIK(5)[8],=WH6EIR(5)[8],=WH6EKW(5)[8],=WH6ELG(5)[8],=WH6ELM(5)[8],=WH6ETE(5)[8],=WH6ETF(5)[8], + =WH6FCP(5)[8],=WH6FGK(5)[8],=WH6HA(5)[8],=WH6IF(5)[8],=WH6IZ(5)[8],=WH6J(5)[8],=WH6L(5)[8], + =WH6LE(5)[8],=WH6LE/4(5)[8],=WH6LE/M(5)[8],=WH6LE/P(5)[8],=WH6NE(5)[8],=WH6WX(5)[8],=WH6YH(5)[8], + =WH6YH/4(5)[8],=WH6YM(5)[8],=WH6ZF(5)[8],=WH7GD(5)[8],=WH7HX(5)[8],=WH7NI(5)[8],=WH7XK(5)[8], + =WH7XU(5)[8],=WH7YL(5)[8],=WH7YV(5)[8],=WH7ZM(5)[8],=WH9AAF(5)[8],=WL4X(5)[8],=WL7AUL(5)[8], + =WL7AX(5)[8],=WL7BAL(5)[8],=WL7CHA(5)[8],=WL7CIB(5)[8],=WL7CKJ(5)[8],=WL7COL(5)[8],=WL7CPA(5)[8], + =WL7CQT(5)[8],=WL7CUY(5)[8],=WL7E/4(5)[8],=WL7GV(5)[8],=WL7SR(5)[8],=WL7UN(5)[8],=WL7YX(5)[8], + =WP2AGD(5)[8],=WP2AGO(5)[8],=WP2AHC(5)[8],=WP2AIG(5)[8],=WP2BB(5)[8],=WP2C(5)[8],=WP2L(5)[8], + =WP2MA(5)[8],=WP2P(5)[8],=WP3AY(5)[8],=WP3BC(5)[8],=WP3DW(5)[8],=WP3HL(5)[8],=WP3JE(5)[8], + =WP3JQ(5)[8],=WP3JU(5)[8],=WP3K(5)[8],=WP3LE(5)[8],=WP3MB(5)[8],=WP3ME(5)[8],=WP3NIS(5)[8], + =WP3O(5)[8],=WP3QE(5)[8],=WP3ZA(5)[8],=WP4AIE(5)[8],=WP4AIL(5)[8],=WP4AIZ(5)[8],=WP4ALH(5)[8], + =WP4AQK(5)[8],=WP4AVW(5)[8],=WP4B(5)[8],=WP4BFP(5)[8],=WP4BGM(5)[8],=WP4BIN(5)[8],=WP4BJS(5)[8], + =WP4BK(5)[8],=WP4BOC(5)[8],=WP4BQV(5)[8],=WP4BXS(5)[8],=WP4CKW(5)[8],=WP4CLS(5)[8],=WP4CMH(5)[8], + =WP4DC(5)[8],=WP4DCB(5)[8],=WP4DFK(5)[8],=WP4DMV(5)[8],=WP4DNE(5)[8],=WP4DPX(5)[8],=WP4ENX(5)[8], + =WP4EXH(5)[8],=WP4FEI(5)[8],=WP4FRK(5)[8],=WP4FS(5)[8],=WP4GAK(5)[8],=WP4GFH(5)[8],=WP4GX(5)[8], + =WP4GYA(5)[8],=WP4HFZ(5)[8],=WP4HNN(5)[8],=WP4HOX(5)[8],=WP4IF(5)[8],=WP4IJ(5)[8],=WP4IK(5)[8], + =WP4ILP(5)[8],=WP4INP(5)[8],=WP4JC(5)[8],=WP4JKO(5)[8],=WP4JQJ(5)[8],=WP4JSR(5)[8],=WP4JT(5)[8], + =WP4KCJ(5)[8],=WP4KDH(5)[8],=WP4KFP(5)[8],=WP4KGI(5)[8],=WP4KI(5)[8],=WP4KJV(5)[8],=WP4KPK(5)[8], + =WP4KSK(5)[8],=WP4KTD(5)[8],=WP4LBK(5)[8],=WP4LDG(5)[8],=WP4LDL(5)[8],=WP4LDP(5)[8],=WP4LE(5)[8], + =WP4LEO(5)[8],=WP4LHA(5)[8],=WP4LTA(5)[8],=WP4MAE(5)[8],=WP4MD(5)[8],=WP4MQF(5)[8],=WP4MWE(5)[8], + =WP4MWS(5)[8],=WP4MXE(5)[8],=WP4MYG(5)[8],=WP4MYK(5)[8],=WP4NAI(5)[8],=WP4NAQ(5)[8],=WP4NBF(5)[8], + =WP4NBG(5)[8],=WP4NFU(5)[8],=WP4NKU(5)[8],=WP4NLQ(5)[8],=WP4NVL(5)[8],=WP4NWV(5)[8],=WP4NWW(5)[8], + =WP4O/4(5)[8],=WP4O/M(5)[8],=WP4OAT(5)[8],=WP4OBD(5)[8],=WP4OBH(5)[8],=WP4ODR(5)[8],=WP4ODT(5)[8], + =WP4OEO(5)[8],=WP4OFA(5)[8],=WP4OFL(5)[8],=WP4OHJ(5)[8],=WP4OLM(5)[8],=WP4OMG(5)[8],=WP4OMV(5)[8], + =WP4ONR(5)[8],=WP4OOI(5)[8],=WP4OPD(5)[8],=WP4OPF(5)[8],=WP4OTP(5)[8],=WP4OXA(5)[8],=WP4P(5)[8], + =WP4PR(5)[8],=WP4PUV(5)[8],=WP4PWV(5)[8],=WP4PXG(5)[8],=WP4QER(5)[8],=WP4QGV(5)[8],=WP4QHU(5)[8], + =WP4TD(5)[8],=WP4TX(5)[8],=WP4UC(5)[8],=WP4UM(5)[8],=WP4VL(5)[8],=WP4VM(5)[8],=WP4YG(5)[8], AA5(4)[7],AB5(4)[7],AC5(4)[7],AD5(4)[7],AE5(4)[7],AF5(4)[7],AG5(4)[7],AI5(4)[7],AJ5(4)[7], AK5(4)[7],K5(4)[7],KA5(4)[7],KB5(4)[7],KC5(4)[7],KD5(4)[7],KE5(4)[7],KF5(4)[7],KG5(4)[7], KI5(4)[7],KJ5(4)[7],KK5(4)[7],KM5(4)[7],KN5(4)[7],KO5(4)[7],KQ5(4)[7],KR5(4)[7],KS5(4)[7], @@ -1368,44 +1375,45 @@ United States: 05: 08: NA: 37.53: 91.67: 5.0: K: =AL7V(4)[7],=KH0BZ(4)[7],=KH0CE(4)[7],=KH0CU(4)[7],=KH0DW(4)[7],=KH2AI(4)[7],=KH2BH(4)[7], =KH2DF(4)[7],=KH2DF/5(4)[7],=KH2TB(4)[7],=KH2XD(4)[7],=KH2XO(4)[7],=KH2YO(4)[7],=KH6ABA(4)[7], =KH6CA(4)[7],=KH6DAN(4)[7],=KH6GGC(4)[7],=KH6HPQ(4)[7],=KH6IDF(4)[7],=KH6II(4)[7],=KH6IO(4)[7], - =KH6ITY/M(4)[7],=KH6JCV(4)[7],=KH6JIQ(4)[7],=KH6JTE(4)[7],=KH6JTM(4)[7],=KH6JVL(4)[7], - =KH6KG/5(4)[7],=KH6LL(4)[7],=KH6LX(4)[7],=KH6MB/5(4)[7],=KH6SP/5(4)[7],=KH6SZ(4)[7],=KH6TG(4)[7], - =KH6UW(4)[7],=KH7CF(4)[7],=KH7FB(4)[7],=KH7IC(4)[7],=KH7JE(4)[7],=KH7QL(4)[7],=KH7QO(4)[7], - =KH8CG(4)[7],=KH9AE(4)[7],=KL0EX(4)[7],=KL0HU(4)[7],=KL0PG(4)[7],=KL0XI(4)[7],=KL1DA(4)[7], - =KL1DJ(4)[7],=KL1DY(4)[7],=KL1MM(4)[7],=KL1RX(4)[7],=KL1TS(4)[7],=KL1UR(4)[7],=KL1WG(4)[7], - =KL1WO(4)[7],=KL1XK(4)[7],=KL1Y(4)[7],=KL1ZW(4)[7],=KL2AX(4)[7],=KL2AX/5(4)[7],=KL2CD(4)[7], - =KL2HC(4)[7],=KL2HN(4)[7],=KL2MI(4)[7],=KL2RA(4)[7],=KL2RB(4)[7],=KL2TV(4)[7],=KL2UO(4)[7], - =KL2UP(4)[7],=KL2VA(4)[7],=KL2ZJ(4)[7],=KL2ZK(4)[7],=KL3DB(4)[7],=KL3DP(4)[7],=KL3HK(4)[7], - =KL3HZ(4)[7],=KL3JL(4)[7],=KL3KH(4)[7],=KL3KI(4)[7],=KL3TB(4)[7],=KL4JQ(4)[7],=KL5L(4)[7], - =KL5Z(4)[7],=KL7AH(4)[7],=KL7AU(4)[7],=KL7AX(4)[7],=KL7BCD(4)[7],=KL7BL(4)[7],=KL7BX(4)[7], - =KL7BZ/5(4)[7],=KL7BZL(4)[7],=KL7CD(4)[7],=KL7DB(4)[7],=KL7EBE(4)[7],=KL7EMH(4)[7], - =KL7EMH/M(4)[7],=KL7EQQ(4)[7],=KL7F(4)[7],=KL7FB(4)[7],=KL7FHX(4)[7],=KL7FLY(4)[7],=KL7FQQ(4)[7], - =KL7FQR(4)[7],=KL7GNW(4)[7],=KL7HH(4)[7],=KL7HJZ(4)[7],=KL7IDM(4)[7],=KL7IK(4)[7],=KL7ITF(4)[7], - =KL7IWU(4)[7],=KL7IZW(4)[7],=KL7JAR(4)[7],=KL7JEX(4)[7],=KL7JIU(4)[7],=KL7JR/5(4)[7],=KL7JW(4)[7], - =KL7LJ(4)[7],=KL7LY(4)[7],=KL7MA(4)[7],=KL7ME(4)[7],=KL7ML(4)[7],=KL7NE(4)[7],=KL7NI(4)[7], - =KL7OI(4)[7],=KL7PZ(4)[7],=KL7QC(4)[7],=KL7SG(4)[7],=KL7TN/5(4)[7],=KL7UHF(4)[7],=KL7USI/5(4)[7], - =KL7XP(4)[7],=KL7XS(4)[7],=KL7YY/5(4)[7],=KP2AZ(4)[7],=KP4CV(4)[7],=KP4DJT(4)[7],=KP4FF(4)[7], - =KP4FFW(4)[7],=KP4GMC(4)[7],=KP4JE(4)[7],=KP4JG(4)[7],=KP4JY(4)[7],=KP4YP(4)[7],=KP4YY(4)[7], - =NH0V/5(4)[7],=NH2LP(4)[7],=NH6AZ(4)[7],=NH6CJ(4)[7],=NH6EF(4)[7],=NH6FA(4)[7],=NH6L(4)[7], - =NH6MG(4)[7],=NH6TD(4)[7],=NH6VB(4)[7],=NH6VJ(4)[7],=NH6WL(4)[7],=NH6WL/5(4)[7],=NH7FO(4)[7], - =NH7MV(4)[7],=NH7PZ(4)[7],=NH7R(4)[7],=NH7RO(4)[7],=NH7RO/5(4)[7],=NH7TR(4)[7],=NH7VA(4)[7], - =NH7WB(4)[7],=NL5J(4)[7],=NL7AX(4)[7],=NL7C(4)[7],=NL7CO(4)[7],=NL7CO/5(4)[7],=NL7DC(4)[7], - =NL7HB(4)[7],=NL7IE(4)[7],=NL7JH(4)[7],=NL7JI(4)[7],=NL7JV(4)[7],=NL7K/5(4)[7],=NL7KB(4)[7], - =NL7LE(4)[7],=NL7NP(4)[7],=NL7OM(4)[7],=NL7PD(4)[7],=NL7RQ(4)[7],=NL7RQ/5(4)[7],=NL7SI(4)[7], - =NL7TO(4)[7],=NL7ZL(4)[7],=NP2EE(4)[7],=NP2PR(4)[7],=NP2RA(4)[7],=NP3BA(4)[7],=NP3CV(4)[7], - =NP3NT(4)[7],=NP3PG(4)[7],=NP3RG(4)[7],=NP3SU(4)[7],=NP3TY(4)[7],=NP4EA(4)[7],=NP4NQ(4)[7], - =NP4NQ/5(4)[7],=NP4RW(4)[7],=NP4RZ(4)[7],=WH2ACT(4)[7],=WH2ACT/5(4)[7],=WH6ARN(4)[7], - =WH6BYJ(4)[7],=WH6BYP(4)[7],=WH6CCQ(4)[7],=WH6CDU(4)[7],=WH6CUL(4)[7],=WH6DMP(4)[7],=WH6DZU(4)[7], - =WH6ECJ(4)[7],=WH6EMW(4)[7],=WH6EOF(4)[7],=WH6ERS(4)[7],=WH6EUA(4)[7],=WH6EXQ(4)[7],=WH6FAD(4)[7], - =WH6FGM(4)[7],=WH6FZ/5(4)[7],=WH6FZL(4)[7],=WH6FZN(4)[7],=WH6GBC(4)[7],=WH6GEA(4)[7],=WH6KK(4)[7], - =WH6L/5(4)[7],=WH7DC(4)[7],=WH7DW(4)[7],=WH7OK(4)[7],=WH7R(4)[7],=WH7YM(4)[7],=WH7YN(4)[7], - =WL3WX(4)[7],=WL5H(4)[7],=WL7AIU(4)[7],=WL7AWC(4)[7],=WL7BBV(4)[7],=WL7BKF(4)[7],=WL7BPY(4)[7], - =WL7CA(4)[7],=WL7CJA(4)[7],=WL7CJC(4)[7],=WL7CQE(4)[7],=WL7CTP(4)[7],=WL7CTQ(4)[7],=WL7D(4)[7], - =WL7FC(4)[7],=WL7FE(4)[7],=WL7FT(4)[7],=WL7FT/5(4)[7],=WL7K/5(4)[7],=WL7ME(4)[7],=WL7MQ/5(4)[7], - =WL7OP(4)[7],=WL7OU(4)[7],=WL7SG(4)[7],=WL7W(4)[7],=WL7WN(4)[7],=WL7XI(4)[7],=WL7XR(4)[7], - =WP2AHG(4)[7],=WP2N(4)[7],=WP2U(4)[7],=WP2WP(4)[7],=WP3AL(4)[7],=WP3HG(4)[7],=WP3JM(4)[7], - =WP4A(4)[7],=WP4ADA(4)[7],=WP4APJ(4)[7],=WP4BAB(4)[7],=WP4BAT(4)[7],=WP4CJY(4)[7],=WP4EVA(4)[7], - =WP4EVL(4)[7],=WP4IXT(4)[7],=WP4KSP(4)[7],=WP4KTF(4)[7],=WP4KUW(4)[7],=WP4LKA(4)[7],=WP4MJP(4)[7], + =KH6ITY/M(4)[7],=KH6JCV(4)[7],=KH6JIQ(4)[7],=KH6JTE(4)[7],=KH6JTM(4)[7],=KH6JUM(4)[7], + =KH6JVL(4)[7],=KH6KG/5(4)[7],=KH6LL(4)[7],=KH6LX(4)[7],=KH6MB/5(4)[7],=KH6SP/5(4)[7],=KH6SZ(4)[7], + =KH6TG(4)[7],=KH6UW(4)[7],=KH7CF(4)[7],=KH7FB(4)[7],=KH7IC(4)[7],=KH7JE(4)[7],=KH7QL(4)[7], + =KH7QO(4)[7],=KH8CG(4)[7],=KH9AE(4)[7],=KL0EX(4)[7],=KL0HU(4)[7],=KL0PG(4)[7],=KL0WH(4)[7], + =KL0XI(4)[7],=KL1DA(4)[7],=KL1DJ(4)[7],=KL1DY(4)[7],=KL1MM(4)[7],=KL1RX(4)[7],=KL1TS(4)[7], + =KL1UR(4)[7],=KL1WG(4)[7],=KL1WO(4)[7],=KL1XK(4)[7],=KL1Y(4)[7],=KL1ZW(4)[7],=KL2AX(4)[7], + =KL2AX/5(4)[7],=KL2CD(4)[7],=KL2HC(4)[7],=KL2HN(4)[7],=KL2MI(4)[7],=KL2OY(4)[7],=KL2RA(4)[7], + =KL2RB(4)[7],=KL2TV(4)[7],=KL2UO(4)[7],=KL2UP(4)[7],=KL2VA(4)[7],=KL2ZJ(4)[7],=KL2ZK(4)[7], + =KL3DB(4)[7],=KL3DP(4)[7],=KL3HK(4)[7],=KL3HX(4)[7],=KL3HZ(4)[7],=KL3JL(4)[7],=KL3KH(4)[7], + =KL3KI(4)[7],=KL3TB(4)[7],=KL4JQ(4)[7],=KL5L(4)[7],=KL5Z(4)[7],=KL7AH(4)[7],=KL7AU(4)[7], + =KL7AX(4)[7],=KL7BCD(4)[7],=KL7BL(4)[7],=KL7BX(4)[7],=KL7BZ/5(4)[7],=KL7BZL(4)[7],=KL7CD(4)[7], + =KL7DB(4)[7],=KL7EBE(4)[7],=KL7EMH(4)[7],=KL7EMH/M(4)[7],=KL7EQQ(4)[7],=KL7F(4)[7],=KL7FB(4)[7], + =KL7FHX(4)[7],=KL7FLY(4)[7],=KL7FQR(4)[7],=KL7GNW(4)[7],=KL7HH(4)[7],=KL7HJZ(4)[7],=KL7IDM(4)[7], + =KL7IK(4)[7],=KL7ITF(4)[7],=KL7IWU(4)[7],=KL7IZW(4)[7],=KL7JAR(4)[7],=KL7JEX(4)[7],=KL7JIU(4)[7], + =KL7JR/5(4)[7],=KL7JW(4)[7],=KL7LJ(4)[7],=KL7LY(4)[7],=KL7MA(4)[7],=KL7ME(4)[7],=KL7ML(4)[7], + =KL7NE(4)[7],=KL7NI(4)[7],=KL7OI(4)[7],=KL7PZ(4)[7],=KL7QC(4)[7],=KL7SG(4)[7],=KL7TN/5(4)[7], + =KL7UHF(4)[7],=KL7USI/5(4)[7],=KL7XP(4)[7],=KL7XS(4)[7],=KL7YY/5(4)[7],=KP2AZ(4)[7],=KP4CV(4)[7], + =KP4DJT(4)[7],=KP4FF(4)[7],=KP4FFW(4)[7],=KP4GMC(4)[7],=KP4JE(4)[7],=KP4JG(4)[7],=KP4YP(4)[7], + =KP4YY(4)[7],=NH0V/5(4)[7],=NH2BV(4)[7],=NH2LP(4)[7],=NH6AZ(4)[7],=NH6CJ(4)[7],=NH6EF(4)[7], + =NH6FA(4)[7],=NH6L(4)[7],=NH6MG(4)[7],=NH6TD(4)[7],=NH6VB(4)[7],=NH6VJ(4)[7],=NH6WL(4)[7], + =NH6WL/5(4)[7],=NH7FO(4)[7],=NH7MV(4)[7],=NH7PZ(4)[7],=NH7R(4)[7],=NH7RO(4)[7],=NH7RO/5(4)[7], + =NH7TR(4)[7],=NH7VA(4)[7],=NH7WB(4)[7],=NL5J(4)[7],=NL7AX(4)[7],=NL7C(4)[7],=NL7CO(4)[7], + =NL7CO/5(4)[7],=NL7DC(4)[7],=NL7HB(4)[7],=NL7IE(4)[7],=NL7JH(4)[7],=NL7JI(4)[7],=NL7JV(4)[7], + =NL7JZ(4)[7],=NL7K/5(4)[7],=NL7KB(4)[7],=NL7LE(4)[7],=NL7NP(4)[7],=NL7OM(4)[7],=NL7PD(4)[7], + =NL7RQ(4)[7],=NL7RQ/5(4)[7],=NL7SI(4)[7],=NL7TO(4)[7],=NL7WY(4)[7],=NL7ZL(4)[7],=NP2EE(4)[7], + =NP2PR(4)[7],=NP2RA(4)[7],=NP3BA(4)[7],=NP3CV(4)[7],=NP3NT(4)[7],=NP3PG(4)[7],=NP3RG(4)[7], + =NP3SU(4)[7],=NP3TY(4)[7],=NP4EA(4)[7],=NP4NQ(4)[7],=NP4NQ/5(4)[7],=NP4RW(4)[7],=NP4RZ(4)[7], + =WH2ACT(4)[7],=WH2ACT/5(4)[7],=WH6ARN(4)[7],=WH6BYJ(4)[7],=WH6BYP(4)[7],=WH6CCQ(4)[7], + =WH6CDU(4)[7],=WH6CUL(4)[7],=WH6DMP(4)[7],=WH6DZU(4)[7],=WH6ECJ(4)[7],=WH6EMW(4)[7],=WH6EOF(4)[7], + =WH6ERS(4)[7],=WH6EUA(4)[7],=WH6EXQ(4)[7],=WH6FAD(4)[7],=WH6FGM(4)[7],=WH6FZ/5(4)[7], + =WH6FZL(4)[7],=WH6FZN(4)[7],=WH6GBC(4)[7],=WH6GEA(4)[7],=WH6GL(4)[7],=WH6KK(4)[7],=WH6L/5(4)[7], + =WH7DC(4)[7],=WH7DW(4)[7],=WH7OK(4)[7],=WH7R(4)[7],=WH7YM(4)[7],=WH7YN(4)[7],=WL3WX(4)[7], + =WL5H(4)[7],=WL7AIU(4)[7],=WL7AWC(4)[7],=WL7BBV(4)[7],=WL7BKF(4)[7],=WL7BPY(4)[7],=WL7CA(4)[7], + =WL7CJA(4)[7],=WL7CJC(4)[7],=WL7CQE(4)[7],=WL7CTP(4)[7],=WL7CTQ(4)[7],=WL7D(4)[7],=WL7FC(4)[7], + =WL7FE(4)[7],=WL7FT(4)[7],=WL7FT/5(4)[7],=WL7K/5(4)[7],=WL7ME(4)[7],=WL7MQ/5(4)[7],=WL7OP(4)[7], + =WL7OU(4)[7],=WL7SG(4)[7],=WL7W(4)[7],=WL7WN(4)[7],=WL7XI(4)[7],=WL7XR(4)[7],=WP2AHG(4)[7], + =WP2N(4)[7],=WP2U(4)[7],=WP2WP(4)[7],=WP3AL(4)[7],=WP3HG(4)[7],=WP3JM(4)[7],=WP4A(4)[7], + =WP4ADA(4)[7],=WP4APJ(4)[7],=WP4BAB(4)[7],=WP4BAT(4)[7],=WP4CJY(4)[7],=WP4EVA(4)[7],=WP4EVL(4)[7], + =WP4IXT(4)[7],=WP4IYJ(4)[7],=WP4KSP(4)[7],=WP4KTF(4)[7],=WP4KUW(4)[7],=WP4LKA(4)[7],=WP4MJP(4)[7], =WP4MYI(4)[7],=WP4MZR(4)[7],=WP4NAK(4)[7],=WP4NEP(4)[7],=WP4NQA(4)[7],=WP4NQL(4)[7],=WP4OUE(4)[7], =WP4QLB(4)[7],=WP4RON(4)[7], AA6(3)[6],AB6(3)[6],AC6(3)[6],AD6(3)[6],AE6(3)[6],AF6(3)[6],AG6(3)[6],AI6(3)[6],AJ6(3)[6], @@ -1434,43 +1442,44 @@ United States: 05: 08: NA: 37.53: 91.67: 5.0: K: =KH6GKR(3)[6],=KH6HH(3)[6],=KH6HJE(3)[6],=KH6HOU(3)[6],=KH6IKH(3)[6],=KH6IKL(3)[6],=KH6IP(3)[6], =KH6IPJ(3)[6],=KH6JCT(3)[6],=KH6JGD(3)[6],=KH6JJN(3)[6],=KH6JJN/P(3)[6],=KH6JN(3)[6], =KH6JNK(3)[6],=KH6JR(3)[6],=KH6JRB(3)[6],=KH6JRC(3)[6],=KH6JS(3)[6],=KH6JUZ(3)[6],=KH6JVS(3)[6], - =KH6JWG(3)[6],=KH6KT(3)[6],=KH6LO(3)[6],=KH6MV(3)[6],=KH6N(3)[6],=KH6NG(3)[6],=KH6O(3)[6], - =KH6OK(3)[6],=KH6PGA/6(3)[6],=KH6PM(3)[6],=KH6PW(3)[6],=KH6SC(3)[6],=KH6TO(3)[6],=KH6UQ(3)[6], - =KH6USA(3)[6],=KH6VC(3)[6],=KH6VC/6(3)[6],=KH6VZ(3)[6],=KH6WL(3)[6],=KH6WZ(3)[6],=KH7CD/6(3)[6], - =KH7CO(3)[6],=KH7CS(3)[6],=KH7EM(3)[6],=KH7I(3)[6],=KH7IZ(3)[6],=KH7JI(3)[6],=KH7JR(3)[6], - =KH7NS(3)[6],=KH7QS(3)[6],=KH7QU(3)[6],=KH7RB(3)[6],=KH7TJ(3)[6],=KH7TJ/6(3)[6],=KH7TR(3)[6], - =KH7TW(3)[6],=KH7VD(3)[6],=KH7VE(3)[6],=KH7WN(3)[6],=KH7WO(3)[6],=KH7WP(3)[6],=KH7WR(3)[6], - =KH7WS(3)[6],=KH7XX/6(3)[6],=KH7Y(3)[6],=KH7Y/6(3)[6],=KH8A(3)[6],=KH8AF(3)[6],=KH8FL(3)[6], - =KL0AA(3)[6],=KL0AF(3)[6],=KL0AL(3)[6],=KL0HZ(3)[6],=KL0IF(3)[6],=KL1NER(3)[6],=KL1WE/6(3)[6], - =KL2CQ(3)[6],=KL2WL(3)[6],=KL3IM(3)[6],=KL3JY/6(3)[6],=KL3YH(3)[6],=KL4GW(3)[6],=KL4LV(3)[6], - =KL4NZ(3)[6],=KL4QW(3)[6],=KL4UZ(3)[6],=KL7AK(3)[6],=KL7CE/6(3)[6],=KL7CM(3)[6],=KL7CN(3)[6], - =KL7CW/6(3)[6],=KL7CX(3)[6],=KL7DJ(3)[6],=KL7EAE(3)[6],=KL7EAL(3)[6],=KL7GRG(3)[6],=KL7HQR(3)[6], - =KL7HQR/6(3)[6],=KL7HSY(3)[6],=KL7ID(3)[6],=KL7IDY/6(3)[6],=KL7ISB(3)[6],=KL7ISN(3)[6], - =KL7JBE(3)[6],=KL7KNP(3)[6],=KL7KX(3)[6],=KL7MF(3)[6],=KL7MF/6(3)[6],=KL7MF/M(3)[6],=KL7RT(3)[6], - =KL7SL(3)[6],=KL7SY(3)[6],=KL7VU(3)[6],=KL7VU/6(3)[6],=KP2BK(3)[6],=KP3BN(3)[6],=KP3YL(3)[6], - =KP4BR(3)[6],=KP4DSO(3)[6],=KP4DX/6(3)[6],=KP4ENM(3)[6],=KP4ERR(3)[6],=KP4FBT(3)[6],=KP4MD(3)[6], - =KP4UB(3)[6],=KP4ZW(3)[6],=NH0C(3)[6],=NH0X(3)[6],=NH2AR(3)[6],=NH2BD(3)[6],=NH2BV(3)[6], - =NH2CM(3)[6],=NH2FT(3)[6],=NH2FX(3)[6],=NH2R(3)[6],=NH2S(3)[6],=NH6AC(3)[6],=NH6AE(3)[6], - =NH6AF(3)[6],=NH6FV(3)[6],=NH6FX(3)[6],=NH6NG(3)[6],=NH6RG(3)[6],=NH6SF(3)[6],=NH6ST(3)[6], - =NH6WR(3)[6],=NH7AG(3)[6],=NH7EM(3)[6],=NH7FW(3)[6],=NH7G(3)[6],=NH7IG(3)[6],=NH7IH(3)[6], - =NH7PM(3)[6],=NH7QV(3)[6],=NH7RT(3)[6],=NH7ST(3)[6],=NH7SU(3)[6],=NH7WC(3)[6],=NH7WE(3)[6], - =NH7WG(3)[6],=NH7ZE(3)[6],=NL7GE(3)[6],=NL7IB(3)[6],=NL7LC(3)[6],=NL7OP(3)[6],=NL7RO(3)[6], - =NL7TP(3)[6],=NL7YB(3)[6],=NP2KY(3)[6],=NP4AB(3)[6],=NP4AI/6(3)[6],=NP4IW(3)[6],=NP4IW/6(3)[6], - =NP4MV(3)[6],=NP4XE(3)[6],=WH0AAZ(3)[6],=WH0M(3)[6],=WH2ABS(3)[6],=WH2ALN(3)[6],=WH2K(3)[6], - =WH6AAJ(3)[6],=WH6AFM(3)[6],=WH6ANA(3)[6],=WH6ASW/M(3)[6],=WH6BYT(3)[6],=WH6CIL(3)[6], - =WH6CK(3)[6],=WH6CO(3)[6],=WH6CPO(3)[6],=WH6CPT(3)[6],=WH6CRE(3)[6],=WH6CSG(3)[6],=WH6CUF(3)[6], - =WH6CUU(3)[6],=WH6CUX(3)[6],=WH6CVJ(3)[6],=WH6CWS(3)[6],=WH6CZF(3)[6],=WH6CZH(3)[6],=WH6DHN(3)[6], - =WH6DSK(3)[6],=WH6DVM(3)[6],=WH6DVN(3)[6],=WH6DVX(3)[6],=WH6DYA(3)[6],=WH6DZV(3)[6],=WH6DZY(3)[6], - =WH6EAR(3)[6],=WH6EEZ(3)[6],=WH6EHY(3)[6],=WH6EKB(3)[6],=WH6ENG(3)[6],=WH6EUH(3)[6],=WH6EZW(3)[6], - =WH6FTF(3)[6],=WH6FTO(3)[6],=WH6JO(3)[6],=WH6LZ(3)[6],=WH6MC(3)[6],=WH6MK(3)[6],=WH6OI(3)[6], - =WH6PX(3)[6],=WH6QA(3)[6],=WH6RF(3)[6],=WH6TD(3)[6],=WH6TK(3)[6],=WH6TT(3)[6],=WH6USA(3)[6], - =WH6VM(3)[6],=WH6VN(3)[6],=WH6XI(3)[6],=WH6XX(3)[6],=WH6YJ(3)[6],=WH7DG(3)[6],=WH7DH(3)[6], - =WH7HQ(3)[6],=WH7IN(3)[6],=WH7IV(3)[6],=WH7IZ(3)[6],=WH7LP(3)[6],=WH7OO(3)[6],=WH7PM(3)[6], - =WH7QC(3)[6],=WH7RU(3)[6],=WH7TT(3)[6],=WH7UZ(3)[6],=WH7VM(3)[6],=WH7VU(3)[6],=WH7XR(3)[6], - =WL3AF(3)[6],=WL3DZ(3)[6],=WL4JC(3)[6],=WL7ACO(3)[6],=WL7BA(3)[6],=WL7BGF(3)[6],=WL7CPL(3)[6], - =WL7CSD(3)[6],=WL7DN/6(3)[6],=WL7EA(3)[6],=WL7EKK(3)[6],=WL7RA(3)[6],=WL7SE(3)[6],=WL7TG(3)[6], - =WL7WL(3)[6],=WL7YQ(3)[6],=WL7YQ/6(3)[6],=WP3OV(3)[6],=WP4CUJ(3)[6],=WP4CW(3)[6],=WP4KSU(3)[6], - =WP4MVE(3)[6],=WP4OBB(3)[6],=WP4OBC(3)[6],=WP4PWS(3)[6], + =KH6JWG(3)[6],=KH6JWJ(3)[6],=KH6JWJ/6(3)[6],=KH6KT(3)[6],=KH6LO(3)[6],=KH6MV(3)[6],=KH6N(3)[6], + =KH6NG(3)[6],=KH6O(3)[6],=KH6OK(3)[6],=KH6PGA/6(3)[6],=KH6PM(3)[6],=KH6PW(3)[6],=KH6SC(3)[6], + =KH6TO(3)[6],=KH6UQ(3)[6],=KH6USA(3)[6],=KH6VC(3)[6],=KH6VC/6(3)[6],=KH6VZ(3)[6],=KH6WL(3)[6], + =KH6WZ(3)[6],=KH7CD/6(3)[6],=KH7CO(3)[6],=KH7CS(3)[6],=KH7EM(3)[6],=KH7I(3)[6],=KH7IZ(3)[6], + =KH7JI(3)[6],=KH7JR(3)[6],=KH7NS(3)[6],=KH7QS(3)[6],=KH7QU(3)[6],=KH7RB(3)[6],=KH7TJ(3)[6], + =KH7TJ/6(3)[6],=KH7TR(3)[6],=KH7TW(3)[6],=KH7VD(3)[6],=KH7VE(3)[6],=KH7WN(3)[6],=KH7WO(3)[6], + =KH7WP(3)[6],=KH7WR(3)[6],=KH7WS(3)[6],=KH7XX/6(3)[6],=KH7Y(3)[6],=KH7Y/6(3)[6],=KH8A(3)[6], + =KH8AF(3)[6],=KH8FL(3)[6],=KL0AA(3)[6],=KL0AF(3)[6],=KL0AL(3)[6],=KL0HZ(3)[6],=KL0IF(3)[6], + =KL1NER(3)[6],=KL1WE/6(3)[6],=KL2CQ(3)[6],=KL2WL(3)[6],=KL3IM(3)[6],=KL3JY/6(3)[6],=KL3YH(3)[6], + =KL4GW(3)[6],=KL4LV(3)[6],=KL4NZ(3)[6],=KL4QW(3)[6],=KL4UZ(3)[6],=KL7AK(3)[6],=KL7CE/6(3)[6], + =KL7CM(3)[6],=KL7CN(3)[6],=KL7CW/6(3)[6],=KL7CX(3)[6],=KL7DJ(3)[6],=KL7EAE(3)[6],=KL7EAL(3)[6], + =KL7GRG(3)[6],=KL7HQR(3)[6],=KL7HQR/6(3)[6],=KL7HSY(3)[6],=KL7ID(3)[6],=KL7IDY/6(3)[6], + =KL7ISB(3)[6],=KL7ISN(3)[6],=KL7JBE(3)[6],=KL7JG(3)[6],=KL7KNP(3)[6],=KL7KX(3)[6],=KL7MF(3)[6], + =KL7MF/6(3)[6],=KL7MF/M(3)[6],=KL7RT(3)[6],=KL7SL(3)[6],=KL7SY(3)[6],=KL7VU(3)[6],=KL7VU/6(3)[6], + =KP2BK(3)[6],=KP3BN(3)[6],=KP3YL(3)[6],=KP4BR(3)[6],=KP4DSO(3)[6],=KP4DX/6(3)[6],=KP4ENM(3)[6], + =KP4ERR(3)[6],=KP4FBT(3)[6],=KP4MD(3)[6],=KP4UB(3)[6],=KP4ZW(3)[6],=NH0C(3)[6],=NH0X(3)[6], + =NH2AR(3)[6],=NH2BD(3)[6],=NH2CM(3)[6],=NH2FT(3)[6],=NH2FX(3)[6],=NH2R(3)[6],=NH2S(3)[6], + =NH6AC(3)[6],=NH6AE(3)[6],=NH6AF(3)[6],=NH6FV(3)[6],=NH6FX(3)[6],=NH6G(3)[6],=NH6NG(3)[6], + =NH6RG(3)[6],=NH6SF(3)[6],=NH6ST(3)[6],=NH6WR(3)[6],=NH7AG(3)[6],=NH7EM(3)[6],=NH7FW(3)[6], + =NH7G(3)[6],=NH7IG(3)[6],=NH7IH(3)[6],=NH7PM(3)[6],=NH7QV(3)[6],=NH7RT(3)[6],=NH7ST(3)[6], + =NH7SU(3)[6],=NH7WC(3)[6],=NH7WE(3)[6],=NH7WG(3)[6],=NH7ZE(3)[6],=NL7GE(3)[6],=NL7IB(3)[6], + =NL7LC(3)[6],=NL7OP(3)[6],=NL7RO(3)[6],=NL7TP(3)[6],=NL7YB(3)[6],=NP2KY(3)[6],=NP4AB(3)[6], + =NP4AI/6(3)[6],=NP4IW(3)[6],=NP4IW/6(3)[6],=NP4MV(3)[6],=NP4XE(3)[6],=WH0AAZ(3)[6],=WH0M(3)[6], + =WH2ABS(3)[6],=WH2ALN(3)[6],=WH2K(3)[6],=WH6AAJ(3)[6],=WH6AFM(3)[6],=WH6ANA(3)[6],=WH6ASW/M(3)[6], + =WH6BYT(3)[6],=WH6CIL(3)[6],=WH6CK(3)[6],=WH6CO(3)[6],=WH6CPO(3)[6],=WH6CPT(3)[6],=WH6CRE(3)[6], + =WH6CSG(3)[6],=WH6CUF(3)[6],=WH6CUU(3)[6],=WH6CUX(3)[6],=WH6CVJ(3)[6],=WH6CWS(3)[6],=WH6CZF(3)[6], + =WH6CZH(3)[6],=WH6DHN(3)[6],=WH6DPA(3)[6],=WH6DSK(3)[6],=WH6DVM(3)[6],=WH6DVN(3)[6],=WH6DVX(3)[6], + =WH6DYA(3)[6],=WH6DZV(3)[6],=WH6DZY(3)[6],=WH6EEZ(3)[6],=WH6EHY(3)[6],=WH6EKB(3)[6],=WH6ENG(3)[6], + =WH6EUH(3)[6],=WH6EZW(3)[6],=WH6FTF(3)[6],=WH6FTO(3)[6],=WH6JO(3)[6],=WH6LZ(3)[6],=WH6MC(3)[6], + =WH6MK(3)[6],=WH6OI(3)[6],=WH6PX(3)[6],=WH6QA(3)[6],=WH6RF(3)[6],=WH6TD(3)[6],=WH6TK(3)[6], + =WH6TT(3)[6],=WH6USA(3)[6],=WH6VM(3)[6],=WH6VN(3)[6],=WH6XI(3)[6],=WH6XX(3)[6],=WH6YJ(3)[6], + =WH7DG(3)[6],=WH7DH(3)[6],=WH7HQ(3)[6],=WH7IN(3)[6],=WH7IV(3)[6],=WH7IZ(3)[6],=WH7L(3)[6], + =WH7LP(3)[6],=WH7OO(3)[6],=WH7PM(3)[6],=WH7QC(3)[6],=WH7RU(3)[6],=WH7TT(3)[6],=WH7UZ(3)[6], + =WH7VM(3)[6],=WH7VU(3)[6],=WH7XR(3)[6],=WL3AF(3)[6],=WL3DZ(3)[6],=WL4JC(3)[6],=WL7ACO(3)[6], + =WL7BA(3)[6],=WL7BGF(3)[6],=WL7CPL(3)[6],=WL7CSD(3)[6],=WL7DN/6(3)[6],=WL7EA(3)[6],=WL7EKK(3)[6], + =WL7RA(3)[6],=WL7SE(3)[6],=WL7TG(3)[6],=WL7WL(3)[6],=WL7YQ(3)[6],=WL7YQ/6(3)[6],=WP3OV(3)[6], + =WP4CUJ(3)[6],=WP4CW(3)[6],=WP4IER(3)[6],=WP4KSU(3)[6],=WP4MVE(3)[6],=WP4OBB(3)[6],=WP4OBC(3)[6], + =WP4PWS(3)[6], AA7(3)[6],AB7(3)[6],AC7(3)[6],AD7(3)[6],AE7(3)[6],AF7(3)[6],AG7(3)[6],AI7(3)[6],AJ7(3)[6], AK7(3)[6],K7(3)[6],KA7(3)[6],KB7(3)[6],KC7(3)[6],KD7(3)[6],KE7(3)[6],KF7(3)[6],KG7(3)[6], KI7(3)[6],KJ7(3)[6],KK7(3)[6],KM7(3)[6],KN7(3)[6],KO7(3)[6],KQ7(3)[6],KR7(3)[6],KS7(3)[6], @@ -1496,24 +1505,25 @@ United States: 05: 08: NA: 37.53: 91.67: 5.0: K: =AL7JS(3)[6],=AL7JU(3)[6],=AL7JV(3)[6],=AL7JW(3)[6],=AL7JY(3)[6],=AL7KE(3)[6],=AL7KF(3)[6], =AL7KG(3)[6],=AL7KK(3)[6],=AL7KL(3)[6],=AL7KV(3)[6],=AL7L/7(3)[6],=AL7LI(3)[6],=AL7LL(3)[6], =AL7MH(3)[6],=AL7MQ(3)[6],=AL7ND(3)[6],=AL7NK(3)[6],=AL7NZ(3)[6],=AL7OK(3)[6],=AL7OW(3)[6], - =AL7PR(3)[6],=AL7PV(3)[6],=AL7QL(3)[6],=AL7R(3)[6],=AL7R/7(3)[6],=AL7RF(3)[6],=AL7RF/7(3)[6], - =AL7RM(3)[6],=AL7RR(3)[6],=AL7W(3)[6],=G4KHG/M(3)[6],=KH0AS(3)[6],=KH0H(3)[6],=KH0K(3)[6], - =KH0SH(3)[6],=KH0TL(3)[6],=KH0X(3)[6],=KH2CH(3)[6],=KH2G(3)[6],=KH2GG(3)[6],=KH2JA(3)[6], - =KH2QH(3)[6],=KH2RK(3)[6],=KH2SK(3)[6],=KH2SR(3)[6],=KH2TJ/7(3)[6],=KH2TJ/P(3)[6],=KH2XP(3)[6], - =KH2YL(3)[6],=KH3AD(3)[6],=KH6AB(3)[6],=KH6AHQ(3)[6],=KH6BXZ(3)[6],=KH6CN(3)[6],=KH6CN/7(3)[6], - =KH6COY(3)[6],=KH6CQG(3)[6],=KH6CQH(3)[6],=KH6CQH/7(3)[6],=KH6DB(3)[6],=KH6DE(3)[6],=KH6DOT(3)[6], - =KH6DUT(3)[6],=KH6EE(3)[6],=KH6EE/7(3)[6],=KH6FKA/7(3)[6],=KH6FU(3)[6],=KH6GB(3)[6],=KH6GDN(3)[6], - =KH6GN(3)[6],=KH6HP(3)[6],=KH6HU(3)[6],=KH6HWK(3)[6],=KH6IA(3)[6],=KH6ICQ(3)[6],=KH6IKC(3)[6], - =KH6IMN(3)[6],=KH6IQX(3)[6],=KH6ITY(3)[6],=KH6JFL(3)[6],=KH6JIM/7(3)[6],=KH6JJS(3)[6], - =KH6JPJ(3)[6],=KH6JPO(3)[6],=KH6JRW(3)[6],=KH6JT(3)[6],=KH6JUC(3)[6],=KH6JUQ(3)[6],=KH6KS(3)[6], - =KH6KW(3)[6],=KH6LEM(3)[6],=KH6ME(3)[6],=KH6MF(3)[6],=KH6NA(3)[6],=KH6NO/7(3)[6],=KH6NO/M(3)[6], - =KH6NU(3)[6],=KH6OV(3)[6],=KH6PG(3)[6],=KH6PR(3)[6],=KH6QAI(3)[6],=KH6QAI/7(3)[6],=KH6QAJ(3)[6], - =KH6RW(3)[6],=KH6RY(3)[6],=KH6SAT(3)[6],=KH6SS(3)[6],=KH6TX(3)[6],=KH6VM(3)[6],=KH6VM/7(3)[6], - =KH6VT(3)[6],=KH6WX(3)[6],=KH6XG(3)[6],=KH6XS(3)[6],=KH6XT(3)[6],=KH6YL(3)[6],=KH7AL(3)[6], - =KH7AR(3)[6],=KH7AX(3)[6],=KH7CB(3)[6],=KH7CM(3)[6],=KH7CZ(3)[6],=KH7FJ(3)[6],=KH7FR(3)[6], - =KH7HH(3)[6],=KH7HWK(3)[6],=KH7IP(3)[6],=KH7LE(3)[6],=KH7ME(3)[6],=KH7MR(3)[6],=KH7NI(3)[6], - =KH7NP(3)[6],=KH7R(3)[6],=KH7RD(3)[6],=KH7RT(3)[6],=KH7SQ(3)[6],=KH7SR(3)[6],=KH7VB(3)[6], - =KH7VC(3)[6],=KH7WW(3)[6],=KH7WW/7(3)[6],=KH7X/7(3)[6],=KH7YD(3)[6],=KH7YD/7(3)[6],=KH8AB(3)[6], + =AL7PR(3)[6],=AL7PV(3)[6],=AL7QL(3)[6],=AL7QZ(3)[6],=AL7R(3)[6],=AL7R/7(3)[6],=AL7RF(3)[6], + =AL7RF/7(3)[6],=AL7RM(3)[6],=AL7RR(3)[6],=AL7W(3)[6],=G4KHG/M(3)[6],=KH0AS(3)[6],=KH0H(3)[6], + =KH0K(3)[6],=KH0SH(3)[6],=KH0TL(3)[6],=KH0X(3)[6],=KH2CH(3)[6],=KH2G(3)[6],=KH2GG(3)[6], + =KH2JA(3)[6],=KH2QH(3)[6],=KH2RK(3)[6],=KH2SK(3)[6],=KH2SR(3)[6],=KH2TJ/7(3)[6],=KH2TJ/P(3)[6], + =KH2XP(3)[6],=KH2YL(3)[6],=KH3AD(3)[6],=KH6AB(3)[6],=KH6AHQ(3)[6],=KH6BXZ(3)[6],=KH6CN(3)[6], + =KH6CN/7(3)[6],=KH6COY(3)[6],=KH6CQG(3)[6],=KH6CQH(3)[6],=KH6CQH/7(3)[6],=KH6CTQ(3)[6], + =KH6DB(3)[6],=KH6DE(3)[6],=KH6DOT(3)[6],=KH6DUT(3)[6],=KH6EE(3)[6],=KH6EE/7(3)[6],=KH6FE(3)[6], + =KH6FKA/7(3)[6],=KH6FU(3)[6],=KH6GB(3)[6],=KH6GDN(3)[6],=KH6GN(3)[6],=KH6HP(3)[6],=KH6HU(3)[6], + =KH6HWK(3)[6],=KH6IA(3)[6],=KH6ICQ(3)[6],=KH6IKC(3)[6],=KH6IMN(3)[6],=KH6IQX(3)[6],=KH6ITY(3)[6], + =KH6JFL(3)[6],=KH6JIM/7(3)[6],=KH6JJS(3)[6],=KH6JMK(3)[6],=KH6JPJ(3)[6],=KH6JPO(3)[6], + =KH6JRW(3)[6],=KH6JT(3)[6],=KH6JUC(3)[6],=KH6JUQ(3)[6],=KH6KS(3)[6],=KH6KW(3)[6],=KH6LEM(3)[6], + =KH6ME(3)[6],=KH6MF(3)[6],=KH6NA(3)[6],=KH6NO/7(3)[6],=KH6NO/M(3)[6],=KH6NU(3)[6],=KH6OV(3)[6], + =KH6PG(3)[6],=KH6PR(3)[6],=KH6QAI(3)[6],=KH6QAI/7(3)[6],=KH6QAJ(3)[6],=KH6RW(3)[6],=KH6RY(3)[6], + =KH6SAT(3)[6],=KH6SS(3)[6],=KH6TX(3)[6],=KH6VM(3)[6],=KH6VM/7(3)[6],=KH6VT(3)[6],=KH6WX(3)[6], + =KH6XG(3)[6],=KH6XJ(3)[6],=KH6XS(3)[6],=KH6XT(3)[6],=KH6YL(3)[6],=KH7AR(3)[6],=KH7AX(3)[6], + =KH7CB(3)[6],=KH7CM(3)[6],=KH7CZ(3)[6],=KH7FJ(3)[6],=KH7FR(3)[6],=KH7HH(3)[6],=KH7HWK(3)[6], + =KH7IP(3)[6],=KH7LE(3)[6],=KH7ME(3)[6],=KH7MR(3)[6],=KH7NI(3)[6],=KH7NP(3)[6],=KH7R(3)[6], + =KH7RD(3)[6],=KH7RT(3)[6],=KH7SB(3)[6],=KH7SQ(3)[6],=KH7SR(3)[6],=KH7VB(3)[6],=KH7VC(3)[6], + =KH7WW(3)[6],=KH7WW/7(3)[6],=KH7WX(3)[6],=KH7X/7(3)[6],=KH7YD(3)[6],=KH7YD/7(3)[6],=KH8AB(3)[6], =KH8AH(3)[6],=KH8AZ(3)[6],=KH8BG(3)[6],=KH8D(3)[6],=KH8E(3)[6],=KH8K(3)[6],=KH9AA(3)[6], =KL0AI(3)[6],=KL0AN(3)[6],=KL0AP(3)[6],=KL0CA(3)[6],=KL0CM(3)[6],=KL0CW(3)[6],=KL0DF(3)[6], =KL0DG(3)[6],=KL0DR(3)[6],=KL0DT(3)[6],=KL0EU(3)[6],=KL0IR(3)[6],=KL0IS(3)[6],=KL0IW(3)[6], @@ -1530,37 +1540,38 @@ United States: 05: 08: NA: 37.53: 91.67: 5.0: K: =KL2QE(3)[6],=KL2TR(3)[6],=KL2TZ(3)[6],=KL2VK(3)[6],=KL2WE(3)[6],=KL2XQ(3)[6],=KL2YH(3)[6], =KL3DL(3)[6],=KL3EZ(3)[6],=KL3FE(3)[6],=KL3IC(3)[6],=KL3IO(3)[6],=KL3IW(3)[6],=KL3ML(3)[6], =KL3MZ(3)[6],=KL3NE(3)[6],=KL3NO(3)[6],=KL3OQ(3)[6],=KL3PD(3)[6],=KL3TW(3)[6],=KL3TY(3)[6], - =KL3VJ(3)[6],=KL3XS(3)[6],=KL4BQ(3)[6],=KL4BS(3)[6],=KL4E(3)[6],=KL4NG(3)[6],=KL4QJ(3)[6], - =KL4RKH(3)[6],=KL4YFD(3)[6],=KL7AB(3)[6],=KL7AD(3)[6],=KL7AW(3)[6],=KL7BD(3)[6],=KL7BDC(3)[6], - =KL7BH(3)[6],=KL7BJ(3)[6],=KL7BR(3)[6],=KL7BS(3)[6],=KL7BT(3)[6],=KL7BUR(3)[6],=KL7BXP(3)[6], - =KL7C(3)[6],=KL7CPO(3)[6],=KL7CR(3)[6],=KL7CT(3)[6],=KL7CY(3)[6],=KL7DC(3)[6],=KL7DF(3)[6], - =KL7DI(3)[6],=KL7DK(3)[6],=KL7DLG(3)[6],=KL7DZQ(3)[6],=KL7EBN(3)[6],=KL7EF(3)[6],=KL7EFL(3)[6], - =KL7EH(3)[6],=KL7EIN(3)[6],=KL7EU(3)[6],=KL7FDQ(3)[6],=KL7FDQ/7(3)[6],=KL7FOZ(3)[6],=KL7FRQ(3)[6], - =KL7FS(3)[6],=KL7GA(3)[6],=KL7GCS(3)[6],=KL7GKY(3)[6],=KL7GRF(3)[6],=KL7GT(3)[6],=KL7HB(3)[6], - =KL7HBV(3)[6],=KL7HFI/7(3)[6],=KL7HFV(3)[6],=KL7HI(3)[6],=KL7HJR(3)[6],=KL7HLF(3)[6],=KL7HM(3)[6], - =KL7HMK(3)[6],=KL7HQL(3)[6],=KL7HSR(3)[6],=KL7IAL(3)[6],=KL7IBT(3)[6],=KL7IDY(3)[6],=KL7IEI(3)[6], - =KL7IFK(3)[6],=KL7IGB(3)[6],=KL7IHK(3)[6],=KL7IIK(3)[6],=KL7IKV(3)[6],=KL7IL(3)[6],=KL7IME(3)[6], - =KL7IOW(3)[6],=KL7IPV(3)[6],=KL7ISE(3)[6],=KL7IUX(3)[6],=KL7IWC/7(3)[6],=KL7IZC(3)[6], - =KL7IZH(3)[6],=KL7JBB(3)[6],=KL7JDQ(3)[6],=KL7JEA(3)[6],=KL7JES(3)[6],=KL7JIJ(3)[6],=KL7JJE(3)[6], - =KL7JKV(3)[6],=KL7KA(3)[6],=KL7KG/7(3)[6],=KL7LG(3)[6],=KL7LI(3)[6],=KL7LX(3)[6],=KL7LZ(3)[6], - =KL7M(3)[6],=KL7MY(3)[6],=KL7MZ(3)[6],=KL7NA(3)[6],=KL7NP(3)[6],=KL7NP/7(3)[6],=KL7OA(3)[6], - =KL7OF(3)[6],=KL7OL(3)[6],=KL7OR(3)[6],=KL7OR/7(3)[6],=KL7OS(3)[6],=KL7OY(3)[6],=KL7PC(3)[6], - =KL7PO(3)[6],=KL7QA(3)[6],=KL7QK(3)[6],=KL7QK/140(3)[6],=KL7QK/7(3)[6],=KL7QR(3)[6], - =KL7QR/7(3)[6],=KL7R(3)[6],=KL7RC(3)[6],=KL7RK(3)[6],=KL7RM(3)[6],=KL7RS(3)[6],=KL7S(3)[6], - =KL7SK(3)[6],=KL7SP(3)[6],=KL7T(3)[6],=KL7TU(3)[6],=KL7UP(3)[6],=KL7UT(3)[6],=KL7VK(3)[6], - =KL7VL(3)[6],=KL7VN(3)[6],=KL7VQ(3)[6],=KL7W(3)[6],=KL7WC(3)[6],=KL7WM(3)[6],=KL7WN(3)[6], - =KL7WP(3)[6],=KL7WP/7(3)[6],=KL7WT(3)[6],=KL7XL(3)[6],=KL7YJ(3)[6],=KL7YQ(3)[6],=KL7YY/M(3)[6], - =KL7ZH(3)[6],=KL7ZW(3)[6],=KL8RV(3)[6],=KL8SU(3)[6],=KL9PC(3)[6],=KP2BX(3)[6],=KP2CB(3)[6], - =KP2CT(3)[6],=KP2X(3)[6],=KP2Y(3)[6],=KP4EFZ(3)[6],=KP4ND(3)[6],=KP4UZ(3)[6],=KP4X(3)[6], - =NH0F(3)[6],=NH0K(3)[6],=NH0O(3)[6],=NH2DM(3)[6],=NH2JE(3)[6],=NH2KR(3)[6],=NH6B(3)[6], - =NH6BF(3)[6],=NH6CI(3)[6],=NH6CO(3)[6],=NH6DQ(3)[6],=NH6DX(3)[6],=NH6F(3)[6],=NH6FF(3)[6], - =NH6GZ(3)[6],=NH6HE(3)[6],=NH6HZ(3)[6],=NH6LF(3)[6],=NH6LM(3)[6],=NH6NS(3)[6],=NH6SO(3)[6], - =NH6U(3)[6],=NH6WE(3)[6],=NH6XN(3)[6],=NH6XP(3)[6],=NH6Z(3)[6],=NH6ZA(3)[6],=NH6ZE(3)[6], - =NH7FU(3)[6],=NH7FZ(3)[6],=NH7L(3)[6],=NH7M(3)[6],=NH7MY(3)[6],=NH7N(3)[6],=NH7ND(3)[6], - =NH7NJ/7(3)[6],=NH7OC(3)[6],=NH7PL(3)[6],=NH7RS(3)[6],=NH7S(3)[6],=NH7SH(3)[6],=NH7TG(3)[6], - =NH7VZ(3)[6],=NH7W(3)[6],=NH7WT(3)[6],=NH7WU(3)[6],=NH7YE(3)[6],=NH7YI(3)[6],=NL7AH(3)[6], - =NL7AR(3)[6],=NL7AZ(3)[6],=NL7CH(3)[6],=NL7D(3)[6],=NL7D/7(3)[6],=NL7DH(3)[6],=NL7DY(3)[6], - =NL7EO(3)[6],=NL7FQ(3)[6],=NL7FX(3)[6],=NL7GM(3)[6],=NL7GN(3)[6],=NL7GO(3)[6],=NL7GU(3)[6], + =KL3VJ(3)[6],=KL3XS(3)[6],=KL4BQ(3)[6],=KL4BS(3)[6],=KL4E(3)[6],=KL4FX(3)[6],=KL4NG(3)[6], + =KL4QJ(3)[6],=KL4RKH(3)[6],=KL4RY(3)[6],=KL4YFD(3)[6],=KL7AB(3)[6],=KL7AD(3)[6],=KL7AW(3)[6], + =KL7BD(3)[6],=KL7BDC(3)[6],=KL7BH(3)[6],=KL7BJ(3)[6],=KL7BR(3)[6],=KL7BS(3)[6],=KL7BT(3)[6], + =KL7BUR(3)[6],=KL7BXP(3)[6],=KL7C(3)[6],=KL7CPO(3)[6],=KL7CR(3)[6],=KL7CT(3)[6],=KL7CY(3)[6], + =KL7DC(3)[6],=KL7DF(3)[6],=KL7DI(3)[6],=KL7DK(3)[6],=KL7DLG(3)[6],=KL7DSI(3)[6],=KL7DZQ(3)[6], + =KL7EBN(3)[6],=KL7EF(3)[6],=KL7EFL(3)[6],=KL7EH(3)[6],=KL7EIN(3)[6],=KL7EU(3)[6],=KL7FDQ(3)[6], + =KL7FDQ/7(3)[6],=KL7FIR(3)[6],=KL7FOZ(3)[6],=KL7FRQ(3)[6],=KL7FS(3)[6],=KL7GA(3)[6],=KL7GCS(3)[6], + =KL7GKY(3)[6],=KL7GRF(3)[6],=KL7GT(3)[6],=KL7HB(3)[6],=KL7HBV(3)[6],=KL7HFI/7(3)[6],=KL7HFV(3)[6], + =KL7HI(3)[6],=KL7HJR(3)[6],=KL7HLF(3)[6],=KL7HM(3)[6],=KL7HMK(3)[6],=KL7HQL(3)[6],=KL7HSR(3)[6], + =KL7IAL(3)[6],=KL7IBT(3)[6],=KL7IDY(3)[6],=KL7IEI(3)[6],=KL7IFK(3)[6],=KL7IGB(3)[6],=KL7IHK(3)[6], + =KL7IIK(3)[6],=KL7IKV(3)[6],=KL7IL(3)[6],=KL7IME(3)[6],=KL7IOW(3)[6],=KL7IPV(3)[6],=KL7ISE(3)[6], + =KL7IUX(3)[6],=KL7IWC/7(3)[6],=KL7IZC(3)[6],=KL7IZH(3)[6],=KL7JBB(3)[6],=KL7JDQ(3)[6], + =KL7JEA(3)[6],=KL7JES(3)[6],=KL7JIJ(3)[6],=KL7JJE(3)[6],=KL7JKV(3)[6],=KL7KA(3)[6],=KL7KG/7(3)[6], + =KL7LG(3)[6],=KL7LI(3)[6],=KL7LX(3)[6],=KL7LZ(3)[6],=KL7M(3)[6],=KL7MY(3)[6],=KL7MZ(3)[6], + =KL7NA(3)[6],=KL7NP(3)[6],=KL7NP/7(3)[6],=KL7OA(3)[6],=KL7OF(3)[6],=KL7OL(3)[6],=KL7OR(3)[6], + =KL7OR/7(3)[6],=KL7OS(3)[6],=KL7OY(3)[6],=KL7PC(3)[6],=KL7PO(3)[6],=KL7QA(3)[6],=KL7QK(3)[6], + =KL7QK/140(3)[6],=KL7QK/7(3)[6],=KL7QR(3)[6],=KL7QR/7(3)[6],=KL7R(3)[6],=KL7RC(3)[6],=KL7RK(3)[6], + =KL7RM(3)[6],=KL7RN(3)[6],=KL7RS(3)[6],=KL7S(3)[6],=KL7SK(3)[6],=KL7SP(3)[6],=KL7T(3)[6], + =KL7TU(3)[6],=KL7UP(3)[6],=KL7UT(3)[6],=KL7VK(3)[6],=KL7VL(3)[6],=KL7VN(3)[6],=KL7VQ(3)[6], + =KL7W(3)[6],=KL7WC(3)[6],=KL7WM(3)[6],=KL7WN(3)[6],=KL7WP(3)[6],=KL7WP/7(3)[6],=KL7WT(3)[6], + =KL7XL(3)[6],=KL7YJ(3)[6],=KL7YQ(3)[6],=KL7YY/M(3)[6],=KL7ZH(3)[6],=KL7ZW(3)[6],=KL8RV(3)[6], + =KL8SU(3)[6],=KL9PC(3)[6],=KP2BX(3)[6],=KP2CB(3)[6],=KP2CT(3)[6],=KP2X(3)[6],=KP2Y(3)[6], + =KP4EFZ(3)[6],=KP4ND(3)[6],=KP4UZ(3)[6],=KP4X(3)[6],=NH0F(3)[6],=NH0K(3)[6],=NH0O(3)[6], + =NH2DM(3)[6],=NH2JE(3)[6],=NH2KR(3)[6],=NH6AY(3)[6],=NH6B(3)[6],=NH6BF(3)[6],=NH6CI(3)[6], + =NH6CO(3)[6],=NH6DQ(3)[6],=NH6DX(3)[6],=NH6F(3)[6],=NH6FF(3)[6],=NH6GZ(3)[6],=NH6HE(3)[6], + =NH6HZ(3)[6],=NH6LF(3)[6],=NH6LM(3)[6],=NH6NS(3)[6],=NH6SO(3)[6],=NH6U(3)[6],=NH6WE(3)[6], + =NH6XN(3)[6],=NH6XP(3)[6],=NH6Z(3)[6],=NH6ZA(3)[6],=NH6ZE(3)[6],=NH7FU(3)[6],=NH7FZ(3)[6], + =NH7L(3)[6],=NH7M(3)[6],=NH7MY(3)[6],=NH7N(3)[6],=NH7ND(3)[6],=NH7NJ/7(3)[6],=NH7OC(3)[6], + =NH7PL(3)[6],=NH7RS(3)[6],=NH7S(3)[6],=NH7SH(3)[6],=NH7TG(3)[6],=NH7VZ(3)[6],=NH7W(3)[6], + =NH7WT(3)[6],=NH7WU(3)[6],=NH7YE(3)[6],=NH7YI(3)[6],=NL5L(3)[6],=NL7AH(3)[6],=NL7AR(3)[6], + =NL7AZ(3)[6],=NL7CH(3)[6],=NL7D(3)[6],=NL7D/7(3)[6],=NL7DH(3)[6],=NL7DY(3)[6],=NL7EO(3)[6], + =NL7FQ(3)[6],=NL7FX(3)[6],=NL7FY(3)[6],=NL7GM(3)[6],=NL7GN(3)[6],=NL7GO(3)[6],=NL7GU(3)[6], =NL7GW(3)[6],=NL7HH(3)[6],=NL7HK(3)[6],=NL7HQ(3)[6],=NL7HU(3)[6],=NL7IN(3)[6],=NL7JJ(3)[6], =NL7JN(3)[6],=NL7KV(3)[6],=NL7LI(3)[6],=NL7MS(3)[6],=NL7MT(3)[6],=NL7NL(3)[6],=NL7OF(3)[6], =NL7PN(3)[6],=NL7QI(3)[6],=NL7RL(3)[6],=NL7RN(3)[6],=NL7TK(3)[6],=NL7UE(3)[6],=NL7US(3)[6], @@ -1572,23 +1583,23 @@ United States: 05: 08: NA: 37.53: 91.67: 5.0: K: =WH6CXE(3)[6],=WH6CXN(3)[6],=WH6CYB(3)[6],=WH6CZ(3)[6],=WH6DAY(3)[6],=WH6DJO(3)[6],=WH6DKC(3)[6], =WH6DKO(3)[6],=WH6DLQ(3)[6],=WH6DQ(3)[6],=WH6DST(3)[6],=WH6DTH(3)[6],=WH6EEC(3)[6],=WH6EEG(3)[6], =WH6EGM(3)[6],=WH6EHW(3)[6],=WH6EJV(3)[6],=WH6EQB(3)[6],=WH6ESS(3)[6],=WH6ETO(3)[6],=WH6EWE(3)[6], - =WH6FCT(3)[6],=WH6FEU(3)[6],=WH6FJR(3)[6],=WH6FL(3)[6],=WH6FOJ(3)[6],=WH6FPR(3)[6],=WH6FPS(3)[6], - =WH6FQ(3)[6],=WH6GEV(3)[6],=WH6OL(3)[6],=WH6OY(3)[6],=WH6QV(3)[6],=WH6SD(3)[6],=WH6SR(3)[6], - =WH6TI(3)[6],=WH6U(3)[6],=WH6XV(3)[6],=WH6YT(3)[6],=WH6YX(3)[6],=WH6ZR(3)[6],=WH6ZV(3)[6], - =WH7A(3)[6],=WH7CY(3)[6],=WH7DA(3)[6],=WH7DB(3)[6],=WH7DE(3)[6],=WH7G(3)[6],=WH7GC(3)[6], - =WH7GY(3)[6],=WH7HU(3)[6],=WH7LB(3)[6],=WH7NS(3)[6],=WH7P(3)[6],=WH7RG(3)[6],=WH7TC(3)[6], - =WH7U(3)[6],=WH7UP(3)[6],=WH7WP(3)[6],=WH7WT(3)[6],=WH7XP(3)[6],=WH8AAG(3)[6],=WL7AAW(3)[6], - =WL7AL(3)[6],=WL7AP(3)[6],=WL7AQ(3)[6],=WL7AUY(3)[6],=WL7AWD(3)[6],=WL7AZG(3)[6],=WL7AZL(3)[6], - =WL7BCR(3)[6],=WL7BHR(3)[6],=WL7BLM(3)[6],=WL7BM(3)[6],=WL7BNQ(3)[6],=WL7BON(3)[6],=WL7BOO(3)[6], - =WL7BSW(3)[6],=WL7BUI(3)[6],=WL7BVN(3)[6],=WL7BVS(3)[6],=WL7CAZ(3)[6],=WL7CBF(3)[6],=WL7CES(3)[6], - =WL7COQ(3)[6],=WL7CPE(3)[6],=WL7CPI(3)[6],=WL7CQX(3)[6],=WL7CRJ(3)[6],=WL7CSL(3)[6],=WL7CTB(3)[6], - =WL7CTC(3)[6],=WL7CTE(3)[6],=WL7DD(3)[6],=WL7FA(3)[6],=WL7FR(3)[6],=WL7FU(3)[6],=WL7H(3)[6], - =WL7HE(3)[6],=WL7HK(3)[6],=WL7HL(3)[6],=WL7IQ(3)[6],=WL7IS(3)[6],=WL7JM(3)[6],=WL7K(3)[6], - =WL7K/7(3)[6],=WL7K/M(3)[6],=WL7LB(3)[6],=WL7LK(3)[6],=WL7MM(3)[6],=WL7OA(3)[6],=WL7P(3)[6], - =WL7PJ(3)[6],=WL7QC(3)[6],=WL7QX(3)[6],=WL7RV/140(3)[6],=WL7SD(3)[6],=WL7SO(3)[6],=WL7SV(3)[6], - =WL7T(3)[6],=WL7VK(3)[6],=WL7WB(3)[6],=WL7WF(3)[6],=WL7WG(3)[6],=WL7WK(3)[6],=WL7WU(3)[6], - =WL7XE(3)[6],=WL7XJ(3)[6],=WL7XN(3)[6],=WL7XW(3)[6],=WL7Z(3)[6],=WL7ZM(3)[6],=WP2ADG(3)[6], - =WP4BZG(3)[6],=WP4DYP(3)[6],=WP4NBP(3)[6], + =WH6FCT(3)[6],=WH6FEU(3)[6],=WH6FJR(3)[6],=WH6FL(3)[6],=WH6FOJ(3)[6],=WH6FPR(3)[6],=WH6FPV(3)[6], + =WH6FQ(3)[6],=WH6FQK(3)[6],=WH6GEV(3)[6],=WH6OL(3)[6],=WH6OY(3)[6],=WH6QV(3)[6],=WH6SD(3)[6], + =WH6SR(3)[6],=WH6TI(3)[6],=WH6U(3)[6],=WH6XV(3)[6],=WH6YT(3)[6],=WH6YX(3)[6],=WH6ZR(3)[6], + =WH6ZV(3)[6],=WH7A(3)[6],=WH7CY(3)[6],=WH7DA(3)[6],=WH7DB(3)[6],=WH7DE(3)[6],=WH7G(3)[6], + =WH7GC(3)[6],=WH7GY(3)[6],=WH7HU(3)[6],=WH7LB(3)[6],=WH7NS(3)[6],=WH7P(3)[6],=WH7RG(3)[6], + =WH7TC(3)[6],=WH7U(3)[6],=WH7UP(3)[6],=WH7WP(3)[6],=WH7WT(3)[6],=WH7XP(3)[6],=WH8AAG(3)[6], + =WL7AAW(3)[6],=WL7AL(3)[6],=WL7AP(3)[6],=WL7AQ(3)[6],=WL7AUY(3)[6],=WL7AWD(3)[6],=WL7AZG(3)[6], + =WL7AZL(3)[6],=WL7BCR(3)[6],=WL7BHR(3)[6],=WL7BLM(3)[6],=WL7BM(3)[6],=WL7BNQ(3)[6],=WL7BON(3)[6], + =WL7BOO(3)[6],=WL7BSW(3)[6],=WL7BUI(3)[6],=WL7BVN(3)[6],=WL7BVS(3)[6],=WL7CAZ(3)[6],=WL7CBF(3)[6], + =WL7CES(3)[6],=WL7COQ(3)[6],=WL7CPE(3)[6],=WL7CPI(3)[6],=WL7CQX(3)[6],=WL7CRJ(3)[6],=WL7CSL(3)[6], + =WL7CTB(3)[6],=WL7CTC(3)[6],=WL7CTE(3)[6],=WL7DD(3)[6],=WL7FA(3)[6],=WL7FR(3)[6],=WL7FU(3)[6], + =WL7H(3)[6],=WL7HE(3)[6],=WL7HK(3)[6],=WL7HL(3)[6],=WL7IQ(3)[6],=WL7IS(3)[6],=WL7JM(3)[6], + =WL7K(3)[6],=WL7K/7(3)[6],=WL7K/M(3)[6],=WL7LB(3)[6],=WL7LK(3)[6],=WL7MM(3)[6],=WL7OA(3)[6], + =WL7P(3)[6],=WL7PJ(3)[6],=WL7QC(3)[6],=WL7QX(3)[6],=WL7RV/140(3)[6],=WL7SD(3)[6],=WL7SO(3)[6], + =WL7SV(3)[6],=WL7T(3)[6],=WL7VK(3)[6],=WL7WB(3)[6],=WL7WF(3)[6],=WL7WG(3)[6],=WL7WK(3)[6], + =WL7WU(3)[6],=WL7XE(3)[6],=WL7XJ(3)[6],=WL7XN(3)[6],=WL7XW(3)[6],=WL7Z(3)[6],=WL7ZM(3)[6], + =WP2ADG(3)[6],=WP4BZG(3)[6],=WP4DYP(3)[6],=WP4NBP(3)[6], AA8(4)[8],AB8(4)[8],AC8(4)[8],AD8(4)[8],AE8(4)[8],AF8(4)[8],AG8(4)[8],AI8(4)[8],AJ8(4)[8], AK8(4)[8],K8(4)[8],KA8(4)[8],KB8(4)[8],KC8(4)[8],KD8(4)[8],KE8(4)[8],KF8(4)[8],KG8(4)[8], KI8(4)[8],KJ8(4)[8],KK8(4)[8],KM8(4)[8],KN8(4)[8],KO8(4)[8],KQ8(4)[8],KR8(4)[8],KS8(4)[8], @@ -1598,19 +1609,19 @@ United States: 05: 08: NA: 37.53: 91.67: 5.0: K: NW8(4)[8],NX8(4)[8],NY8(4)[8],NZ8(4)[8],W8(4)[8],WA8(4)[8],WB8(4)[8],WC8(4)[8],WD8(4)[8], WE8(4)[8],WF8(4)[8],WG8(4)[8],WI8(4)[8],WJ8(4)[8],WK8(4)[8],WM8(4)[8],WN8(4)[8],WO8(4)[8], WQ8(4)[8],WR8(4)[8],WS8(4)[8],WT8(4)[8],WU8(4)[8],WV8(4)[8],WW8(4)[8],WX8(4)[8],WY8(4)[8], - WZ8(4)[8],=AH2AR(4)[8],=AH2AV(4)[8],=AH2JD(4)[8],=AH6AO(4)[8],=AH6MQ(4)[8],=AL4E(4)[8], - =AL7AH(4)[8],=AL7BA/8(4)[8],=AL7GI(4)[8],=AL7GI/8(4)[8],=AL7J/8(4)[8],=AL7OP(4)[8],=KH2AP(4)[8], - =KH6BZF/8(4)[8],=KH6DHK(4)[8],=KH6IK(4)[8],=KH6ILT(4)[8],=KH6SM(4)[8],=KH7DK(4)[8],=KH7SP(4)[8], - =KL0DN(4)[8],=KL0NR(4)[8],=KL0PD(4)[8],=KL0PE(4)[8],=KL2NI(4)[8],=KL2PS(4)[8],=KL2WF(4)[8], - =KL2YU(4)[8],=KL3DA(4)[8],=KL3HQ(4)[8],=KL4PQ(4)[8],=KL5A(4)[8],=KL7DS(4)[8],=KL7FHI(4)[8], - =KL7FHK(4)[8],=KL7GF(4)[8],=KL7IKR(4)[8],=KL7OG(4)[8],=KL7RF(4)[8],=KL7RF/8(4)[8],=KL7SW(4)[8], - =KL8X(4)[8],=KL9A/8(4)[8],=KP2RF(4)[8],=KP4AKB(4)[8],=KP4AMZ(4)[8],=KP4AQI(4)[8],=KP4E(4)[8], - =KP4MAS(4)[8],=KP4VZ(4)[8],=KP4ZD(4)[8],=NH6CN(4)[8],=NH6CN/8(4)[8],=NL7CF(4)[8],=NL7FK(4)[8], - =NP2AK(4)[8],=NP2F(4)[8],=NP3NA(4)[8],=NP4C/8(4)[8],=VE3ACW/M(4)[8],=WH2U(4)[8],=WH6BCB(4)[8], - =WH6CYR(4)[8],=WH6E(4)[8],=WH6E/8(4)[8],=WH6EBA(4)[8],=WH6EJD(4)[8],=WH6EWB(4)[8],=WH6TB(4)[8], - =WL7AGO(4)[8],=WL7AM(4)[8],=WL7BKR(4)[8],=WL7CMV(4)[8],=WL7GG(4)[8],=WL7HC(4)[8],=WL7OS(4)[8], - =WL7OT(4)[8],=WP3KU(4)[8],=WP3S(4)[8],=WP4HJF(4)[8],=WP4IJK(4)[8],=WP4MWB(4)[8],=WP4NAE(4)[8], - =WP4NYQ(4)[8],=WP4PLR(4)[8], + WZ8(4)[8],=AH2AR(4)[8],=AH2AV(4)[8],=AH2JD(4)[8],=AH6AO(4)[8],=AH6MQ(4)[8],=AH8AH(4)[8], + =AL4E(4)[8],=AL7AH(4)[8],=AL7BA/8(4)[8],=AL7GI(4)[8],=AL7GI/8(4)[8],=AL7J/8(4)[8],=AL7OP(4)[8], + =KH2AP(4)[8],=KH6BZF/8(4)[8],=KH6DHK(4)[8],=KH6IK(4)[8],=KH6ILT(4)[8],=KH6SM(4)[8],=KH7DK(4)[8], + =KH7SP(4)[8],=KL0DN(4)[8],=KL0NR(4)[8],=KL0PD(4)[8],=KL0PE(4)[8],=KL2NI(4)[8],=KL2PS(4)[8], + =KL2WF(4)[8],=KL2YU(4)[8],=KL3DA(4)[8],=KL3HQ(4)[8],=KL4PQ(4)[8],=KL5A(4)[8],=KL7DS(4)[8], + =KL7FHI(4)[8],=KL7FHK(4)[8],=KL7GF(4)[8],=KL7IKR(4)[8],=KL7IYK(4)[8],=KL7IYK/8(4)[8],=KL7OG(4)[8], + =KL7RF(4)[8],=KL7RF/8(4)[8],=KL7SW(4)[8],=KL8X(4)[8],=KL9A/8(4)[8],=KP2RF(4)[8],=KP4AKB(4)[8], + =KP4AMZ(4)[8],=KP4AQI(4)[8],=KP4E(4)[8],=KP4MAS(4)[8],=KP4VZ(4)[8],=KP4ZD(4)[8],=NH6CN(4)[8], + =NH6CN/8(4)[8],=NL7CF(4)[8],=NL7FK(4)[8],=NP2AK(4)[8],=NP2F(4)[8],=NP3NA(4)[8],=NP4C/8(4)[8], + =VE3ACW/M(4)[8],=WH2U(4)[8],=WH6BCB(4)[8],=WH6CYR(4)[8],=WH6E(4)[8],=WH6E/8(4)[8],=WH6EBA(4)[8], + =WH6EJD(4)[8],=WH6EWB(4)[8],=WH6TB(4)[8],=WL7AGO(4)[8],=WL7AM(4)[8],=WL7BKR(4)[8],=WL7CMV(4)[8], + =WL7GG(4)[8],=WL7HC(4)[8],=WL7OS(4)[8],=WL7OT(4)[8],=WP3KU(4)[8],=WP3S(4)[8],=WP4HJF(4)[8], + =WP4IJK(4)[8],=WP4MWB(4)[8],=WP4NAE(4)[8],=WP4NYQ(4)[8],=WP4PLR(4)[8], AA9(4)[8],AB9(4)[8],AC9(4)[8],AD9(4)[8],AE9(4)[8],AF9(4)[8],AG9(4)[8],AI9(4)[8],AJ9(4)[8], AK9(4)[8],K9(4)[8],KA9(4)[8],KB9(4)[8],KC9(4)[8],KD9(4)[8],KE9(4)[8],KF9(4)[8],KG9(4)[8], KI9(4)[8],KJ9(4)[8],KK9(4)[8],KM9(4)[8],KN9(4)[8],KO9(4)[8],KQ9(4)[8],KR9(4)[8],KS9(4)[8], @@ -1623,39 +1634,42 @@ United States: 05: 08: NA: 37.53: 91.67: 5.0: K: WZ9(4)[8],=AH0AJ(4)[8],=AH6DA(4)[8],=AH6EZ/9(4)[8],=AH6OM(4)[8],=AH6YL(4)[8],=AL1CE(4)[8], =AL7AK(4)[8],=AL7AK/9(4)[8],=AL7BT(4)[8],=AL7CV(4)[8],=AL7DS(4)[8],=AL7II/9(4)[8],=AL7OL(4)[8], =AL7PM(4)[8],=AL7RH(4)[8],=KH0BE(4)[8],=KH2RP(4)[8],=KH6JNY(4)[8],=KH6KI(4)[8],=KH6UX(4)[8], - =KH7DR(4)[8],=KH7EI(4)[8],=KH7ZT(4)[8],=KL0LB(4)[8],=KL0NY(4)[8],=KL1NO(4)[8],=KL1NR(4)[8], - =KL1QN(4)[8],=KL1US(4)[8],=KL2A/9(4)[8],=KL2KP(4)[8],=KL2NQ(4)[8],=KL2UY(4)[8],=KL2YD(4)[8], - =KL2ZL(4)[8],=KL4CX(4)[8],=KL7AL(4)[8],=KL7AL/9(4)[8],=KL7BGR(4)[8],=KL7CE(4)[8],=KL7CE/9(4)[8], - =KL7IBV(4)[8],=KL7IKP(4)[8],=KL7IPS(4)[8],=KL7IVK(4)[8],=KL7JAB(4)[8],=KL7MU(4)[8],=KL7TD(4)[8], - =KP2XX(4)[8],=KP3JOS(4)[8],=KP3VA/M(4)[8],=KP4CI(4)[8],=KP4GE/9(4)[8],=KP4NKE(4)[8],=KP4SL(4)[8], - =KP4WG(4)[8],=NH2W(4)[8],=NH2W/9(4)[8],=NH6R(4)[8],=NH7TK(4)[8],=NL7CM(4)[8],=NL7KD(4)[8], - =NL7NK(4)[8],=NL7QC(4)[8],=NL7QC/9(4)[8],=NL7RC(4)[8],=NL7UH(4)[8],=NL7YI(4)[8],=NP2AV(4)[8], - =NP2GM(4)[8],=NP2L/9(4)[8],=NP2MU(4)[8],=NP3QC(4)[8],=NP4ZI(4)[8],=WH0AI(4)[8],=WH2T(4)[8], - =WH6ERQ(4)[8],=WH6FBA(4)[8],=WH6SB(4)[8],=WL7AHP(4)[8],=WL7AIT(4)[8],=WL7BEV(4)[8],=WL7CTA(4)[8], - =WL7FJ(4)[8],=WL7JAN(4)[8],=WL7NP(4)[8],=WL7UU(4)[8],=WP4JSP(4)[8],=WP4LKY(4)[8],=WP4LSQ(4)[8], - =WP4MQX(4)[8],=WP4MSD(4)[8],=WP4MTN(4)[8],=WP4MVQ(4)[8],=WP4MXP(4)[8],=WP4MYL(4)[8],=WP4OCZ(4)[8], + =KH7DR(4)[8],=KH7EI(4)[8],=KH7ZT(4)[8],=KL0LB(4)[8],=KL0NY(4)[8],=KL0XT(4)[8],=KL1NO(4)[8], + =KL1NR(4)[8],=KL1QN(4)[8],=KL1US(4)[8],=KL2A/9(4)[8],=KL2KP(4)[8],=KL2NQ(4)[8],=KL2UY(4)[8], + =KL2YD(4)[8],=KL2ZL(4)[8],=KL4CX(4)[8],=KL7AL(4)[8],=KL7AL/9(4)[8],=KL7BGR(4)[8],=KL7CE(4)[8], + =KL7CE/9(4)[8],=KL7IBV(4)[8],=KL7IKP(4)[8],=KL7IPS(4)[8],=KL7IVK(4)[8],=KL7JAB(4)[8],=KL7MU(4)[8], + =KL7TD(4)[8],=KP2XX(4)[8],=KP3JOS(4)[8],=KP3VA/M(4)[8],=KP4CI(4)[8],=KP4GE/9(4)[8],=KP4NKE(4)[8], + =KP4SL(4)[8],=KP4WG(4)[8],=NH2W(4)[8],=NH2W/9(4)[8],=NH6R(4)[8],=NH7TK(4)[8],=NL7CM(4)[8], + =NL7KD(4)[8],=NL7NK(4)[8],=NL7QC(4)[8],=NL7QC/9(4)[8],=NL7RC(4)[8],=NL7UH(4)[8],=NL7YI(4)[8], + =NP2AV(4)[8],=NP2DK(4)[8],=NP2GM(4)[8],=NP2L/9(4)[8],=NP2MU(4)[8],=NP3QC(4)[8],=NP4ZI(4)[8], + =WH0AI(4)[8],=WH2T(4)[8],=WH6ERQ(4)[8],=WH6FBA(4)[8],=WH6SB(4)[8],=WL7AHP(4)[8],=WL7AIT(4)[8], + =WL7BEV(4)[8],=WL7CTA(4)[8],=WL7FJ(4)[8],=WL7JAN(4)[8],=WL7NP(4)[8],=WL7UU(4)[8],=WP4JSP(4)[8], + =WP4LKY(4)[8],=WP4LSQ(4)[8],=WP4MQX(4)[8],=WP4MSD(4)[8],=WP4MTN(4)[8],=WP4MVQ(4)[8],=WP4MXP(4)[8], + =WP4MYL(4)[8],=WP4OCZ(4)[8], =AH2BG(4)[8],=AH2CF(4)[8],=AH6ES(4)[8],=AH6FF(4)[8],=AH6HR(4)[8],=AH6HR/4(4)[8],=AH6KB(4)[8], =AL0P(4)[8],=AL2C(4)[8],=AL2F(4)[8],=AL2F/4(4)[8],=AL4B(4)[8],=AL7CX(4)[8],=AL7EU(4)[8], =AL7JN(4)[8],=AL7KN(4)[8],=AL7LP(4)[8],=AL7MR(4)[8],=AL7QO(4)[8],=KH0UN(4)[8],=KH2AR(4)[8], - =KH2AR/4(4)[8],=KH2DN(4)[8],=KH4AF(4)[8],=KH6EO(4)[8],=KH6JQW(4)[8],=KH6KM(4)[8],=KH6OE(4)[8], - =KH6RD(4)[8],=KH6RD/4(4)[8],=KH6SKY(4)[8],=KH6SKY/4(4)[8],=KH7JM(4)[8],=KH7UB(4)[8],=KL0AH(4)[8], - =KL0BX(4)[8],=KL0CP(4)[8],=KL0ET(4)[8],=KL0ET/M(4)[8],=KL0EY(4)[8],=KL0FF(4)[8],=KL0GI(4)[8], - =KL0LN(4)[8],=KL0PM(4)[8],=KL0VH(4)[8],=KL1DN(4)[8],=KL1IG(4)[8],=KL1LV(4)[8],=KL1SE(4)[8], - =KL1SE/4(4)[8],=KL1ZA(4)[8],=KL2GB(4)[8],=KL2HK(4)[8],=KL2LK(4)[8],=KL2LU(4)[8],=KL2TD(4)[8], - =KL3PG(4)[8],=KL3PV(4)[8],=KL3RA(4)[8],=KL4KA(4)[8],=KL4WV(4)[8],=KL7DT/4(4)[8],=KL7FO/P(4)[8], - =KL7GN/M(4)[8],=KL7IUQ(4)[8],=KL7JKC(4)[8],=KL7LT(4)[8],=KL7WW(4)[8],=KL7YN(4)[8],=KL7YT(4)[8], - =KL9MEK(4)[8],=KP3RC(4)[8],=KP4TOM(4)[8],=NH2E(4)[8],=NH6T/4(4)[8],=NH7FK(4)[8],=NH7FL(4)[8], - =NH7H(4)[8],=NL7OE(4)[8],=NL7YU(4)[8],=NP3FB(4)[8],=NP4AC(4)[8],=NP4AC/4(4)[8],=WH6AUL(4)[8], - =WH6BPL/4(4)[8],=WH6DM(4)[8],=WH6EOG(4)[8],=WH6EQW(4)[8],=WH6FEJ(4)[8],=WH6LAK(4)[8],=WH6OR(4)[8], - =WH6Q/4(4)[8],=WL4B(4)[8],=WL7BHI(4)[8],=WL7BHJ(4)[8],=WL7CQH(4)[8],=WL7CQK(4)[8],=WL7IP(4)[8], - =WL7PC(4)[8],=WL7SF(4)[8],=WL7TD(4)[8],=WL7XZ(4)[8],=WP4CNA(4)[8],=WP4XF(4)[8], - =AL7AU(4)[7],=AL7NI(4)[7],=AL7RT(4)[7],=AL7RT/7(4)[7],=KH2BR/7(4)[7],=KH6JVF(4)[7],=KH6OZ(4)[7], - =KH7SS(4)[7],=KL0NT(4)[7],=KL0NV(4)[7],=KL0RN(4)[7],=KL0TF(4)[7],=KL1HE(4)[7],=KL1MW(4)[7], - =KL1TV(4)[7],=KL2NZ(4)[7],=KL4CZ(4)[7],=KL7AR(4)[7],=KL7HF(4)[7],=KL7HSG(4)[7],=KL7JGS(4)[7], - =KL7JGS/M(4)[7],=KL7JM(4)[7],=KL7JUL(4)[7],=KL7LH(4)[7],=KL7MVX(4)[7],=KL7YY/7(4)[7],=KL9A(4)[7], - =KL9A/7(4)[7],=NH0E(4)[7],=NH6HW(4)[7],=NL7IH(4)[7],=NL7MW(4)[7],=NL7UI(4)[7],=WH2M(4)[7], - =WH6COM(4)[7],=WH6ETU(4)[7],=WH6EVP(4)[7],=WL7A(4)[7],=WL7DP(4)[7],=WL7HP/7(4)[7],=WL7I(4)[7], - =AL7LU(5)[8],=KL7JFR(5)[8],=WP4GR(5)[8]; + =KH2AR/4(4)[8],=KH2DN(4)[8],=KH2EP(4)[8],=KH4AF(4)[8],=KH6EO(4)[8],=KH6JQW(4)[8],=KH6KM(4)[8], + =KH6OE(4)[8],=KH6RD(4)[8],=KH6RD/4(4)[8],=KH6SKY(4)[8],=KH6SKY/4(4)[8],=KH7JM(4)[8],=KH7UB(4)[8], + =KL0AH(4)[8],=KL0BX(4)[8],=KL0CP(4)[8],=KL0ET(4)[8],=KL0ET/M(4)[8],=KL0EY(4)[8],=KL0FF(4)[8], + =KL0GI(4)[8],=KL0LN(4)[8],=KL0PM(4)[8],=KL0VH(4)[8],=KL1DN(4)[8],=KL1IG(4)[8],=KL1LV(4)[8], + =KL1SE(4)[8],=KL1SE/4(4)[8],=KL1ZA(4)[8],=KL2GB(4)[8],=KL2HK(4)[8],=KL2LK(4)[8],=KL2LU(4)[8], + =KL2TD(4)[8],=KL3PG(4)[8],=KL3PV(4)[8],=KL3RA(4)[8],=KL4KA(4)[8],=KL4WV(4)[8],=KL7DT/4(4)[8], + =KL7FO/P(4)[8],=KL7GN/M(4)[8],=KL7IUQ(4)[8],=KL7JKC(4)[8],=KL7LT(4)[8],=KL7WW(4)[8],=KL7YN(4)[8], + =KL7YT(4)[8],=KL9MEK(4)[8],=KP3RC(4)[8],=KP4TOM(4)[8],=NH2E(4)[8],=NH6T/4(4)[8],=NH7FK(4)[8], + =NH7FL(4)[8],=NH7H(4)[8],=NL7OE(4)[8],=NL7YU(4)[8],=NP2KS(4)[8],=NP3FB(4)[8],=NP4AC(4)[8], + =NP4AC/4(4)[8],=WH6AUL(4)[8],=WH6BPL/4(4)[8],=WH6DM(4)[8],=WH6EOG(4)[8],=WH6EQW(4)[8], + =WH6FEJ(4)[8],=WH6LAK(4)[8],=WH6OR(4)[8],=WH6Q/4(4)[8],=WL4B(4)[8],=WL7BHI(4)[8],=WL7BHJ(4)[8], + =WL7CQH(4)[8],=WL7CQK(4)[8],=WL7IP(4)[8],=WL7PC(4)[8],=WL7SF(4)[8],=WL7TD(4)[8],=WL7XZ(4)[8], + =WP3IK(4)[8],=WP4CNA(4)[8],=WP4XF(4)[8], + =AL1VE/R(4)[7],=AL7AU(4)[7],=AL7NI(4)[7],=AL7RT(4)[7],=AL7RT/7(4)[7],=KH2BR/7(4)[7],=KH6JVF(4)[7], + =KH6OZ(4)[7],=KH7AL(4)[7],=KH7SS(4)[7],=KL0NT(4)[7],=KL0NV(4)[7],=KL0RN(4)[7],=KL0TF(4)[7], + =KL1HE(4)[7],=KL1MW(4)[7],=KL1TV(4)[7],=KL2NZ(4)[7],=KL4CZ(4)[7],=KL7AR(4)[7],=KL7HF(4)[7], + =KL7HSG(4)[7],=KL7JGS(4)[7],=KL7JGS/M(4)[7],=KL7JM(4)[7],=KL7JUL(4)[7],=KL7LH(4)[7],=KL7MVX(4)[7], + =KL7YY/7(4)[7],=KL9A(4)[7],=KL9A/7(4)[7],=NH0E(4)[7],=NH6HW(4)[7],=NL7IH(4)[7],=NL7MW(4)[7], + =NL7UI(4)[7],=WH2M(4)[7],=WH6COM(4)[7],=WH6ETU(4)[7],=WH6EVP(4)[7],=WL7A(4)[7],=WL7DP(4)[7], + =WL7HP/7(4)[7],=WL7I(4)[7], + =AL7LU(5)[8],=KL7JFR(5)[8]; Guantanamo Bay: 08: 11: NA: 20.00: 75.00: 5.0: KG4: KG4,=KG44WW,=KG4AC,=KG4AS,=KG4AW,=KG4AY,=KG4BP,=KG4DY,=KG4EM,=KG4EU,=KG4HF,=KG4HH,=KG4LA,=KG4LB, =KG4MA,=KG4NE,=KG4SC,=KG4SS,=KG4WH,=KG4WV,=KG4XP,=KG4ZK,=W1AW/KG4; @@ -1669,11 +1683,11 @@ Baker & Howland Islands: 31: 61: OC: 0.00: 176.00: 12.0: KH1: AH1,KH1,NH1,WH1; Guam: 27: 64: OC: 13.37: -144.70: -10.0: KH2: AH2,KH2,NH2,WH2,=AB2AB,=AB8EW,=AC0FG,=AC7WL,=AE6QZ,=AE7CA,=AH0AX,=AH0F,=AH0FM,=AH0S,=AI6ID,=AJ6JF, - =K1IWD,=K2QGC,=K4QFS,=K5GUA,=K5GUM,=KA0RU,=KA1I,=KA6BEG,=KB7OVT,=KB7PQU,=KC2OOX,=KD7IRV,=KE4YSP, - =KE7GMC,=KE7IPG,=KF4UFC,=KF5ULC,=KF7BMU,=KG4BKW,=KG6AGT,=KG6ARL,=KG6DX,=KG6FJG,=KG6JDX,=KG6JKR, - =KG6JKT,=KG6TWZ,=KH0DX,=KH0ES,=KH0TF,=KH0UM,=KH6KK,=KI4KKH,=KI4KKI,=KI7SSW,=KJ6AYQ,=KJ6KCJ, - =KK6GVF,=KK7AV,=KM4NVB,=KN4IAS,=KN4LVP,=N0RY,=N2MI,=N5ATC,=NH0A,=NH0B,=NH0Q,=NH7TL,=NP3EZ,=W5LFA, - =W6KV,=W7GVC,=W9MRE,=WA3KNB,=WB7AXZ,=WD6DGS,=WH0AC; + =K1IWD,=K2QGC,=K4QFS,=K5GUA,=K5GUM,=KA0RU,=KA1I,=KA6BEG,=KB7OVT,=KB7PQU,=KC2OOX,=KD0AA,=KD7IRV, + =KE4YSP,=KE7GMC,=KE7IPG,=KF4UFC,=KF5ULC,=KF7BMU,=KG4BKW,=KG6AGT,=KG6ARL,=KG6DX,=KG6FJG,=KG6JDX, + =KG6JKR,=KG6JKT,=KG6TWZ,=KH0DX,=KH0ES,=KH0TF,=KH0UM,=KH6KK,=KI4KKH,=KI4KKI,=KI7SSW,=KJ6AYQ, + =KJ6KCJ,=KK6GVF,=KK7AV,=KM4NVB,=KN4IAS,=KN4LVP,=N0RY,=N2MI,=N5ATC,=NH0A,=NH0B,=NH0Q,=NH7TL,=NP3EZ, + =W5LFA,=W6KV,=W7GVC,=W9MRE,=WA3KNB,=WB7AXZ,=WD6DGS,=WH0AC; Johnston Island: 31: 61: OC: 16.72: 169.53: 10.0: KH3: AH3,KH3,NH3,WH3,=KJ6BZ; Midway Island: 31: 61: OC: 28.20: 177.37: 11.0: KH4: @@ -1681,57 +1695,58 @@ Midway Island: 31: 61: OC: 28.20: 177.37: 11.0: KH4: Palmyra & Jarvis Islands: 31: 61: OC: 5.87: 162.07: 11.0: KH5: AH5,KH5,NH5,WH5; Hawaii: 31: 61: OC: 21.12: 157.48: 10.0: KH6: - AH6,AH7,KH6,KH7,NH6,NH7,WH6,WH7,=AA7LE,=AA8JA,=AB0JM,=AB3WS,=AB4CO,=AB6AP,=AB8VQ,=AC4PJ,=AC4TJ, - =AC9PT,=AE3TT,=AE5AB,=AE5LR,=AG4FH,=AH0A,=AH0AG,=AH2CC,=AH2CN,=AJ0M,=AJ8HT,=AK2J,=AL3U,=AL7RQ, - =K0BAD,=K0LAS,=K0LIH,=K0LUC,=K0OUS,=K1ENT,=K1ER,=K1HZM,=K1OSP,=K1OWL,=K1RJ,=K1VAN,=K2FFT,=K2GT, - =K3NW,=K3UNS,=K4AJQ,=K4EVR,=K4RAC,=K4UAI,=K4UHL,=K4XSS,=K4XV,=K5HQM,=K5ZAI,=K5ZYO,=K6AMA,=K6APP, - =K6BU,=K6CEE,=K6GJS,=K6GUY,=K6HI,=K6HNL,=K6JAE,=K6KKW,=K6LN,=K6NLF,=K6RSB,=K7ALH,=K7ASH,=K7FAR, - =K7FR,=K7NRJ,=K7QAS,=K7ZOX,=K8EUT,=K9AGI,=K9FD,=K9UBS,=KA0FOR,=KA0VHP,=KA1ICJ,=KA1YJ,=KA2IXG, - =KA2WXU,=KA3HIZ,=KA3TUA,=KA4INK,=KA4SBE,=KA6QOD,=KA6SVW,=KA7APU,=KA7BSK,=KA7RKW,=KA8EBL,=KA8KND, - =KA9DMP,=KB0DJR,=KB0PXK,=KB0ZKZ,=KB1EUJ,=KB1GC,=KB1PCX,=KB1UHL,=KB2MRY,=KB3DMT,=KB3FDP,=KB3HXI, - =KB3IOC,=KB3OXU,=KB3PJS,=KB3SEV,=KB4NGN,=KB5HVJ,=KB5NNY,=KB5OWT,=KB5OXR,=KB6CNU,=KB6EGA,=KB6INB, - =KB6PKF,=KB6SWL,=KB7AKH,=KB7AKQ,=KB7DDX,=KB7EA,=KB7G,=KB7JB,=KB7LPW,=KB7MEU,=KB7QKJ,=KB7UQH, - =KB7UVR,=KB7WDC,=KB7WUP,=KB8SKX,=KC0WQU,=KC0YIH,=KC0ZER,=KC1DBY,=KC2CLQ,=KC2GSU,=KC2HL,=KC2MIU, - =KC2PGW,=KC2SRW,=KC2YL,=KC2ZSG,=KC2ZSH,=KC2ZSI,=KC3GZT,=KC4HHS,=KC5GAX,=KC6HOX,=KC6QQI,=KC6RYQ, - =KC6SHT,=KC6SWR,=KC6YIO,=KC7ASJ,=KC7AXX,=KC7DUT,=KC7EJC,=KC7HNC,=KC7KAT,=KC7KAW,=KC7KBA,=KC7KHW, - =KC7KJT,=KC7LFM,=KC7NZ,=KC7PLG,=KC7USA,=KC7VHF,=KC7VWU,=KC7YXO,=KC8EFI,=KC8EJ,=KC9AUA,=KC9EQS, - =KC9KEX,=KC9NJG,=KC9SBG,=KD0JNO,=KD0OXU,=KD0QLQ,=KD0QLR,=KD0RPD,=KD0WVZ,=KD0ZSP,=KD3FZ,=KD4GVR, - =KD4GW,=KD4ML,=KD4NFW,=KD4QWO,=KD5BSK,=KD5HDA,=KD5HX,=KD5TBQ,=KD6CVU,=KD6CWF,=KD6EPD,=KD6IPX, - =KD6LRA,=KD6NVX,=KD6VTU,=KD7GWI,=KD7GWM,=KD7HTG,=KD7KFT,=KD7LMP,=KD7SME,=KD7SMV,=KD7TZ,=KD7UV, - =KD7UZG,=KD7WJM,=KD8GVO,=KD8LYB,=KE0JSB,=KE0KIE,=KE0TU,=KE2CX,=KE4DYE,=KE4RNU,=KE4UXQ,=KE4ZXQ, - =KE5CGA,=KE5FJM,=KE5UZN,=KE5VQB,=KE6AHX,=KE6AXN,=KE6AXP,=KE6AYZ,=KE6CQE,=KE6EDJ,=KE6EVT,=KE6JXO, - =KE6MKW,=KE6RAW,=KE6TFR,=KE6TIS,=KE6TIX,=KE6TKQ,=KE7FJA,=KE7FSK,=KE7HEW,=KE7IZS,=KE7JTX,=KE7KRQ, - =KE7LWN,=KE7MW,=KE7PEQ,=KE7PIZ,=KE7QML,=KE7RCT,=KE7UAJ,=KE7UV,=KE7UW,=KF4DWA,=KF4FQR,=KF4IBW, - =KF4JLZ,=KF4OOB,=KF4SGA,=KF4UJC,=KF4URD,=KF4VHS,=KF5AHW,=KF5MXM,=KF5MXP,=KF6BS,=KF6FDG,=KF6IVV, - =KF6LWN,=KF6LYU,=KF6MQT,=KF6OSA,=KF6PJ,=KF6PQE,=KF6QZD,=KF6RLP,=KF6YZR,=KF6ZAL,=KF6ZVS,=KF7GNP, - =KF7LRS,=KF7OJR,=KF7TUU,=KF7VUK,=KG0XR,=KG4CAN,=KG4FJB,=KG4HZF,=KG4SGC,=KG4SGV,=KG4TZD,=KG5CH, - =KG5CNO,=KG5IVP,=KG6DV,=KG6HRX,=KG6IER,=KG6IGY,=KG6JJP,=KG6LFX,=KG6MZJ,=KG6NNF,=KG6NQI,=KG6OOB, - =KG6RJI,=KG6SDD,=KG6TFI,=KG6WZD,=KG6ZRY,=KG7AYU,=KG7CJI,=KG7EUP,=KG7ZJM,=KG9MDR,=KH0AI,=KH0HL, - =KH0WJ,=KH2DC,=KH2MD,=KH2TD,=KH2TE,=KH2YI,=KH3AE,=KH3AE/M,=KH3AF,=KH8Z,=KI4CAU,=KI4HCZ,=KI4NOH, - =KI4YAF,=KI4YOG,=KI6CRL,=KI6DVJ,=KI6EFY,=KI6FTE,=KI6HBZ,=KI6JEC,=KI6LPT,=KI6NOC,=KI6QDQ,=KI6QQJ, - =KI6SNP,=KI6VYB,=KI6WOJ,=KI6ZRV,=KI7AUZ,=KI7EZG,=KI7FJW,=KI7FJX,=KI7FUT,=KI7OS,=KI7QZQ,=KJ4BHO, - =KJ4EYV,=KJ4KND,=KJ4WOI,=KJ6COM,=KJ6CQT,=KJ6FDF,=KJ6GYD,=KJ6LAW,=KJ6LAX,=KJ6LBI,=KJ6NZH,=KJ6QQT, - =KJ6RGW,=KJ6TJZ,=KK4EEC,=KK4RNF,=KK6BRW,=KK6EJ,=KK6GM,=KK6OMX,=KK6PGA,=KK6QAI,=KK6RM,=KK6VJN, - =KK6ZQ,=KK6ZZE,=KK7WR,=KL0TK,=KL1TP,=KL3FN,=KL3JC,=KL7PN,=KL7UB,=KL7XT,=KM4IP,=KM6IK,=KM6RM, - =KM6RWE,=KM6UVP,=KN6BE,=KN6ZU,=KN8AQR,=KO6KW,=KO6QT,=KQ6CD,=KQ6M,=KR1LLR,=KU4OY,=KW4JC,=KX6RTG, + AH6,AH7,KH6,KH7,NH6,NH7,WH6,WH7,=AA7FL,=AA7LE,=AA8JA,=AB0JM,=AB3WS,=AB4CO,=AB6AP,=AB8VQ,=AC4PJ, + =AC4TJ,=AC9PT,=AE3TT,=AE5AB,=AE5LR,=AG4FH,=AH0A,=AH0AG,=AH2CC,=AH2CN,=AJ0M,=AJ8HT,=AK2J,=AL3U, + =AL6D,=AL7RQ,=K0BAD,=K0LAS,=K0LIH,=K0LUC,=K0OUS,=K1ENT,=K1ER,=K1HZM,=K1OSP,=K1OWL,=K1RJ,=K1VAN, + =K2FFT,=K2GT,=K3NW,=K3UNS,=K4AJQ,=K4EVR,=K4RAC,=K4UAI,=K4UHL,=K4XV,=K5HQM,=K5PKT,=K5ZAI,=K5ZYO, + =K6AMA,=K6APP,=K6BU,=K6CEE,=K6GJS,=K6GUY,=K6HI,=K6HNL,=K6JAE,=K6KKW,=K6LN,=K6RSB,=K7ALH,=K7ASH, + =K7NRJ,=K7QAS,=K7ZOX,=K8EUT,=K9AGI,=K9FD,=K9UBS,=KA0FOR,=KA0VHP,=KA1ICJ,=KA1YJ,=KA2IXG,=KA2WXU, + =KA3HIZ,=KA3TUA,=KA4INK,=KA4SBE,=KA6QOD,=KA6SVW,=KA7APU,=KA7BSK,=KA7RKW,=KA8EBL,=KA8KND,=KA9DMP, + =KB0DJR,=KB0PXK,=KB0ZKZ,=KB1EUJ,=KB1GC,=KB1KAC,=KB1PCX,=KB1UHL,=KB2MRY,=KB3DMT,=KB3FDP,=KB3HXI, + =KB3IOC,=KB3OXU,=KB3PJS,=KB3SEV,=KB4NGN,=KB5HVJ,=KB5MTI,=KB5NNY,=KB5OWT,=KB5OXR,=KB6CNU,=KB6EGA, + =KB6INB,=KB6PKF,=KB6SWL,=KB7AKH,=KB7AKQ,=KB7DDX,=KB7EA,=KB7G,=KB7JB,=KB7LPW,=KB7MEU,=KB7QKJ, + =KB7UQH,=KB7UVR,=KB7WDC,=KB7WUP,=KB8SKX,=KC0HFI,=KC0WQU,=KC0YIH,=KC0ZER,=KC1DBY,=KC2CLQ,=KC2GSU, + =KC2HL,=KC2MIU,=KC2PGW,=KC2SRW,=KC2YL,=KC2ZSG,=KC2ZSH,=KC2ZSI,=KC3GZT,=KC4HHS,=KC5GAX,=KC6HOX, + =KC6MCC,=KC6QQI,=KC6RYQ,=KC6SHT,=KC6SWR,=KC6YIO,=KC7ASJ,=KC7AXX,=KC7DUT,=KC7EJC,=KC7HNC,=KC7KAT, + =KC7KAW,=KC7KBA,=KC7KHW,=KC7KJT,=KC7LFM,=KC7NZ,=KC7PLG,=KC7USA,=KC7VHF,=KC7VWU,=KC7YXO,=KC8EFI, + =KC8EJ,=KC8JNV,=KC9AUA,=KC9EQS,=KC9KEX,=KC9NJG,=KC9SBG,=KD0JNO,=KD0OXU,=KD0QLQ,=KD0QLR,=KD0RPD, + =KD0WVZ,=KD0ZSP,=KD3FZ,=KD4GVR,=KD4GW,=KD4ML,=KD4NFW,=KD4QWO,=KD5BSK,=KD5HDA,=KD5HX,=KD5TBQ, + =KD6CVU,=KD6CWF,=KD6EPD,=KD6IPX,=KD6LRA,=KD6NVX,=KD6VTU,=KD7GWI,=KD7GWM,=KD7HTG,=KD7KFT,=KD7LMP, + =KD7SME,=KD7SMV,=KD7TZ,=KD7UV,=KD7UZG,=KD7WJM,=KD8GVO,=KD8LYB,=KE0JSB,=KE0KIE,=KE0TU,=KE2CX, + =KE4DYE,=KE4RNU,=KE4UXQ,=KE4ZXQ,=KE5CGA,=KE5FJM,=KE5UZN,=KE5VQB,=KE6AHX,=KE6AXN,=KE6AXP,=KE6AYZ, + =KE6CQE,=KE6EDJ,=KE6EVT,=KE6JXO,=KE6MKW,=KE6RAW,=KE6TFR,=KE6TIS,=KE6TIX,=KE6TKQ,=KE7FJA,=KE7FSK, + =KE7HEW,=KE7IZS,=KE7JTX,=KE7KRQ,=KE7LWN,=KE7MW,=KE7PEQ,=KE7PIZ,=KE7QML,=KE7RCT,=KE7UAJ,=KE7UV, + =KE7UW,=KF4DWA,=KF4FQR,=KF4IBW,=KF4JLZ,=KF4OOB,=KF4SGA,=KF4UJC,=KF4URD,=KF4VHS,=KF5AHW,=KF5MXM, + =KF5MXP,=KF6BS,=KF6FDG,=KF6IVV,=KF6LWN,=KF6LYU,=KF6MQT,=KF6OHL,=KF6OSA,=KF6PJ,=KF6PQE,=KF6QZD, + =KF6RLP,=KF6YZR,=KF6ZAL,=KF6ZVS,=KF7GNP,=KF7LRS,=KF7OJR,=KF7TUU,=KF7VUK,=KG0XR,=KG4CAN,=KG4FJB, + =KG4HZF,=KG4JKJ,=KG4SGC,=KG4SGV,=KG4TZD,=KG5CH,=KG5CNO,=KG5IVP,=KG6CJA,=KG6CJK,=KG6DV,=KG6HRX, + =KG6IER,=KG6IGY,=KG6JJP,=KG6LFX,=KG6MZJ,=KG6NNF,=KG6NQI,=KG6OOB,=KG6RJI,=KG6SDD,=KG6TFI,=KG6WZD, + =KG6ZRY,=KG7AYU,=KG7CJI,=KG7EUP,=KG7ZJM,=KG9MDR,=KH0AI,=KH0HL,=KH0WJ,=KH2DC,=KH2MD,=KH2TD,=KH2TE, + =KH2YI,=KH3AE,=KH3AE/M,=KH3AF,=KH8Z,=KI4CAU,=KI4HCZ,=KI4NOH,=KI4YAF,=KI4YOG,=KI6CRL,=KI6DVJ, + =KI6EFY,=KI6FTE,=KI6HBZ,=KI6JEC,=KI6LPT,=KI6NOC,=KI6QDQ,=KI6QQJ,=KI6SNP,=KI6VYB,=KI6WOJ,=KI6ZRV, + =KI7AUZ,=KI7EZG,=KI7FJW,=KI7FJX,=KI7FUT,=KI7OS,=KI7QZQ,=KJ4BHO,=KJ4EYV,=KJ4KND,=KJ4WOI,=KJ6CKZ, + =KJ6COM,=KJ6CPN,=KJ6CQT,=KJ6FDF,=KJ6GYD,=KJ6LAW,=KJ6LAX,=KJ6LBI,=KJ6NZH,=KJ6QQT,=KJ6RGW,=KJ6TJZ, + =KK4EEC,=KK4RNF,=KK6BRW,=KK6DWS,=KK6EJ,=KK6GM,=KK6OMX,=KK6PGA,=KK6QAI,=KK6RM,=KK6VJN,=KK6ZQ, + =KK6ZZE,=KK7WR,=KL0TK,=KL1TP,=KL3FN,=KL3JC,=KL7PN,=KL7UB,=KL7XT,=KM4IP,=KM6IK,=KM6RM,=KM6RWE, + =KM6UVP,=KN6BE,=KN6ZU,=KN8AQR,=KO4BNK,=KO6KW,=KO6QT,=KQ6CD,=KQ6M,=KR1LLR,=KU4OY,=KW4JC,=KX6RTG, =KY1I,=N0CAN,=N0KXY,=N0PJV,=N0RMC,=N0VYO,=N0ZSJ,=N1CBF,=N1CFD,=N1CNQ,=N1IDP,=N1SHV,=N1TEE,=N1TLE, =N1VOP,=N1YLH,=N2AL,=N2KJU,=N2KLQ,=N3BQY,=N3DJT,=N3FUR,=N3GWR,=N3HQW,=N3RWD,=N3VDM,=N3ZFY,=N4BER, - =N4ERA,=N4ZIW,=N5IWF,=N5JKJ,=N6AI,=N6CGA,=N6DXW,=N6GOZ,=N6IKX,=N6KB,=N6NCT,=N6PJQ,=N6QBK,=N6ZAB, - =N7AMY,=N7BLC,=N7BMD,=N7KZB,=N7NYY,=N7ODC,=N7TSV,=N7WBX,=N9GFL,=N9SBL,=NB6R,=ND1A,=NE7SO,=NG1T, - =NH2CC,=NH2CD,=NH2CF,=NH2CQ,=NH2CR,=NH2IB,=NH2IF,=NH2II,=NH2IJ,=NH2IO,=NH2JO,=NH2KF,=NH2KH,=NH2YL, - =NH2Z,=NI1J,=NL7UW,=NM2B,=NO0H,=NT0DA,=NT4AA,=NZ2F,=W0UNX,=W1BMB,=W2UNS,=W3ZRT,=W4PRO,=W4YQS, - =W5FJG,=W6CAG,=W6CWJ,=W6KEV,=W6KIT,=W6KPI,=W6MQB,=W6MRJ,=W6NBK,=W6QPV,=W6ROM,=W6SHH,=W6UNX,=W7EHP, - =W7NVQ,=W7NX,=W7RCR,=W7UEA,=W8AYD,=W8JAY,=W8WH,=WA0FUR,=WA0NHD,=WA0TFB,=WA2AUI,=WA3ZEM,=WA6AW, - =WA6CZL,=WA6ECX,=WA6IIQ,=WA6JDA,=WA6JJQ,=WA6QDQ,=WA6UVF,=WA7ESE,=WA7HEO,=WA7TFE,=WA7ZK,=WA8HEB, - =WA8JQP,=WB0RUA,=WB0TZQ,=WB2AHM,=WB2SQW,=WB4JTT,=WB4MNF,=WB5ZDH,=WB5ZOV,=WB6CVJ,=WB6FOX,=WB6PIO, - =WB6PJT,=WB6SAA,=WB6VBM,=WB8NCD,=WB9SMM,=WC6B,=WD0FTF,=WD0LFN,=WD8LIB,=WD8OBO,=WH2Y,=WH7K,=WU0H, - =WV0Z,=WV6K,=WY6F; + =N4ERA,=N4ZIW,=N5IWF,=N5JKJ,=N6AI,=N6CGA,=N6DXW,=N6EQZ,=N6GOZ,=N6IKX,=N6KB,=N6NCT,=N6PJQ,=N6QBK, + =N6ZAB,=N7AMY,=N7BLC,=N7BMD,=N7KZB,=N7NYY,=N7ODC,=N7TSV,=N7WBX,=N9GFL,=N9SBL,=NB6R,=ND1A,=NE7SO, + =NG1T,=NH2CC,=NH2CD,=NH2CF,=NH2CQ,=NH2CR,=NH2IB,=NH2IF,=NH2II,=NH2IJ,=NH2IO,=NH2JO,=NH2KF,=NH2KH, + =NH2YL,=NH2Z,=NI1J,=NL7UW,=NM2B,=NO0H,=NT0DA,=NT4AA,=NZ2F,=W0UNX,=W1BMB,=W1ETT,=W1JJS,=W2UNS, + =W3ZRT,=W4PRO,=W4YQS,=W5FJG,=W6CAG,=W6CWJ,=W6KEV,=W6KIT,=W6KPI,=W6MQB,=W6MRJ,=W6NBK,=W6QPV,=W6ROM, + =W6SHH,=W6UNX,=W7EHP,=W7NVQ,=W7NX,=W7RCR,=W7UEA,=W8AYD,=W8JAY,=W8WH,=WA0FUR,=WA0NHD,=WA0TFB, + =WA2AUI,=WA3ZEM,=WA6AW,=WA6CZL,=WA6ECX,=WA6IIQ,=WA6JDA,=WA6JJQ,=WA6QDQ,=WA6UVF,=WA7ESE,=WA7HEO, + =WA7TFE,=WA7ZK,=WA8HEB,=WA8JQP,=WB0RUA,=WB0TZQ,=WB2AHM,=WB2SQW,=WB4JTT,=WB4MNF,=WB5ZDH,=WB5ZOV, + =WB6CVJ,=WB6FOX,=WB6PIO,=WB6PJT,=WB6SAA,=WB6VBM,=WB8NCD,=WB9SMM,=WC6B,=WD0FTF,=WD0LFN,=WD4MLF, + =WD8LIB,=WD8OBO,=WH2Y,=WH7K,=WU0H,=WV0Z,=WV6K,=WY6F; Kure Island: 31: 61: OC: 29.00: 178.00: 10.0: KH7K: AH7K,KH7K,NH7K,WH7K; American Samoa: 32: 62: OC: -14.32: 170.78: 11.0: KH8: AH8,KH8,NH8,WH8,=AB9OH,=AF7MN,=KD8TFY,=KH0WF,=KM4YJH,=KS6EL,=KS6FS,=WH6BAR,=WL7BMP; Swains Island: 32: 62: OC: -11.05: 171.25: 11.0: KH8/s: - =KH6BK/KH8,=KH8/WH7S,=KH8S/K3UY,=KH8S/NA6M,=KH8SI,=NH8S,=W8S; + =K9CS/KH8S,=KH6BK/KH8,=KH8/WH7S,=KH8S/K3UY,=KH8S/NA6M,=KH8S/W8TN,=KH8SI,=NH8S,=W8S; Wake Island: 31: 65: OC: 19.28: -166.63: -12.0: KH9: AH9,KH9,NH9,WH9; Alaska: 01: 01: NA: 61.40: 148.87: 8.0: KL: @@ -1741,48 +1756,50 @@ Alaska: 01: 01: NA: 61.40: 148.87: 8.0: KL: =K1BZD,=K1KAO,=K1MAT,=K1TMT,=K2ICW,=K2NPS,=K3JMI,=K4DRC,=K4ETC,=K4HOE,=K4PSG,=K4RND,=K4WPK,=K5DOW, =K5HL,=K5RD,=K5RSO,=K5RZW,=K5TDN,=K6ANE,=K6GKW,=K7BUF,=K7CAP,=K7EJM,=K7GRW,=K7LOP,=K7MVX,=K7OCL, =K7RDR,=K7SGA,=K7UNX,=K7VRK,=K8IEL,=K8OUA,=K9DUG,=KA0SIM,=KA0YPV,=KA1NCN,=KA2TJZ,=KA2ZSD,=KA6DBB, - =KA6UGT,=KA7ETQ,=KA7HOX,=KA7JOR,=KA7PUB,=KA7TMU,=KA7TOM,=KA7UKN,=KA7VCR,=KA7YEY,=KA9GYQ,=KB0APK, - =KB0LOW,=KB0TSU,=KB0UGE,=KB0UVK,=KB1CRT,=KB1FCX,=KB1KLH,=KB1PHP,=KB1QCD,=KB1QCE,=KB1SYV,=KB1WQL, - =KB2FWF,=KB2JWV,=KB2ZME,=KB3CYB,=KB3JFK,=KB3NCR,=KB3VQE,=KB4DX,=KB5DNT,=KB5HEV,=KB5NOW,=KB5UWU, - =KB5YLG,=KB6DKJ,=KB7AMA,=KB7BNG,=KB7BUF,=KB7DEL,=KB7FXJ,=KB7IBI,=KB7JA,=KB7LJZ,=KB7LON,=KB7PHT, - =KB7QLB,=KB7RXZ,=KB7SIQ,=KB7UBH,=KB7VFZ,=KB7YEC,=KB7ZVZ,=KB8QKR,=KB8SBG,=KB8TEW,=KB8VYJ,=KB9MWG, - =KB9RWE,=KB9RWJ,=KB9YGR,=KC0ATI,=KC0CWG,=KC0CYR,=KC0EF,=KC0EFL,=KC0GDH,=KC0GHH,=KC0GLN,=KC0LLL, - =KC0NSV,=KC0OKQ,=KC0PSZ,=KC0TK,=KC0TZL,=KC0UYK,=KC0VDN,=KC0WSG,=KC0YSW,=KC1DL,=KC1KPL,=KC1LVR, - =KC2BYX,=KC2GVS,=KC2HRV,=KC2KMU,=KC2OJP,=KC2PCV,=KC2PIO,=KC3DBK,=KC4MXQ,=KC4MXR,=KC5BNN,=KC5CHO, - =KC5DJA,=KC5IBS,=KC5KIG,=KC5LKF,=KC5LKG,=KC5NHL,=KC5QPJ,=KC5THY,=KC5YIB,=KC5YOX,=KC5ZAA,=KC6RJW, - =KC7BUL,=KC7COW,=KC7ENM,=KC7FWK,=KC7GSO,=KC7HJM,=KC7HPF,=KC7IKE,=KC7IKF,=KC7INC,=KC7MIJ,=KC7MPY, - =KC7MRO,=KC7OQZ,=KC7PLJ,=KC7PLQ,=KC7RCP,=KC7TYT,=KC7UZY,=KC7WOA,=KC7YZR,=KC8GKK,=KC8MVW,=KC8NOY, - =KC8WWS,=KC8YIV,=KC9CMY,=KC9HIK,=KC9IKH,=KC9VLD,=KD0CLU,=KD0CZC,=KD0DHU,=KD0FJG,=KD0IXU,=KD0JJB, - =KD0NSG,=KD0ONB,=KD0VAK,=KD0VAL,=KD0ZOD,=KD2CTE,=KD2GKT,=KD2NPD,=KD2SKJ,=KD4EYW,=KD4MEY,=KD4QJL, - =KD5DNA,=KD5DWV,=KD5GAL,=KD5MQC,=KD5QPD,=KD5RVD,=KD5WCF,=KD5WEV,=KD5WYP,=KD6DLB,=KD6RVY,=KD6YKS, - =KD7APU,=KD7AWK,=KD7BBX,=KD7BGP,=KD7DIG,=KD7DUQ,=KD7FGL,=KD7FUL,=KD7GFG,=KD7HXF,=KD7KRK,=KD7MGO, - =KD7OOS,=KD7QAR,=KD7SIX,=KD7TOJ,=KD7TWB,=KD7UAG,=KD7VOI,=KD7VXE,=KD7ZTJ,=KD8DDY,=KD8GEL,=KD8GMS, - =KD8JOU,=KD8KQL,=KD8LNA,=KD8WMX,=KD9TK,=KE0DYM,=KE0KKI,=KE4DGR,=KE4MQD,=KE4YEI,=KE4YLG,=KE5CVD, - =KE5CVT,=KE5DQV,=KE5FOC,=KE5GEB,=KE5HHR,=KE5JHS,=KE5JTB,=KE5NLG,=KE5QDJ,=KE5QDK,=KE5WGZ,=KE5ZRK, - =KE5ZUM,=KE6DLM,=KE6DUJ,=KE6DXH,=KE6IPM,=KE6SYD,=KE6TCE,=KE6VUB,=KE7DFO,=KE7ELL,=KE7EOP,=KE7EPZ, - =KE7FNC,=KE7FXM,=KE7GOE,=KE7HMJ,=KE7KYU,=KE7PXV,=KE7TRX,=KE8RO,=KF3L,=KF4JET,=KF4PLR,=KF4TBD, - =KF4YFD,=KF5CVM,=KF5ETW,=KF5FJQ,=KF5HFB,=KF5HJC,=KF5NDT,=KF5UBP,=KF5YYK,=KF6AWG,=KF6AXS,=KF6BMF, - =KF6BOV,=KF6EJR,=KF6GNM,=KF6IAO,=KF6ILC,=KF6IOT,=KF6LGK,=KF6MFK,=KF6QOJ,=KF6RMG,=KF6RPC,=KF6SHS, - =KF6TGR,=KF6UWT,=KF7ARC,=KF7CXJ,=KF7FLL,=KF7FLM,=KF7GKY,=KF7ING,=KF7ITN,=KF7KTH,=KF7LEX,=KF7LUA, - =KF7PCJ,=KF7PFT,=KF7PSS,=KF7PUQ,=KF7UFY,=KF7VBO,=KF7WVE,=KF8ZB,=KG2IA,=KG4BBX,=KG4NBL/P,=KG4TJS, - =KG4WNZ,=KG5EQN,=KG5GDF,=KG5GTD,=KG5JQC,=KG5MIB,=KG5MIO,=KG6ALN,=KG6DTI,=KG6MBC,=KG6RJE,=KG6TAL, - =KG7CUR,=KG7DVI,=KG7GJL,=KG7JVJ,=KG7OQC,=KG7OUF,=KG7SEQ,=KG7TGE,=KG7ZEV,=KH0NF,=KH0NG,=KH0RF, - =KH2YN,=KH7BW,=KH7DA,=KI4COG,=KI4ERC,=KI4GAG,=KI4GCF,=KI4GDI,=KI4NGY,=KI4NVI,=KI4SET,=KI4SOM, - =KI6BGR,=KI6DES,=KI6HGW,=KI6YXZ,=KI7COR,=KI7PZ,=KI8JT,=KJ4HEW,=KJ4IAQ,=KJ4PSV,=KJ4WIQ,=KJ4YOY, - =KJ4ZWI,=KJ6DCH,=KJ6KRG,=KJ6RFQ,=KJ6ZSX,=KJ7IR,=KJ7MY,=KK4AMV,=KK4CLS,=KK4LRE,=KK4QXE,=KK4RYG, - =KK4WWH,=KK4WWI,=KK6IUY,=KK6PGV,=KK6SNS,=KK7I,=KK7IV,=KK7STL,=KL7D/M,=KL7NC/IMD,=KM4AGL,=KM4KWS, - =KM4KX,=KM4NIC,=KM4OE,=KM4PJH,=KM4TJI,=KM6NOL,=KM6YOD,=KN4ENR,=KN4HGD,=KN4LJD,=KN4RXC,=KN8IVE, - =KR4WV,=KV3X,=KW1W,=KW4XD,=KY7J,=KZ6HJC,=N0GDT,=N0GDU,=N0GLI,=N0HJT,=N0HYI,=N0HZF,=N0JEN,=N0LHN, - =N0SN,=N0SUB,=N0WXJ,=N0XKY,=N0XS,=N0ZKV,=N1HEN,=N1HUT,=N1KDQ,=N1KTI,=N1NDA,=N1NJS,=N1QFE,=N1TX, - =N2CXH,=N2SHO,=N2TJY,=N2YZW,=N3QEH,=N4AVX,=N4CM,=N4HCJ,=N4HZU,=N4NAV,=N5CSO,=N5UKX,=N5WPR,=N6BSC, - =N6CVV,=N6CZU,=N6JM,=N6QEK,=N6ZZX,=N7BUO,=N7DBN,=N7DKL,=N7DUD,=N7FCT,=N7GLP,=N7HER,=N7HQK,=N7IA, - =N7JUX,=N7MGT,=N7MTG,=N7QAN,=N7TBU,=N7UTV,=N7UWT,=N7XEA,=N7XNM,=N7YKY,=N7YQS,=N8DDY,=N8EX,=N8JKB, - =N8KCJ,=N8SUG,=N9AIG,=N9YD,=NA7WM,=NC4OI,=NE7EK,=NH2GZ,=NH2LS,=NH7UO,=NM0H,=NN4NN,=NP4FU,=NU9Q, - =NW7F,=W0EZM,=W0FJN,=W0RWS,=W0UZJ,=W0ZEE,=W1JM,=W1LYD,=W1RSC,=W1ZKA,=W2DLS,=W2KRZ,=W3ICG,=W3JPN, - =W3MKG,=W4AUL,=W4BMR,=W4RSB,=W5JKT,=W6DDP,=W6GTE,=W6ROW,=W7APM,=W7DDG,=W7EIK,=W7JMR,=W7PWA,=W7RAZ, - =W7ROS,=W7WEZ,=W7ZWT,=W8MDD,=W8PVZ,=W8TCX,=W9ITU,=W9JMC,=WA0JS,=WA1FVJ,=WA2BGL,=WA2BIW,=WA6GFS, - =WA7B,=WA7MDS,=WA7PXH,=WA7USX,=WA7YXF,=WB0CMZ,=WB1BR,=WB1GZL,=WB1ILS,=WB6COP,=WB9JZL,=WD6CET, - =WH6CYY,=WH6DPL,=WH6DX,=WH6GBB,=WH6GCO,=WH7AK,=WJ8M,=WP4IYI,=WT5T,=WX1NCC; + =KA6UGT,=KA7ETQ,=KA7HHF,=KA7HOX,=KA7JOR,=KA7PUB,=KA7TMU,=KA7TOM,=KA7UKN,=KA7VCR,=KA7YEY,=KA9GYQ, + =KB0APK,=KB0LOW,=KB0TSU,=KB0UGE,=KB0UVK,=KB1CRT,=KB1FCX,=KB1KLH,=KB1PHP,=KB1QCD,=KB1QCE,=KB1SYV, + =KB1WQL,=KB2FWF,=KB2JWV,=KB2ZME,=KB3CYB,=KB3JFK,=KB3NCR,=KB3VQE,=KB4DX,=KB5DNT,=KB5HEV,=KB5NOW, + =KB5UWU,=KB5YLG,=KB6DKJ,=KB7AMA,=KB7BNG,=KB7BUF,=KB7DEL,=KB7FXJ,=KB7IBI,=KB7JA,=KB7LJZ,=KB7LON, + =KB7PHT,=KB7QLB,=KB7RWK,=KB7RXZ,=KB7SIQ,=KB7UBH,=KB7VFZ,=KB7YEC,=KB7ZVZ,=KB8QKR,=KB8SBG,=KB8TEW, + =KB8VYJ,=KB9MWG,=KB9RWE,=KB9RWJ,=KB9THD,=KB9YGR,=KC0ATI,=KC0CWG,=KC0CYR,=KC0EF,=KC0EFL,=KC0GDH, + =KC0GHH,=KC0GLN,=KC0LLL,=KC0NSV,=KC0OKQ,=KC0PSZ,=KC0TK,=KC0TZL,=KC0UYK,=KC0VDN,=KC0WSG,=KC0YSW, + =KC1DL,=KC1KPL,=KC1LVR,=KC2BYX,=KC2HRV,=KC2KMU,=KC2OJP,=KC2PCV,=KC2PIO,=KC3BWW,=KC3DBK,=KC4MXQ, + =KC4MXR,=KC5BNN,=KC5CHO,=KC5DJA,=KC5IBS,=KC5KIG,=KC5LKF,=KC5LKG,=KC5NHL,=KC5QPJ,=KC5THY,=KC5YIB, + =KC5YOX,=KC5ZAA,=KC6FRJ,=KC6RJW,=KC7BUL,=KC7COW,=KC7DNT,=KC7ENM,=KC7FWK,=KC7GSO,=KC7HJM,=KC7HPF, + =KC7IKE,=KC7IKF,=KC7INC,=KC7MIJ,=KC7MPY,=KC7MRO,=KC7OQZ,=KC7PLJ,=KC7PLQ,=KC7RCP,=KC7TYT,=KC7UZY, + =KC7WOA,=KC7YZR,=KC8GKK,=KC8MVW,=KC8NOY,=KC8WWS,=KC8YIV,=KC9CMY,=KC9HIK,=KC9IKH,=KC9SXX,=KC9VLD, + =KD0CLU,=KD0CZC,=KD0DHU,=KD0FJG,=KD0IXU,=KD0JJB,=KD0NSG,=KD0ONB,=KD0VAK,=KD0VAL,=KD0ZOD,=KD2CTE, + =KD2GKT,=KD2NPD,=KD2SKJ,=KD4EYW,=KD4MEY,=KD4QJL,=KD5DNA,=KD5DWV,=KD5GAL,=KD5MQC,=KD5QPD,=KD5RVD, + =KD5WCF,=KD5WEV,=KD5WYP,=KD6DLB,=KD6RVY,=KD6YKS,=KD7APU,=KD7AWK,=KD7BBX,=KD7BGP,=KD7DIG,=KD7DUQ, + =KD7FGL,=KD7FUL,=KD7HXF,=KD7KRK,=KD7MGO,=KD7OOS,=KD7QAR,=KD7SIX,=KD7TOJ,=KD7TWB,=KD7UAG,=KD7VOI, + =KD7VXE,=KD7ZTJ,=KD8DDY,=KD8GEL,=KD8GMS,=KD8JOU,=KD8KQL,=KD8LNA,=KD8WMX,=KD9TK,=KE0DYM,=KE0KKI, + =KE4DGR,=KE4MQD,=KE4YEI,=KE4YLG,=KE5CVD,=KE5CVT,=KE5DQV,=KE5FOC,=KE5GEB,=KE5HHR,=KE5JHS,=KE5JTB, + =KE5NLG,=KE5QDJ,=KE5QDK,=KE5WGZ,=KE5ZRK,=KE5ZUM,=KE6DLM,=KE6DUJ,=KE6DXH,=KE6IPM,=KE6SYD,=KE6TCE, + =KE6VUB,=KE7DFO,=KE7ELL,=KE7EOP,=KE7EPZ,=KE7FNC,=KE7FXM,=KE7GOE,=KE7HMJ,=KE7KYU,=KE7PXV,=KE7TRX, + =KE7ZXH,=KE8RO,=KF3L,=KF4JET,=KF4PLR,=KF4TBD,=KF4YFD,=KF5CVM,=KF5ETW,=KF5FJQ,=KF5HFB,=KF5HJC, + =KF5NDT,=KF5UBP,=KF5YYK,=KF6AWG,=KF6AXS,=KF6BMF,=KF6BOV,=KF6EJR,=KF6GNM,=KF6IAO,=KF6ILC,=KF6IOT, + =KF6LGK,=KF6MFK,=KF6QOJ,=KF6RMG,=KF6RPC,=KF6SHS,=KF6TGR,=KF6UWT,=KF7ARC,=KF7CXJ,=KF7FLL,=KF7FLM, + =KF7GKY,=KF7ING,=KF7ITN,=KF7KTH,=KF7LEX,=KF7LUA,=KF7PCJ,=KF7PFT,=KF7PSS,=KF7PUQ,=KF7UFY,=KF7VBO, + =KF7WVE,=KF8ZB,=KG2IA,=KG4BBX,=KG4NBL/P,=KG4TJS,=KG4WNZ,=KG5DBP,=KG5EQN,=KG5GDF,=KG5GTD,=KG5JQC, + =KG5MIB,=KG5MIO,=KG6ALN,=KG6DTI,=KG6MBC,=KG6RJE,=KG6TAL,=KG7CUR,=KG7DVI,=KG7GJL,=KG7JVJ,=KG7OQC, + =KG7OUF,=KG7SEQ,=KG7TGE,=KG7ZEV,=KH0NF,=KH0NG,=KH0RF,=KH2YN,=KH7BW,=KI4COG,=KI4ERC,=KI4FJK, + =KI4GAG,=KI4GCF,=KI4GDI,=KI4NGY,=KI4NVI,=KI4SET,=KI4SOM,=KI6BGR,=KI6DES,=KI6HGW,=KI6YXZ,=KI7COR, + =KI7PZ,=KI8JT,=KJ4HEW,=KJ4IAQ,=KJ4PSV,=KJ4WIQ,=KJ4YOY,=KJ4ZWI,=KJ6DCH,=KJ6KRG,=KJ6RFQ,=KJ6ZSX, + =KJ7IR,=KJ7MY,=KK4AMV,=KK4CLS,=KK4LRE,=KK4QXE,=KK4RYG,=KK4WWH,=KK4WWI,=KK6IUY,=KK6LL,=KK6PGV, + =KK6PLA,=KK6SNS,=KK7I,=KK7IV,=KK7STL,=KL7D/M,=KL7NC/IMD,=KM4AGL,=KM4KWS,=KM4KX,=KM4NIC,=KM4OE, + =KM4PJH,=KM4TJI,=KM6NOL,=KM6YOD,=KN4ENR,=KN4HGD,=KN4LJD,=KN4RXC,=KN8IVE,=KO4DHN,=KR4WV,=KV3X, + =KW1W,=KW4XD,=KY7J,=KZ6HJC,=N0GDT,=N0GDU,=N0GLI,=N0HJT,=N0HYI,=N0HZF,=N0JEN,=N0JOB,=N0LHN,=N0SN, + =N0SUB,=N0WXJ,=N0XKY,=N0XS,=N0ZKV,=N1HEN,=N1HUT,=N1KDQ,=N1KTI,=N1NDA,=N1NJS,=N1QFE,=N1TX,=N2CXH, + =N2SHO,=N2TJY,=N2YZW,=N3QEH,=N4AVX,=N4CM,=N4HCJ,=N4HZU,=N4NAV,=N5AAR,=N5CSO,=N5UKX,=N5WPR,=N6BSC, + =N6CVV,=N6CZU,=N6JM,=N6QEK,=N6ZZX,=N7BUO,=N7CGC,=N7DBN,=N7DKL,=N7DUD,=N7FCT,=N7GLP,=N7HER,=N7HQK, + =N7IA,=N7JUX,=N7MGT,=N7MTG,=N7QAN,=N7TBU,=N7UTV,=N7UWT,=N7XEA,=N7XNM,=N7YKY,=N7YQS,=N8DDY,=N8EX, + =N8JKB,=N8KCJ,=N8KYW,=N8SUG,=N9AIG,=N9YD,=NA7WM,=NC4OI,=NE7EK,=NH2GZ,=NH2LS,=NH7UO,=NM0H,=NN4NN, + =NP4FU,=NU9Q,=NW7F,=W0EZM,=W0FJN,=W0OPT,=W0RWS,=W0UZJ,=W0ZEE,=W1JM,=W1LYD,=W1RSC,=W1ZKA,=W2DLS, + =W2KRZ,=W3ICG,=W3JPN,=W3MKG,=W4AUL,=W4BMR,=W4RSB,=W5JKT,=W6DDP,=W6GTE,=W6ROW,=W7APM,=W7DDG,=W7EIK, + =W7JMR,=W7PWA,=W7RAZ,=W7ROS,=W7WEZ,=W7ZWT,=W8MDD,=W8PVZ,=W8TCX,=W9CG,=W9ITU,=W9JMC,=WA0JS,=WA1FVJ, + =WA2BGL,=WA2BIW,=WA6GFS,=WA7B,=WA7MDS,=WA7PXH,=WA7USX,=WA7YXF,=WB0CMZ,=WB1BR,=WB1GZL,=WB1ILS, + =WB6COP,=WB9JZL,=WD6CET,=WE3B,=WH6CYY,=WH6DPL,=WH6DX,=WH6GBB,=WH6GCO,=WH7AK,=WJ8M,=WP4IYI,=WT5T, + =WW4AL,=WX1NCC; Navassa Island: 08: 11: NA: 18.40: 75.00: 5.0: KP1: KP1,NP1,WP1; US Virgin Islands: 08: 11: NA: 17.73: 64.80: 4.0: KP2: @@ -1793,24 +1810,24 @@ US Virgin Islands: 08: 11: NA: 17.73: 64.80: 4.0: KP2: =W2KW/KV4,=W3K/KD2CLB,=W4LIS,=WA4HLB,=WB2KQW,=WB4WFU,=WD8AHQ; Puerto Rico: 08: 11: NA: 18.18: 66.55: 4.0: KP4: KP3,KP4,NP3,NP4,WP3,WP4,=AA2ZN,=AB2DR,=AF4OU,=AF5IZ,=AG4CD,=AI4EZ,=K1NDN,=K4C/LH,=K4LCR,=K4PFH, - =K5YJR,=K6BOT,=K8ZB,=K9JOS,=KA2GNG,=KA2MBR,=KA2UCX,=KA2YGB,=KA3ZGQ,=KA7URH,=KA9UTY,=KB0AQB, - =KB0JRR,=KB0TEP,=KB1CKX,=KB1IJU,=KB1KDP,=KB1RUQ,=KB1TUA,=KB1UEK,=KB1UZV,=KB1ZKF,=KB2ALR,=KB2BVX, - =KB2CIE,=KB2KWB,=KB2MMX,=KB2NMT,=KB2NYN,=KB2OIF,=KB2OMN,=KB2OPM,=KB2QQK,=KB2RYP,=KB2TID,=KB2VHY, - =KB2WKT,=KB2YKJ,=KB3BPK,=KB3BTN,=KB3LUV,=KB3SBO,=KB3TTV,=KB8ZVP,=KB9OWX,=KB9RZD,=KB9YVE,=KB9YVF, - =KC1CRV,=KC1CUF,=KC1DRV,=KC1IHB,=KC1IHO,=KC1JLY,=KC1KZI,=KC2BZZ,=KC2CJL,=KC2CTM,=KC2DUO,=KC2EMM, - =KC2ERU,=KC2GRZ,=KC2JNE,=KC2LET,=KC2TE,=KC2UXP,=KC2VCR,=KC3GEO,=KC5DKT,=KC5FWS,=KC8BFN,=KC8IRI, - =KD2KPC,=KD2VQ,=KD4TVS,=KD5DVV,=KD5PKH,=KD9GIZ,=KD9MRY,=KE0AYJ,=KE0GFK,=KE0SH,=KE1MA,=KE3WW, - =KE4GGD,=KE4GYA,=KE4SKH,=KE4THL,=KE4WUE,=KE5LNG,=KF4KPO,=KF4VYH,=KF4WTX,=KF4ZDB,=KF5YGN,=KF5YGX, - =KF6OGJ,=KG4EEG,=KG4EEL,=KG4GYO,=KG4IRC,=KG4IVO,=KG4VCC,=KG5AFY,=KG9KG,=KH2RU,=KH4AA,=KI4LRJ, - =KI4RGF,=KI4TSW,=KI4WOA,=KI4WOB,=KJ4KZN,=KJ4LOZ,=KJ4UPN,=KJ4UXJ,=KJ6OV,=KK4AOZ,=KK4DCX,=KK4EBE, - =KK4PHB,=KM4VDZ,=KM4WGI,=KM4YBN,=KM4YSR,=KM4ZJW,=KM6CTO,=KN4AWH,=KN4GNO,=KN4IBD,=KN4IDV,=KN4IGP, - =KN4ILO,=KN4INP,=KN4JCC,=KN4KPX,=KN4KPY,=KN4MNT,=KN4NLZ,=KN4ODN,=KN4QBT,=KN4QZZ,=KN4REC,=KN4SKZ, - =KN4TNC,=KN4UAN,=KP2H,=KP2Z,=KP3CW/SKP,=KP3RE/LGT,=KP3RE/LH,=KP3RE/LT,=KP4ES/L,=KP4ES/LGT, - =KP4ES/LH,=KP4FD/IARU,=KP4FRA/IARU,=KP4FRD/LH,=KP4MD/P,=KP4VP/LH,=KR4SQ,=KU4JI,=N0XAR,=N1CN, - =N1HRV,=N1JFL,=N1QVU,=N1SCD,=N1SZM,=N1VCW,=N1YAY,=N1ZJC,=N2FVA,=N2IBR,=N2KKN,=N2KUE,=N2OUS,=N2PGO, - =N3JAM,=N3VIJ,=N3VVW,=N3YUB,=N3ZII,=N4CIE,=N4JZD,=N4LER,=N4MMT,=N4UK,=N6NVD,=N6RHF,=NB0G,=NP3M/LH, - =NP4VO/LH,=W1AW/PR,=W6WAW,=W9JS,=W9NKE,=WA2RVA,=WB2AC,=WB2HMY,=WB5YOF,=WB7ADC,=WB7VVV,=WD4LOL, - =WP4L/TP,=WQ2N; + =K5YJR,=K6BOT,=K8ZB,=K9JOS,=KA2ABJ,=KA2GNG,=KA2MBR,=KA2UCX,=KA2YGB,=KA3PNP,=KA3ZGQ,=KA7URH, + =KA9UTY,=KB0AQB,=KB0JRR,=KB0TEP,=KB1CKX,=KB1IJU,=KB1KDP,=KB1RUQ,=KB1TUA,=KB1UEK,=KB1UZV,=KB1ZKF, + =KB2ALR,=KB2BVX,=KB2CIE,=KB2KWB,=KB2MMX,=KB2NMT,=KB2NYN,=KB2OIF,=KB2OMN,=KB2OPM,=KB2QQK,=KB2RYP, + =KB2TID,=KB2VHY,=KB2WKT,=KB2YKJ,=KB3BPK,=KB3BTN,=KB3LUV,=KB3SBO,=KB3TTV,=KB8ZVP,=KB9OWX,=KB9RZD, + =KB9YVE,=KB9YVF,=KC1CRV,=KC1CUF,=KC1DRV,=KC1IHB,=KC1IHO,=KC1JLY,=KC1KZI,=KC2BZZ,=KC2CJL,=KC2CTM, + =KC2DUO,=KC2EMM,=KC2ERS,=KC2ERU,=KC2GRZ,=KC2HAS,=KC2JNE,=KC2LET,=KC2TE,=KC2UXP,=KC2VCR,=KC3GEO, + =KC4ADN,=KC5DKT,=KC5FWS,=KC8BFN,=KC8IRI,=KD2KPC,=KD2VQ,=KD4TVS,=KD5DVV,=KD5PKH,=KD9GIZ,=KD9MRY, + =KE0AYJ,=KE0GFK,=KE0SH,=KE1MA,=KE3WW,=KE4GGD,=KE4GYA,=KE4SKH,=KE4THL,=KE4WUE,=KE5LNG,=KF4KPO, + =KF4TZG,=KF4VYH,=KF4WTX,=KF4ZDB,=KF5YGN,=KF5YGX,=KF6OGJ,=KG4EEG,=KG4EEL,=KG4GYO,=KG4IRC,=KG4IVO, + =KG4VCC,=KG5AFY,=KG9KG,=KH2RU,=KH4AA,=KI4LRJ,=KI4RGF,=KI4TSW,=KI4WOA,=KI4WOB,=KJ4KZN,=KJ4LOZ, + =KJ4UPN,=KJ4UXJ,=KJ4VSD,=KJ6OV,=KK4AOZ,=KK4DCX,=KK4EBE,=KK4PHB,=KM4VDZ,=KM4WGI,=KM4YBN,=KM4YSR, + =KM4ZJW,=KM6CTO,=KN4AWH,=KN4GNO,=KN4IBD,=KN4IDV,=KN4IGP,=KN4ILO,=KN4INP,=KN4JCC,=KN4KPX,=KN4KPY, + =KN4MNT,=KN4NLZ,=KN4ODN,=KN4QBT,=KN4QZZ,=KN4REC,=KN4SKZ,=KN4TNC,=KN4UAN,=KP2H,=KP2Z,=KP3CW/SKP, + =KP3RE/LGT,=KP3RE/LH,=KP3RE/LT,=KP4ES/L,=KP4ES/LGT,=KP4ES/LH,=KP4FD/IARU,=KP4FRA/IARU,=KP4FRD/LH, + =KP4MD/P,=KP4VP/LH,=KR4SQ,=KU4JI,=N0XAR,=N1CN,=N1HRV,=N1JFL,=N1QVU,=N1SCD,=N1SZM,=N1VCW,=N1YAY, + =N1ZJC,=N2FVA,=N2IBR,=N2KKN,=N2KUE,=N2OUS,=N2PGO,=N3JAM,=N3VIJ,=N3VVW,=N3YUB,=N3ZII,=N4CIE,=N4JZD, + =N4LER,=N4MMT,=N4NDL,=N4UK,=N6NVD,=N6RHF,=NB0G,=NP3M/LH,=NP4VO/LH,=W1AW/PR,=W6WAW,=W9JS,=W9NKE, + =WA2RVA,=WB2AC,=WB2HMY,=WB5YOF,=WB7ADC,=WB7VVV,=WD4LOL,=WP4L/TP,=WQ2N; Desecheo Island: 08: 11: NA: 18.08: 67.88: 4.0: KP5: KP5,NP5,WP5; Norway: 14: 18: EU: 61.00: -9.00: -1.0: LA: @@ -1831,78 +1848,78 @@ Argentina: 13: 14: SA: -34.80: 65.92: 3.0: LU: =LT5D/LH,=LU1AAE/D,=LU1AAS/D,=LU1ACX/D,=LU1AEE/D,=LU1AET/D,=LU1AGP/D,=LU1AIM/D,=LU1ALF/D,=LU1AM/D, =LU1APR/D,=LU1ARG/D,=LU1ASP/D,=LU1AW/E,=LU1BCE/D,=LU1BMD/D,=LU1CHD/D,=LU1CL/D,=LU1COA/D,=LU1DAR/D, =LU1DAS/D,=LU1DBI/D,=LU1DCB/D,=LU1DDK/D,=LU1DDO/D,=LU1DHO/D,=LU1DI/D,=LU1DK/D,=LU1DKD/D,=LU1DLB/D, - =LU1DMA/E,=LU1DMK/D,=LU1DNQ/D,=LU1DP/D,=LU1DQ/D,=LU1DS/D,=LU1DSO/D,=LU1DU/D,=LU1DVE/D,=LU1DYP/D, - =LU1DZ/D,=LU1DZ/E,=LU1DZR/D,=LU1EEE/D,=LU1EEZ/D,=LU1EFF/D,=LU1EJ/LH,=LU1EJ/YL,=LU1ELP/D,=LU1ELY/D, - =LU1EPC/D,=LU1EPF/D,=LU1EQ/D,=LU1EQU/D,=LU1ERA/D,=LU1EST/D,=LU1EUU/D,=LU1EW/D,=LU1EXU/D,=LU1EY/D, - =LU1HBD/D,=LU1HLH/D,=LU1KCQ/D,=LU1UAG/D,=LU1VDF/D,=LU1VOF/D,=LU1VYL/D,=LU1XWC/E,=LU1XZ/D,=LU1YY/D, - =LU2AAS/D,=LU2ABT/D,=LU2AEZ/D,=LU2AFE/D,=LU2AGQ/D,=LU2AHB/D,=LU2ALE/D,=LU2AMM/D,=LU2AOZ/D, - =LU2AVG/D,=LU2AVW/D,=LU2BJA/D,=LU2BN/D,=LU2BOE/D,=LU2BPM/D,=LU2CDE/D,=LU2CDO/D,=LU2CHP/D,=LU2CM/D, - =LU2CRV/D,=LU2DAR/D,=LU2DB/D,=LU2DG/D,=LU2DHM/D,=LU2DJB/D,=LU2DJC/D,=LU2DJL/D,=LU2DKN/D,=LU2DPW/D, - =LU2DRT/D,=LU2DT/D,=LU2DT/D/LH,=LU2DT/LGT,=LU2DT/LH,=LU2DVF/D,=LU2ED/D,=LU2EDC/D,=LU2EE/D, - =LU2EE/E,=LU2EFI/D,=LU2EGA/D,=LU2EGI/D,=LU2EGP/D,=LU2EHA/D,=LU2EIT/D,=LU2EJL/D,=LU2EK/D,=LU2ELT/D, - =LU2EMQ/D,=LU2ENG/D,=LU2ENH/D,=LU2EPL/D,=LU2EPP/D,=LU2ERC/D,=LU2FBX/D,=LU2FGD/D,=LU2FNH/D, - =LU2HOD/D,=LU2JFC/D,=LU2VDV/D,=LU2YF/D,=LU3AAL/D,=LU3ADC/D,=LU3AJL/D,=LU3AOI/D,=LU3ARE/D, - =LU3ARM/D,=LU3AYE/D,=LU3CA/D,=LU3CM/D,=LU3CRA/D,=LU3CT/D,=LU3DAR/D,=LU3DAT/D,=LU3DAT/E,=LU3DC/D, - =LU3DEY/D,=LU3DFD/D,=LU3DH/D,=LU3DHF/D,=LU3DJA/D,=LU3DJI/D,=LU3DJT/D,=LU3DK/D,=LU3DLF/D,=LU3DMZ/D, - =LU3DO/D,=LU3DOC/D,=LU3DP/D,=LU3DPH/D,=LU3DQJ/D,=LU3DR/D,=LU3DRP/D,=LU3DRP/E,=LU3DXG/D,=LU3DXI/D, - =LU3DY/D,=LU3DYN/D,=LU3DZO/D,=LU3EBS/D,=LU3ED/D,=LU3EDU/D,=LU3EFL/D,=LU3EJ/L,=LU3EJD/D,=LU3ELR/D, - =LU3EMB/D,=LU3EOU/D,=LU3EP/D,=LU3ERU/D,=LU3ES/D,=LU3ESY/D,=LU3EZA/D,=LU3FCI/D,=LU3HKA/D,=LU4AA/D, - =LU4AAO/D,=LU4AAO/E,=LU4ACA/D,=LU4ADE/D,=LU4AJC/D,=LU4ARU/D,=LU4BAN/D,=LU4BFP/D,=LU4BMG/D, - =LU4BR/D,=LU4CMF/D,=LU4DBL/D,=LU4DBP/D,=LU4DBT/D,=LU4DBV/D,=LU4DCE/D,=LU4DCY/D,=LU4DGC/D, - =LU4DHA/D,=LU4DHC/D,=LU4DHE/D,=LU4DIS/D,=LU4DJB/D,=LU4DK/D,=LU4DLJ/D,=LU4DLL/D,=LU4DLN/D, - =LU4DMI/D,=LU4DPB/D,=LU4DQ/D,=LU4DRC/D,=LU4DRH/D,=LU4DRH/E,=LU4DVD/D,=LU4EAE/D,=LU4EET/D, - =LU4EGP/D,=LU4EHP/D,=LU4EJ/D,=LU4EL/D,=LU4ELE/D,=LU4EOU/D,=LU4ERS/D,=LU4ESP/D,=LU4ETD/D,=LU4ETN/D, - =LU4EV/D,=LU4HSA/D,=LU4HTD/D,=LU4MA/D,=LU4UWZ/D,=LU4UZW/D,=LU4VEN/D,=LU4VSD/D,=LU4WAP/D,=LU5AHN/D, - =LU5ALE/D,=LU5ALS/D,=LU5AM/D,=LU5ANL/D,=LU5AQV/D,=LU5ARS/D,=LU5ASA/D,=LU5AVD/D,=LU5BDS/D,=LU5BE/D, - =LU5BTL/D,=LU5CBA/D,=LU5CRE/D,=LU5DA/D,=LU5DA/E,=LU5DAS/D,=LU5DCO/D,=LU5DDH/D,=LU5DEM/D,=LU5DF/D, - =LU5DFR/D,=LU5DFT/D,=LU5DGG/D,=LU5DGR/D,=LU5DHE/D,=LU5DIT/D,=LU5DJE/D,=LU5DKE/D,=LU5DLH/D, - =LU5DLT/D,=LU5DLZ/D,=LU5DMI/D,=LU5DMP/D,=LU5DMR/D,=LU5DQ/D,=LU5DRV/D,=LU5DSH/D,=LU5DSM/D,=LU5DT/D, - =LU5DTB/D,=LU5DTF/D,=LU5DUC/D,=LU5DVB/D,=LU5DWS/D,=LU5DYT/D,=LU5EAO/D,=LU5EC/D,=LU5ED/D,=LU5EDS/D, - =LU5EFG/D,=LU5EH/D,=LU5EHC/D,=LU5EJL/D,=LU5EM/D,=LU5EP/D,=LU5EW/D,=LU5FZ/D,=LU5FZ/E,=LU5JAH/D, - =LU5JIB/D,=LU5OD/D,=LU5VAS/D,=LU5VAT/D,=LU5XP/D,=LU5YBR/D,=LU5YF/D,=LU6AER/D,=LU6AMT/D,=LU6CN/D, - =LU6DAX/D,=LU6DBL/D,=LU6DC/D,=LU6DCT/D,=LU6DDC/D,=LU6DG/D,=LU6DIE/D,=LU6DIO/D,=LU6DK/D,=LU6DKT/D, - =LU6DL/D,=LU6DM/D,=LU6DO/D,=LU6DRD/D,=LU6DRD/E,=LU6DRN/D,=LU6DRR/D,=LU6DSA/D,=LU6DTB/D,=LU6EAG/D, - =LU6EC/D,=LU6EDC/D,=LU6EE/D,=LU6EEG/D,=LU6EGO/D,=LU6EI/D,=LU6EJJ/D,=LU6EKL/D,=LU6ELP/D,=LU6EMM/D, - =LU6ENA/D,=LU6EPE/D,=LU6EPR/D,=LU6EPR/E,=LU6EQV/D,=LU6EU/D,=LU6EVD/D,=LU6EWR/D,=LU6EXD/D, - =LU6HBB/D,=LU6JJ/D,=LU6UAL/D,=LU6UO/D,=LU6UVI/D,=LU6XQ/D,=LU7AA/D,=LU7AC/D,=LU7ADC/D,=LU7ADN/D, - =LU7ARI/D,=LU7ART/D,=LU7AVW/D,=LU7BSN/D,=LU7BTO/D,=LU7BTO/E,=LU7CAW/D,=LU7CC/E,=LU7CP/D,=LU7DAC/D, - =LU7DAF/D,=LU7DAJ/D,=LU7DAR/D,=LU7DBA/D,=LU7DBL/D,=LU7DCE/D,=LU7DD/D,=LU7DDC/D,=LU7DDO/D, - =LU7DHE/D,=LU7DHG/D,=LU7DJH/D,=LU7DLN/D,=LU7DNM/D,=LU7DOT/D,=LU7DP/D,=LU7DR/D,=LU7DS/D,=LU7DSC/D, - =LU7DSS/D,=LU7DSU/D,=LU7DSY/D,=LU7DTC/D,=LU7DW/D,=LU7DZL/D,=LU7DZL/E,=LU7DZV/D,=LU7ECZ/D, - =LU7EGY/D,=LU7EHL/D,=LU7EIA/D,=LU7EJC/D,=LU7ELY/D,=LU7EMA/D,=LU7EMM/D,=LU7ENP/D,=LU7EO/D, - =LU7EON/D,=LU7EPC/D,=LU7ETR/D,=LU7EXX/D,=LU7HBL/D,=LU7HW/D,=LU7HZ/D,=LU7VCH/D,=LU8ABR/D,=LU8ACH/D, - =LU8ADX/D,=LU8AE/D,=LU8ARI/D,=LU8ATM/D,=LU8DAF/D,=LU8DCF/D,=LU8DCH/D,=LU8DCK/D,=LU8DCM/D, - =LU8DIP/D,=LU8DIW/D,=LU8DJR/D,=LU8DLD/D,=LU8DLT/D,=LU8DMD/D,=LU8DQ/D,=LU8DR/D,=LU8DRA/D,=LU8DRH/D, - =LU8DRQ/D,=LU8DSJ/D,=LU8DTF/D,=LU8DUJ/D,=LU8DVQ/D,=LU8DW/D,=LU8DWR/D,=LU8DX/D,=LU8DY/D,=LU8DZE/D, - =LU8DZH/D,=LU8EAG/D,=LU8EAJ/D,=LU8EBJ/D,=LU8EBJ/E,=LU8EBK/D,=LU8EBK/E,=LU8EC/D,=LU8ECF/D, - =LU8ECF/E,=LU8EEM/D,=LU8EFF/D,=LU8EGC/D,=LU8EGS/D,=LU8EHQ/D,=LU8EHQ/E,=LU8EHS/D,=LU8EHV/D, - =LU8EKC/D,=LU8EMC/D,=LU8ERH/D,=LU8ETC/D,=LU8EU/D,=LU8EXJ/D,=LU8EXN/D,=LU8FAU/D,=LU8VCC/D, - =LU8VER/D,=LU9ACJ/D,=LU9AEA/D,=LU9AJK/D,=LU9AOS/D,=LU9AUC/D,=LU9BGN/D,=LU9BRC/D,=LU9BSA/D, - =LU9CGN/D,=LU9CLH/D,=LU9DA/D,=LU9DAA/D,=LU9DAD/D,=LU9DB/D,=LU9DE/D,=LU9DEQ/D,=LU9DF/D,=LU9DGE/D, - =LU9DHL/D,=LU9DJS/D,=LU9DKO/D,=LU9DMG/D,=LU9DNV/D,=LU9DO/D,=LU9DPD/D,=LU9DPI/D,=LU9DPZ/E, - =LU9DSD/D,=LU9DVO/D,=LU9DX/D,=LU9EAG/D,=LU9ECE/D,=LU9EI/D,=LU9EIM/D,=LU9EJM/D,=LU9EJS/E,=LU9EJZ/D, - =LU9ENH/D,=LU9EOE/D,=LU9ERA/D,=LU9ESD/D,=LU9ESD/E,=LU9ESD/LH,=LU9EV/D,=LU9EV/E,=LU9EV/LH,=LU9EY/D, - =LU9EYE/D,=LU9EZX/D,=LU9HDR/D,=LU9HJV/D,=LU9HVR/D,=LU9USD/D,=LU9WM/D,=LV7E/D,=LW1DAL/D,=LW1DDX/D, - =LW1DE/D,=LW1DEN/D,=LW1DEW/D,=LW1DG/D,=LW1DJ/D,=LW1DOG/D,=LW1DQQ/D,=LW1DVB/D,=LW1DXH/D,=LW1DXP/D, - =LW1DYN/D,=LW1DYP/D,=LW1EA/D,=LW1ECE/D,=LW1ECO/D,=LW1ELI/D,=LW1EQI/D,=LW1EQZ/D,=LW1EVO/D, - =LW1EXU/D,=LW2DAF/D,=LW2DAW/D,=LW2DET/D,=LW2DJM/D,=LW2DKF/D,=LW2DNC/D,=LW2DOD/D,=LW2DOM/D, - =LW2DSM/D,=LW2DX/E,=LW2DYA/D,=LW2ECC/D,=LW2ECK/D,=LW2ECM/D,=LW2EFS/D,=LW2EHD/D,=LW2ENB/D, - =LW2EQS/D,=LW2EUA/D,=LW3DAB/D,=LW3DAW/D,=LW3DBM/D,=LW3DC/D,=LW3DED/D,=LW3DER/D,=LW3DFP/D,=LW3DG/D, - =LW3DGC/D,=LW3DJC/D,=LW3DKC/D,=LW3DKC/E,=LW3DKO/D,=LW3DKO/E,=LW3DN/D,=LW3DRW/D,=LW3DSM/D, - =LW3DSR/D,=LW3DTD/D,=LW3EB/D,=LW3EIH/D,=LW3EK/D,=LW3EMP/D,=LW4DAF/D,=LW4DBE/D,=LW4DBM/D,=LW4DCV/D, - =LW4DKI/D,=LW4DOR/D,=LW4DRH/D,=LW4DRH/E,=LW4DRV/D,=LW4DTM/D,=LW4DTR/D,=LW4DWV/D,=LW4DXH/D, - =LW4ECV/D,=LW4EIN/D,=LW4EM/D,=LW4EM/E,=LW4EM/LH,=LW4ERO/D,=LW4ESY/D,=LW4ETG/D,=LW4EZT/D,=LW4HCL/D, - =LW5DAD/D,=LW5DD/D,=LW5DFR/D,=LW5DHG/D,=LW5DIE/D,=LW5DLY/D,=LW5DNN/D,=LW5DOG/D,=LW5DQ/D,=LW5DR/D, - =LW5DR/LH,=LW5DTD/D,=LW5DTQ/D,=LW5DUS/D,=LW5DWX/D,=LW5EE/D,=LW5EO/D,=LW5EOL/D,=LW6DCA/D,=LW6DLS/D, - =LW6DTM/D,=LW6DW/D,=LW6DYH/D,=LW6DYZ/D,=LW6EAK/D,=LW6EEA/D,=LW6EFR/D,=LW6EGE/D,=LW6EHD/D, - =LW6EXM/D,=LW7DAF/D,=LW7DAG/D,=LW7DAJ/D,=LW7DAR/D,=LW7DFD/D,=LW7DGT/D,=LW7DJ/D,=LW7DKB/D, - =LW7DKX/D,=LW7DLY/D,=LW7DNS/E,=LW7DPJ/D,=LW7DVC/D,=LW7DWX/D,=LW7ECZ/D,=LW7EDH/D,=LW7EJV/D, - =LW7ELR/D,=LW7EOJ/D,=LW7HA/D,=LW8DAL/D,=LW8DCM/D,=LW8DIP/D,=LW8DMC/D,=LW8DMK/D,=LW8DPZ/E, - =LW8DRU/D,=LW8DYT/D,=LW8EAG/D,=LW8ECQ/D,=LW8EFR/D,=LW8EGA/D,=LW8EJ/D,=LW8ELR/D,=LW8EU/D,=LW8EVB/D, - =LW8EXF/D,=LW9DAD/D,=LW9DAE/D,=LW9DIH/D,=LW9DMM/D,=LW9DRD/D,=LW9DRT/D,=LW9DSP/D,=LW9DTP/D, - =LW9DTQ/D,=LW9DTR/D,=LW9DX/D,=LW9EAG/D,=LW9ECR/D,=LW9EDX/D,=LW9EGQ/D,=LW9ENF/D,=LW9ESY/D, - =LW9EUE/D,=LW9EUU/D,=LW9EVA/D,=LW9EVA/E,=LW9EVE/D,=LW9EYP/D,=LW9EZV/D,=LW9EZW/D,=LW9EZX/D, - =LW9EZY/D, + =LU1DLF/D,=LU1DMA/E,=LU1DMK/D,=LU1DNQ/D,=LU1DP/D,=LU1DQ/D,=LU1DS/D,=LU1DSO/D,=LU1DU/D,=LU1DVE/D, + =LU1DYP/D,=LU1DZ/D,=LU1DZ/E,=LU1DZR/D,=LU1EEE/D,=LU1EEZ/D,=LU1EFF/D,=LU1EJ/LH,=LU1EJ/YL,=LU1ELP/D, + =LU1ELY/D,=LU1EPC/D,=LU1EPF/D,=LU1EQ/D,=LU1EQU/D,=LU1ERA/D,=LU1EST/D,=LU1EUU/D,=LU1EW/D,=LU1EXU/D, + =LU1EY/D,=LU1HBD/D,=LU1HLH/D,=LU1KCQ/D,=LU1UAG/D,=LU1VDF/D,=LU1VOF/D,=LU1VYL/D,=LU1XWC/E,=LU1XZ/D, + =LU1YY/D,=LU2AAS/D,=LU2ABT/D,=LU2AEZ/D,=LU2AFE/D,=LU2AGQ/D,=LU2AHB/D,=LU2ALE/D,=LU2AMM/D, + =LU2AOZ/D,=LU2AVG/D,=LU2AVW/D,=LU2BJA/D,=LU2BN/D,=LU2BOE/D,=LU2BPM/D,=LU2CDE/D,=LU2CDO/D, + =LU2CHP/D,=LU2CM/D,=LU2CRV/D,=LU2DAR/D,=LU2DB/D,=LU2DG/D,=LU2DHM/D,=LU2DJB/D,=LU2DJC/D,=LU2DJL/D, + =LU2DKN/D,=LU2DPW/D,=LU2DRT/D,=LU2DT/D,=LU2DT/D/LH,=LU2DT/LGT,=LU2DT/LH,=LU2DVF/D,=LU2ED/D, + =LU2EDC/D,=LU2EE/D,=LU2EE/E,=LU2EFI/D,=LU2EGA/D,=LU2EGI/D,=LU2EGP/D,=LU2EHA/D,=LU2EIT/D,=LU2EJL/D, + =LU2EK/D,=LU2ELT/D,=LU2EMQ/D,=LU2ENG/D,=LU2ENH/D,=LU2EPL/D,=LU2EPP/D,=LU2ERC/D,=LU2FBX/D, + =LU2FGD/D,=LU2FNH/D,=LU2HOD/D,=LU2JFC/D,=LU2VDV/D,=LU2YF/D,=LU3AAL/D,=LU3ADC/D,=LU3AJL/D, + =LU3AOI/D,=LU3ARE/D,=LU3ARM/D,=LU3AYE/D,=LU3CA/D,=LU3CM/D,=LU3CRA/D,=LU3CT/D,=LU3DAR/D,=LU3DAT/D, + =LU3DAT/E,=LU3DC/D,=LU3DEY/D,=LU3DFD/D,=LU3DH/D,=LU3DHF/D,=LU3DJA/D,=LU3DJI/D,=LU3DJT/D,=LU3DK/D, + =LU3DLF/D,=LU3DMZ/D,=LU3DO/D,=LU3DOC/D,=LU3DP/D,=LU3DPH/D,=LU3DQJ/D,=LU3DR/D,=LU3DRP/D,=LU3DRP/E, + =LU3DXG/D,=LU3DXI/D,=LU3DY/D,=LU3DYN/D,=LU3DZO/D,=LU3EBS/D,=LU3ED/D,=LU3EDU/D,=LU3EFL/D,=LU3EJ/L, + =LU3EJD/D,=LU3ELR/D,=LU3EMB/D,=LU3EOU/D,=LU3EP/D,=LU3ERU/D,=LU3ES/D,=LU3ESY/D,=LU3EZA/D,=LU3FCI/D, + =LU3HKA/D,=LU4AA/D,=LU4AAO/D,=LU4AAO/E,=LU4ACA/D,=LU4ADE/D,=LU4AJC/D,=LU4ARU/D,=LU4BAN/D, + =LU4BFP/D,=LU4BMG/D,=LU4BR/D,=LU4CMF/D,=LU4DBL/D,=LU4DBP/D,=LU4DBT/D,=LU4DBV/D,=LU4DCE/D, + =LU4DCY/D,=LU4DGC/D,=LU4DHA/D,=LU4DHC/D,=LU4DHE/D,=LU4DIS/D,=LU4DJB/D,=LU4DK/D,=LU4DLJ/D, + =LU4DLL/D,=LU4DLN/D,=LU4DMI/D,=LU4DPB/D,=LU4DQ/D,=LU4DRC/D,=LU4DRH/D,=LU4DRH/E,=LU4DVD/D, + =LU4EAE/D,=LU4EET/D,=LU4EGP/D,=LU4EHP/D,=LU4EJ/D,=LU4EL/D,=LU4ELE/D,=LU4EOU/D,=LU4ERS/D,=LU4ESP/D, + =LU4ETD/D,=LU4ETN/D,=LU4EV/D,=LU4HSA/D,=LU4HTD/D,=LU4MA/D,=LU4UWZ/D,=LU4UZW/D,=LU4VEN/D,=LU4VSD/D, + =LU4WAP/D,=LU5AHN/D,=LU5ALE/D,=LU5ALS/D,=LU5AM/D,=LU5ANL/D,=LU5AQV/D,=LU5ARS/D,=LU5ASA/D, + =LU5AVD/D,=LU5BDS/D,=LU5BE/D,=LU5BTL/D,=LU5CBA/D,=LU5CRE/D,=LU5DA/D,=LU5DA/E,=LU5DAS/D,=LU5DCO/D, + =LU5DDH/D,=LU5DEM/D,=LU5DF/D,=LU5DFR/D,=LU5DFT/D,=LU5DGG/D,=LU5DGR/D,=LU5DHE/D,=LU5DIT/D, + =LU5DJE/D,=LU5DKE/D,=LU5DLH/D,=LU5DLT/D,=LU5DLZ/D,=LU5DMI/D,=LU5DMP/D,=LU5DMR/D,=LU5DQ/D, + =LU5DRV/D,=LU5DSH/D,=LU5DSM/D,=LU5DT/D,=LU5DTB/D,=LU5DTF/D,=LU5DUC/D,=LU5DVB/D,=LU5DWS/D, + =LU5DYT/D,=LU5EAO/D,=LU5EC/D,=LU5ED/D,=LU5EDS/D,=LU5EFG/D,=LU5EH/D,=LU5EHC/D,=LU5EJL/D,=LU5EM/D, + =LU5EP/D,=LU5EW/D,=LU5FZ/D,=LU5FZ/E,=LU5JAH/D,=LU5JIB/D,=LU5OD/D,=LU5VAS/D,=LU5VAT/D,=LU5XP/D, + =LU5YBR/D,=LU5YF/D,=LU6AER/D,=LU6AMT/D,=LU6CN/D,=LU6DAX/D,=LU6DBL/D,=LU6DC/D,=LU6DCT/D,=LU6DDC/D, + =LU6DG/D,=LU6DIE/D,=LU6DIO/D,=LU6DK/D,=LU6DKT/D,=LU6DL/D,=LU6DM/D,=LU6DO/D,=LU6DRD/D,=LU6DRD/E, + =LU6DRN/D,=LU6DRR/D,=LU6DSA/D,=LU6DTB/D,=LU6EAG/D,=LU6EC/D,=LU6EDC/D,=LU6EE/D,=LU6EEG/D,=LU6EGO/D, + =LU6EI/D,=LU6EJJ/D,=LU6EKL/D,=LU6ELP/D,=LU6EMM/D,=LU6ENA/D,=LU6EPE/D,=LU6EPR/D,=LU6EPR/E, + =LU6EQV/D,=LU6EU/D,=LU6EVD/D,=LU6EWR/D,=LU6EXD/D,=LU6HBB/D,=LU6JJ/D,=LU6UAL/D,=LU6UO/D,=LU6UVI/D, + =LU6XQ/D,=LU7AA/D,=LU7AC/D,=LU7ADC/D,=LU7ADN/D,=LU7ARI/D,=LU7ART/D,=LU7AVW/D,=LU7BSN/D,=LU7BTO/D, + =LU7BTO/E,=LU7CAW/D,=LU7CC/E,=LU7CP/D,=LU7DAC/D,=LU7DAF/D,=LU7DAJ/D,=LU7DAR/D,=LU7DBA/D,=LU7DBL/D, + =LU7DCE/D,=LU7DD/D,=LU7DDC/D,=LU7DDO/D,=LU7DHE/D,=LU7DHG/D,=LU7DJH/D,=LU7DLN/D,=LU7DNM/D, + =LU7DOT/D,=LU7DP/D,=LU7DR/D,=LU7DS/D,=LU7DSC/D,=LU7DSS/D,=LU7DSU/D,=LU7DSY/D,=LU7DTC/D,=LU7DW/D, + =LU7DZL/D,=LU7DZL/E,=LU7DZV/D,=LU7ECZ/D,=LU7EGY/D,=LU7EHL/D,=LU7EIA/D,=LU7EJC/D,=LU7ELY/D, + =LU7EMA/D,=LU7EMM/D,=LU7ENP/D,=LU7EO/D,=LU7EON/D,=LU7EPC/D,=LU7ETR/D,=LU7EXX/D,=LU7HBL/D,=LU7HW/D, + =LU7HZ/D,=LU7VCH/D,=LU8ABR/D,=LU8ACH/D,=LU8ADX/D,=LU8AE/D,=LU8ARI/D,=LU8ATM/D,=LU8DAF/D,=LU8DCF/D, + =LU8DCH/D,=LU8DCK/D,=LU8DCM/D,=LU8DIP/D,=LU8DIW/D,=LU8DJR/D,=LU8DLD/D,=LU8DLT/D,=LU8DMD/D, + =LU8DQ/D,=LU8DR/D,=LU8DRA/D,=LU8DRH/D,=LU8DRQ/D,=LU8DSJ/D,=LU8DTF/D,=LU8DUJ/D,=LU8DVQ/D,=LU8DW/D, + =LU8DWR/D,=LU8DX/D,=LU8DY/D,=LU8DZE/D,=LU8DZH/D,=LU8EAG/D,=LU8EAJ/D,=LU8EBJ/D,=LU8EBJ/E,=LU8EBK/D, + =LU8EBK/E,=LU8EC/D,=LU8ECF/D,=LU8ECF/E,=LU8EEM/D,=LU8EFF/D,=LU8EGC/D,=LU8EGS/D,=LU8EHQ/D, + =LU8EHQ/E,=LU8EHS/D,=LU8EHV/D,=LU8EKC/D,=LU8EMC/D,=LU8ERH/D,=LU8ETC/D,=LU8EU/D,=LU8EXJ/D, + =LU8EXN/D,=LU8FAU/D,=LU8VCC/D,=LU8VER/D,=LU9ACJ/D,=LU9AEA/D,=LU9AJK/D,=LU9AOS/D,=LU9AUC/D, + =LU9BGN/D,=LU9BRC/D,=LU9BSA/D,=LU9CGN/D,=LU9CLH/D,=LU9DA/D,=LU9DAA/D,=LU9DAD/D,=LU9DB/D,=LU9DE/D, + =LU9DEQ/D,=LU9DF/D,=LU9DGE/D,=LU9DHL/D,=LU9DJS/D,=LU9DKO/D,=LU9DMG/D,=LU9DNV/D,=LU9DO/D,=LU9DPD/D, + =LU9DPI/D,=LU9DPZ/E,=LU9DSD/D,=LU9DVO/D,=LU9DX/D,=LU9EAG/D,=LU9ECE/D,=LU9EI/D,=LU9EIM/D,=LU9EJM/D, + =LU9EJS/E,=LU9EJZ/D,=LU9ENH/D,=LU9EOE/D,=LU9ERA/D,=LU9ESD/D,=LU9ESD/E,=LU9ESD/LH,=LU9EV/D, + =LU9EV/E,=LU9EV/LH,=LU9EY/D,=LU9EYE/D,=LU9EZX/D,=LU9HDR/D,=LU9HJV/D,=LU9HVR/D,=LU9USD/D,=LU9WM/D, + =LV7E/D,=LW1DAL/D,=LW1DDX/D,=LW1DE/D,=LW1DEN/D,=LW1DEW/D,=LW1DG/D,=LW1DJ/D,=LW1DOG/D,=LW1DQQ/D, + =LW1DVB/D,=LW1DXH/D,=LW1DXP/D,=LW1DYN/D,=LW1DYP/D,=LW1EA/D,=LW1ECE/D,=LW1ECO/D,=LW1ELI/D, + =LW1EQI/D,=LW1EQZ/D,=LW1EVO/D,=LW1EXU/D,=LW2DAF/D,=LW2DAW/D,=LW2DET/D,=LW2DJM/D,=LW2DKF/D, + =LW2DNC/D,=LW2DOD/D,=LW2DOM/D,=LW2DSM/D,=LW2DX/E,=LW2DYA/D,=LW2ECC/D,=LW2ECK/D,=LW2ECM/D, + =LW2EFS/D,=LW2EHD/D,=LW2ENB/D,=LW2EQS/D,=LW2EUA/D,=LW3DAB/D,=LW3DAW/D,=LW3DBM/D,=LW3DC/D, + =LW3DED/D,=LW3DER/D,=LW3DFP/D,=LW3DG/D,=LW3DGC/D,=LW3DJC/D,=LW3DKC/D,=LW3DKC/E,=LW3DKO/D, + =LW3DKO/E,=LW3DN/D,=LW3DRW/D,=LW3DSM/D,=LW3DSR/D,=LW3DTD/D,=LW3EB/D,=LW3EIH/D,=LW3EK/D,=LW3EMP/D, + =LW4DAF/D,=LW4DBE/D,=LW4DBM/D,=LW4DCV/D,=LW4DKI/D,=LW4DOR/D,=LW4DRH/D,=LW4DRH/E,=LW4DRV/D, + =LW4DTM/D,=LW4DTR/D,=LW4DWV/D,=LW4DXH/D,=LW4ECV/D,=LW4EIN/D,=LW4EM/D,=LW4EM/E,=LW4EM/LH,=LW4ERO/D, + =LW4ESY/D,=LW4ETG/D,=LW4EZT/D,=LW4HCL/D,=LW5DAD/D,=LW5DD/D,=LW5DFR/D,=LW5DHG/D,=LW5DIE/D, + =LW5DLY/D,=LW5DNN/D,=LW5DOG/D,=LW5DQ/D,=LW5DR/D,=LW5DR/LH,=LW5DTD/D,=LW5DTQ/D,=LW5DUS/D,=LW5DWX/D, + =LW5EE/D,=LW5EO/D,=LW5EOL/D,=LW6DCA/D,=LW6DLS/D,=LW6DTM/D,=LW6DW/D,=LW6DYH/D,=LW6DYZ/D,=LW6EAK/D, + =LW6EEA/D,=LW6EFR/D,=LW6EGE/D,=LW6EHD/D,=LW6EXM/D,=LW7DAF/D,=LW7DAG/D,=LW7DAJ/D,=LW7DAR/D, + =LW7DFD/D,=LW7DGT/D,=LW7DJ/D,=LW7DKB/D,=LW7DKX/D,=LW7DLY/D,=LW7DNS/E,=LW7DPJ/D,=LW7DVC/D, + =LW7DWX/D,=LW7ECZ/D,=LW7EDH/D,=LW7EJV/D,=LW7ELR/D,=LW7EOJ/D,=LW7HA/D,=LW8DAL/D,=LW8DCM/D, + =LW8DIP/D,=LW8DMC/D,=LW8DMK/D,=LW8DPZ/E,=LW8DRU/D,=LW8DYT/D,=LW8EAG/D,=LW8ECQ/D,=LW8EFR/D, + =LW8EGA/D,=LW8EJ/D,=LW8ELR/D,=LW8EU/D,=LW8EVB/D,=LW8EXF/D,=LW9DAD/D,=LW9DAE/D,=LW9DIH/D,=LW9DMM/D, + =LW9DRD/D,=LW9DRT/D,=LW9DSP/D,=LW9DTP/D,=LW9DTQ/D,=LW9DTR/D,=LW9DX/D,=LW9EAG/D,=LW9ECR/D, + =LW9EDX/D,=LW9EGQ/D,=LW9ENF/D,=LW9ESY/D,=LW9EUE/D,=LW9EUU/D,=LW9EVA/D,=LW9EVA/E,=LW9EVE/D, + =LW9EYP/D,=LW9EZV/D,=LW9EZW/D,=LW9EZX/D,=LW9EZY/D, =LS4AA/F,=LT2F/F,=LU1FFF/F,=LU1FHE/F,=LU1FMC/F,=LU1FMS/F,=LU1FSE/F,=LU1FVG/F,=LU2FDA/F,=LU2FGD/F, =LU2FLB/F,=LU2FNA/F,=LU2FP/F,=LU3FCA/F,=LU3FCI/F,=LU3FLG/F,=LU3FMD/F,=LU3FV/F,=LU3FVH/F,=LU4AA/F, =LU4ETN/F,=LU4FKS/F,=LU4FM/F,=LU4FNO/F,=LU4FNP/F,=LU4FOO/F,=LU4HOD/F,=LU5ASA/F,=LU5FB/F,=LU5FBM/F, @@ -1934,8 +1951,8 @@ Argentina: 13: 14: SA: -34.80: 65.92: 3.0: LU: =LU5JKI/J,=LU5JLA/J,=LU5JLX/J,=LU5JNC/J,=LU5JOL/J,=LU5JU/J,=LU5JZZ/J,=LU6JAF/J,=LU6JRA/J, =LU7DAC/J,=LU7JI/J,=LU7JLB/J,=LU7JMS/J,=LU7JR/J,=LU7JRM/J,=LU8JOP/J,=LU9CYV/J,=LU9JLV/J,=LU9JMG/J, =LU9JPR/J,=LU9YB/J,=LW2DRJ/J,=LW3EMP/J, - =LU1KAF/K,=LU1KWC/K,=LU2KLC/K,=LU4KC/K,=LU5KAH/K,=LU5OM/K,=LU6KAQ/K,=LU7KHB/K,=LU7KT/K,=LU8KE/K, - =LU9KMB/K,=LW1EVO/K,=LW3DFP/K, + =LU1KAF/K,=LU1KWC/K,=LU2KLC/K,=LU4AA/K,=LU4KC/K,=LU5KAH/K,=LU5OM/K,=LU6KAQ/K,=LU7KHB/K,=LU7KT/K, + =LU8KE/K,=LU9KMB/K,=LW1EVO/K,=LW3DFP/K, =LU1AAS/L,=LU1DZ/L,=LU1LAA/L,=LU1LT/L,=LU1LTL/L,=LU2LDB/L,=LU3AYE/L,=LU4AGC/L,=LU4EFC/L,=LU4LAD/L, =LU4LBU/L,=LU4LMA/L,=LU5FZ/L,=LU5ILA/L,=LU5LAE/L,=LU5LBV/L,=LU6JRA/L,=LU8IEZ/L,=LU8LFV/L, =LU9GOO/L,=LU9GOY/L,=LU9JX/L,=LU9LEW/L,=LU9LOP/L,=LU9LZY/L,=LU9LZZ/L,=LU9XPA/L,=LW3EMP/L, @@ -2048,7 +2065,7 @@ Argentina: 13: 14: SA: -34.80: 65.92: 3.0: LU: =LU5XWA/XP[16],=LU6EE/XA[16],=LU6XAH/X[16],=LU7DSY/XA[16],=LU7EUI/XP[16],=LU7XDY/X[16], =LU7XDY/XA[16],=LU7XSC/XP[16],=LU8DLD/XA[16],=LU8DRA/XA[16],=LU8EOT/X[16],=LU8XC/X[16], =LU8XUU/XP[16],=LU8XW/X[16],=LU8XW/XP[16],=LU9DPD/XA[16],=LU9HUP/X[16],=LW3DKO/XA[16], - =LW3ET/XP[16], + =LW3DVN/X[16],=LW3ET/XP[16], AY0Y[16],AY1Y[16],AY2Y[16],AY3Y[16],AY4Y[16],AY5Y[16],AY6Y[16],AY7Y[16],AY8Y[16],AY9Y[16], AZ0Y[16],AZ1Y[16],AZ2Y[16],AZ3Y[16],AZ4Y[16],AZ5Y[16],AZ6Y[16],AZ7Y[16],AZ8Y[16],AZ9Y[16], L20Y[16],L21Y[16],L22Y[16],L23Y[16],L24Y[16],L25Y[16],L26Y[16],L27Y[16],L28Y[16],L29Y[16], @@ -2081,7 +2098,7 @@ Luxembourg: 14: 27: EU: 50.00: -6.00: -1.0: LX: Lithuania: 15: 29: EU: 55.45: -23.63: -2.0: LY: LY,=LY/4X4FC/LH,=LY/4Z5KJ/LH,=LY1CM/A/LH,=LY1CM/LH,=LY1CM/P/LGT,=LY1CM/P/LH,=LY1DF/LH,=LY1DR/LGT, =LY1DS/LH,=LY1FW/LH,=LY2BIG/LH,=LY2DX/LGT,=LY2DX/LH,=LY2FN/LGT,=LY2FN/LH,=LY2UF/LGT,=LY2UF/LH, - =LY3BW/LH,=LY3MU/LH,=LY3TT/LH,=LY4Y/LH,=LY5O/P/LH,=LY5W/P/LH; + =LY3BW/LH,=LY3MU/LH,=LY3TT/LH,=LY4Y/LH,=LY5O/P/LH,=LY5W/P/LH,=YL/LY1CM/LH; Bulgaria: 20: 28: EU: 42.83: -25.08: -2.0: LZ: LZ,=LZ/G0SGB/LH,=LZ2NU/LH,=LZ4HWF/LH; Peru: 10: 12: SA: -10.00: 76.00: 5.0: OA: @@ -2109,11 +2126,11 @@ Finland: 15: 18: EU: 63.78: -27.08: -2.0: OH: =OH2BXT/S,=OH2C/S,=OH2EO/S,=OH2ET/LH,=OH2ET/LS,=OH2ET/S,=OH2FBX/S,=OH2FBX/SA,=OH2HK/S,=OH2HZ/S, =OH2MEE/S,=OH2MEE/SA,=OH2MH/S,=OH2MO/S,=OH2MO/SA,=OH2NAS/S,=OH2NAS/SA,=OH2NM/LH,=OH2PO/S, =OH2PO/SA,=OH2S/S,=OH2S/SA,=OH2XL/S,=OH2XMP/S,=OH2ZL/SA,=OH2ZY/S,=OI2ABG/S, - =OF3HHO/S,=OF3KRB/S,=OG3X/LH,=OH3A/LH,=OH3ABN/S,=OH3ACA/S,=OH3AG/LH,=OH3CT/S,=OH3CT/SA,=OH3FJQ/S, - =OH3FJQ/SA,=OH3GDO/LH,=OH3GQM/S,=OH3HB/S,=OH3HB/SA,=OH3HHO/S,=OH3HHO/SA,=OH3IH/S,=OH3IH/SA, - =OH3IS/S,=OH3KRB/S,=OH3KRB/SA,=OH3LB/S,=OH3LB/SA,=OH3LS/S,=OH3MY/S,=OH3MY/SA,=OH3N/S,=OH3NOB/S, - =OH3NVK/S,=OH3R/SA,=OH3SUF/JOTA,=OH3TAM/LH,=OH3VV/S,=OH3W/S,=OH3WR/SA,=OI3SVM/S,=OI3SVM/SA, - =OI3V/LH,=OI3V/S,=OI3V/SA,=OI3W/LGT,=OI3W/LH, + =OF3HHO/S,=OF3KRB/S,=OG3X/LH,=OH0MZA/3,=OH3A/LH,=OH3ABN/S,=OH3ACA/S,=OH3AG/LH,=OH3CT/S,=OH3CT/SA, + =OH3FJQ/S,=OH3FJQ/SA,=OH3GDO/LH,=OH3GQM/S,=OH3HB/S,=OH3HB/SA,=OH3HHO/S,=OH3HHO/SA,=OH3IH/S, + =OH3IH/SA,=OH3IS/S,=OH3KRB/S,=OH3KRB/SA,=OH3LB/S,=OH3LB/SA,=OH3LS/S,=OH3MY/S,=OH3MY/SA,=OH3N/S, + =OH3NOB/S,=OH3NVK/S,=OH3R/SA,=OH3SUF/JOTA,=OH3TAM/LH,=OH3VV/S,=OH3W/S,=OH3WR/SA,=OI3SVM/S, + =OI3SVM/SA,=OI3V/LH,=OI3V/S,=OI3V/SA,=OI3W/LGT,=OI3W/LH, =OG0V/4,=OH0I/4,=OH0V/4,=OH4FSL/SA,=OH4N/S,=OH4SG/S,=OI4JM/S,=OI4JM/SA,=OI4PM/S, =OF200AD/LS,=OF200AD/S,=OF5AD/S,=OG5A/LS,=OG5A/S,=OH0AW/5,=OH5A/S,=OH5AA/LS,=OH5AD/LS,=OH5AD/S, =OH5B/LH,=OH5EAB/S,=OH5EAB/SA,=OH5GOE/S,=OH5J/S,=OH5J/SA,=OH5JJL/S,=OH5K/S,=OH5LP/S,=OH5LP/SA, @@ -2134,7 +2151,7 @@ Czech Republic: 15: 28: EU: 50.00: -16.00: -1.0: OK: OK,OL,=OK6RA/APF,=OK9BAR/YL,=OL0R/J, =OK1KCR/J,=OK1KI/YL; Slovak Republic: 15: 28: EU: 49.00: -20.00: -1.0: OM: - OM,=VERSION; + OM; Belgium: 14: 27: EU: 50.70: -4.85: -1.0: ON: ON,OO,OP,OQ,OR,OS,OT,=ON3BLB/YL,=ON3TC/YL,=ON4BRC/J,=ON4BRN/LGT,=ON4BRN/LH,=ON4BRN/LS,=ON4BRN/SUB, =ON4CCC/LGT,=ON4CCC/LH,=ON4CEL/LGT,=ON4CEL/LH,=ON4CIS/LGT,=ON4CIS/LH,=ON4CJK/LH,=ON4CKZ/LH, @@ -2314,9 +2331,9 @@ Palau: 27: 64: OC: 7.45: -134.53: -9.0: T8: Asiatic Turkey: 20: 39: AS: 39.18: -35.65: -2.0: TA: TA,TB,TC,YM,=TC50TRAC/01K,=TC50TRAC/17B,=TC50TRAC/18E,=TC50TRAC/28GR,=TC50TRAC/41KF, =TA1AD/0,=TA1E/0,=TA1ED/0,=TA1FL/0,=TA1ZK/0,=TC0SV/LH, - =TA1AJJ/2,=TA1BX/2,=TA1BZ/2,=TA1C/2,=TA1CM/2,=TA1FA/2,=TA1FM/2,=TA1HZ/2,=TA2IJ/YOM,=TC2ELH/LH, - =TC50TRAC/34K,=TC50TRAC/41G,=TC50TRAC/41K,=TC50TRAC/67E,=TC50TRAC/67Z,=YM1SIZ/2, - =TA1BM/3,=TA1BX/3,=TA1BX/3/M,=TA1D/3,=TA3J/LH,=TC50TRAC/10B,=TC50TRAC/16M,=TC50TRAC/35I, + =TA1AJJ/2,=TA1BX/2,=TA1BZ/2,=TA1C/2,=TA1CM/2,=TA1CX/2,=TA1FA/2,=TA1FM/2,=TA1HZ/2,=TA2IJ/YOM, + =TC2ELH/LH,=TC50TRAC/34K,=TC50TRAC/41G,=TC50TRAC/41K,=TC50TRAC/67E,=TC50TRAC/67Z,=YM1SIZ/2, + =TA1BM/3,=TA1BX/3,=TA1BX/3/M,=TA1D/3,=TA1UT/3,=TA3J/LH,=TC50TRAC/10B,=TC50TRAC/16M,=TC50TRAC/35I, =TC50TRAC/35K, =TA1AO/4,=TA1D/4,=TA1HZ/4,=TA3J/4/LGT,=TA4/DJ5AA/LH,=TC50TRAC/03D,=TC50TRAC/15B, =TC50TRAC/01A,=TC50TRAC/80K,=TC50TRAC/80O, @@ -2355,36 +2372,37 @@ Benin: 35: 46: AF: 9.87: -2.25: -1.0: TY: Mali: 35: 46: AF: 18.00: 2.58: 0.0: TZ: TZ; European Russia: 16: 29: EU: 53.65: -41.37: -4.0: UA: - R,U,=R0AGD/6,=R0CAF/1,=R0XAD/6/P,=R25EMW(17)[19],=R80PSP,=R80UPOL,=R8CT/4/P,=R8FF/3/M,=R90DOSAAF, - =R9AV/6,=R9FCH/6,=R9JBF/1,=R9JI/1,=R9KC/6/M,=R9WR/1,=R9XAU/6,=RA0AM/6,=RA0BM/6,=RA0ZZ/3, - =RA3CQ/9/M(17)[20],=RA80SP,=RA9JR/3,=RA9JX/3,=RA9P/4,=RA9RT/3,=RA9UUY/6,=RA9YA/6,=RC80SP,=RC8C/6, - =RG0F/5,=RG50P(17),=RG50P/9(17)[30],=RJ80SP,=RK80X(17)[19],=RK8O/4,=RL9AA/6,=RM80SP,=RM8A/4/M, - =RM94AE,=RN9M/4,=RN9OI/3,=RO80RO,=RP61XX(17)[19],=RP62X(17)[19],=RP63X(17)[19],=RP63XO(17)[19], - =RP64X(17)[19],=RP65FPP(17)[30],=RP8X(17)[30],=RQ80SP,=RT9T/1,=RT9T/3,=RU0ZW/6,=RU2FB/3, - =RU2FB/3/P,=RU4SS/9(17)[30],=RU4WA/9(17)[30],=RU9MU/3,=RV9LM/3,=RV9XX/3,=RW0IM/1,=RW0QE/6,=RW2F/6, - =RW9FF/3,=RW9W/3,=RW9W/4,=RX2FS/3,=RX9KT/6,=RX9TC/1,=RX9UL/1,=RZ9AWN/6,=UA0AK/3,=UA0FQ/6, - =UA0KBG/3,=UA0KBG/6,=UA0KCX/3/P,=UA0KT/4,=UA0QNE/3,=UA0QNU/3,=UA0QQJ/3,=UA0UV/6,=UA0XAK/3, - =UA0XAK/6,=UA9CCO/6,=UA9CDC/3,=UA9CTT/3,=UA9FFS/1/MM,=UE23DKA,=UE6MAC/9(17),=UE95AE,=UE95E, - =UE95ME,=UE96ME,=UE99PS, + R,U,=R0AGD/6,=R0CAF/1,=R0XAD/6/P,=R25EMW(17)[19],=R7AB/M,=R7AB/P,=R80PSP,=R80UPOL,=R8CT/4/P, + =R8FF/3/M,=R8FF/7,=R90DOSAAF,=R9AV/6,=R9FCH/6,=R9JBF/1,=R9JI/1,=R9KC/6/M,=R9WR/1,=R9XAU/6, + =RA0AM/6,=RA0BM/6,=RA0ZZ/3,=RA3CQ/9/M(17)[20],=RA80SP,=RA9JR/3,=RA9JX/3,=RA9P/4,=RA9RT/3, + =RA9UUY/6,=RA9YA/6,=RC80SP,=RC8C/6,=RG0F/5,=RG50P(17),=RG50P/9(17)[30],=RJ80SP,=RK80X(17)[19], + =RK8O/4,=RL9AA/6,=RM80SP,=RM8A/4/M,=RM94AE,=RN9M/4,=RN9OI/3,=RO80RO,=RP61XX(17)[19], + =RP62X(17)[19],=RP63X(17)[19],=RP63XO(17)[19],=RP64X(17)[19],=RP65FPP(17)[30],=RP8X(17)[30], + =RQ80SP,=RT9T/3,=RU0ZW/6,=RU2FB/3,=RU2FB/3/P,=RU4SS/9(17)[30],=RU4WA/9(17)[30],=RU9MU/3,=RV1CC/M, + =RV9LM/3,=RV9XX/3,=RW0IM/1,=RW0QE/6,=RW2F/6,=RW9FF/3,=RW9W/3,=RW9W/4,=RX2FS/3,=RX9TC/1,=RX9UL/1, + =RZ9AWN/6,=UA0AK/3,=UA0FQ/6,=UA0KBG/3,=UA0KBG/6,=UA0KCX/3/P,=UA0KT/4,=UA0QNE/3,=UA0QNU/3, + =UA0QQJ/3,=UA0UV/6,=UA0XAK/3,=UA0XAK/6,=UA9CCO/6,=UA9CDC/3,=UA9CTT/3,=UA9FFS/1/MM,=UE23DKA, + =UE6MAC/9(17),=UE95AE,=UE95E,=UE95ME,=UE96ME,=UE99PS, =R900BL,=R9J/1,=RA2FN/1,=RA9KU/1,=RA9KU/1/M,=RA9MC/1,=RA9SGI/1,=RK9XWV/1,=RL1O,=RM0L/1,=RM80DZ, - =RN85AM,=RN85KN,=RU2FB/1,=RU9YT/1,=RU9YT/1/P,=RW1AI/ANT,=RW1AI/LH,=RW8W/1,=RW9QA/1,=RX3AMI/1/LH, - =UA1ADQ/ANT,=UA1BJ/ANT,=UA1JJ/ANT,=UA2FFX/1,=UA9B/1,=UA9KG/1,=UA9KGH/1,=UA9KK/1,=UA9UDX/1, - =UB9YUW/1,=UE21A,=UE21B,=UE21M,=UE22A,=UE25AC,=UE25AQ,=UE2AT/1, - =R0XAC/1,=R8XF/1,=R900DM,=R90LPU,=R9JNO/1,=RA0FU/1,=RA9FNV/1,=RN9N/1,=RU9MU/1,=RV0CA/1,=RV1CC/1, - =RV2FW/1,=RV9JD/1,=RX9TN/1,=UA0BDS/1,=UA0SIK/1,=UA1CDA/LH,=UA1CIO/LH,=UA9MA/1,=UA9MQR/1,=UB5O/1, + =RN85AM,=RN85KN,=RT9T/1,=RU2FB/1,=RU9YT/1,=RU9YT/1/P,=RW1AI/ANT,=RW1AI/LH,=RW8W/1,=RW9QA/1, + =RX3AMI/1/LH,=UA1ADQ/ANT,=UA1BJ/ANT,=UA1JJ/ANT,=UA2FFX/1,=UA9B/1,=UA9KG/1,=UA9KGH/1,=UA9KK/1, + =UA9UDX/1,=UB9YUW/1,=UE21A,=UE21B,=UE21M,=UE22A,=UE25AC,=UE25AQ,=UE2AT/1, + =R0XAC/1,=R8XF/1,=R900DM,=R90LPU,=R9JNO/1,=RA0FU/1,=RA9FNV/1,=RN9N/1,=RU9MU/1,=RV0CA/1,=RV2FW/1, + =RV9JD/1,=RX9TN/1,=UA0BDS/1,=UA0SIK/1,=UA1CDA/LH,=UA1CIO/LH,=UA9MA/1,=UA9MQR/1, R1N[19],RA1N[19],RC1N[19],RD1N[19],RE1N[19],RF1N[19],RG1N[19],RJ1N[19],RK1N[19],RL1N[19],RM1N[19], RN1N[19],RO1N[19],RQ1N[19],RT1N[19],RU1N[19],RV1N[19],RW1N[19],RX1N[19],RY1N[19],RZ1N[19],U1N[19], UA1N[19],UB1N[19],UC1N[19],UD1N[19],UE1N[19],UF1N[19],UG1N[19],UH1N[19],UI1N[19],=R01DTV/1[19], - =R85KFF[19],=R90K[19],=RK75OP[19],=RN1NA/ANT[19],=RO25KL[19],=RO75RK[19],=RP72PT[19],=RP72RK[19], - =RP73PT[19],=RP73RK[19],=RP74PT[19],=RP74RK[19],=RP75PT[19],=RP75RK[19],=RV9JD/1/M[19], + =R100RK[19],=R85KFF[19],=R90K[19],=RK75OP[19],=RN1NA/ANT[19],=RO25KL[19],=RO75RK[19],=RP72PT[19], + =RP72RK[19],=RP73PT[19],=RP73RK[19],=RP74PT[19],=RP74RK[19],=RP75PT[19],=RP75RK[19],=RV1CC/1[19], + =RV9JD/1/M[19], R1O[19],RA1O[19],RC1O[19],RD1O[19],RE1O[19],RF1O[19],RG1O[19],RJ1O[19],RK1O[19],RL1O[19],RM1O[19], RN1O[19],RO1O[19],RQ1O[19],RT1O[19],RU1O[19],RV1O[19],RW1O[19],RX1O[19],RY1O[19],RZ1O[19],U1O[19], UA1O[19],UB1O[19],UC1O[19],UD1O[19],UE1O[19],UF1O[19],UG1O[19],UH1O[19],UI1O[19],=R0000O[19], - =R100FA[19],=R100K[19],=R20ARRS[19],=R25ILIM[19],=R8FF/1[19],=R9LI/1[19],=R9MCM/1[19], + =R100FA[19],=R100K[19],=R20ARRS[19],=R25ILIM[19],=R5QA/1[19],=R8FF/1[19],=R9LI/1[19],=R9MCM/1[19], =RA0NN/1[19],=RA9XA/1[19],=RA9XA/1/P[19],=RK0SE/1[19],=RM9X/1[19],=RO80KEDR[19],=RP72A[19], =RP73A[19],=RP73AU[19],=RP74A[19],=RP74AU[19],=RP75A[19],=RP75AOS[19],=RP75AU[19],=RP75NK[19], =RP75OM[19],=UA1PAC/ANT[19],=UA9UAX/1[19],=UA9UAX/1/M[19],=UA9XK/1[19],=UA9XMC/1[19], - =UA9XRK/1[19],=UE25IK[19],=UE80AR[19],=UE80AR/M[19],=UE80AR/P[19],=UE90PR[19], + =UA9XRK/1[19],=UB5O/1[19],=UE25IK[19],=UE80AR[19],=UE80AR/M[19],=UE80AR/P[19],=UE90PR[19], R1P[20],RA1P[20],RC1P[20],RD1P[20],RE1P[20],RF1P[20],RG1P[20],RJ1P[20],RK1P[20],RL1P[20],RM1P[20], RN1P[20],RO1P[20],RQ1P[20],RT1P[20],RU1P[20],RV1P[20],RW1P[20],RX1P[20],RY1P[20],RZ1P[20],U1P[20], UA1P[20],UB1P[20],UC1P[20],UD1P[20],UE1P[20],UF1P[20],UG1P[20],UH1P[20],UI1P[20],=R8XW/1[20], @@ -2400,14 +2418,14 @@ European Russia: 16: 29: EU: 53.65: -41.37: -4.0: UA: =RA9CFH/1[19],=RA9CFH/1/P[19],=RK21Z[19],=RK3DZJ/1/LH[19],=RM9WN/1[19],=RP72MU[19],=RP73MU[19], =RP73ZP[19],=RP74ZP[19],=RP75BFS[19],=RP75EP[19],=RP75PL[19],=RU1ZC/ANT[19],=RW1ZQ/LH[19], =RY83HN[19],=UB1ZBD/N[19], - =R01DTV/3,=R85PAR,=R870B,=R870C,=R870K,=R870M,=R870O,=R8FF/3,=R9FM/3,=RA2AT,=RA2FDX/3,=RA9CO/3, - =RA9USU/3,=RC85MP,=RL3AB/FF,=RT2F/3/M,=RT9K/3,=RW0LF/3,=RX9UL/3,=RX9WN/3,=RZ9UA/3,=UA0KCX/3, - =UA3AV/ANT,=UA8AA/3,=UA8AA/5,=UA9KHD/3,=UA9MA/3,=UA9MDU/3,=UA9MRX/3,=UA9QCP/3,=UA9UAX/3,=UE24SU, - =R85AAL,=R85QMR,=R85WDW,=R8B,=R8FF/M,=R90DNF,=R99FSB,=R9YU/3,=RA0BY/3,=RA80KEDR,=RA9KV/3,=RA9SB/3, - =RA9XY/3,=RD0L/3,=RK3DSW/ANT,=RK3DWA/3/N,=RN9MD/3,=RT80KEDR,=RU0LM/3,=RU2FA/3,=RU3HD/ANT,=RV0AO/3, - =RV9LM/3/P,=RW0IM/3,=RW3DU/N,=RW9UEW/3,=RX9SN/3,=RZ9OL/3/M,=RZ9OL/3/P,=RZ9SZ/3,=RZ9W/3,=UA0JAD/3, - =UA0KCL/3,=UA0ZAZ/3,=UA9AJ/3/M,=UA9DD/3,=UA9HSI/3,=UA9ONJ/3,=UA9XGD/3,=UA9XMC/3,=UE23DSA,=UE25FO, - =UE95GA,=UE96WS, + =R01DTV/3,=R85PAR,=R870B,=R870C,=R870K,=R870M,=R870O,=R9FM/3,=RA2AT,=RA2FDX/3,=RA9CO/3,=RA9USU/3, + =RC85MP,=RL3AB/FF,=RT2F/3/M,=RT9K/3,=RW0LF/3,=RX9UL/3,=RX9WN/3,=RZ9UA/3,=UA0KCX/3,=UA3AV/ANT, + =UA8AA/3,=UA8AA/5,=UA9KHD/3,=UA9MA/3,=UA9MDU/3,=UA9MRX/3,=UA9QCP/3,=UA9UAX/3,=UE24SU, + =R85AAL,=R85QMR,=R85WDW,=R8B,=R8FF/3,=R8FF/M,=R8FF/P,=R90DNF,=R90WDW,=R99FSB,=R9YU/3,=RA0BY/3, + =RA80KEDR,=RA9KV/3,=RA9SB/3,=RA9XY/3,=RD0L/3,=RK3DSW/ANT,=RK3DWA/3/N,=RN9MD/3,=RT80KEDR,=RU0LM/3, + =RU2FA/3,=RU3HD/ANT,=RV0AO/3,=RV9LM/3/P,=RW0IM/3,=RW3DU/N,=RW9UEW/3,=RX9SN/3,=RZ9OL/3/M, + =RZ9OL/3/P,=RZ9SZ/3,=RZ9W/3,=UA0JAD/3,=UA0KCL/3,=UA0ZAZ/3,=UA9AJ/3/M,=UA9DD/3,=UA9HSI/3,=UA9ONJ/3, + =UA9XGD/3,=UA9XMC/3,=UE23DSA,=UE25FO,=UE95GA,=UE96WS, =R80ORL,=UA0QGM/3,=UE80O,=UE80OL, =R0CAF/3,=R3GO/FF,=RM0L/3,=RN3GL/FF,=RN3GW/FF,=RT5G/P/FF,=RW0IW/3,=UA3GM/ANT,=UE90FL, =RA9KT/3,=RZ9SZ/3/M,=UA0FHC/3,=UF2F/3/M, @@ -2419,23 +2437,24 @@ European Russia: 16: 29: EU: 53.65: -41.37: -4.0: UA: =UA9JLY/3,=UA9XLE/3,=UB0AJJ/3,=UB5O/M,=UC0LAF/3,=UE25AFG,=UE25R,=UE27AFG,=UE28AFG,=UE96SN, =R80RTL,=R90IARU,=R9CZ/3,=RU80TO,=RZ9HK/3/P, =R920RZ,=R95DOD,=RA0QQ/3,=UA0KBA/3,=UE80S,=UE85NKN,=UE85WDW, - =R3TT/FF,=R8FF/P,=R8TA/4/P,=R8TR/3,=R90NOR,=R9KW/3,=R9KW/4,=R9PA/4,=RA95FL,=RA9AP/3,=RA9CKQ/4, - =RA9KW/3,=RA9KW/3/M,=RA9ST/3/P,=RG9A/3/P,=RM9T/4/P,=RN0CT/4,=RT9S/3,=RT9S/3/P,=RT9S/4,=RT9S/P, - =RU95FL,=RU9LA/4,=RV9FQ/3,=RV9FQ/3/M,=RV9WB/4,=RV9WLE/3/P,=RV9WZ/3,=RW9KW/3,=RW9WA/3,=RX9SN/P, - =UA0ADX/3,=UA0DM/4,=UA0S/4,=UA0SC/4,=UA9APA/3/P,=UA9CTT/4,=UA9PM/4,=UA9SSR/3,=UE200TARS,=UE25TF, - =UE9FDA/3,=UE9FDA/3/M,=UE9WDA/3,=UI8W/3/P, + =R3TT/FF,=R8TA/4/P,=R8TR/3,=R90NOR,=R9KW/3,=R9KW/4,=R9PA/4,=RA95FL,=RA9AP/3,=RA9CKQ/4,=RA9KW/3, + =RA9KW/3/M,=RA9ST/3/P,=RG9A/3/P,=RM9T/4/P,=RN0CT/4,=RT9S/3,=RT9S/3/P,=RT9S/4,=RT9S/P,=RU95FL, + =RU9LA/4,=RV9FQ/3,=RV9FQ/3/M,=RV9WB/4,=RV9WLE/3/P,=RV9WZ/3,=RW9KW/3,=RW9WA/3,=RX9SN/P,=UA0ADX/3, + =UA0DM/4,=UA0S/4,=UA0SC/4,=UA9APA/3/P,=UA9CTT/4,=UA9PM/4,=UA9SSR/3,=UE200TARS,=UE25TF,=UE9FDA/3, + =UE9FDA/3/M,=UE9WDA/3,=UI8W/3/P, =R5VAJ/N,=R850G,=R850PN,=RU0BW/3,=RV80KEDR,=RX9TL/3,=UA0FM/3, =R110A/P,=R80PVB, - =RA9XF/3,=RC80KEDR,=RK0BWW/3,=RN80KEDR,=RW9XC/3/M,=RX3XX/N,=UA0KBA/3/P,=UA9SIV/3,=UE0ZOO/3, - =R85WTA,=R8FF/3/P,=R98KPM,=R99KPM,=RA3YV/ANT,=RK0UT/3,=RW0LX/3,=UA3YH/ANT,=UA9KZ/3,=UB8JAF/3, - =UE91L,=UE95K,=UE95RA, + =R8XF/3,=RA9XF/3,=RC80KEDR,=RK0BWW/3,=RN80KEDR,=RW9XC/3/M,=RX3XX/N,=UA0KBA/3/P,=UA9SIV/3, + =UE0ZOO/3, + =R85WTA,=R8FF/3/P,=R90WDWR,=R98KPM,=R99KPM,=RA3YV/ANT,=RK0UT/3,=RW0LX/3,=UA3YH/ANT,=UA9KZ/3, + =UB8JAF/3,=UE91L,=UE95K,=UE95RA, =R3ZK/FF,=RA3ZZ/ANT,=RA9AK/3,=RA9KD/3,=RU3ZK/FF,=RW0BG/3,=UA0QBC/3, =R89DRA,=RA07DR,=RA9DF/4/P,=RA9ODR/4/M,=RC4AF/FF,=RN4ACA/FF,=RV9CX/6/M,=UA4ASE/FF,=UA4ATL/FF, =UA8WAA/6,=UA9FGR/4,=UE00S,=UE00S/P,=UE09VG,=UE80RWW, =R4CDX/FF,=R8FF/4,=R8FR/4/M,=RA9KO/4,=RL96WS,=RL97WS,=RU80KEDR,=RU80KEDR/P,=RU9SO/4/M,=RV4CC/FF, =RW0UZ/4,=RW9AW/4/M,=RZ0SB/4,=UA0KAT/4,=UA8WAA/4,=UA9AGR/4/M,=UA9JPX/4,=UA9OC/4,=UE23DZO,=UE95MS, =UE95WS,=UE98WS,=UE99PW, - =R9CMA/4,=R9JBN/4, + =R8CW/4,=R9CMA/4,=R9JBN/4, R4H[30],R4I[30],RA4H[30],RA4I[30],RC4H[30],RC4I[30],RD4H[30],RD4I[30],RE4H[30],RE4I[30],RF4H[30], RF4I[30],RG4H[30],RG4I[30],RJ4H[30],RJ4I[30],RK4H[30],RK4I[30],RL4H[30],RL4I[30],RM4H[30], RM4I[30],RN4H[30],RN4I[30],RO4H[30],RO4I[30],RQ4H[30],RQ4I[30],RT4H[30],RT4I[30],RU4H[30], @@ -2452,14 +2471,14 @@ European Russia: 16: 29: EU: 53.65: -41.37: -4.0: UA: =RW4HTK[29],=RW4HW[29],=RW4HZ[29],=RW9SW/4[30],=RW9TP/4[30],=RW9WJ/4[30],=RW9WJ/4/P[30], =RW9WJ/P[30],=RZ4HWF/LH[30],=RZ4HZW/FF[30],=RZ9WU/4/M[30],=UA0KAO/4[30],=UA0QJA/4[30],=UA4H[29], =UA4HBM[29],=UA4HGL[29],=UA4HIP[29],=UA4HIP/M[30],=UA4HRZ[29],=UA4HY[29],=UA9JGX/4[30], - =UA9LAO/4[30],=UA9SQG/4/P[30],=UA9SY/4[30],=UB5O/4[30],=UC4I[29],=UI4I[29], + =UA9LAO/4[30],=UA9SQG/4/P[30],=UA9SY/4[30],=UC4I[29],=UI4I[29], =R01DTV/4,=R9XC/4,=RA9XAF/4,=UA4HIP/4,=UA9JFE/4, =R8XF/4,=RA4NCC[30],=RA9FR/4/P,=RA9XSM/4,=RD9CX/4,=RD9CX/4/P,=RU0LM/4,=RW9XC/4/M,=UA4NE/M, =UA4NF[30],=UA4NF/M,=UA9APA/4/P,=UA9FIT/4,=UA9XI/4,=UE9FDA/4,=UE9FDA/4/M,=UE9GDA/4, =R95PW,=R9WI/4/P,=RA9CKM/4/M,=RA9FR/4/M,=RJ4P[30],=RK4P[30],=RK4PK[30],=RM4P[30],=RM4R[30], - =RM8W/4/M,=RN9WWW/4,=RN9WWW/4/M,=RT05RO,=RV9FQ/4/M,=RV9WKI/4/M,=RV9WKI/4/P,=RV9WMZ/4/M,=RV9WZ/4, - =RW9TP/4/P,=RW9WA/4,=RW9WA/4/M,=RZ9WM/4,=UA2FM/4,=UA3AKO/4,=UA4PN[30],=UA4RF[30],=UA4RW[30], - =UA9AJ/4/M,=UA9JFN/4/M,=UA9JNQ/4,=UA9SG/4,=UE96MP,=UE9WDA/4,=UE9WDA/4/M, + =RM8W/4/M,=RN9WWW/4,=RN9WWW/4/M,=RT05RO,=RU9SO/M,=RV9FQ/4/M,=RV9WKI/4/M,=RV9WKI/4/P,=RV9WMZ/4/M, + =RV9WZ/4,=RW9TP/4/P,=RW9WA/4,=RW9WA/4/M,=RZ9WM/4,=UA2FM/4,=UA3AKO/4,=UA4PN[30],=UA4RF[30], + =UA4RW[30],=UA9AJ/4/M,=UA9JFN/4/M,=UA9JNQ/4,=UA9SG/4,=UE96MP,=UE9WDA/4,=UE9WDA/4/M, =R8UT/4/P,=RX9WN/4, =RQ0C/4,=RZ5D/4,=UA9XX/4,=UE9WFF/4, R4W[30],RA4W[30],RC4W[30],RD4W[30],RE4W[30],RF4W[30],RG4W[30],RJ4W[30],RK4W[30],RL4W[30],RM4W[30], @@ -2469,8 +2488,8 @@ European Russia: 16: 29: EU: 53.65: -41.37: -4.0: UA: =RA9WU/4/P[30],=RP72IZ[30],=RP73IZ[30],=RP74IZ[30],=RP75IZ[30],=RT20NY[30],=RW9FWB/4[30], =RW9FWR/4[30],=RW9FWR/4/M[30],=RX9FW/4[30],=UA9UAX/4/M[30], =RT9T/4,=RV9MD/4,=UA4PCM/M,=UE04YCS,=UE85AGN,=UE90AGN, - =R01DTV,=R01DTV/7,=R0IT/6,=R80TV,=R8XW/6,=R9JO/6,=R9KD/6,=R9OM/6,=R9WGM/6/M,=RA0APW/6,=RA0FW/6, - =RA0LIF/6,=RA0LLW/6,=RA0QR/6,=RA9ODR/6,=RA9ODR/6/M,=RA9SAS/6,=RA9UWD/6,=RA9WW/6,=RD9CX/6, + =R01DTV,=R01DTV/7,=R0IT/6,=R1CF/M,=R80TV,=R8XW/6,=R9JO/6,=R9KD/6,=R9OM/6,=R9WGM/6/M,=RA0APW/6, + =RA0FW/6,=RA0LIF/6,=RA0LLW/6,=RA0QR/6,=RA9ODR/6,=RA9ODR/6/M,=RA9SAS/6,=RA9UWD/6,=RA9WW/6,=RD9CX/6, =RD9CX/6/P,=RK6AH/LH,=RK9JA/6,=RN0CF/6,=RN0JT/6,=RQ0C/6,=RT9K/6,=RT9K/6/P,=RT9K/6/QRP,=RU2FB/6, =RU9MX/6,=RU9QRP/6/M,=RU9QRP/6/P,=RU9SO/6,=RV9FQ/6,=RW0LIF/6,=RW0LIF/6/LH,=RW6AWW/LH,=RW9JZ/6, =RW9WA/6,=RX6AA/ANT,=RX6AAP/ANT,=RX9TX/6,=RZ9HG/6,=RZ9HT/6,=RZ9UF/6,=RZ9UZV/6,=UA0AGE/6,=UA0IT/6, @@ -2480,16 +2499,16 @@ European Russia: 16: 29: EU: 53.65: -41.37: -4.0: UA: =RA6EE/FF,=RN7G/FF,=UA0LEC/6,=UA9KAS/6,=UA9KAS/6/P, =R9XV/6,=RA0ZG/6,=RA9CHS/6,=RA9CHS/7,=RK7G/FF,=RM8A/6/M,=RT9K/7,=RU9CK/7,=RU9ZA/7,=RZ7G/FF, =RZ9ON/6,=UA0ZDA/6,=UA0ZS/6,=UA6HBO/N,=UA6HBO/ST30,=UA6IC/6/FF,=UA9CE/6,=UA9UAX/7/M,=UE80HS, - =R7AB/P,=UA6IC/FF, + =UA6IC/FF, =RU2FB/6/P,=UA9UAX/7, - =R6LCA/J,=R7AB/M,=R8WC/6,=R8WC/6/P,=RA20NY,=RU97AE,=RV9CMT/6,=RV9DC/6/P,=RV9LC/6,=RW9XC/6/M, + =R6LCA/J,=R8WC/6,=R8WC/6/P,=RA20NY,=RU97AE,=RV9CMT/6,=RV9DC/6/P,=RV9LC/6,=RW9XC/6/M,=RX9KT/6, =UA0QBR/6,=UA0ZED/6,=UA6LP/P/LH,=UA6LV/ANT,=UA6MM/LH,=UE20DS,=UE28DX,=UE29DX,=UE92L, =RV0ANH/6,=RV0APR/6,=RW0AF/6, =R8FF/6,=R9DA/6,=R9MAV/6,=RA9DF/6/M,=RA9DF/6/P,=RU9CK/6/M,=RU9CK/6/P,=RV9CX/6/P,=UA9CES/6, =UA9FGR/6,=UA9WQK/6, =RU9CK/7/M,=RU9CK/7/P,=RV9CX/7/P,=UA9JFN/6/M, =RT9K/7/P,=RZ7G/6/FF, - =R01DTV/6,=RV1CC/M,=RV9AB/6, + =R01DTV/6,=RV9AB/6, =R9FAZ/6/M,=R9MJ/6,=R9OM/5/P,=R9XT/6,=RA9KD/6,=RA9WU/6,=RN9N/6,=RT9T/6,=RT9T/6/M,=RU2FB/5, =RU9WW/5/M,=RW9AW/5,=UA0LLM/5,=UA8WAA/5,=UA9CDC/6,=UA9UAX/5,=UE2KR,=UE98PW, =R8AEU/6,=R9MJ/6/M,=RN9N/6/M,=UA0ZL/6,=UB8ADI/5,=UB8ADI/6,=UE2SE, @@ -2537,10 +2556,10 @@ European Russia: 16: 29: EU: 53.65: -41.37: -4.0: UA: UF8X(17)[20],UF9X(17)[20],UG1I(17)[20],UG8X(17)[20],UG9X(17)[20],UH1I(17)[20],UH8X(17)[20], UH9X(17)[20],UI1I(17)[20],UI8X(17)[20],UI9X(17)[20],=R100AP(17)[20],=R120RK(17)[20], =R16NOR(17)[20],=R18ISL(17)[20],=R2014I(17)[20],=R20SZO(17)[20],=R240S(17)[20],=R35MWC(17)[20], - =R3RRC/9(17)[20],=R5QA/1(17)[20],=R5QQ/1(17)[20],=R6DGL/9/M(17)[20],=R6DLU/1(17)[20], - =R70SRC(17)[20],=R7BA/1(17)[20],=R7BA/9(17)[20],=R7BA/9/M(17)[20],=R8MB/1(17)[20], - =R8MB/1/P(17)[20],=R9/UR7IMG(17)[20],=R95KOMI(17)[20],=R9KD/9(17)[20],=R9XAK/1/P(17)[20], - =RA/DK5JI(17)[20],=RA/UR5MKH(17)[20],=RA22KO(17)[20],=RA22XA(17)[20],=RA22XF(17)[20], + =R3RRC/9(17)[20],=R5QQ/1(17)[20],=R6DGL/9/M(17)[20],=R6DLU/1(17)[20],=R70SRC(17)[20], + =R7BA/1(17)[20],=R7BA/9(17)[20],=R7BA/9/M(17)[20],=R8MB/1(17)[20],=R8MB/1/P(17)[20], + =R9/UR7IMG(17)[20],=R95KOMI(17)[20],=R9KD/9(17)[20],=R9XAK/1/P(17)[20],=RA/DK5JI(17)[20], + =RA/UR5MKH(17)[20],=RA1WS/1(17)[20],=RA22KO(17)[20],=RA22XA(17)[20],=RA22XF(17)[20], =RA22XU(17)[20],=RA3AMG/9/M(17)[20],=RA3OM/9(17)[20],=RA3X/1(17)[20],=RA4NH/9(17)[20], =RA4NV/9(17)[20],=RA6ACI/9(17)[20],=RD4CBQ/9(17)[20],=RK1OWZ/9(17)[20],=RK1OWZ/9/M(17)[20], =RK30DR(17)[20],=RK6K/9(17)[20],=RK90DR(17)[20],=RN22OG(17)[20],=RN22OV(17)[20],=RN4ACZ/9(17)[20], @@ -2589,16 +2608,16 @@ Asiatic Russia: 17: 30: AS: 55.88: -84.08: -7.0: UA9: =R01DTV/8,=R100RGA,=R105WWS,=R14CWC/8,=R14CWC/9,=R150DMP,=R155AP,=R15CWC/8,=R15CWC/8/QRP,=R160DMP, =R16SVK,=R170GS/8,=R2015BP,=R2015R,=R2016DR,=R20EKB,=R22SKJ,=R27EKB,=R30ZF,=R35CZF,=R375I, =R44YETI/8,=R4WAB/9/P,=R55EPC,=R55EPC/P,=R6UAE/9,=R70NIK,=R7LZ/8,=R8FF/8,=R9GM/8,=R9GM/8/M, - =RA/DL6XK,=RA/US5ETV,=RA0BA/8,=RA0BA/9,=RA27AA,=RA27EK,=RA36GS,=RA36ZF,=RA4YW/9,=RA4YW/9/M, - =RA9FW/9,=RA9WU/9,=RC18EK,=RD0B/8,=RK9AD/9/M,=RK9DR/N,=RL20NY,=RL4R/8,=RM0B/9,=RM19NY,=RN16CW, - =RN3QBG/9,=RP68DT,=RP68RG,=RP68TG,=RP68TK,=RP69GR,=RP70DT,=RP70G,=RP70GB,=RP70GR,=RP70MA,=RP70SA, - =RP70UH,=RP71DT,=RP71GA,=RP71GA/M,=RP71GB,=RP71GR,=RP71LT,=RP71MO,=RP71SA,=RP72DT,=RP72FI,=RP72GB, - =RP72GR,=RP72IM,=RP72KB,=RP72SA,=RP73DT,=RP73GB,=RP73GR,=RP73IM,=RP73SA,=RP74DT,=RP74GB,=RP74GR, - =RP74IM,=RP75DT,=RP75GB,=RP75IM,=RP75MF,=RP75MLI,=RP75RGA,=RP75TT,=RP75UR,=RT4C/8,=RT4W/9,=RT73BR, - =RT73EB,=RT73FL,=RT73HE,=RT73KB,=RT73SK,=RU22CR,=RU5D/8,=RU5D/9,=RV6LGY/9,=RV6LGY/9/M,=RV6LGY/9/P, - =RV6MD/9,=RV9WB/8,=RW4NX/9,=RW9C[20],=RX0SD/9,=RX3Q/8,=RX3Q/9,=RX9UL/9,=RY9C/P,=RZ1CWC/8,=RZ37ZF, - =RZ38ZF,=RZ39ZF,=UA0BA/8,=UA3FQ/8,=UA3IHJ/8,=UA4WHX/9,=UA8WAA/8,=UA9MW/9,=UA9UAX/8,=UA9UAX/8/M, - =UE16SR,=UE25F,=UE40CZF,=UE4NFF/9,=UE56S,=UE64RWA,=UE70SL,=UE75DT, + =R9WCJ/8,=RA/DL6XK,=RA/US5ETV,=RA0BA/8,=RA0BA/9,=RA27AA,=RA27EK,=RA36GS,=RA36ZF,=RA4YW/9, + =RA4YW/9/M,=RA9FW/9,=RA9WU/9,=RC18EK,=RD0B/8,=RK9AD/9/M,=RK9DR/N,=RL20NY,=RL4R/8,=RM0B/9,=RM19NY, + =RN16CW,=RN3QBG/9,=RP68DT,=RP68RG,=RP68TG,=RP68TK,=RP69GR,=RP70DT,=RP70G,=RP70GB,=RP70GR,=RP70MA, + =RP70SA,=RP70UH,=RP71DT,=RP71GA,=RP71GA/M,=RP71GB,=RP71GR,=RP71LT,=RP71MO,=RP71SA,=RP72DT,=RP72FI, + =RP72GB,=RP72GR,=RP72IM,=RP72KB,=RP72SA,=RP73DT,=RP73GB,=RP73GR,=RP73IM,=RP73SA,=RP74DT,=RP74GB, + =RP74GR,=RP74IM,=RP75DT,=RP75GB,=RP75IM,=RP75MF,=RP75MLI,=RP75RGA,=RP75TT,=RP75UR,=RT4C/8,=RT4W/9, + =RT73BR,=RT73EB,=RT73FL,=RT73HE,=RT73KB,=RT73SK,=RU22CR,=RU5D/8,=RU5D/9,=RV6LGY/9,=RV6LGY/9/M, + =RV6LGY/9/P,=RV6MD/9,=RV9WB/8,=RW4NX/9,=RW9C[20],=RX0SD/9,=RX3Q/8,=RX3Q/9,=RX9UL/9,=RY9C/P, + =RZ1CWC/8,=RZ37ZF,=RZ38ZF,=RZ39ZF,=UA0BA/8,=UA3FQ/8,=UA3IHJ/8,=UA4WHX/9,=UA8WAA/8,=UA9MW/9, + =UA9UAX/8,=UA9UAX/8/M,=UE16SR,=UE25F,=UE40CZF,=UE4NFF/9,=UE56S,=UE64RWA,=UE70SL,=UE75DT, R8H(18)[31],R8I(18)[31],R9H(18)[31],R9I(18)[31],RA8H(18)[31],RA8I(18)[31],RA9H(18)[31], RA9I(18)[31],RC8H(18)[31],RC8I(18)[31],RC9H(18)[31],RC9I(18)[31],RD8H(18)[31],RD8I(18)[31], RD9H(18)[31],RD9I(18)[31],RE8H(18)[31],RE8I(18)[31],RE9H(18)[31],RE9I(18)[31],RF8H(18)[31], @@ -2660,9 +2679,9 @@ Asiatic Russia: 17: 30: AS: 55.88: -84.08: -7.0: UA9: =RP75YN,=RR110RAEM,=RU22LR,=RW0QJ/9,=RX4W/8,=RX6DL/8,=RX6DL/8/P,=RX6DL/8/P/QRP,=RX6DL/9/P, =RZ9MXM/9/M,=UB5O/8/P,=UE44Y/8,=UE9FDA/9/M,=UE9MDA/9, =R16CAN,=R1716K,=R1716M,=R1716O,=R1716S,=R9MJ/M,=RA/DK2AI/M,=RA22MX,=RA4CQ/9/M,=RA9MR/0,=RA9MX/P, - =RC20MX,=RK6YYA/9,=RN0SZ/9,=RN9N/9,=RN9N/M,=RP65MOH,=RP67MC,=RP67MD,=RP68MC,=RP68MD,=RP69MC, - =RP69MD,=RP70GK,=RP70MC,=RP70MD,=RP70OB,=RP70OF,=RP70OS,=RP71GK,=RP71MJ,=RP71OB,=RP72GK,=RP72MJ, - =RP72OB,=RP72ZW,=RP73GK,=RP73OB,=RP74PO,=RP75GK,=RP8M,=RT22MC,=RT22MD,=RU20NY,=RV0SR/9,=RW22MW, + =RC20MX,=RK6YYA/9,=RN0SZ/9,=RN9N/9,=RP65MOH,=RP67MC,=RP67MD,=RP68MC,=RP68MD,=RP69MC,=RP69MD, + =RP70GK,=RP70MC,=RP70MD,=RP70OB,=RP70OF,=RP70OS,=RP71GK,=RP71MJ,=RP71OB,=RP72GK,=RP72MJ,=RP72OB, + =RP72ZW,=RP73GK,=RP73OB,=RP74PO,=RP75GK,=RP8M,=RT22MC,=RT22MD,=RU20NY,=RU20RU,=RV0SR/9,=RW22MW, =RY22MC,=UA1ZGD/9,=UA3AKO/9,=UE55OM,=UE70KRM/9,=UE70KRM/9/M,=UE9OFF/9, R8O(18)[31],R8P(18)[31],R9O(18)[31],R9P(18)[31],RA8O(18)[31],RA8P(18)[31],RA9O(18)[31], RA9P(18)[31],RC8O(18)[31],RC8P(18)[31],RC9O(18)[31],RC9P(18)[31],RD8O(18)[31],RD8P(18)[31], @@ -2689,12 +2708,12 @@ Asiatic Russia: 17: 30: AS: 55.88: -84.08: -7.0: UA9: =R9/TA1FL(18)[31],=RA/DF8DX(18)[31],=RA/N3QQ(18)[31],=RA0LMC/9(18)[31],=RA27OA(18)[31], =RA27OM(18)[31],=RA3DH/9(18)[31],=RA3ET/9(18)[31],=RA4FRH/0/P(18)[31],=RA9JJ/9/M(18)[31], =RA9MX/9(18)[31],=RC1M/9(18)[31],=RC1M/9/M(18)[31],=RD0L/9(18)[31],=RG9O(18)[31],=RL3T/9(18)[31], - =RN9N/9/M(18)[31],=RO9O(18)[31],=RP67MP(18)[31],=RP68MP(18)[31],=RP70MP(18)[31],=RP71MP(18)[31], - =RP72MP(18)[31],=RP73MP(18)[31],=RP74MP(18)[31],=RP75MP(18)[31],=RP9OMP(18)[31],=RP9OW(18)[31], - =RQ16CW(18)[31],=RR9O(18)[31],=RS9O(18)[31],=RU0ZM/9(18)[31],=RU27OZ(18)[31],=RU6LA/9(18)[31], - =RV0CJ/9(18)[31],=RW1AC/9(18)[31],=RW9MD/9/M(18)[31],=RZ9MXM/9(18)[31],=UA0KDR/9(18)[31], - =UA0ZAY/9(18)[31],=UA6WFO/9(18)[31],=UA9MA/9(18)[31],=UA9MA/9/M(18)[31],=UA9MRA/9(18)[31], - =UB5O/9(18)[31],=UE80NSO(18)[31], + =RN9N/9/M(18)[31],=RN9N/M(18)[31],=RO9O(18)[31],=RP67MP(18)[31],=RP68MP(18)[31],=RP70MP(18)[31], + =RP71MP(18)[31],=RP72MP(18)[31],=RP73MP(18)[31],=RP74MP(18)[31],=RP75MP(18)[31],=RP9OMP(18)[31], + =RP9OW(18)[31],=RQ16CW(18)[31],=RR9O(18)[31],=RS9O(18)[31],=RU0ZM/9(18)[31],=RU27OZ(18)[31], + =RU6LA/9(18)[31],=RV0CJ/9(18)[31],=RW1AC/9(18)[31],=RW9MD/9/M(18)[31],=RZ9MXM/9(18)[31], + =UA0KDR/9(18)[31],=UA0ZAY/9(18)[31],=UA6WFO/9(18)[31],=UA9MA/9(18)[31],=UA9MA/9/M(18)[31], + =UA9MRA/9(18)[31],=UB5O/9(18)[31],=UE80NSO(18)[31], =R110RP,=R120RDP,=R120RZ,=R120TM,=R150RP,=R155RP,=R160RP,=R18URU,=RA22QF,=RC20QA,=RC20QC,=RC20QF, =RM20CC,=RM20NY,=RM9RZ/A,=RM9RZ/P,=RP65R,=RP67KE,=RP67R,=RP68KE,=RP68R,=RP69KE,=RP69R,=RP70KE, =RP70R,=RP71R,=RP72KE,=RP72R,=RP75KE,=RT73CW,=RT73JH,=RV3MN/9,=RW22QA,=RW22QA/8,=RW22QC,=RW22QC/8, @@ -2717,9 +2736,9 @@ Asiatic Russia: 17: 30: AS: 55.88: -84.08: -7.0: UA9: =RN3GW/8(16),=RN3GW/8/QRP(16),=RN3GW/9(16),=RN3GW/9/QRP(16),=RN3QOP/9(16),=RN9S(16),=RN9SM/P(16), =RN9WWW/9(16),=RO9S(16),=RP65TT(16),=RP68GR(16),=RP69NB(16),=RP71TK(16),=RP75TS(16),=RP9SBO(16), =RP9SBR(16),=RP9SNK(16),=RT22TK(16),=RT73OA(16),=RT8T(16),=RT9S(16),=RT9T(16),=RU22TU(16), - =RU9SO/M(16),=RV1CC/4/M(16),=RV9WGF/4/M(16),=RV9WMZ/9/M(16),=RW4PJZ/9(16),=RW4PJZ/9/M(16), - =RW4PP/9(16),=RW9WA/9(16),=RW9WA/9/M(16),=RY4W/9(16),=RZ4HZW/9/M(16),=UA0AGA/9/P(16), - =UA0KBA/9(16),=UA3WB/9(16),=UA4LCQ/9(16),=UA9SIV/9(16),=UB9JBN/9/M(16),=UE1RFF/9(16),=UE25ST(16), + =RV1CC/4/M(16),=RV9WGF/4/M(16),=RV9WMZ/9/M(16),=RW4PJZ/9(16),=RW4PJZ/9/M(16),=RW4PP/9(16), + =RW9WA/9(16),=RW9WA/9/M(16),=RY4W/9(16),=RZ4HZW/9/M(16),=UA0AGA/9/P(16),=UA0KBA/9(16), + =UA3WB/9(16),=UA4LCQ/9(16),=UA9SIV/9(16),=UB5O/4(16),=UB9JBN/9/M(16),=UE1RFF/9(16),=UE25ST(16), =UE55OB(16),=UE60TDP(16),=UE60TDP/P(16),=UE9WDA/9/M(16), R8U(18)[31],R8V(18)[31],R9U(18)[31],R9V(18)[31],RA8U(18)[31],RA8V(18)[31],RA9U(18)[31], RA9V(18)[31],RC8U(18)[31],RC8V(18)[31],RC9U(18)[31],RC9V(18)[31],RD8U(18)[31],RD8V(18)[31], @@ -2744,7 +2763,7 @@ Asiatic Russia: 17: 30: AS: 55.88: -84.08: -7.0: UA9: =RP70KM(18)[31],=RP70NM(18)[31],=RP70UK(18)[31],=RP70ZF(18)[31],=RP71KM(18)[31],=RP72KM(18)[31], =RP72NM(18)[31],=RP73KM(18)[31],=RP73NZ(18)[31],=RP73ZF(18)[31],=RP74KM(18)[31],=RP75KM(18)[31], =RP75YE(18)[31],=RT22UA(18)[31],=RT77VV(18)[31],=RW0CE/9(18)[31],=RW4CG/9(18)[31],=RZ5D/9(18)[31], - =UA9JFE/9/P(18)[31],=UA9MA/M(18)[31],=UA9UAX/M(18)[31],=UE3ATV/9(18)[31], + =UA9JFE/9/P(18)[31],=UA9MA/M(18)[31],=UE3ATV/9(18)[31], R8W(16),R9W(16),RA8W(16),RA9W(16),RC8W(16),RC9W(16),RD8W(16),RD9W(16),RE8W(16),RE9W(16),RF8W(16), RF9W(16),RG8W(16),RG9W(16),RJ8W(16),RJ9W(16),RK8W(16),RK9W(16),RL8W(16),RL9W(16),RM8W(16), RM9W(16),RN8W(16),RN9W(16),RO8W(16),RO9W(16),RQ8W(16),RQ9W(16),RT8W(16),RT9W(16),RU8W(16), @@ -2782,11 +2801,11 @@ Asiatic Russia: 17: 30: AS: 55.88: -84.08: -7.0: UA9: UC9Y(18)[31],UD8Y(18)[31],UD9Y(18)[31],UE8Y(18)[31],UE9Y(18)[31],UF8Y(18)[31],UF9Y(18)[31], UG8Y(18)[31],UG9Y(18)[31],UH8Y(18)[31],UH9Y(18)[31],UI8Y(18)[31],UI9Y(18)[31],=R100KM(18)[31], =R2015RR(18)[31],=R2015SV(18)[31],=R6XBA/9(18)[31],=R9/UN7JHC(18)[31],=R9/UN7JMO(18)[31], - =RA/IK5MIC(18)[31],=RA/IK5MIC/M(18)[31],=RA0CCJ/9(18)[31],=RA50VT(18)[31],=RK1B/9(18)[31], - =RP68BP(18)[31],=RP68TZ(18)[31],=RP70AF(18)[31],=RP70BP(18)[31],=RP70GA(18)[31],=RP71BP(18)[31], - =RP72BP(18)[31],=RP73BP(18)[31],=RP9Y(18)[31],=RP9YAF(18)[31],=RP9YTZ(18)[31],=RT73GM(18)[31], - =RW22WG(18)[31],=RX6AY/9(18)[31],=UA0LLW/9(18)[31],=UA0ZDY/9(18)[31],=UA9UAX/9/P(18)[31], - =UE0ZOO/9(18)[31],=UE44R/9(18)[31],=UE80AL(18)[31], + =R9PS/9(18)[31],=RA/IK5MIC(18)[31],=RA/IK5MIC/M(18)[31],=RA0CCJ/9(18)[31],=RA50VT(18)[31], + =RK1B/9(18)[31],=RP68BP(18)[31],=RP68TZ(18)[31],=RP70AF(18)[31],=RP70BP(18)[31],=RP70GA(18)[31], + =RP71BP(18)[31],=RP72BP(18)[31],=RP73BP(18)[31],=RP9Y(18)[31],=RP9YAF(18)[31],=RP9YTZ(18)[31], + =RT73GM(18)[31],=RW22WG(18)[31],=RX6AY/9(18)[31],=UA0LLW/9(18)[31],=UA0ZDY/9(18)[31], + =UA9UAX/9/P(18)[31],=UA9UAX/M(18)[31],=UE0ZOO/9(18)[31],=UE44R/9(18)[31],=UE80AL(18)[31], R8Z(18)[31],R9Z(18)[31],RA8Z(18)[31],RA9Z(18)[31],RC8Z(18)[31],RC9Z(18)[31],RD8Z(18)[31], RD9Z(18)[31],RE8Z(18)[31],RE9Z(18)[31],RF8Z(18)[31],RF9Z(18)[31],RG8Z(18)[31],RG9Z(18)[31], RJ8Z(18)[31],RJ9Z(18)[31],RK8Z(18)[31],RK9Z(18)[31],RL8Z(18)[31],RL9Z(18)[31],RM8Z(18)[31], @@ -2891,19 +2910,19 @@ Asiatic Russia: 17: 30: AS: 55.88: -84.08: -7.0: UA9: UB0L(19)[34],UB0M(19)[34],UB0N(19)[34],UC0L(19)[34],UC0M(19)[34],UC0N(19)[34],UD0L(19)[34], UD0M(19)[34],UD0N(19)[34],UE0L(19)[34],UE0M(19)[34],UE0N(19)[34],UF0L(19)[34],UF0M(19)[34], UF0N(19)[34],UG0L(19)[34],UG0M(19)[34],UG0N(19)[34],UH0L(19)[34],UH0M(19)[34],UH0N(19)[34], - UI0L(19)[34],UI0M(19)[34],UI0N(19)[34],=R0HQ(19)[34],=R150L(19)[34],=R17CWH(19)[34], - =R20RRC/0(19)[34],=R3BY/0(19)[34],=R3HD/0(19)[34],=R66IOTA(19)[34],=R70LWA(19)[34], - =R8CW/0(19)[34],=R8XW/0(19)[34],=R9MI/0(19)[34],=R9XT/0(19)[34],=RA/IK7YTT(19)[34], - =RA/OK1DWF(19)[34],=RD3BN/0(19)[34],=RL5G/0/P(19)[34],=RM0M(19)[34],=RM0M/LH(19)[34], - =RM5M/0(19)[34],=RN1NS/0(19)[34],=RP0L(19)[34],=RP0LPK(19)[34],=RP60P(19)[34],=RP66V(19)[34], - =RP67SD(19)[34],=RP67V(19)[34],=RP68SD(19)[34],=RP68V(19)[34],=RP69SD(19)[34],=RP69V(19)[34], - =RP70DG(19)[34],=RP70SD(19)[34],=RP70V(19)[34],=RP71DG(19)[34],=RP71SD(19)[34],=RP71V(19)[34], - =RP72DG(19)[34],=RP72SD(19)[34],=RP72V(19)[34],=RP73DG(19)[34],=RP73SD(19)[34],=RP73V(19)[34], - =RP74DG(19)[34],=RP74SD(19)[34],=RP74V(19)[34],=RP75DG(19)[34],=RP75SD(19)[34],=RP75V(19)[34], - =RU3BY/0(19)[34],=RU5D/0(19)[34],=RV1AW/0(19)[34],=RV3DSA/0(19)[34],=RW22GO(19)[34], - =RW3LG/0(19)[34],=RX15RX(19)[34],=RX20NY(19)[34],=UA0SDX/0(19)[34],=UA0SIK/0(19)[34], - =UA3AHA/0(19)[34],=UA4SBZ/0(19)[34],=UA6MF/0(19)[34],=UA7R/0(19)[34],=UB0LAP/P(19)[34], - =UC0LAF/P(19)[34],=UE1RFF/0(19)[34],=UE70MA(19)[34],=UE75L(19)[34], + UI0L(19)[34],UI0M(19)[34],UI0N(19)[34],=R150L(19)[34],=R17CWH(19)[34],=R20RRC/0(19)[34], + =R3BY/0(19)[34],=R3HD/0(19)[34],=R66IOTA(19)[34],=R70LWA(19)[34],=R8CW/0(19)[34],=R8XW/0(19)[34], + =R9MI/0(19)[34],=R9XT/0(19)[34],=RA/IK7YTT(19)[34],=RA/OK1DWF(19)[34],=RD3BN/0(19)[34], + =RL5G/0/P(19)[34],=RM0M(19)[34],=RM0M/LH(19)[34],=RM5M/0(19)[34],=RN1NS/0(19)[34],=RP0L(19)[34], + =RP0LPK(19)[34],=RP60P(19)[34],=RP66V(19)[34],=RP67SD(19)[34],=RP67V(19)[34],=RP68SD(19)[34], + =RP68V(19)[34],=RP69SD(19)[34],=RP69V(19)[34],=RP70DG(19)[34],=RP70SD(19)[34],=RP70V(19)[34], + =RP71DG(19)[34],=RP71SD(19)[34],=RP71V(19)[34],=RP72DG(19)[34],=RP72SD(19)[34],=RP72V(19)[34], + =RP73DG(19)[34],=RP73SD(19)[34],=RP73V(19)[34],=RP74DG(19)[34],=RP74SD(19)[34],=RP74V(19)[34], + =RP75DG(19)[34],=RP75SD(19)[34],=RP75V(19)[34],=RU3BY/0(19)[34],=RU5D/0(19)[34],=RV1AW/0(19)[34], + =RV3DSA/0(19)[34],=RW22GO(19)[34],=RW3LG/0(19)[34],=RX15RX(19)[34],=RX20NY(19)[34], + =UA0SDX/0(19)[34],=UA0SIK/0(19)[34],=UA3AHA/0(19)[34],=UA4SBZ/0(19)[34],=UA6MF/0(19)[34], + =UA7R/0(19)[34],=UB0LAP/P(19)[34],=UC0LAF/P(19)[34],=UE1RFF/0(19)[34],=UE70MA(19)[34], + =UE75L(19)[34], R0O(18)[32],RA0O(18)[32],RC0O(18)[32],RD0O(18)[32],RE0O(18)[32],RF0O(18)[32],RG0O(18)[32], RJ0O(18)[32],RK0O(18)[32],RL0O(18)[32],RM0O(18)[32],RN0O(18)[32],RO0O(18)[32],RQ0O(18)[32], RT0O(18)[32],RU0O(18)[32],RV0O(18)[32],RW0O(18)[32],RX0O(18)[32],RY0O(18)[32],RZ0O(18)[32], @@ -2937,17 +2956,17 @@ Asiatic Russia: 17: 30: AS: 55.88: -84.08: -7.0: UA9: UD0T(18)[32],UE0R(18)[32],UE0S(18)[32],UE0T(18)[32],UF0R(18)[32],UF0S(18)[32],UF0T(18)[32], UG0R(18)[32],UG0S(18)[32],UG0T(18)[32],UH0R(18)[32],UH0S(18)[32],UH0T(18)[32],UI0R(18)[32], UI0S(18)[32],UI0T(18)[32],=R11QRP/9(18)[32],=R150LA(18)[32],=R150LB(18)[32],=R18SWE(18)[32], - =R1BDD/0(18)[32],=R1BDD/0/P(18)[32],=R25ARCK/9(18)[32],=R3RRC/0/MM(18)[32],=R9PS/9(18)[32], - =RA0SP/RP(18)[32],=RA0SR/RP(18)[32],=RA110RAEM(18)[32],=RA3TO/0(18)[32],=RA4CSX/0/P(18)[32], - =RA9JG/0(18)[32],=RA9JG/0/P(18)[32],=RA9OBG/0(18)[32],=RA9USU/8(18)[32],=RD0L/0(18)[32], - =RK17CW(18)[32],=RK9MZZ/0(18)[32],=RN4HIT/0(18)[32],=RP0S(18)[32],=RP0SXR(18)[32],=RP0SZZ(18)[32], - =RP67ST(18)[32],=RP70AB(18)[32],=RP72AB(18)[32],=RP73AB(18)[32],=RP74AB(18)[32],=RP75AB(18)[32], - =RQ0C/9(18)[32],=RV3ACA/0/M(18)[32],=RV6AJ/0(18)[32],=RV7AD/0(18)[32],=RV9JD/0(18)[32], - =RW4YA/0(18)[32],=RW4YA/9(18)[32],=RX3AT/0(18)[32],=RX3DFH/0(18)[32],=RX9WN/0(18)[32], - =RX9WN/0/M(18)[32],=RX9WN/0/P(18)[32],=RZ0SO/P(18)[32],=UA0KBG/0(18)[32],=UA0KBG/9(18)[32], - =UA3EDQ/0(18)[32],=UA3EDQ/0/MM(18)[32],=UA3EDQ/0/P(18)[32],=UA9MBK/0(18)[32],=UA9UAX/0(18)[32], - =UA9WOB/0(18)[32],=UA9WOB/0/P(18)[32],=UE105SBM(18)[32],=UE55IR(18)[32],=UE60SWA(18)[32], - =UE70SVV(18)[32],=UE80IR(18)[32],=UE80SBR(18)[32], + =R1BDD/0(18)[32],=R1BDD/0/P(18)[32],=R25ARCK/9(18)[32],=R3RRC/0/MM(18)[32],=RA0SP/RP(18)[32], + =RA0SR/RP(18)[32],=RA110RAEM(18)[32],=RA3TO/0(18)[32],=RA4CSX/0/P(18)[32],=RA9JG/0(18)[32], + =RA9JG/0/P(18)[32],=RA9OBG/0(18)[32],=RA9USU/8(18)[32],=RD0L/0(18)[32],=RK17CW(18)[32], + =RK9MZZ/0(18)[32],=RN4HIT/0(18)[32],=RP0S(18)[32],=RP0SXR(18)[32],=RP0SZZ(18)[32],=RP67ST(18)[32], + =RP70AB(18)[32],=RP72AB(18)[32],=RP73AB(18)[32],=RP74AB(18)[32],=RP75AB(18)[32],=RQ0C/9(18)[32], + =RV3ACA/0/M(18)[32],=RV6AJ/0(18)[32],=RV7AD/0(18)[32],=RV9JD/0(18)[32],=RW4YA/0(18)[32], + =RW4YA/9(18)[32],=RX3AT/0(18)[32],=RX3DFH/0(18)[32],=RX9WN/0(18)[32],=RX9WN/0/M(18)[32], + =RX9WN/0/P(18)[32],=RZ0SO/P(18)[32],=UA0KBG/0(18)[32],=UA0KBG/9(18)[32],=UA3EDQ/0(18)[32], + =UA3EDQ/0/MM(18)[32],=UA3EDQ/0/P(18)[32],=UA9MBK/0(18)[32],=UA9UAX/0(18)[32],=UA9WOB/0(18)[32], + =UA9WOB/0/P(18)[32],=UE105SBM(18)[32],=UE55IR(18)[32],=UE60SWA(18)[32],=UE70SVV(18)[32], + =UE80IR(18)[32],=UE80SBR(18)[32], R0W(18)[31],RA0W(18)[31],RC0W(18)[31],RD0W(18)[31],RE0W(18)[31],RF0W(18)[31],RG0W(18)[31], RJ0W(18)[31],RK0W(18)[31],RL0W(18)[31],RM0W(18)[31],RN0W(18)[31],RO0W(18)[31],RQ0W(18)[31], RT0W(18)[31],RU0W(18)[31],RV0W(18)[31],RW0W(18)[31],RX0W(18)[31],RY0W(18)[31],RZ0W(18)[31], @@ -3049,7 +3068,7 @@ Marshall Islands: 31: 65: OC: 9.08: -167.33: -12.0: V7: Brunei Darussalam: 28: 54: OC: 4.50: -114.60: -8.0: V8: V8; Canada: 05: 09: NA: 44.35: 78.75: 5.0: VE: - CF,CG,CJ,CK,VA,VB,VC,VE,VG,VX,VY9,XL,XM,=VE2EM/M,=VER20200520, + CF,CG,CJ,CK,VA,VB,VC,VE,VG,VX,VY9,XL,XM,=VE2EM/M,=VER20200803, =CF7AAW/1,=CK7IG/1,=VA3QSL/1,=VA3WR/1,=VE1REC/LH,=VE1REC/M/LH,=VE3RSA/1,=VE7IG/1, CF2[4],CG2[4],CJ2[4],CK2[4],VA2[4],VB2[4],VC2[4],VE2[4],VG2[4],VX2[4],XL2[4],XM2[4],=4Y1CAO[4], =CY2ZT/2[4],=VA3MPM/2[4],=VA7AQ/P[4],=VE2/G3ZAY/P[4],=VE2/M0BLF/P[4],=VE2FK[9],=VE2HAY/P[4], @@ -3244,8 +3263,8 @@ Vanuatu: 32: 56: OC: -17.67: -168.38: -11.0: YJ: Syria: 20: 39: AS: 35.38: -38.20: -2.0: YK: 6C,YK; Latvia: 15: 29: EU: 57.03: -24.65: -2.0: YL: - YL,=YL/LY1CM/LH,=YL0A/LH,=YL0WFF/LH,=YL1A/LH,=YL2AG/ANT,=YL2SW/MM(21),=YL3AD/LGT,=YL3BF/LH, - =YL3BU/LH,=YL3FT/LH,=YL3FT/P/LH,=YL3GED/LH,=YL3JD/LH; + YL,=YL0A/LH,=YL0WFF/LH,=YL1A/LH,=YL2AG/ANT,=YL2SW/MM(21),=YL3AD/LGT,=YL3BF/LH,=YL3BU/LH,=YL3FT/LH, + =YL3FT/P/LH,=YL3GED/LH,=YL3JD/LH; Nicaragua: 07: 11: NA: 12.88: 85.05: 6.0: YN: H6,H7,HT,YN; Romania: 20: 28: EU: 45.78: -24.70: -2.0: YO: From ec623deb9fa5676d3e016fffe20bfb7b58b2a6a7 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sat, 15 Aug 2020 15:57:29 +0100 Subject: [PATCH 36/50] More consistent Tx Next button behaviour --- widgets/mainwindow.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index cbca7272b..4bfe9351a 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -3742,19 +3742,20 @@ void MainWindow::guiUpdate() m_tuneup=false; //This is not an ATU tuneup bool btx = m_auto && m_WSPR_tx_next; // To Tx, we need m_auto and // scheduled transmit + m_WSPR_tx_next = false; if(btx) { m_ntr=-1; //This says we will have transmitted ui->pbTxNext->setChecked (false); m_bTxTime=true; //Start a WSPR or FST4W Tx sequence } else { -// This will be a WSPR or FST4W Rx sequence. + // This will be a WSPR or FST4W Rx sequence. m_ntr=1; //This says we will have received m_bTxTime=false; //Start a WSPR or FST4W Rx sequence } } } else { -// For all modes other than WSPR and Fst4W + // For all modes other than WSPR and Fst4W m_bTxTime = (t2p >= tx1) and (t2p < tx2); if(m_mode=="Echo") m_bTxTime = m_bTxTime and m_bEchoTxOK; if(m_mode=="FT8" and ui->tx5->currentText().contains("/B ")) { @@ -5756,8 +5757,6 @@ void MainWindow::on_tx6_editingFinished() //tx6 edited void MainWindow::on_RoundRobin_currentTextChanged(QString text) { ui->sbTxPercent->setEnabled (text == tr ("Random")); - m_WSPR_tx_next = false; // cancel any pending Tx to avoid - // undesirable consecutive Tx periods } @@ -8138,7 +8137,6 @@ void MainWindow::on_pbTxNext_clicked(bool b) { if (b && !ui->autoButton->isChecked ()) { - m_WSPR_tx_next = false; // cancel any pending start from schedule ui->autoButton->click (); // make sure Tx is possible } } From dad9199f2411e002dc2acca0a86c68bdc6684594 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Sat, 15 Aug 2020 14:31:18 -0400 Subject: [PATCH 37/50] Disable double-clicking on an FST4W decode. It serves no useful purpose. --- widgets/mainwindow.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index cceb990c0..8575f2bd3 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -4624,9 +4624,9 @@ void MainWindow::doubleClickOnCall2(Qt::KeyboardModifiers modifiers) void MainWindow::doubleClickOnCall(Qt::KeyboardModifiers modifiers) { QTextCursor cursor; - if(m_mode=="ISCAT") { + if(m_mode=="ISCAT" or m_mode=="FST4W") { MessageBox::information_message (this, - "Double-click not available for ISCAT mode"); + "Double-click not available for ISCAT or FST4W mode"); return; } if(m_decodedText2) { From 6adb7d2249e4703e9b31dcde9e08d93ae629cdb9 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sat, 15 Aug 2020 21:33:16 +0100 Subject: [PATCH 38/50] Non-repo files --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitignore b/.gitignore index 9c636d134..80e3c4b27 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,9 @@ ~* TAGS tags +GPATH +GRTAGS +GTAGS *~ junk* jnq* @@ -9,7 +12,9 @@ jnq* *.mod *.pro.user *.txt +*.bak !**/CMakeLists.txt +__pycache__ cmake-build-debug cmake-build-release CMakeFiles From b9843907116940f658149cdea113155c851dd381 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sat, 15 Aug 2020 23:29:53 +0100 Subject: [PATCH 39/50] Fix PSK Reporter spots of FST4W decodes with power <10 dBm --- widgets/mainwindow.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 059086c67..7040936c1 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -3505,9 +3505,8 @@ void MainWindow::readFromStdout() //readFromStdout bool okToPost=(nsec > int(4*m_TRperiod)/5); if(m_mode=="FST4W" and okToPost) { line_read=line_read.left(22) + " CQ " + line_read.trimmed().mid(22); - int n=line_read.trimmed().size(); - line_read=line_read.trimmed().left(n-3); - DecodedText FST4W_post {QString::fromUtf8(line_read.constData())}; + auto p = line_read.lastIndexOf (' '); + DecodedText FST4W_post {QString::fromUtf8 (line_read.left (p).constData ())}; pskPost(FST4W_post); } else { if (stdMsg && okToPost) pskPost(decodedtext); From 491a7b9a05baf7456ec4318170f9fdac6a533427 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sat, 15 Aug 2020 23:32:10 +0100 Subject: [PATCH 40/50] Ensure no connect with, or traffic to, PSK Reporter if not enabled --- Network/PSKReporter.cpp | 12 ++++++++++-- widgets/mainwindow.cpp | 10 ++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/Network/PSKReporter.cpp b/Network/PSKReporter.cpp index 59408c284..1776d8143 100644 --- a/Network/PSKReporter.cpp +++ b/Network/PSKReporter.cpp @@ -65,7 +65,6 @@ public: // This timer sets the interval to check for spots to send. connect (&report_timer_, &QTimer::timeout, [this] () {send_report ();}); - report_timer_.start (MIN_SEND_INTERVAL * 1000); // This timer repeats the sending of IPFIX templates and receiver // information if we are using UDP, in case server has been @@ -80,7 +79,6 @@ public: send_receiver_data_ = 3; // three times } }); - descriptor_timer_.start (1 * 60 * 60 * 1000); // hourly } void check_connection () @@ -156,6 +154,15 @@ public: // use this for pseudo connection with UDP, allows us to use // QIODevice::write() instead of QUDPSocket::writeDatagram() socket_->connectToHost (HOST, SERVICE_PORT, QAbstractSocket::WriteOnly); + + if (!report_timer_.isActive ()) + { + report_timer_.start (MIN_SEND_INTERVAL * 1000); + } + if (!descriptor_timer_.isActive ()) + { + descriptor_timer_.start (1 * 60 * 60 * 1000); // hourly + } } void send_report (bool send_residue = false); @@ -490,6 +497,7 @@ void PSKReporter::setLocalStation (QString const& call, QString const& gridSquar bool PSKReporter::addRemoteStation (QString const& call, QString const& grid, Radio::Frequency freq , QString const& mode, int snr) { + m_->check_connection (); if (m_->socket_ && m_->socket_->isValid ()) { if (QAbstractSocket::UnconnectedState == m_->socket_->state ()) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 7040936c1..3f0ded867 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -1814,7 +1814,7 @@ void MainWindow::on_actionSettings_triggered() //Setup Dialog on_dxGridEntry_textChanged (m_hisGrid); // recalculate distances in case of units change enable_DXCC_entity (m_config.DXCC ()); // sets text window proportions and (re)inits the logbook - if(m_config.spot_to_psk_reporter ()) pskSetLocal (); + pskSetLocal (); if(m_config.restart_audio_input ()) { Q_EMIT startAudioInputStream (m_config.audio_input_device () @@ -6864,7 +6864,11 @@ void MainWindow::band_changed (Frequency f) } m_lastBand.clear (); m_bandEdited = false; - m_psk_Reporter.sendReport(); // Upload any queued spots before changing band + if (m_config.spot_to_psk_reporter ()) + { + // Upload any queued spots before changing band + m_psk_Reporter.sendReport(); + } if (!m_transmitting) monitor (true); if ("FreqCal" == m_mode) { @@ -7539,6 +7543,8 @@ bool MainWindow::shortList(QString callsign) void MainWindow::pskSetLocal () { + if (!m_config.spot_to_psk_reporter ()) return; + // find the station row, if any, that matches the band we are on auto stations = m_config.stations (); auto matches = stations->match (stations->index (0, StationList::band_column) From 50da40413f29e5122f921f81b4f84c2fa0906db3 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sun, 16 Aug 2020 00:38:19 +0100 Subject: [PATCH 41/50] PSK Reporter connection opened & closed at the correct times --- Network/PSKReporter.cpp | 22 ++++++++++++++++++++-- Network/PSKReporter.hpp | 2 +- widgets/mainwindow.cpp | 11 ++++++++--- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/Network/PSKReporter.cpp b/Network/PSKReporter.cpp index 1776d8143..59c5f2f0a 100644 --- a/Network/PSKReporter.cpp +++ b/Network/PSKReporter.cpp @@ -165,6 +165,16 @@ public: } } + void stop () + { + if (socket_) + { + socket_->disconnectFromHost (); + } + descriptor_timer_.stop (); + report_timer_.stop (); + } + void send_report (bool send_residue = false); void build_preamble (QDataStream&); @@ -484,6 +494,7 @@ void PSKReporter::reconnect () void PSKReporter::setLocalStation (QString const& call, QString const& gridSquare, QString const& antenna) { + m_->check_connection (); if (call != m_->rx_call_ || gridSquare != m_->rx_grid_ || antenna != m_->rx_ant_) { m_->send_receiver_data_ = m_->socket_ @@ -510,7 +521,14 @@ bool PSKReporter::addRemoteStation (QString const& call, QString const& grid, Ra return false; } -void PSKReporter::sendReport () +void PSKReporter::sendReport (bool last) { - m_->send_report (true); + if (m_->socket_ && QAbstractSocket::ConnectedState == m_->socket_->state ()) + { + m_->send_report (true); + } + if (last) + { + m_->stop (); + } } diff --git a/Network/PSKReporter.hpp b/Network/PSKReporter.hpp index 3582b5850..1757e63af 100644 --- a/Network/PSKReporter.hpp +++ b/Network/PSKReporter.hpp @@ -29,7 +29,7 @@ public: // // Flush any pending spots to PSK Reporter // - void sendReport (); + void sendReport (bool last = false); Q_SIGNAL void errorOccurred (QString const& reason); diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 3f0ded867..829fdf1c6 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -1801,6 +1801,7 @@ void MainWindow::on_actionSettings_triggered() //Setup Dialog auto callsign = m_config.my_callsign (); auto my_grid = m_config.my_grid (); SpecOp nContest0=m_config.special_op_id(); + auto psk_on = m_config.spot_to_psk_reporter (); if (QDialog::Accepted == m_config.exec ()) { checkMSK144ContestType(); if (m_config.my_callsign () != callsign) { @@ -1815,6 +1816,12 @@ void MainWindow::on_actionSettings_triggered() //Setup Dialog enable_DXCC_entity (m_config.DXCC ()); // sets text window proportions and (re)inits the logbook pskSetLocal (); + // this will close the connection to PSKReporter if it has been + // disabled + if (psk_on && !m_config.spot_to_psk_reporter ()) + { + m_psk_Reporter.sendReport (true); + } if(m_config.restart_audio_input ()) { Q_EMIT startAudioInputStream (m_config.audio_input_device () @@ -7238,9 +7245,7 @@ void MainWindow::handle_transceiver_update (Transceiver::TransceiverState const& || !(ui->cbCQTx->isEnabled () && ui->cbCQTx->isVisible () && ui->cbCQTx->isChecked()))) { m_lastDialFreq = m_freqNominal; m_secBandChanged=QDateTime::currentMSecsSinceEpoch()/1000; - if (m_config.spot_to_psk_reporter ()) { - pskSetLocal (); - } + pskSetLocal (); statusChanged(); m_wideGraph->setDialFreq(m_freqNominal / 1.e6); } From 65f994ce90a758906b2a764fb48fb382bb32699d Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sun, 16 Aug 2020 00:55:29 +0100 Subject: [PATCH 42/50] Improved audio stream error handling --- Audio/soundout.cpp | 75 ++++++++++-------- Audio/soundout.h | 2 + Configuration.cpp | 166 +++++++++++++++++++++++++--------------- Modulator/Modulator.cpp | 11 ++- 4 files changed, 162 insertions(+), 92 deletions(-) diff --git a/Audio/soundout.cpp b/Audio/soundout.cpp index 16a515370..40eff6012 100644 --- a/Audio/soundout.cpp +++ b/Audio/soundout.cpp @@ -43,45 +43,60 @@ bool SoundOutput::audioError () const void SoundOutput::setFormat (QAudioDeviceInfo const& device, unsigned channels, int frames_buffered) { - Q_ASSERT (0 < channels && channels < 3); - - m_framesBuffered = frames_buffered; - - QAudioFormat format (device.preferredFormat ()); -// qDebug () << "Preferred audio output format:" << format; - format.setChannelCount (channels); - format.setCodec ("audio/pcm"); - format.setSampleRate (48000); - format.setSampleType (QAudioFormat::SignedInt); - format.setSampleSize (16); - format.setByteOrder (QAudioFormat::Endian (QSysInfo::ByteOrder)); - if (!format.isValid ()) + if (!device.isNull ()) { - Q_EMIT error (tr ("Requested output audio format is not valid.")); + Q_ASSERT (0 < channels && channels < 3); + + m_framesBuffered = frames_buffered; + + QAudioFormat format (device.preferredFormat ()); + // qDebug () << "Preferred audio output format:" << format; + format.setChannelCount (channels); + format.setCodec ("audio/pcm"); + format.setSampleRate (48000); + format.setSampleType (QAudioFormat::SignedInt); + format.setSampleSize (16); + format.setByteOrder (QAudioFormat::Endian (QSysInfo::ByteOrder)); + if (!format.isValid ()) + { + Q_EMIT error (tr ("Requested output audio format is not valid.")); + } + else if (!device.isFormatSupported (format)) + { + Q_EMIT error (tr ("Requested output audio format is not supported on device.")); + } + else + { + // qDebug () << "Selected audio output format:" << format; + + m_stream.reset (new QAudioOutput (device, format)); + audioError (); + m_stream->setVolume (m_volume); + m_stream->setNotifyInterval(100); + error_ = false; + + connect (m_stream.data(), &QAudioOutput::stateChanged, this, &SoundOutput::handleStateChanged); + + // qDebug() << "A" << m_volume << m_stream->notifyInterval(); + } } - else if (!device.isFormatSupported (format)) - { - Q_EMIT error (tr ("Requested output audio format is not supported on device.")); - } - qDebug () << "Selected audio output format:" << format; - - m_stream.reset (new QAudioOutput (device, format)); - audioError (); - m_stream->setVolume (m_volume); - m_stream->setNotifyInterval(100); - - connect (m_stream.data(), &QAudioOutput::stateChanged, this, &SoundOutput::handleStateChanged); - - // qDebug() << "A" << m_volume << m_stream->notifyInterval(); } void SoundOutput::restart (QIODevice * source) { if (!m_stream) { - Q_EMIT error (tr ("No audio output device configured.")); + if (!error_) + { + error_ = true; // only signal error once + Q_EMIT error (tr ("No audio output device configured.")); + } return; } + else + { + error_ = false; + } // we have to set this before every start on the stream because the // Windows implementation seems to forget the buffer size after a @@ -95,7 +110,7 @@ void SoundOutput::restart (QIODevice * source) } m_stream->setCategory ("production"); m_stream->start (source); - //qDebug () << "SoundOut selected buffer size (bytes):" << m_stream->bufferSize () << "period size:" << m_stream->periodSize (); + // qDebug () << "SoundOut selected buffer size (bytes):" << m_stream->bufferSize () << "period size:" << m_stream->periodSize (); } void SoundOutput::suspend () diff --git a/Audio/soundout.h b/Audio/soundout.h index 2699176f3..c46e1563f 100644 --- a/Audio/soundout.h +++ b/Audio/soundout.h @@ -20,6 +20,7 @@ public: SoundOutput () : m_framesBuffered {0} , m_volume {1.0} + , error_ {false} { } @@ -49,6 +50,7 @@ private: QScopedPointer m_stream; int m_framesBuffered; qreal m_volume; + bool error_; }; #endif diff --git a/Configuration.cpp b/Configuration.cpp index 59be7f867..f72ab5ae9 100644 --- a/Configuration.cpp +++ b/Configuration.cpp @@ -433,9 +433,13 @@ private: void write_settings (); Q_SLOT void lazy_models_load (int); + void find_audio_devices (); + QAudioDeviceInfo find_audio_device (QAudio::Mode, QComboBox *, QString const& device_name); void load_audio_devices (QAudio::Mode, QComboBox *, QAudioDeviceInfo *); void update_audio_channels (QComboBox const *, int, QComboBox *, bool); + void find_tab (QWidget *); + void initialize_models (); bool split_mode () const { @@ -1193,7 +1197,7 @@ Configuration::impl::impl (Configuration * self, QNetworkAccessManager * network ui_->highlighting_list_view->setModel (&next_decode_highlighing_model_); enumerate_rigs (); - initialize_models (); + // initialize_models (); transceiver_thread_ = new QThread {this}; transceiver_thread_->start (); @@ -1231,6 +1235,10 @@ void Configuration::impl::lazy_models_load (int current_tab_index) void Configuration::impl::initialize_models () { + { + SettingsGroup g {settings_, "Configuration"}; + find_audio_devices (); + } auto pal = ui_->callsign_line_edit->palette (); if (my_callsign_.isEmpty ()) { @@ -1405,39 +1413,7 @@ void Configuration::impl::read_settings () save_directory_.setPath (settings_->value ("SaveDir", default_save_directory_.absolutePath ()).toString ()); azel_directory_.setPath (settings_->value ("AzElDir", default_azel_directory_.absolutePath ()).toString ()); - { - // - // retrieve audio input device - // - auto saved_name = settings_->value ("SoundInName").toString (); - Q_FOREACH (auto const& p, QAudioDeviceInfo::availableDevices (QAudio::AudioInput)) // available audio input devices - { - if (p.deviceName () == saved_name) - { - audio_input_device_ = p; - break; - } - } - } - - { - // - // retrieve audio output device - // - auto saved_name = settings_->value("SoundOutName").toString(); - Q_FOREACH (auto const& p, QAudioDeviceInfo::availableDevices (QAudio::AudioOutput)) // available audio output devices - { - if (p.deviceName () == saved_name) - { - audio_output_device_ = p; - break; - } - } - } - - // retrieve audio channel info - audio_input_channel_ = AudioDevice::fromString (settings_->value ("AudioInputChannel", "Mono").toString ()); - audio_output_channel_ = AudioDevice::fromString (settings_->value ("AudioOutputChannel", "Mono").toString ()); + find_audio_devices (); type_2_msg_gen_ = settings_->value ("Type2MsgGen", QVariant::fromValue (Configuration::type_2_msg_3_full)).value (); @@ -1540,6 +1516,27 @@ void Configuration::impl::read_settings () pwrBandTuneMemory_ = settings_->value("pwrBandTuneMemory",false).toBool (); } +void Configuration::impl::find_audio_devices () +{ + // + // retrieve audio input device + // + auto saved_name = settings_->value ("SoundInName").toString (); + audio_input_device_ = find_audio_device (QAudio::AudioInput, ui_->sound_input_combo_box, saved_name); + audio_input_channel_ = AudioDevice::fromString (settings_->value ("AudioInputChannel", "Mono").toString ()); + update_audio_channels (ui_->sound_input_combo_box, ui_->sound_input_combo_box->currentIndex (), ui_->sound_input_channel_combo_box, false); + ui_->sound_input_channel_combo_box->setCurrentIndex (audio_input_channel_); + + // + // retrieve audio output device + // + saved_name = settings_->value("SoundOutName").toString(); + audio_output_channel_ = AudioDevice::fromString (settings_->value ("AudioOutputChannel", "Mono").toString ()); + audio_output_device_ = find_audio_device (QAudio::AudioOutput, ui_->sound_output_combo_box, saved_name); + update_audio_channels (ui_->sound_output_combo_box, ui_->sound_output_combo_box->currentIndex (), ui_->sound_output_channel_combo_box, true); + ui_->sound_output_channel_combo_box->setCurrentIndex (audio_output_channel_); +} + void Configuration::impl::write_settings () { SettingsGroup g {settings_, "Configuration"}; @@ -1634,6 +1631,7 @@ void Configuration::impl::write_settings () settings_->setValue ("pwrBandTuneMemory", pwrBandTuneMemory_); settings_->setValue ("Region", QVariant::fromValue (region_)); settings_->setValue ("AutoGrid", use_dynamic_grid_); + settings_->sync (); } void Configuration::impl::set_rig_invariants () @@ -1765,15 +1763,27 @@ void Configuration::impl::set_rig_invariants () bool Configuration::impl::validate () { - if (ui_->sound_input_combo_box->currentIndex () < 0) + if (ui_->sound_input_combo_box->currentIndex () < 0 + && audio_input_device_.isNull ()) { + find_tab (ui_->sound_input_combo_box); MessageBox::critical_message (this, tr ("Invalid audio input device")); return false; } - if (ui_->sound_output_combo_box->currentIndex () < 0) + if (ui_->sound_input_channel_combo_box->currentIndex () < 0 + && audio_input_device_.isNull ()) { - MessageBox::warning_message (this, tr ("Invalid audio output device")); + find_tab (ui_->sound_input_combo_box); + MessageBox::critical_message (this, tr ("Invalid audio input device")); + return false; + } + + if (ui_->sound_output_combo_box->currentIndex () < 0 + && audio_output_device_.isNull ()) + { + find_tab (ui_->sound_output_combo_box); + MessageBox::information_message (this, tr ("Invalid audio output device")); // don't reject as we can work without an audio output } @@ -1796,16 +1806,7 @@ bool Configuration::impl::validate () if (ui_->rbField_Day->isEnabled () && ui_->rbField_Day->isChecked () && !ui_->Field_Day_Exchange->hasAcceptableInput ()) { - for (auto * parent = ui_->Field_Day_Exchange->parentWidget (); parent; parent = parent->parentWidget ()) - { - auto index = ui_->configuration_tabs->indexOf (parent); - if (index != -1) - { - ui_->configuration_tabs->setCurrentIndex (index); - break; - } - } - ui_->Field_Day_Exchange->setFocus (); + find_tab (ui_->Field_Day_Exchange); MessageBox::critical_message (this, tr ("Invalid Contest Exchange") , tr ("You must input a valid ARRL Field Day exchange")); return false; @@ -1814,16 +1815,7 @@ bool Configuration::impl::validate () if (ui_->rbRTTY_Roundup->isEnabled () && ui_->rbRTTY_Roundup->isChecked () && !ui_->RTTY_Exchange->hasAcceptableInput ()) { - for (auto * parent = ui_->RTTY_Exchange->parentWidget (); parent; parent = parent->parentWidget ()) - { - auto index = ui_->configuration_tabs->indexOf (parent); - if (index != -1) - { - ui_->configuration_tabs->setCurrentIndex (index); - break; - } - } - ui_->RTTY_Exchange->setFocus (); + find_tab (ui_->RTTY_Exchange); MessageBox::critical_message (this, tr ("Invalid Contest Exchange") , tr ("You must input a valid ARRL RTTY Roundup exchange")); return false; @@ -2618,6 +2610,7 @@ void Configuration::impl::transceiver_frequency (Frequency f) current_offset_ = stations_.offset (f); cached_rig_state_.frequency (apply_calibration (f + current_offset_)); + qDebug () << "Configuration::impl::transceiver_frequency: n:" << transceiver_command_number_ + 1 << "f:" << f; Q_EMIT set_transceiver (cached_rig_state_, ++transceiver_command_number_); } @@ -2643,6 +2636,7 @@ void Configuration::impl::transceiver_tx_frequency (Frequency f) cached_rig_state_.tx_frequency (apply_calibration (f + current_tx_offset_)); } + qDebug () << "Configuration::impl::transceiver_tx_frequency: n:" << transceiver_command_number_ + 1 << "f:" << f; Q_EMIT set_transceiver (cached_rig_state_, ++transceiver_command_number_); } } @@ -2651,6 +2645,7 @@ void Configuration::impl::transceiver_mode (MODE m) { cached_rig_state_.online (true); // we want the rig online cached_rig_state_.mode (m); + qDebug () << "Configuration::impl::transceiver_mode: n:" << transceiver_command_number_ + 1 << "m:" << m; Q_EMIT set_transceiver (cached_rig_state_, ++transceiver_command_number_); } @@ -2659,6 +2654,7 @@ void Configuration::impl::transceiver_ptt (bool on) cached_rig_state_.online (true); // we want the rig online set_cached_mode (); cached_rig_state_.ptt (on); + qDebug () << "Configuration::impl::transceiver_ptt: n:" << transceiver_command_number_ + 1 << "on:" << on; Q_EMIT set_transceiver (cached_rig_state_, ++transceiver_command_number_); } @@ -2757,8 +2753,11 @@ void Configuration::impl::close_rig () } } -// load the available audio devices into the selection combo box -void Configuration::impl::load_audio_devices (QAudio::Mode mode, QComboBox * combo_box, QAudioDeviceInfo * device) +// find the audio device that matches the specified name, also +// populate into the selection combo box with any devices we find in +// the search +QAudioDeviceInfo Configuration::impl::find_audio_device (QAudio::Mode mode, QComboBox * combo_box + , QString const& device_name) { using std::copy; using std::back_inserter; @@ -2766,7 +2765,40 @@ void Configuration::impl::load_audio_devices (QAudio::Mode mode, QComboBox * com combo_box->clear (); int current_index = -1; - Q_FOREACH (auto const& p, QAudioDeviceInfo::availableDevices (mode)) + auto const& devices = QAudioDeviceInfo::availableDevices (mode); + Q_FOREACH (auto const& p, devices) + { + // qDebug () << "Audio device: input:" << (QAudio::AudioInput == mode) << "name:" << p.deviceName () << "preferred format:" << p.preferredFormat () << "endians:" << p.supportedByteOrders () << "codecs:" << p.supportedCodecs () << "channels:" << p.supportedChannelCounts () << "rates:" << p.supportedSampleRates () << "sizes:" << p.supportedSampleSizes () << "types:" << p.supportedSampleTypes (); + + // convert supported channel counts into something we can store in the item model + QList channel_counts; + auto scc = p.supportedChannelCounts (); + copy (scc.cbegin (), scc.cend (), back_inserter (channel_counts)); + + combo_box->addItem (p.deviceName (), QVariant::fromValue (audio_info_type {p, channel_counts})); + if (p.deviceName () == device_name) + { + current_index = combo_box->count () - 1; + combo_box->setCurrentIndex (current_index); + return p; + } + } + combo_box->setCurrentIndex (current_index); + return {}; +} + +// load the available audio devices into the selection combo box +void Configuration::impl::load_audio_devices (QAudio::Mode mode, QComboBox * combo_box + , QAudioDeviceInfo * device) +{ + using std::copy; + using std::back_inserter; + + combo_box->clear (); + + int current_index = -1; + auto const& devices = QAudioDeviceInfo::availableDevices (mode); + Q_FOREACH (auto const& p, devices) { // qDebug () << "Audio device: input:" << (QAudio::AudioInput == mode) << "name:" << p.deviceName () << "preferred format:" << p.preferredFormat () << "endians:" << p.supportedByteOrders () << "codecs:" << p.supportedCodecs () << "channels:" << p.supportedChannelCounts () << "rates:" << p.supportedSampleRates () << "sizes:" << p.supportedSampleSizes () << "types:" << p.supportedSampleTypes (); @@ -2814,6 +2846,20 @@ void Configuration::impl::update_audio_channels (QComboBox const * source_combo_ } } +void Configuration::impl::find_tab (QWidget * target) +{ + for (auto * parent = target->parentWidget (); parent; parent = parent->parentWidget ()) + { + auto index = ui_->configuration_tabs->indexOf (parent); + if (index != -1) + { + ui_->configuration_tabs->setCurrentIndex (index); + break; + } + } + target->setFocus (); +} + // load all the supported rig names into the selection combo box void Configuration::impl::enumerate_rigs () { diff --git a/Modulator/Modulator.cpp b/Modulator/Modulator.cpp index e99b21a46..df365c507 100644 --- a/Modulator/Modulator.cpp +++ b/Modulator/Modulator.cpp @@ -105,7 +105,14 @@ void Modulator::start (QString mode, unsigned symbolsLength, double framesPerSym // qDebug() << "delay_ms:" << delay_ms << "mstr:" << mstr << "m_silentFrames:" << m_silentFrames << "m_ic:" << m_ic << "m_state:" << m_state; m_stream = stream; - if (m_stream) m_stream->restart (this); + if (m_stream) + { + m_stream->restart (this); + } + else + { + qDebug () << "Modulator::start: no audio output stream assigned"; + } } void Modulator::tune (bool newState) @@ -142,7 +149,7 @@ void Modulator::close () qint64 Modulator::readData (char * data, qint64 maxSize) { - //qDebug () << "readData: maxSize:" << maxSize; + // qDebug () << "readData: maxSize:" << maxSize; double toneFrequency=1500.0; if(m_nsps==6) { From 536e6568a62d30f761704924c7166ed7d28d128e Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sun, 16 Aug 2020 02:34:18 +0100 Subject: [PATCH 43/50] FST4* messages do not need padding out to 37 characters --- widgets/mainwindow.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 829fdf1c6..c50010c66 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -3294,7 +3294,8 @@ void MainWindow::readFromStdout() //readFromStdout line_read = line_read.left (64); } } - if(m_mode!="FT8" and m_mode!="FT4") { + if (m_mode!="FT8" and m_mode!="FT4" + && !m_mode.startsWith ("FST4")) { //Pad 22-char msg to at least 37 chars line_read = line_read.left(44) + " " + line_read.mid(44); } From 7bf086dc5369d1d2fe64af8314cefd39ae63c2e4 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sun, 16 Aug 2020 02:56:48 +0100 Subject: [PATCH 44/50] Updated ADIF band bounds --- models/Bands.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/Bands.cpp b/models/Bands.cpp index 832c36185..f8d7872f2 100644 --- a/models/Bands.cpp +++ b/models/Bands.cpp @@ -15,14 +15,14 @@ namespace Radio::Frequency lower_bound_; Radio::Frequency upper_bound_; } constexpr ADIF_bands[] = { - {"2190m", 136000u, 137000u}, + {"2190m", 135700u, 137800u}, {"630m", 472000u, 479000u}, {"560m", 501000u, 504000u}, {"160m", 1800000u, 2000000u}, {"80m", 3500000u, 4000000u}, {"60m", 5060000u, 5450000u}, {"40m", 7000000u, 7300000u}, - {"30m", 10000000u, 10150000u}, + {"30m", 10100000u, 10150000u}, {"20m", 14000000u, 14350000u}, {"17m", 18068000u, 18168000u}, {"15m", 21000000u, 21450000u}, From 1b36183057c0c73084da5f90e886bbc4c5d67fa3 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sun, 16 Aug 2020 03:01:16 +0100 Subject: [PATCH 45/50] Reduce debug message length --- main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.cpp b/main.cpp index c167a0396..a3cb166a4 100644 --- a/main.cpp +++ b/main.cpp @@ -97,7 +97,7 @@ namespace int main(int argc, char *argv[]) { // ### Add timestamps to all debug messages - qSetMessagePattern ("[%{time yyyyMMdd HH:mm:ss.zzz t} %{if-debug}D%{endif}%{if-info}I%{endif}%{if-warning}W%{endif}%{if-critical}C%{endif}%{if-fatal}F%{endif}] %{message}"); + // qSetMessagePattern ("[%{time yyyyMMdd HH:mm:ss.zzz t} %{if-debug}D%{endif}%{if-info}I%{endif}%{if-warning}W%{endif}%{if-critical}C%{endif}%{if-fatal}F%{endif}] %{message}"); init_random_seed (); From 549198566b2b1a7a291de115e5aaeb0b6162af56 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sun, 16 Aug 2020 18:06:26 +0100 Subject: [PATCH 46/50] Linux package dependency updates --- CMakeLists.txt | 4 ++-- doc/user_guide/en/install-linux.adoc | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index be835a24d..d414b0db1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1854,11 +1854,11 @@ endif () set (CPACK_DEBIAN_PACKAGE_DESCRIPTION "${PROJECT_DESCRIPTION}") set (CPACK_DEBIAN_PACKAGE_HOMEPAGE "${PROJECT_HOMEPAGE}") -set (CPACK_DEBIAN_PACKAGE_DEPENDS "libgfortran4 (>=7.3.0), libfftw3-single3 (>=3.3.7), libgomp1 (>8), libqt5serialport5 (>=5.9.5), libqt5multimedia5-plugins (>=5.9.5), libqt5widgets5 (>=5.9.5), libqt5network5 (>=5.9.5), libqt5printsupport5 (>=5.9.5), libqt5sql5-sqlite (>=5.9.5), libusb-1.0-0 (>=1.0.21)") +set (CPACK_DEBIAN_PACKAGE_DEPENDS "libgfortran5 (>=10), libfftw3-single3 (>=3.3.8), libgomp1 (>=10), libqt5serialport5 (>=5.12.8), libqt5multimedia5-plugins (>=5.12.8), libqt5widgets5 (>=5.12.8), libqt5network5 (>=5.12.8), libqt5printsupport5 (>=5.12.8), libqt5sql5-sqlite (>=5.12.8), libusb-1.0-0 (>=1.0.23)") set (CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) set (CPACK_RPM_PACKAGE_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR}) -set (CPACK_RPM_PACKAGE_REQUIRES "qt5-qtbase >= 5.6, qt5-qtserialport >= 5.6, qt5-qtmultimedia >= 5.6, qt5-qtsvg >= 5.6, libusbx >= 1.0.23, libgfortran >= 4.7, fftw-libs-double > 3.3.8, fftw-libs-single > 3.3.8") +set (CPACK_RPM_PACKAGE_REQUIRES "qt5-qtbase >= 5.13.2, qt5-qtserialport >= 5.13.2, qt5-qtmultimedia >= 5.13.2, qt5-qtsvg >= 5.13.2, libusbx >= 1.0.23, libgfortran >= 10.0.1, fftw-libs-double > 3.3.8, fftw-libs-single > 3.3.8") set (CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION /usr/share/pixmaps /usr/share/applications /usr/share/man /usr/share/man1) configure_file ("${PROJECT_SOURCE_DIR}/CMakeCPackOptions.cmake.in" diff --git a/doc/user_guide/en/install-linux.adoc b/doc/user_guide/en/install-linux.adoc index b3075d66a..c4b6ab155 100644 --- a/doc/user_guide/en/install-linux.adoc +++ b/doc/user_guide/en/install-linux.adoc @@ -43,7 +43,9 @@ sudo dpkg -P wsjtx You may also need to execute the following command in a terminal: [example] -sudo apt install libqt5multimedia5-plugins libqt5serialport5 libqt5sql5-sqlite libfftw3-single3 +sudo apt install libgfortran5 libqt5widgets5 libqt5network5 \ + libqt5printsupport5 libqt5multimedia5-plugins libqt5serialport5 \ + libqt5sql5-sqlite libfftw3-single3 libgomp1 libusb-1.0-0 Fedora, CentOS, Red Hat, and other rpm-based systems: @@ -72,4 +74,6 @@ sudo rpm -e wsjtx You may also need to execute the following command in a terminal: [example] -sudo dnf install fftw-libs-single qt5-qtmultimedia qt5-qtserialport +sudo dnf install libgfortran fftw-libs-single qt5-qtbase \ + qt5-qtmultimedia qt5-qtserialport fftw-libs-double \ + qt5-qtsvg qt5-qtserialport libgomp1 libusbx From fb7af6c696a9445f81ea8841ebbdf36ce3d64fc8 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sun, 16 Aug 2020 19:11:51 +0100 Subject: [PATCH 47/50] Further Linux dependency and install documentation updates --- CMakeLists.txt | 2 +- doc/user_guide/en/install-linux.adoc | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d414b0db1..87d0cb227 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1858,7 +1858,7 @@ set (CPACK_DEBIAN_PACKAGE_DEPENDS "libgfortran5 (>=10), libfftw3-single3 (>=3.3. set (CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) set (CPACK_RPM_PACKAGE_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR}) -set (CPACK_RPM_PACKAGE_REQUIRES "qt5-qtbase >= 5.13.2, qt5-qtserialport >= 5.13.2, qt5-qtmultimedia >= 5.13.2, qt5-qtsvg >= 5.13.2, libusbx >= 1.0.23, libgfortran >= 10.0.1, fftw-libs-double > 3.3.8, fftw-libs-single > 3.3.8") +set (CPACK_RPM_PACKAGE_REQUIRES "qt5-qtbase >= 5.13.2, qt5-qtserialport >= 5.13.2, qt5-qtmultimedia >= 5.13.2, qt5-qtsvg >= 5.13.2, libusbx >= 1.0.23, libgfortran >= 10.0.1, libgomp >= 10.0.1, fftw-libs-double > 3.3.8, fftw-libs-single > 3.3.8") set (CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION /usr/share/pixmaps /usr/share/applications /usr/share/man /usr/share/man1) configure_file ("${PROJECT_SOURCE_DIR}/CMakeCPackOptions.cmake.in" diff --git a/doc/user_guide/en/install-linux.adoc b/doc/user_guide/en/install-linux.adoc index c4b6ab155..0df12e5f5 100644 --- a/doc/user_guide/en/install-linux.adoc +++ b/doc/user_guide/en/install-linux.adoc @@ -43,9 +43,11 @@ sudo dpkg -P wsjtx You may also need to execute the following command in a terminal: [example] +.... sudo apt install libgfortran5 libqt5widgets5 libqt5network5 \ libqt5printsupport5 libqt5multimedia5-plugins libqt5serialport5 \ libqt5sql5-sqlite libfftw3-single3 libgomp1 libusb-1.0-0 +.... Fedora, CentOS, Red Hat, and other rpm-based systems: @@ -74,6 +76,8 @@ sudo rpm -e wsjtx You may also need to execute the following command in a terminal: [example] +.... sudo dnf install libgfortran fftw-libs-single qt5-qtbase \ qt5-qtmultimedia qt5-qtserialport fftw-libs-double \ - qt5-qtsvg qt5-qtserialport libgomp1 libusbx + qt5-qtsvg qt5-qtserialport libgomp libusbx +.... From 3d45e1128abbcce8740ba527fbd8a16886fa2b08 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sun, 16 Aug 2020 19:50:34 +0100 Subject: [PATCH 48/50] Further Linux depedency and User Guide updates --- CMakeLists.txt | 4 ++-- doc/user_guide/en/install-linux.adoc | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 87d0cb227..01ec7727e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -888,7 +888,7 @@ find_package (OpenMP) # # fftw3 single precision library # -find_package (FFTW3 COMPONENTS double single threads REQUIRED) +find_package (FFTW3 COMPONENTS single threads REQUIRED) # # libhamlib setup @@ -1858,7 +1858,7 @@ set (CPACK_DEBIAN_PACKAGE_DEPENDS "libgfortran5 (>=10), libfftw3-single3 (>=3.3. set (CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) set (CPACK_RPM_PACKAGE_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR}) -set (CPACK_RPM_PACKAGE_REQUIRES "qt5-qtbase >= 5.13.2, qt5-qtserialport >= 5.13.2, qt5-qtmultimedia >= 5.13.2, qt5-qtsvg >= 5.13.2, libusbx >= 1.0.23, libgfortran >= 10.0.1, libgomp >= 10.0.1, fftw-libs-double > 3.3.8, fftw-libs-single > 3.3.8") +set (CPACK_RPM_PACKAGE_REQUIRES "qt5-qtbase >= 5.13.2, qt5-qtserialport >= 5.13.2, qt5-qtmultimedia >= 5.13.2, qt5-qtsvg >= 5.13.2, libusbx >= 1.0.23, libgfortran >= 10.0.1, libgomp >= 10.0.1, fftw-libs-single >= 3.3.8") set (CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION /usr/share/pixmaps /usr/share/applications /usr/share/man /usr/share/man1) configure_file ("${PROJECT_SOURCE_DIR}/CMakeCPackOptions.cmake.in" diff --git a/doc/user_guide/en/install-linux.adoc b/doc/user_guide/en/install-linux.adoc index 0df12e5f5..ad905f32d 100644 --- a/doc/user_guide/en/install-linux.adoc +++ b/doc/user_guide/en/install-linux.adoc @@ -78,6 +78,6 @@ You may also need to execute the following command in a terminal: [example] .... sudo dnf install libgfortran fftw-libs-single qt5-qtbase \ - qt5-qtmultimedia qt5-qtserialport fftw-libs-double \ - qt5-qtsvg qt5-qtserialport libgomp libusbx + qt5-qtmultimedia qt5-qtserialport qt5-qtsvg \ + qt5-qtserialport libgomp libusbx .... From 2cd679f71cafd3a01849f384109f7b4c6a8f5dd2 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Mon, 17 Aug 2020 01:48:26 +0100 Subject: [PATCH 49/50] Fix broken CAT initialization --- Configuration.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Configuration.cpp b/Configuration.cpp index f72ab5ae9..1f94b83e8 100644 --- a/Configuration.cpp +++ b/Configuration.cpp @@ -1197,7 +1197,7 @@ Configuration::impl::impl (Configuration * self, QNetworkAccessManager * network ui_->highlighting_list_view->setModel (&next_decode_highlighing_model_); enumerate_rigs (); - // initialize_models (); + initialize_models (); transceiver_thread_ = new QThread {this}; transceiver_thread_->start (); From b1c53bc33274c7ef200256c3d9f66d6f0985186c Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Mon, 17 Aug 2020 01:52:47 +0100 Subject: [PATCH 50/50] Fix a cosmetic FT6 DXpedition mode Hound issue that causes an assert --- widgets/mainwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index c50010c66..712e29d38 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -6160,7 +6160,7 @@ void MainWindow::on_actionFT8_triggered() ui->cbAutoSeq->setEnabled(false); ui->tabWidget->setCurrentIndex(0); ui->cbHoldTxFreq->setChecked(true); - displayWidgets(nWidgets("11101000010011000001000000000011000")); + displayWidgets(nWidgets("1110100001001100000100000000001100")); ui->labDXped->setText(tr ("Hound")); ui->txrb1->setChecked(true); ui->txrb2->setEnabled(false);