rbn, ve7cc improvements and fixes
authorDirk Koopman <djk@tobit.co.uk>
Wed, 29 Jul 2020 22:46:38 +0000 (23:46 +0100)
committerDirk Koopman <djk@tobit.co.uk>
Wed, 29 Jul 2020 22:46:38 +0000 (23:46 +0100)
1. Add show/rbn command that allows one to see who is online and configured
   for RBN. See help sh/rbn for details.
2. Fixed issue with set/ve7cc mode adding unwanted newlines to output.
3. Attempted to make the QRG normalisation more "intelligent". This would be
   sooooooooo much easier if skimmers were calibrated more accurately.
4. Added CTY-3012 prefixes.

12 files changed:
Changes
cmd/show/rbn.pl
data/cty.dat
data/prefix_data.pl
data/wpxloc.raw
perl/DXCommandmode.pm
perl/DXMsg.pm
perl/DXProtout.pm
perl/RBN.pm
perl/Spot.pm
perl/VE7CC.pm
perl/cluster.pl

diff --git a/Changes b/Changes
index cab2924483a6d07ecf3e2068048c59c6088ea7c2..69b71f5d6df95fbc48472d5e783f3615b4933519 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,3 +1,10 @@
+29Jul20=======================================================================
+1. Add show/rbn command that allows one to see who is online and configured
+   for RBN. See help sh/rbn for details.
+2. Fixed issue with set/ve7cc mode adding unwanted newlines to output.
+3. Attempted to make the QRG normalisation more "intelligent". This would be
+   sooooooooo much easier if skimmers were calibrated more accurately.
+4. Added CTY-3012 prefixes.
 23Jul20=======================================================================
 1. fix Filtering so that it does less of what it was doing badly, thus 
    the perl interpreter to do more of the work. Which means you *should* be
index e09daca7066f1f999d029ce636f6ac8d17f0e78c..2bb8a0ee7188570518e974511eab1ccfb8b19860 100644 (file)
@@ -1,19 +1,14 @@
 #
-# show/node [<node> | <node> ] 
+# show/rbn [all|<call>,,,]
 # 
-# This command either lists all nodes known about 
-# or the ones specified on the command line together
-# with some information that is relavent to them 
-#
-# This command isn't and never will be compatible with AK1A
-#
-# A special millenium treat just for G4PDQ
-#
-# Copyright (c) 2000 Dirk Koopman G1TLH
-#
+# This command either lists all rbn users known about (sh/rbn all)
+# or the ones specified on the command line, If no arguments are present
+# then it will list all connected rbn/skimmer users.
 #
+# Copyright (c) 2020 Dirk Koopman G1TLH
 #
 
+
 my ($self, $line) = @_;
 return (1, $self->msg('e5')) unless $self->priv >= 1;
 
@@ -23,7 +18,7 @@ my $count;
 
 # search thru the user
 if (@call == 0) {
-       @call = map{$_->call} grep {$_->user->call && $_->user->wantrbn} DXChannel::get_all_users();
+       @call = sort map{$_->call} grep {$_->user->call && $_->user->wantrbn} DXChannel::get_all_users();
 } elsif ($call[0] eq 'ALL') {
        shift @call;
        my ($action, $key, $data) = (0,0,0);
@@ -47,8 +42,10 @@ foreach my $call (@call) {
        }
        ++$count;
 }
-push @l, "" while @l < 5;
-push @out, sprintf "%-12s %-12s %-12s %-12s %-12s", @l;
+if (@l) {
+       push @l, "" while @l < 5;
+       push @out, sprintf "%-12s %-12s %-12s %-12s %-12s", @l;
+}
        
 
 return (1, @out, $self->msg('rec', $count));
index c3d805fe0a0a9cdbbcfb80ab1d3cfd507eeabf6b..dd05ec8d1560576b6a97352e4dd0736adfd3b903 100644 (file)
@@ -277,11 +277,11 @@ China:                    24:  44:  AS:   36.00:  -102.00:    -8.0:  BY:
     BZ8N[43],BZ8O[43],BZ8P[43],BZ8Q[43],BZ8R[43],BZ8S[43],BZ8T[43],BZ8U[43],
     BZ8V[43],BZ8W[43],BZ8X[43],BZ9A(24)[43],BZ9B(24)[43],BZ9C(24)[43],
     BZ9D(24)[43],BZ9E(24)[43],BZ9F(24)[43],BZ9S(23)[42],BZ9T(23)[42],
-    BZ9U(23)[42],BZ9V(23)[42],BZ9W(23)[42],BZ9X(23)[42];
+    BZ9U(23)[42],BZ9V(23)[42],BZ9W(23)[42],BZ9X(23)[42],=BG9XD/5;
 Nauru:                    31:  65:  OC:   -0.52:  -166.92:   -12.0:  C2:
     C2;
 Andorra:                  14:  27:  EU:   42.58:    -1.62:    -1.0:  C3:
-    C3,=VERSION;
+    C3;
 The Gambia:               35:  46:  AF:   13.40:    16.38:     0.0:  C5:
     C5;
 Bahamas:                  08:  11:  NA:   24.25:    76.00:     5.0:  C6:
@@ -333,8 +333,7 @@ Comoros:                  39:  53:  AF:  -11.63:   -43.30:    -3.0:  D6:
     D6;
 Fed. Rep. of Germany:     14:  28:  EU:   51.00:   -10.00:    -1.0:  DL:
     DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM,DN,DO,DP,DQ,DR,Y2,Y3,Y4,Y5,Y6,Y7,
-    Y8,Y9,=DM19ERZ/BL,=DM19ERZ/BU,=DM19ERZ/HAM,=DM19ERZ/MAF,=DM19ERZ/MF,
-    =DM19ERZ/MS,=DM19ERZ/VL;
+    Y8,Y9,=DM19ERZ/BU,=DM19ERZ/MAF;
 Philippines:              27:  50:  OC:   13.00:  -122.00:    -8.0:  DU:
     4D,4E,4F,4G,4H,4I,DU,DV,DW,DX,DY,DZ;
 Eritrea:                  37:  48:  AF:   15.00:   -39.00:    -3.0:  E3:
@@ -350,8 +349,8 @@ Niue:                     32:  62:  OC:  -19.03:   169.85:    11.0:  E6:
 Bosnia-Herzegovina:       15:  28:  EU:   44.32:   -17.57:    -1.0:  E7:
     E7;
 Spain:                    14:  37:  EU:   40.37:     4.88:    -1.0:  EA:
-    AM,AN,AO,EA,EB,EC,ED,EE,EF,EG,EH,=EA2EZ/P,=EA3HSD/P,=EA5CC/P,=EA5EZ/P,
-    =EA5ZD/URE,=EA9HU,=EC5EA/VIC;
+    AM,AN,AO,EA,EB,EC,ED,EE,EF,EG,EH,=EA1RCI/RCC,=EA1RCP/NM,=EA2EZ/P,
+    =EA3HSD/P,=EA5CC/P,=EA5EZ/P,=EA5ZD/URE,=EA9HU;
 Balearic Islands:         14:  37:  EU:   39.60:    -2.95:    -1.0:  EA6:
     AM6,AN6,AO6,EA6,EB6,EC6,ED6,EE6,EF6,EG6,EH6;
 Canary Islands:           33:  36:  AF:   28.32:    15.85:     0.0:  EA8:
@@ -394,7 +393,7 @@ New Caledonia:            32:  56:  OC:  -21.50:  -165.50:   -11.0:  FK:
 Chesterfield Islands:     30:  56:  OC:  -19.87:  -158.32:   -11.0:  FK/c:
     =TX3X;
 Martinique:               08:  11:  NA:   14.70:    61.03:     4.0:  FM:
-    FM,=TO5A,=TO5O,=TO5T,=TO7A;
+    FM,=TO5A,=TO5T,=TO7A;
 French Polynesia:         32:  63:  OC:  -17.65:   149.40:    10.0:  FO:
     FO;
 Austral Islands:          32:  63:  OC:  -23.37:   149.48:    10.0:  FO/a:
@@ -431,8 +430,8 @@ England:                  14:  27:  EU:   52.77:     1.47:     0.0:  G:
 Isle of Man:              14:  27:  EU:   54.20:     4.53:     0.0:  GD:
     2D,GD,GT,MD,MT;
 Northern Ireland:         14:  27:  EU:   54.73:     6.68:     0.0:  GI:
-    2I,GI,GN,MI,MN,=2I0NGM/NHS,=GB100RS,=GB1HSC,=GB3NGI,=GB4AFD,=GB4UAS,
-    =GB5NHS,=GB75VEC,=GB8NHS,=GB9AFD;
+    2I,GI,GN,MI,MN,=2I0NGM/NHS,=GB100RS,=GB3NGI,=GB4AFD,=GB4UAS,=GB5AFD,
+    =GB5BL,=GB5NHS,=GB75VEC,=GB8NHS,=GB9AFD;
 Jersey:                   14:  27:  EU:   49.22:     2.18:     0.0:  GJ:
     2J,GH,GJ,MH,MJ,=GH5DX/NHS;
 Shetland Islands:         14:  27:  EU:   60.50:     1.50:     0.0:  *GM/s:
@@ -444,15 +443,15 @@ Shetland Islands:         14:  27:  EU:   60.50:     1.50:     0.0:  *GM/s:
     =MM0ZRC,=MM1FJM,=MM3VQO,=MM5PSL,=MM5YLO,=MM6BDU,=MM6BZQ,=MM6IKB,=MM6IMB,
     =MM6MFA,=MM6PTE,=MM6SJK,=MM6YLO,=MM6ZBG,=MM6ZDW,=MM8A,=MS0ZCG,=MS0ZET;
 Scotland:                 14:  27:  EU:   56.82:     4.18:     0.0:  GM:
-    2A,2M,GM,GS,MA,MM,MS,=GB0SLB,=GB2ELH,=GB2FEA,=GB2JCM,=GB2KDR,=GB2OL,
-    =GB2ROC,=GB3ANG,=GB3LER,=GB3LER/B,=GB4LER,=GB7SRW,=GM0WED/NHS,=GM3YDN/NHS,
-    =GM4SQM/NHS,=GM4SQN/NHS,=GM6JNJ/NHS,=MM0DHQ/NHS,=MM3AWD/NHS,=MM3DDQ/NHS,
-    =MM7WAB/NHS;
+    2A,2M,GM,GS,MA,MM,MS,=GB0CSL,=GB0TNL,=GB1DHL,=GB1GND,=GB2ELH,=GB2FEA,
+    =GB2JCM,=GB2KDR,=GB2LBN,=GB2OL,=GB2ROC,=GB3ANG,=GB3LER,=GB3LER/B,=GB4LER,
+    =GB5CWL,=GB9UL,=GM0WED/NHS,=GM3YDN/NHS,=GM4SQM/NHS,=GM4SQN/NHS,
+    =GM6JNJ/NHS,=MM0DHQ/NHS,=MM3AWD/NHS,=MM3DDQ/NHS,=MM7WAB/NHS;
 Guernsey:                 14:  27:  EU:   49.45:     2.58:     0.0:  GU:
     2U,GP,GU,MP,MU;
 Wales:                    14:  27:  EU:   52.28:     3.73:     0.0:  GW:
-    2W,GC,GW,MC,MW,=GB0ATM,=GB0GIG,=GB0HMM,=GB0MZX,=GB0WIW,=GB0WMZ,=GB1KEY,
-    =GB1WIW,=GB2TD,=GB2VK,=GB2WIW,=GB5VEP,=GB6RNLI;
+    2W,GC,GW,MC,MW,=GB0ATM,=GB0HMM,=GB0MZX,=GB0WIW,=GB0WMZ,=GB1BPL,=GB1WIW,
+    =GB2TD,=GB2VK,=GB2WIW;
 Solomon Islands:          28:  51:  OC:   -9.00:  -160.00:   -11.0:  H4:
     H4;
 Temotu Province:          32:  51:  OC:  -10.72:  -165.80:   -11.0:  H40:
@@ -490,14 +489,13 @@ Vatican City:             15:  28:  EU:   41.90:   -12.47:    -1.0:  HV:
 Saudi Arabia:             21:  39:  AS:   24.20:   -43.83:    -3.0:  HZ:
     7Z,8Z,HZ;
 Italy:                    15:  28:  EU:   42.82:   -12.58:    -1.0:  I:
-    I,=4U0WFP,=4U25B,=4U5F,=4U9STAYHOME,=IK5TBI/I/CT,=IK8IJN/I/US,=IK8VHP/OA,
-    =IZ0EUX/I/AZ;
+    I,=4U0WFP,=4U25B,=4U5F,=4U9STAYHOME,=IK5TBI/I/CT;
 African Italy:            33:  37:  AF:   35.67:   -12.67:    -1.0:  *IG9:
     IG9,IH9;
 Sardinia:                 15:  28:  EU:   40.15:    -9.27:    -1.0:  IS:
     IM0,IS,IW0U,IW0V,IW0W,IW0X,IW0Y,IW0Z,=II0ICH,=II0IDP,=II0M,=IQ0AG,=IQ0AH,
     =IQ0AI,=IQ0AK,=IQ0AL,=IQ0AM,=IQ0EH,=IQ0HO,=IQ0ID,=IQ0ID/P,=IQ0JY,=IQ0NU,
-    =IQ0NU/P,=IQ0NV,=IQ0NV/P,=IQ0OG,=IQ0OH,=IQ0QP,=IQ0SS;
+    =IQ0NU/P,=IQ0NV,=IQ0NV/P,=IQ0OG,=IQ0QP,=IQ0SS;
 Sicily:                   15:  28:  EU:   37.50:   -14.00:    -1.0:  *IT9:
     IB9,ID9,IE9,IF9,II9,IJ9,IO9,IQ9,IR9,IT9,IU9,IW9,IY9,=IT9YBL/SG;
 Djibouti:                 37:  48:  AF:   11.75:   -42.35:    -3.0:  J2:
@@ -516,7 +514,7 @@ Japan:                    25:  45:  AS:   36.40:  -138.38:    -9.0:  JA:
     7J,7K,7L,7M,7N,8J,8K,8L,8M,8N,JA,JE,JF,JG,JH,JI,JJ,JK,JL,JM,JN,JO,JP,JQ,
     JR,JS;
 Minami Torishima:         27:  90:  OC:   24.28:  -153.97:   -10.0:  JD/m:
-    =JG8NQJ/JD1;
+    =JG1RHN/JD1,=JG8NQJ/JD1;
 Ogasawara:                27:  45:  AS:   27.05:  -142.20:    -9.0:  JD/o:
     JD1;
 Mongolia:                 23:  32:  AS:   46.77:  -102.17:    -7.0:  JT:
@@ -532,93 +530,96 @@ Jordan:                   20:  39:  AS:   31.18:   -36.42:    -2.0:  JY:
 United States:            05:  08:  NA:   37.53:    91.67:     5.0:  K:
     AA,AB,AC,AD,AE,AF,AG,AI,AJ,AK,K,N,W,=4U1WB(5)[8],=AA0O(5)[8],=AA2IL(3)[6],
     =AA4DD(4)[8],=AA4Q(3)[6],=AA5JF(5)[8],=AA8R(5)[8],=AB3AI(4)[8],
-    =AB4B(4)[8],=AB4GG(4)[8],=AB4IQ(4)[8],=AB5OR(4)[8],=AB8RL(5)[8],
-    =AB8YZ(4)[7],=AC4CA(4)[7],=AC4G(4)[8],=AC4GW(4)[8],=AC6WI(5)[8],
-    =AC6ZM(4)[8],=AC7AF(4)[7],=AC8Y(5)[8],=AD1C(4)[7],=AD4EB(4)[8],
-    =AD4TA(4)[8],=AD8J(5)[8],=AE4ED(4)[8],=AE6JV(5)[8],=AE7AP(4)[6],
-    =AG4W(4)[8],=AH0U(3)[6],=AH2AV(4)[8],=AH2O(5)[8],=AI4DB(4)[8],=AI9K(4)[7],
-    =AJ4A(4)[8],=AJ4F(4)[7],=AJ7G(5)[8],=AL0A(5)[8],=AL4B(4)[8],=AL7RF(3)[6],
+    =AB4B(4)[8],=AB4EJ(4)[8],=AB4GG(4)[8],=AB4IQ(4)[8],=AB5OR(4)[8],
+    =AB8RL(5)[8],=AB8YZ(4)[7],=AC4CA(4)[7],=AC4G(4)[8],=AC4GW(4)[8],
+    =AC6WI(5)[8],=AC6ZM(4)[8],=AC7AF(4)[7],=AC8Y(5)[8],=AD1C(4)[7],
+    =AD4EB(4)[8],=AD4TA(4)[8],=AD8J(5)[8],=AE4ED(4)[8],=AE6JV(5)[8],
+    =AE7AP(4)[6],=AG4W(4)[8],=AH0U(3)[6],=AH2AV(4)[8],=AH2O(5)[8],
+    =AH6FF(4)[8],=AI4DB(4)[8],=AI9K(4)[7],=AJ4A(4)[8],=AJ4F(4)[7],=AJ7G(5)[8],
+    =AL0A(5)[8],=AL1VE(3)[6],=AL4B(4)[8],=AL7CR(3)[6],=AL7RF(3)[6],
     =G8ERJ(5)[8],=K0ACP(4)[8],=K0EJ(4)[8],=K0IP(3)[6],=K0LUZ(5)[8],
     =K0NW(3)[6],=K0PJ(4)[8],=K0SN(4)[6],=K0TQ(4)[8],=K0ZR(5)[8],=K1DC(4)[8],
-    =K1DW(4)[7],=K1GU(4)[8],=K1KD(4)[7],=K1LT(4)[8],=K2DSW(4)[7],=K2GMY(3)[6],
-    =K2KR(4)[7],=K2PM(4)[8],=K2PO(3)[6],=K2RD(3)[6],=K2RP(3)[6],=K2UR(4)[8],
-    =K2VV(4)[7],=K3DMG(4)[8],=K3EST(3)[6],=K3IE(4)[8],=K3JWI(4)[8],
-    =K3PA(4)[7],=K3WT(4)[7],=K3WYC(3)[6],=K3YP(4)[8],=K4AB(4)[8],=K4AFE(4)[8],
-    =K4AMC(4)[8],=K4AVX(4)[8],=K4BX(4)[8],=K4CWW(4)[8],=K4FN(4)[8],
+    =K1DW(4)[7],=K1GU(4)[8],=K1KD(4)[7],=K1LT(4)[8],=K1OU(4)[8],=K2DRH(4)[7],
+    =K2DSW(4)[7],=K2GMY(3)[6],=K2KR(4)[7],=K2PM(4)[8],=K2PO(3)[6],=K2RD(3)[6],
+    =K2UR(4)[8],=K2VV(4)[7],=K3DMG(4)[8],=K3EST(3)[6],=K3IE(4)[8],
+    =K3JWI(4)[8],=K3PA(4)[7],=K3WT(4)[7],=K3WYC(3)[6],=K3YP(4)[8],=K4AB(4)[8],
+    =K4AFE(4)[8],=K4AMC(4)[8],=K4BX(4)[8],=K4CWW(4)[8],=K4FN(4)[8],
     =K4FT(4)[8],=K4IE(4)[8],=K4IU(4)[7],=K4OAQ(4)[8],=K4OWR(4)[8],=K4RO(4)[8],
     =K4TCG(4)[8],=K4TZ(4)[8],=K4UU(4)[8],=K4WG(4)[8],=K4WI(4)[8],=K4WW(4)[8],
     =K4XU(3)[6],=K4YJ(4)[8],=K4ZGB(4)[8],=K5EK(5)[8],=K5GDX(4)[8],=K5KG(5)[8],
     =K5OA(3)[6],=K5VIP(5)[8],=K5ZD(5)[8],=K6BFL(4)[7],=K6XT(4)[7],
     =K7ABV(4)[6],=K7BV(5)[8],=K7CS(4)[8],=K7DR(4)[8],=K7IA(4)[7],=K7JOE(4)[8],
-    =K7OM(5)[8],=K7QA(4)[6],=K7SCX(4)[7],=K7SV(5)[8],=K7TD(4)[7],=K7ZYV(4)[8],
-    =K8AC(5)[8],=K8ARY(5)[8],=K8CN(5)[8],=K8IA(3)[6],=K8JQ(5)[8],=K8LF(5)[8],
-    =K8LS(4)[7],=K8NYG(5)[8],=K8PO(5)[8],=K8TR(3)[6],=K9CHP(5)[8],=K9DR(4)[7],
-    =K9DU(4)[7],=K9GWS(5)[8],=K9JF(3)[6],=K9JM(3)[6],=K9OM(5)[8],=K9OZ(4)[7],
-    =K9RS(5)[8],=K9WA(4)[7],=K9WZB(3)[6],=K9YC(3)[6],=KA3MTT(4)[8],
-    =KA4BVG(4)[8],=KA4GAV(4)[7],=KA4OTB(4)[8],=KA8HDE(4)[7],=KA8Q(5)[8],
-    =KA9FOX(4)[7],=KB4QZH(4)[8],=KB7Q(4)[6],=KB9S(4)[7],=KC2LM(4)[7],
-    =KC4HW(4)[8],=KC4NX(4)[8],=KC4SAW(4)[8],=KC4TEO(4)[8],=KC4WQ(4)[8],
-    =KC7QY(4)[7],=KC8GCR(5)[8],=KC9K(4)[7],=KD0EE(4)[8],=KD2KW(4)[7],
-    =KD4EE(4)[8],=KD5DD(4)[8],=KE0L(4)[8],=KE0YI(4)[8],=KE1B(3)[6],
-    =KE2VB(3)[6],=KE3K(4)[8],=KE4KY(4)[8],=KE8FT(3)[6],=KF4AV(4)[8],
-    =KF5BA(4)[8],=KF5MU(4)[8],=KG0F(3)[6],=KG4CUY(4)[8],=KG5HVO(4)[8],
-    =KH2BR(3)[6],=KH2D(5)[8],=KH2GM(5)[8],=KH6CT(5)[8],=KH6DHK(5)[8],
-    =KH6M(5)[8],=KH6VM(3)[6],=KH6XS(3)[6],=KI6DY(4)[7],=KI6QDH(4)[7],
-    =KI7ID(4)[7],=KJ4AOM(4)[8],=KJ4IWZ(4)[8],=KJ4M(4)[8],=KJ9C(4)[6],
-    =KK9A(5)[8],=KK9N(4)[7],=KL0MP(5)[8],=KL2RA(4)[7],=KL4CZ(4)[6],
-    =KL7HQR(3)[6],=KL7IKV(3)[6],=KL7QW(4)[7],=KL7SK(3)[6],=KM4FO(4)[8],
-    =KM4JA(4)[8],=KM7W(4)[6],=KN1CBR(4)[7],=KN4DUA(4)[8],=KN8U(5)[8],
-    =KO8SCA(5)[8],=KO9V(4)[7],=KP3M(5)[8],=KR4F(4)[8],=KS0CW(5)[8],
-    =KS4X(4)[8],=KS7T(4)[6],=KS9W(4)[7],=KT3M(4)[7],=KT4O(4)[8],=KT4RR(4)[8],
-    =KU1CW(3)[6],=KU8E(5)[8],=KV4T(4)[8],=KV8S(4)[7],=KW4J(4)[8],=KW7D(4)[7],
-    =KW7Q(4)[7],=KX2P(4)[7],=KY0Q(4)[8],=KZ1W(3)[6],=KZ4KX(4)[8],=KZ9V(4)[7],
-    =N0SMX(5)[8],=N1JM(3)[6],=N1XK(4)[7],=N2AU(3)[6],=N2BJ(4)[8],=N2IC(4)[7],
-    =N2JNR(3)[6],=N2NL(4)[8],=N3BB(4)[7],=N3BUO(4)[7],=N3CI(4)[7],=N3RA(4)[8],
-    =N3RC(3)[6],=N3ZZ(3)[6],=N4ARO(4)[8],=N4AU(4)[8],=N4BAA(4)[8],
-    =N4BCB(4)[8],=N4BCD(4)[8],=N4DW(4)[8],=N4HAI(4)[8],=N4KC(4)[8],
-    =N4KH(4)[8],=N4NA(4)[8],=N4NO(4)[8],=N4OGW(4)[8],=N4QS(4)[8],=N4SL(4)[6],
-    =N4TZ(4)[8],=N4UC(4)[8],=N4UW(4)[8],=N4VI(4)[7],=N4VV(4)[8],=N4WE(4)[8],
-    =N4ZY(4)[8],=N4ZZ(4)[8],=N5CR(3)[6],=N5CW(4)[8],=N5DX(5)[8],=N5KO(3)[6],
-    =N5RP(4)[8],=N5SMQ(5)[8],=N5TB(5)[8],=N5TOO(5)[8],=N5YT(4)[8],=N5ZO(3)[6],
-    =N6AR(5)[8],=N6DW(5)[8],=N6RSH(4)[7],=N7DR(4)[7],=N7FUL(4)[7],=N7IP(4)[6],
-    =N7IV(4)[7],=N7MZW(4)[7],=N7NG(4)[7],=N7RCS(5)[8],=N7US(4)[8],=N7WY(4)[7],
-    =N7ZZ(4)[8],=N8AID(5)[8],=N8GU(5)[8],=N8II(5)[8],=N8NA(5)[8],=N8NN(5)[8],
-    =N8OO(4)[7],=N8RA(5)[8],=N8WXQ(5)[8],=N9CIQ(4)[7],=N9GB(4)[7],
-    =N9HDE(4)[7],=N9JF(4)[7],=N9NA(3)[6],=N9NB(5)[8],=N9NC(5)[8],=N9NM(4)[7],
-    =N9OU(5)[8],=N9RV(4)[6],=N9SB(4)[7],=N9VPV(4)[7],=NA5NN(4)[8],=ND2T(3)[6],
-    =ND3N(4)[8],=ND4Y(4)[8],=NE8P(5)[8],=NE9U(4)[7],=NF4J(4)[8],=NG7A(4)[7],
-    =NH6T(4)[8],=NI7R(5)[8],=NJ4P(4)[8],=NJ8J(5)[8],=NJ8M(4)[7],=NK8Q(5)[8],
-    =NL7CQ(4)[7],=NL7D(3)[6],=NL7QC(4)[7],=NL7XM(5)[8],=NN1N(4)[7],
-    =NN4NT(4)[8],=NN4SA(4)[8],=NN5O(4)[8],=NN7A(4)[7],=NN7CW(5)[8],
-    =NN9DD(5)[8],=NO9E(5)[8],=NP2GG(5)[8],=NP3K(5)[8],=NQ6N(4)[8],=NR4L(4)[8],
-    =NR5W(3)[6],=NR7DX(4)[6],=NS2X(4)[8],=NS4X(4)[8],=NT0K(5)[8],=NW2P(3)[6],
-    =NW7R(5)[8],=NW8U(5)[8],=NX1P(3)[6],=NY6DX(5)[8],=NZ6T(5)[8],=W0BR(5)[8],
-    =W0PV(5)[8],=W0RIC(3)[6],=W0ZP(4)[8],=W1GKT(4)[8],=W1NN(4)[8],
-    =W1PDI(4)[8],=W1PR(3)[6],=W1RH(3)[6],=W1SRD(3)[6],=W2ACY(4)[7],
-    =W2GS(4)[7],=W2IY(4)[7],=W2VJN(3)[6],=W3CB(4)[8],=W3HDH(4)[8],
-    =W3HKK(4)[8],=W3NX(3)[6],=W3TB(4)[8],=W4BCG(4)[8],=W4DAN(4)[8],
-    =W4ER(4)[8],=W4GKM(4)[8],=W4KW(4)[8],=W4LC(4)[8],=W4NBS(4)[8],=W4NI(4)[8],
-    =W4NNF(4)[8],=W4NZ(4)[8],=W4PF(4)[8],=W4RYW(4)[8],=W4TLK(4)[8],
-    =W4TTM(4)[8],=W4UT(4)[8],=W5MX(4)[8],=W5NZ(4)[8],=W5UE(4)[8],=W5UJ(3)[6],
-    =W5VE(5)[8],=W5VS(5)[8],=W6GMT(4)[7],=W6KGP(4)[7],=W6LFB(4)[7],
-    =W6NWS(5)[8],=W6RLL(3)[7],=W6SFG(5)[8],=W6UB(4)[8],=W6XR(5)[8],
-    =W7EE(4)[6],=W7HJ(5)[8],=W7II(4)[7],=W7IMP(5)[8],=W7IY(5)[8],=W7KF(4)[6],
-    =W7RY(4)[7],=W7UT(4)[7],=W8AT(5)[8],=W8FJ(5)[8],=W8FN(5)[8],=W8HAP(5)[8],
-    =W8HGH(5)[8],=W8LYJ(4)[7],=W8OV(4)[7],=W8TK(3)[6],=W9CF(3)[6],=W9DC(5)[8],
-    =W9ET(4)[7],=W9FI(3)[6],=W9JA(4)[7],=W9JEF(4)[7],=W9KKN(3)[6],
-    =W9MAF(4)[7],=W9PL(3)[6],=W9RM(4)[7],=W9RNY(4)[7],=WA0WWW(3)[6],
-    =WA1FCN(4)[8],=WA1UJU(4)[8],=WA2VYA(4)[7],=WA3C(4)[8],=WA4JA(4)[8],
-    =WA5POK(4)[8],=WA8KAN(5)[8],=WA8OJR(5)[8],=WA8ZBT(4)[7],=WB2JEP(3)[6],
-    =WB3JFS(3)[6],=WB4YDY(4)[8],=WB8BPU(5)[8],=WB8YYY(5)[8],=WB9QAF(4)[7],
-    =WC7S(4)[7],=WE5P(4)[8],=WE6EZ(4)[7],=WF7T(4)[8],=WF9A(5)[8],=WH0AI(4)[7],
-    =WH6AQ(5)[8],=WH6LE(5)[8],=WH7R(4)[7],=WJ9B(3)[6],=WL7OU(4)[7],
-    =WM5DX(4)[8],=WN7S(5)[8],=WO7U(4)[7],=WP3ME(5)[8],=WQ5L(4)[8],=WR3O(4)[8],
-    =WS6K(4)[8],=WS6X(5)[8],=WS7X(5)[8],=WS9M(5)[8],=WT2P(4)[8],=WT8WV(5)[8],
-    =WU0B(5)[8],=WU9B(3)[6],=WV4P(4)[8],=WV8SW(5)[8],=WW4R(4)[8],=WW5M(4)[8],
-    =WX4W(4)[8],=WX5S(3)[6],=WY6K(4)[7],=WY7FD(4)[7],=WZ1Y(4)[7],=WZ4F(4)[8],
-    =WZ7I(5)[8],=WZ8T(3)[6];
+    =K7MSO(4)[6],=K7OM(5)[8],=K7QA(4)[6],=K7SCX(4)[7],=K7SV(5)[8],=K7TD(4)[7],
+    =K7ZYV(4)[8],=K8AC(5)[8],=K8ARY(5)[8],=K8CN(5)[8],=K8IA(3)[6],=K8JQ(5)[8],
+    =K8LBQ(5)[8],=K8LF(5)[8],=K8LS(4)[7],=K8NYG(5)[8],=K8PO(5)[8],=K8TE(4)[7],
+    =K8TR(3)[6],=K9CHP(5)[8],=K9DR(4)[7],=K9DU(4)[7],=K9GWS(5)[8],=K9JM(3)[6],
+    =K9OM(5)[8],=K9OZ(4)[7],=K9RS(5)[8],=K9WA(4)[7],=K9WZB(3)[6],=K9YC(3)[6],
+    =KA3MTT(4)[8],=KA4BVG(4)[8],=KA4GAV(4)[7],=KA4OTB(4)[8],=KA8HDE(4)[7],
+    =KA8Q(5)[8],=KA9FOX(4)[7],=KB4QZH(4)[8],=KB7Q(4)[6],=KB9S(4)[7],
+    =KC2LM(4)[7],=KC4HW(4)[8],=KC4NX(4)[8],=KC4SAW(4)[8],=KC4TEO(4)[8],
+    =KC4WQ(4)[8],=KC7QY(4)[7],=KC8GCR(5)[8],=KC9K(4)[7],=KD0EE(4)[8],
+    =KD2KW(4)[7],=KD4EE(4)[8],=KD5DD(4)[8],=KE0L(4)[8],=KE0YI(4)[8],
+    =KE1B(3)[6],=KE2VB(3)[6],=KE3K(4)[8],=KE4KY(4)[8],=KE8FT(3)[6],
+    =KF4AV(4)[8],=KF5BA(4)[8],=KF5MU(4)[8],=KG0F(3)[6],=KG4CUY(4)[8],
+    =KG5HVO(4)[8],=KH2BR(3)[6],=KH2D(5)[8],=KH2GM(5)[8],=KH2PM(5)[8],
+    =KH6CT(5)[8],=KH6DHK(5)[8],=KH6M(5)[8],=KH6VM(3)[6],=KH6XS(3)[6],
+    =KI6DY(4)[7],=KI6QDH(4)[7],=KI7ID(4)[7],=KJ4AOM(4)[8],=KJ4IWZ(4)[8],
+    =KJ4M(4)[8],=KJ9C(4)[6],=KK9A(5)[8],=KK9N(4)[7],=KL0MP(5)[8],=KL2AX(4)[7],
+    =KL2RA(4)[7],=KL4CZ(4)[6],=KL7DJ(3)[6],=KL7HQR(3)[6],=KL7IKV(3)[6],
+    =KL7NW(4)[7],=KL7QW(4)[7],=KL7SK(3)[6],=KM4FO(4)[8],=KM4JA(4)[8],
+    =KM7W(4)[6],=KN1CBR(4)[7],=KN4DUA(4)[8],=KN8U(5)[8],=KO4OL(4)[8],
+    =KO8SCA(5)[8],=KO9V(4)[7],=KP3M(5)[8],=KP4MD(3)[6],=KR4F(4)[8],
+    =KS0CW(5)[8],=KS4X(4)[8],=KS7T(4)[6],=KS9W(4)[7],=KT3M(4)[7],=KT4O(4)[8],
+    =KT4RR(4)[8],=KU1CW(3)[6],=KU8E(5)[8],=KV4T(4)[8],=KV8S(4)[7],=KW4J(4)[8],
+    =KW7D(4)[7],=KW7Q(4)[7],=KX2P(4)[7],=KY0Q(4)[8],=KZ1W(3)[6],=KZ4KX(4)[8],
+    =KZ9V(4)[7],=N0SMX(5)[8],=N1JM(3)[6],=N1XK(4)[7],=N2AU(3)[6],=N2BJ(4)[8],
+    =N2IC(4)[7],=N2JNR(3)[6],=N2NL(4)[8],=N3BB(4)[7],=N3BUO(4)[7],=N3CI(4)[7],
+    =N3RA(4)[8],=N3RC(3)[6],=N3ZZ(3)[6],=N4ARO(4)[8],=N4AU(4)[8],=N4BAA(4)[8],
+    =N4BCB(4)[8],=N4BCD(4)[8],=N4DW(4)[8],=N4EL(4)[8],=N4HAI(4)[8],
+    =N4HID(4)[8],=N4JRG(4)[8],=N4KC(4)[8],=N4KH(4)[8],=N4NA(4)[8],=N4NO(4)[8],
+    =N4OGW(4)[8],=N4QS(4)[8],=N4SL(4)[6],=N4TZ(4)[8],=N4UC(4)[8],=N4UW(4)[8],
+    =N4VI(4)[7],=N4VV(4)[8],=N4WE(4)[8],=N4ZY(4)[8],=N4ZZ(4)[8],=N5CR(3)[6],
+    =N5CW(4)[8],=N5DX(5)[8],=N5KO(3)[6],=N5RP(4)[8],=N5SMQ(5)[8],=N5TB(5)[8],
+    =N5TOO(5)[8],=N5YT(4)[8],=N5ZO(3)[6],=N6AR(5)[8],=N6DW(5)[8],=N6RSH(4)[7],
+    =N7DR(4)[7],=N7FUL(4)[7],=N7IP(4)[6],=N7IV(4)[7],=N7MZW(4)[7],=N7NG(4)[7],
+    =N7RCS(5)[8],=N7US(4)[8],=N7WY(4)[7],=N7ZZ(4)[8],=N8AID(5)[8],=N8II(5)[8],
+    =N8NA(5)[8],=N8NN(5)[8],=N8OO(4)[7],=N8RA(5)[8],=N8WXQ(5)[8],=N9CIQ(4)[7],
+    =N9GB(4)[7],=N9HDE(4)[7],=N9JF(4)[7],=N9NA(3)[6],=N9NB(5)[8],=N9NC(5)[8],
+    =N9NM(4)[7],=N9OU(5)[8],=N9RV(4)[6],=N9SB(4)[7],=N9VPV(4)[7],=NA5NN(4)[8],
+    =ND2T(3)[6],=ND3N(4)[8],=ND4Y(4)[8],=NE8P(5)[8],=NE9U(4)[7],=NF4J(4)[8],
+    =NG7A(4)[7],=NH6L(4)[7],=NH6T(4)[8],=NI7R(5)[8],=NJ4P(4)[8],=NJ8J(5)[8],
+    =NJ8M(4)[7],=NK8Q(5)[8],=NL7CQ(4)[7],=NL7D(3)[6],=NL7QC(4)[7],
+    =NL7XM(5)[8],=NN1N(4)[7],=NN4NT(4)[8],=NN4SA(4)[8],=NN5O(4)[8],
+    =NN7A(4)[7],=NN7CW(5)[8],=NN9DD(5)[8],=NO9E(5)[8],=NP2GG(5)[8],
+    =NP3FB(4)[8],=NP3K(5)[8],=NQ6N(4)[8],=NR4L(4)[8],=NR5W(3)[6],=NR7DX(4)[6],
+    =NS2X(4)[8],=NS4X(4)[8],=NT0K(5)[8],=NW2P(3)[6],=NW7R(5)[8],=NW8U(5)[8],
+    =NX1P(3)[6],=NY6DX(5)[8],=NZ6T(5)[8],=NZ7Q(4)[7],=W0BR(5)[8],=W0PV(5)[8],
+    =W0RIC(3)[6],=W0ZP(4)[8],=W1GKT(4)[8],=W1NN(4)[8],=W1PDI(4)[8],
+    =W1PR(3)[6],=W1RH(3)[6],=W1SRD(3)[6],=W2ACY(4)[7],=W2GS(4)[7],=W2IY(4)[7],
+    =W2VJN(3)[6],=W3CB(4)[8],=W3HDH(4)[8],=W3HKK(4)[8],=W3NX(3)[6],
+    =W3TB(4)[8],=W4BCG(4)[8],=W4DAN(4)[8],=W4ER(4)[8],=W4GKM(4)[8],
+    =W4KW(4)[8],=W4LC(4)[8],=W4NBS(4)[8],=W4NI(4)[8],=W4NNF(4)[8],=W4NZ(4)[8],
+    =W4PF(4)[8],=W4RYW(4)[8],=W4TLK(4)[8],=W4TTM(4)[8],=W4UT(4)[8],
+    =W5MX(4)[8],=W5NZ(4)[8],=W5UE(4)[8],=W5UJ(3)[6],=W5VE(5)[8],=W5VS(5)[8],
+    =W6GMT(4)[7],=W6KGP(4)[7],=W6LFB(4)[7],=W6NWS(5)[8],=W6RLL(3)[7],
+    =W6SFG(5)[8],=W6UB(4)[8],=W6XR(5)[8],=W7DXX(4)[7],=W7EE(4)[6],=W7HJ(5)[8],
+    =W7II(4)[7],=W7IMP(5)[8],=W7IY(5)[8],=W7RY(4)[7],=W7UT(4)[7],=W8AT(5)[8],
+    =W8FJ(5)[8],=W8FN(5)[8],=W8HAP(5)[8],=W8HGH(5)[8],=W8LYJ(4)[7],
+    =W8OV(4)[7],=W8TK(3)[6],=W9CF(3)[6],=W9DC(5)[8],=W9ET(4)[7],=W9FI(3)[6],
+    =W9JA(4)[7],=W9JEF(4)[7],=W9KKN(3)[6],=W9MAF(4)[7],=W9PL(3)[6],
+    =W9RM(4)[7],=W9RNY(4)[7],=WA0LJM(5)[8],=WA0WWW(3)[6],=WA1FCN(4)[8],
+    =WA1UJU(4)[8],=WA2VYA(4)[7],=WA3C(4)[8],=WA5POK(4)[8],=WA8KAN(5)[8],
+    =WA8OJR(5)[8],=WA8ZBT(4)[7],=WB2JEP(3)[6],=WB3JFS(3)[6],=WB4YDY(4)[8],
+    =WB5WAJ(4)[8],=WB8BPU(5)[8],=WB8YYY(5)[8],=WB9QAF(4)[7],=WC7S(4)[7],
+    =WE5P(4)[8],=WE6EZ(4)[7],=WF7T(4)[8],=WF9A(5)[8],=WH0AI(4)[7],
+    =WH6AQ(5)[8],=WH6LE(5)[8],=WH7R(4)[7],=WJ4HCP(4)[8],=WJ9B(3)[6],
+    =WL7OU(4)[7],=WM5DX(4)[8],=WN7S(5)[8],=WN7Y(4)[7],=WO7U(4)[7],
+    =WP3ME(5)[8],=WQ5L(4)[8],=WR3O(4)[8],=WS6K(4)[8],=WS6X(5)[8],=WS7X(5)[8],
+    =WS9M(5)[8],=WT2P(4)[8],=WT7TT(4)[7],=WT8WV(5)[8],=WU0B(5)[8],=WU9B(3)[6],
+    =WV4P(4)[8],=WV8SW(5)[8],=WW4R(4)[8],=WW5M(4)[8],=WX4W(4)[8],=WX5S(3)[6],
+    =WY6K(4)[7],=WY7FD(4)[7],=WZ1Y(4)[7],=WZ4F(4)[8],=WZ7I(5)[8],=WZ8T(3)[6];
 Guantanamo Bay:           08:  11:  NA:   20.00:    75.00:     5.0:  KG4:
-    KG4,=KG4MA,=KG4NE;
+    KG4,=KG4MA;
 Mariana Islands:          27:  64:  OC:   15.18:  -145.72:   -10.0:  KH0:
     AH0,KH0,NH0,WH0,=K8RN,=KI5DQL,=NH2B;
 Baker & Howland Islands:  31:  61:  OC:    0.00:   176.00:    12.0:  KH1:
@@ -632,12 +633,12 @@ 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,=K2GT,=K4XV,=K6HNL,=K9FD,=KA7BSK,=KB3HXI,
+    AH6,AH7,KH6,KH7,NH6,NH7,WH6,WH7,=K2GT,=K4XV,=K6HNL,=K9FD,=KB1KAC,=KB3HXI,
     =KB5OXR,=KB6EGA,=KC2CLQ,=KD0JNO,=KD0OXU,=KD4GVR,=KD7GWI,=KD8LYB,=KE0JSB,
-    =KE0KIE,=KE5VQB,=KE6MKW,=KE6TIX,=KF4UJC,=KG4CAN,=KG4TZD,=KG5CH,=KG5CNO,
-    =KG5IVP,=KG7ZJM,=KH0WJ,=KH3AE,=KI7AUZ,=KJ6COM,=KJ6CQT,=KJ6FDF,=KK4RNF,
-    =KL3JC,=KM6RWE,=KM6UVP,=N0VYO,=N3BQY,=N3GWR,=N4BER,=N7BMD,=NB6R,=ND1A,
-    =W6QPV,=W7NX,=WA6AW,=WA6CZL,=WA6QDQ,=WB4JTT;
+    =KE0KIE,=KE5VQB,=KE6MKW,=KE6TIX,=KF4UJC,=KF6OHL,=KG4CAN,=KG4TZD,=KG5CH,
+    =KG5CNO,=KG5IVP,=KH0WJ,=KH3AE,=KI7AUZ,=KJ6COM,=KJ6CQT,=KJ6FDF,=KK4RNF,
+    =KK6DWS,=KL3JC,=KM6RWE,=KM6UVP,=N0VYO,=N3BQY,=N3GWR,=N4BER,=NB6R,=ND1A,
+    =W1ETT,=W6QPV,=W7NX,=WA6AW,=WA6CZL,=WA6QDQ,=WB4JTT;
 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:
@@ -647,13 +648,13 @@ Swains Island:            32:  62:  OC:  -11.05:   171.25:    11.0:  KH8/s:
 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:
-    AL,KL,NL,WL,=AJ4MY,=K1TMT,=K4PSG,=K5RD,=K7BUF,=K7CAP,=K7VRK,=KA1NCN,
-    =KB5NOW,=KB5YLG,=KB9THD,=KC0EFL,=KC0GLN,=KC1LVR,=KC5NHL,=KC9IKH,=KD0ONB,
-    =KD2NPD,=KD5MQC,=KD7OOS,=KD8KQL,=KD9TK,=KE5WGZ,=KE7PXV,=KE7ZXH,=KF3L,
-    =KF5UBP,=KF7ARC,=KF7FLL,=KF7FLM,=KF7ING,=KF7ITN,=KF7KTH,=KF7WVE,=KG7ZEV,
-    =KJ4YOY,=KJ6RFQ,=KK6SNS,=KM6YOD,=KN4ENR,=KN4LJD,=KN4RXC,=KO4DHN,=KW4XD,
+    AL,KL,NL,WL,=AJ4MY,=K1TMT,=K5RD,=K7BUF,=K7CAP,=K7VRK,=KA1NCN,=KB5NOW,
+    =KB7RWK,=KB9THD,=KC0EFL,=KC0GLN,=KC1LVR,=KC3BWW,=KC5NHL,=KC9IKH,=KC9SXX,
+    =KD0ONB,=KD2NPD,=KD5MQC,=KD7OOS,=KD8KQL,=KE5WGZ,=KE7PXV,=KE7ZXH,=KF5UBP,
+    =KF7ARC,=KF7FLL,=KF7FLM,=KF7ING,=KF7ITN,=KF7KTH,=KF7WVE,=KG5DBP,=KG7ZEV,
+    =KI4FJK,=KJ4YOY,=KJ6RFQ,=KK6SNS,=KM6YOD,=KN4ENR,=KN4LJD,=KN4RXC,=KW4XD,
     =N6QEK,=N7CGC,=N7DKL,=N7DUD,=NH2LS,=NU9Q,=W0ZEE,=W1JM,=W1LYD,=W3MKG,=W9CG,
-    =WA1FVJ,=WH6GBB,=WH6GCO,=WW4AL;
+    =WA1FVJ,=WH6GBB,=WH6GCO;
 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:
@@ -762,7 +763,8 @@ Argentina:                13:  14:  SA:  -34.80:    65.92:     3.0:  LU:
     LW4W[16],LW4X[16],LW4Y[16],LW5V[16],LW5W[16],LW5X[16],LW5Y[16],LW6V[16],
     LW6W[16],LW6X[16],LW6Y[16],LW7V[16],LW7W[16],LW7X[16],LW7Y[16],LW8V[16],
     LW8W[16],LW8X[16],LW8Y[16],LW9V[16],LW9W[16],LW9X[16],LW9Y[16],
-    =LU1AW/X[16],=LU1QR/Q,=LU2DVI/H,=LU3HT/H,=LU5QR/Q;
+    =LU1AW/X[16],=LU1DLF/D,=LU2DVI/H,=LU4AA/H,=LU4AA/K,=LU5QR/Q,=LU5YF/V[16],
+    =LW3DVN/X[16];
 Luxembourg:               14:  27:  EU:   50.00:    -6.00:    -1.0:  LX:
     LX;
 Lithuania:                15:  29:  EU:   55.45:   -23.63:    -2.0:  LY:
@@ -874,7 +876,7 @@ San Marino:               15:  28:  EU:   43.95:   -12.45:    -1.0:  T7:
 Palau:                    27:  64:  OC:    7.45:  -134.53:    -9.0:  T8:
     T8;
 Asiatic Turkey:           20:  39:  AS:   39.18:   -35.65:    -2.0:  TA:
-    TA,TB,TC,YM,=TA1BZ/2,=TA1C/2,=TA1D/3,=TA1D/4,=TA1FA/2,=TA1HZ/2;
+    TA,TB,TC,YM,=TA1BZ/2,=TA1C/2,=TA1CX/2,=TA1D/3,=TA1D/4,=TA1FA/2,=TA1HZ/2;
 European Turkey:          20:  39:  EU:   41.02:   -28.97:    -2.0:  *TA1:
     TA1,TB1,TC1,YM1,=TA6CQ/1;
 Iceland:                  40:  17:  EU:   64.80:    18.73:     0.0:  TF:
@@ -973,21 +975,22 @@ European Russia:          16:  29:  EU:   53.65:   -41.37:    -4.0:  UA:
     UH4W[30],UH8F(17)[30],UH8G(17)[30],UH8X(17)[20],UH9F(17)[30],UH9G(17)[30],
     UH9X(17)[20],UI1I(17)[20],UI1N[19],UI1O[19],UI1P[20],UI1Z[19],UI4H[30],
     UI4I[30],UI4W[30],UI8F(17)[30],UI8G(17)[30],UI8X(17)[20],UI9F(17)[30],
-    UI9G(17)[30],UI9X(17)[20],=R8FF/7,=RA9UUY/6,=RT9T/3,=RX9KT/6,=R100RK[19],
-    =R4HAT[29],=R4HC[29],=R4HCE[29],=R4HCZ[29],=R4HD[29],=R4HDC[29],
-    =R4HDR[29],=R4HL[29],=R4IC[29],=R4ID[29],=R4II[29],=R4IK[29],=R4IM[29],
-    =R4IN[29],=R4IO[29],=R4IT[29],=R8FF/3,=R8FF/P,=R8MB/1(17)[20],=R8XF/1,
-    =RA4HL[29],=RA4NCC[30],=RC4HT[29],=RC4I[29],=RJ4I[29],=RJ4P[30],
-    =RK4HM[29],=RK4P[30],=RM4I[29],=RM4R[30],=RN4HFJ[29],=RN4HIF[29],=RT9K/6,
-    =RT9T/1,=RU4HD[29],=RU4HP[29],=RU4I[29],=RW4HM[29],=RW4HTK[29],=RW4HW[29],
+    UI9G(17)[30],UI9X(17)[20],=R7AB/P,=R9JBF/1,=RA9UUY/6,=RT9T/3,=RX9KT/6,
+    =R100RK[19],=R4HAT[29],=R4HC[29],=R4HCE[29],=R4HCZ[29],=R4HD[29],
+    =R4HDC[29],=R4HDR[29],=R4HL[29],=R4IC[29],=R4ID[29],=R4II[29],=R4IK[29],
+    =R4IM[29],=R4IN[29],=R4IO[29],=R4IT[29],=R5QA/1[19],=R8CW/4,=R8FF/3,
+    =R8FF/P,=R8MB/1(17)[20],=R8XF/1,=R8XF/3,=RA1WS/1(17)[20],=RA4HL[29],
+    =RA4NCC[30],=RC4HT[29],=RC4I[29],=RJ4I[29],=RJ4P[30],=RK4HM[29],=RK4P[30],
+    =RM4I[29],=RM4R[30],=RN4HFJ[29],=RN4HIF[29],=RT9K/6,=RT9T/1,=RU4HD[29],
+    =RU4HP[29],=RU4I[29],=RV1CC/1,=RW4HM[29],=RW4HTK[29],=RW4HW[29],
     =RW4HZ[29],=RW9WJ/4[30],=UA3LMR/P,=UA4H[29],=UA4HBM[29],=UA4HGL[29],
     =UA4HIP[29],=UA4HRZ[29],=UA4HY[29],=UA4NF[30],=UA4PN[30],=UA4RF[30],
-    =UB5O/1[19],=UC4I[29],=UI4I[29];
+    =UC4I[29],=UI4I[29];
 Kaliningrad:              15:  29:  EU:   54.72:   -20.52:    -3.0:  UA2:
     R2F,R2K,RA2,RC2F,RC2K,RD2F,RD2K,RE2F,RE2K,RF2F,RF2K,RG2F,RG2K,RJ2F,RJ2K,
     RK2F,RK2K,RL2F,RL2K,RM2F,RM2K,RN2F,RN2K,RO2F,RO2K,RQ2F,RQ2K,RT2F,RT2K,
     RU2F,RU2K,RV2F,RV2K,RW2F,RW2K,RX2F,RX2K,RY2F,RY2K,RZ2F,RZ2K,U2F,U2K,UA2,
-    UB2,UC2,UD2,UE2,UF2,UG2,UH2,UI2,=R2MWO,=UB5O/2;
+    UB2,UC2,UD2,UE2,UF2,UG2,UH2,UI2,=R2MWO;
 Asiatic Russia:           17:  30:  AS:   55.88:   -84.08:    -7.0:  UA9:
     R0,R8(17)[30],R9,RA0,RA8(17)[30],RA9,RC0,RC8(17)[30],RC9,RD0,RD8(17)[30],
     RD9,RE0,RE8(17)[30],RE9,RF0,RF8(17)[30],RF9,RG0,RG8(17)[30],RG9,RI0,
@@ -1106,9 +1109,9 @@ Asiatic Russia:           17:  30:  AS:   55.88:   -84.08:    -7.0:  UA9:
     UI8O(18)[31],UI8P(18)[31],UI8S(16)[30],UI8T(16)[30],UI8U(18)[31],
     UI8V(18)[31],UI8W(16)[30],UI8Y(18)[31],UI8Z(18)[31],UI9I(18)[31],
     UI9M(17)[30],UI9P(18)[31],UI9S(16),UI9T(16),UI9V(18)[31],UI9W(16),
-    =R2ET/9(18)[31],=R8FF/8(17)[30],=R9WCJ/8(17)[30],=RA/UT5IA(19)[23],
+    =R2ET/9(18)[31],=R8FF/8(17)[30],=R9PS/9(18)[31],=RA/UT5IA(19)[23],
     =RA0QK/8(17)[30],=RN9S(16),=RT8T(16)[30],=RT9S(16),=RU20RU(17)[30],
-    =RX9WT/8(17)[30],=UB5O/4(16),=UB5O/9(18)[31],=UD6AOP/0(19)[25];
+    =UD6AOP/0(19)[25];
 Uzbekistan:               17:  30:  AS:   41.40:   -63.97:    -5.0:  UK:
     UJ,UK,UL,UM;
 Kazakhstan:               17:  30:  AS:   48.17:   -65.18:    -5.0:  UN:
@@ -1139,7 +1142,7 @@ Antigua & Barbuda:        08:  11:  NA:   17.07:    61.80:     4.0:  V2:
 Belize:                   07:  11:  NA:   16.97:    88.67:     6.0:  V3:
     V3;
 St. Kitts & Nevis:        08:  11:  NA:   17.37:    62.78:     4.0:  V4:
-    V4;
+    V4,=VERSION;
 Namibia:                  38:  57:  AF:  -22.00:   -17.00:    -1.0:  V5:
     V5;
 Micronesia:               27:  65:  OC:    6.88:  -158.20:   -10.0:  V6:
@@ -1153,9 +1156,9 @@ Canada:                   05:  09:  NA:   44.35:    78.75:     5.0:  VE:
     CI0(2)[4],CI1(1)[2],CI2,CJ2[4],CK2[4],CY1,CY2(2),CZ0(2)[4],CZ1(1)[2],CZ2,
     VA2[4],VB2[4],VC2[4],VD1,VD2(2),VE2[4],VF0(2)[4],VF1(1)[2],VF2,VG2[4],VO1,
     VO2(2),VX2[4],VY0(2)[4],VY1(1)[2],VY2,XJ1,XJ2(2),XK0(2)[4],XK1(1)[2],XK2,
-    XL2[4],XM2[4],XN1,XN2(2),XO0(2)[4],XO1(1)[2],XO2,=VER20200625,
+    XL2[4],XM2[4],XN1,XN2(2),XO0(2)[4],XO1(1)[2],XO2,=VER20200724,
     =VA2VVV(2)[4],=VE2CSI(2)[4],=VE2EKA(2)[4],=VE2FK[9],=VE2IDX(2)[4],
-    =VE2IM(2)[4],=VE2KK[9],=VE8AT(2)[4],=VY0AA(4)[3],=VY0PW(4)[3];
+    =VE2IM(2)[4],=VE8AT(2)[4],=VY0AA(4)[3],=VY0PW(4)[3];
 Australia:                30:  59:  OC:  -23.70:  -132.33:   -10.0:  VK:
     AX,VH,VI,VJ,VK,VL,VM,VN,VZ,AX4[55],VH4[55],VI4[55],VJ4[55],VK4[55],
     VL4[55],VM4[55],VN4[55],VZ4[55];
index 8aca325849caeca17b0eef1cc89f4b980f0dd511..d0f3e68abd73a1bfe8b2816e9f4487e705e2fa56 100644 (file)
   '=AA8R' => '179',
   '=AB3AI' => '179',
   '=AB4B' => '179',
+  '=AB4EJ' => '179',
   '=AB4GG' => '179',
   '=AB4IQ' => '179',
   '=AB5OR' => '179',
   '=AH0U' => '179',
   '=AH2AV' => '179',
   '=AH2O' => '179',
+  '=AH6FF' => '179',
   '=AI4DB' => '179',
   '=AI9K' => '179',
   '=AJ4A' => '179',
   '=AJ4MY' => '191,900,902,904,906,908',
   '=AJ7G' => '179',
   '=AL0A' => '179',
+  '=AL1VE' => '179',
   '=AL4B' => '179',
+  '=AL7CR' => '179',
   '=AL7RF' => '179',
+  '=BG9XD/5' => '73,408,410,412,414,416,418,420,422,424,426,428,430,432,434,436,438,440,442,444,446,448,450,452,454,456,458,460,462,464,466,468',
   '=BS7H' => '70',
   '=C7A' => '981',
-  '=DM19ERZ/BL' => '95',
   '=DM19ERZ/BU' => '95',
-  '=DM19ERZ/HAM' => '95',
   '=DM19ERZ/MAF' => '95',
-  '=DM19ERZ/MF' => '95',
-  '=DM19ERZ/MS' => '95',
-  '=DM19ERZ/VL' => '95',
   '=DP0GVN' => '1717,1719,1722,1724,1726,1728,1730,330,343',
   '=DP1POL' => '1717,1719,1722,1724,1726,1728,1730,330,343',
   '=E51PT' => '331,1732,1734',
   '=E51WL' => '331,1732,1734',
+  '=EA1RCI/RCC' => '102,598,600,602,604,606,608',
+  '=EA1RCP/NM' => '102,598,600,602,604,606,608',
   '=EA2EZ/P' => '102,598,600,602,604,606,608',
   '=EA3HSD/P' => '102,598,600,602,604,606,608',
   '=EA5CC/P' => '102,598,600,602,604,606,608',
   '=EA5ZD/URE' => '102,598,600,602,604,606,608',
   '=EA8VK/URE' => '104,610,612',
   '=EA9HU' => '102,598,600,602,604,606,608',
-  '=EC5EA/VIC' => '102,598,600,602,604,606,608',
   '=FO/F6BCW' => '127',
   '=G8ERJ' => '179',
   '=GB0ATM' => '146',
-  '=GB0GIG' => '146',
+  '=GB0CSL' => '144,688',
   '=GB0HMM' => '146',
   '=GB0MZX' => '146',
-  '=GB0SLB' => '144,688',
+  '=GB0TNL' => '144,688',
   '=GB0WIW' => '146',
   '=GB0WMZ' => '146',
   '=GB100RS' => '142',
-  '=GB1HSC' => '142',
-  '=GB1KEY' => '146',
+  '=GB1BPL' => '146',
+  '=GB1DHL' => '144,688',
+  '=GB1GND' => '144,688',
   '=GB1WIW' => '146',
   '=GB2ELH' => '687',
   '=GB2FEA' => '144,688',
   '=GB2JCM' => '144,688',
   '=GB2KDR' => '144,688',
+  '=GB2LBN' => '144,688',
   '=GB2OL' => '144,688',
   '=GB2ROC' => '144,688',
   '=GB2TD' => '146',
   '=GB4AFD' => '142',
   '=GB4LER' => '687',
   '=GB4UAS' => '142',
+  '=GB5AFD' => '142',
+  '=GB5BL' => '142',
+  '=GB5CWL' => '144,688',
   '=GB5NHS' => '142',
-  '=GB5VEP' => '146',
-  '=GB6RNLI' => '146',
   '=GB75VEC' => '142',
-  '=GB7SRW' => '144,688',
   '=GB8NHS' => '142',
   '=GB9AFD' => '142',
+  '=GB9UL' => '144,688',
   '=GH5DX/NHS' => '143',
   '=GM0AVR' => '687',
   '=GM0CXQ' => '687',
   '=II0IDP' => '166',
   '=II0M' => '166',
   '=IK5TBI/I/CT' => '165,798,800,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850',
-  '=IK8IJN/I/US' => '165,798,800,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850',
-  '=IK8VHP/OA' => '165,798,800,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850',
   '=IQ0AG' => '166',
   '=IQ0AH' => '166',
   '=IQ0AI' => '166',
   '=IQ0NV' => '166',
   '=IQ0NV/P' => '166',
   '=IQ0OG' => '166',
-  '=IQ0OH' => '166',
   '=IQ0QP' => '166',
   '=IQ0SS' => '166',
   '=IT9YBL/SG' => '845',
-  '=IZ0EUX/I/AZ' => '165,798,800,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850',
+  '=JG1RHN/JD1' => '333',
   '=JG8NQJ/JD1' => '333',
   '=JW/LB2PG' => '893',
   '=K0ACP' => '179',
   '=K1GU' => '179',
   '=K1KD' => '179',
   '=K1LT' => '179',
+  '=K1OU' => '179',
   '=K1TMT' => '191,900,902,904,906,908',
+  '=K2DRH' => '179',
   '=K2DSW' => '179',
   '=K2GMY' => '179',
   '=K2GT' => '186',
   '=K2PM' => '179',
   '=K2PO' => '179',
   '=K2RD' => '179',
-  '=K2RP' => '179',
   '=K2UR' => '179',
   '=K2VV' => '179',
   '=K3DMG' => '179',
   '=K4AB' => '179',
   '=K4AFE' => '179',
   '=K4AMC' => '179',
-  '=K4AVX' => '179',
   '=K4BX' => '179',
   '=K4CWW' => '179',
   '=K4FN' => '179',
   '=K4IU' => '179',
   '=K4OAQ' => '179',
   '=K4OWR' => '179',
-  '=K4PSG' => '191,900,902,904,906,908',
   '=K4QFS' => '182',
   '=K4RO' => '179',
   '=K4TCG' => '179',
   '=K7DR' => '179',
   '=K7IA' => '179',
   '=K7JOE' => '179',
+  '=K7MSO' => '179',
   '=K7OM' => '179',
   '=K7QA' => '179',
   '=K7SCX' => '179',
   '=K8CN' => '179',
   '=K8IA' => '179',
   '=K8JQ' => '179',
+  '=K8LBQ' => '179',
   '=K8LF' => '179',
   '=K8LS' => '179',
   '=K8NYG' => '179',
   '=K8PO' => '179',
   '=K8RN' => '180',
+  '=K8TE' => '179',
   '=K8TR' => '179',
   '=K9CHP' => '179',
   '=K9CS/KH8S' => '189',
   '=K9DU' => '179',
   '=K9FD' => '186',
   '=K9GWS' => '179',
-  '=K9JF' => '179',
   '=K9JM' => '179',
   '=K9OM' => '179',
   '=K9OZ' => '179',
   '=KA4BVG' => '179',
   '=KA4GAV' => '179',
   '=KA4OTB' => '179',
-  '=KA7BSK' => '186',
   '=KA8HDE' => '179',
   '=KA8Q' => '179',
   '=KA9FOX' => '179',
   '=KB1CKX' => '194',
+  '=KB1KAC' => '186',
   '=KB2BVX' => '194',
   '=KB3HXI' => '186',
   '=KB3TTV' => '194',
   '=KB4QZH' => '179',
   '=KB5NOW' => '191,900,902,904,906,908',
   '=KB5OXR' => '186',
-  '=KB5YLG' => '191,900,902,904,906,908',
   '=KB6EGA' => '186',
   '=KB7Q' => '179',
+  '=KB7RWK' => '191,900,902,904,906,908',
   '=KB9S' => '179',
   '=KB9THD' => '191,900,902,904,906,908',
   '=KC0EFL' => '191,900,902,904,906,908',
   '=KC2GRZ' => '194',
   '=KC2LM' => '179',
   '=KC2TE' => '194',
+  '=KC3BWW' => '191,900,902,904,906,908',
   '=KC4AAA' => '1717,1719,1722,1724,1726,1728,1730,330,343',
   '=KC4AAC' => '1717,1719,1722,1724,1726,1728,1730,330,343',
   '=KC4HW' => '179',
   '=KC8GCR' => '179',
   '=KC9IKH' => '191,900,902,904,906,908',
   '=KC9K' => '179',
+  '=KC9SXX' => '191,900,902,904,906,908',
   '=KD0EE' => '179',
   '=KD0JNO' => '186',
   '=KD0ONB' => '191,900,902,904,906,908',
   '=KD7OOS' => '191,900,902,904,906,908',
   '=KD8KQL' => '191,900,902,904,906,908',
   '=KD8LYB' => '186',
-  '=KD9TK' => '191,900,902,904,906,908',
   '=KE0JSB' => '186',
   '=KE0KIE' => '186',
   '=KE0L' => '179',
   '=KE7PXV' => '191,900,902,904,906,908',
   '=KE7ZXH' => '191,900,902,904,906,908',
   '=KE8FT' => '179',
-  '=KF3L' => '191,900,902,904,906,908',
   '=KF4AV' => '179',
   '=KF4UJC' => '186',
   '=KF5BA' => '179',
   '=KF5UBP' => '191,900,902,904,906,908',
   '=KF5YGN' => '194',
   '=KF5YGX' => '194',
+  '=KF6OHL' => '186',
   '=KF7ARC' => '191,900,902,904,906,908',
   '=KF7FLL' => '191,900,902,904,906,908',
   '=KF7FLM' => '191,900,902,904,906,908',
   '=KG4CAN' => '186',
   '=KG4CUY' => '179',
   '=KG4MA' => '1686,1687,1688,1689,1690,1691,1692,1693,334',
-  '=KG4NE' => '1686,1687,1688,1689,1690,1691,1692,1693,334',
   '=KG4TZD' => '186',
   '=KG5CH' => '186',
   '=KG5CNO' => '186',
+  '=KG5DBP' => '191,900,902,904,906,908',
   '=KG5HVO' => '179',
   '=KG5IVP' => '186',
   '=KG6DX' => '182',
   '=KG6JDX' => '182',
   '=KG7ZEV' => '191,900,902,904,906,908',
-  '=KG7ZJM' => '186',
   '=KH0WJ' => '186',
   '=KH2BR' => '179',
   '=KH2D' => '179',
   '=KH2GM' => '179',
+  '=KH2PM' => '179',
   '=KH3AE' => '186',
   '=KH6CT' => '179',
   '=KH6DHK' => '179',
   '=KH6M' => '179',
   '=KH6VM' => '179',
   '=KH6XS' => '179',
+  '=KI4FJK' => '191,900,902,904,906,908',
   '=KI5DQL' => '180',
   '=KI6DY' => '179',
   '=KI6QDH' => '179',
   '=KJ6RFQ' => '191,900,902,904,906,908',
   '=KJ9C' => '179',
   '=KK4RNF' => '186',
+  '=KK6DWS' => '186',
   '=KK6SNS' => '191,900,902,904,906,908',
   '=KK9A' => '179',
   '=KK9N' => '179',
   '=KL0MP' => '179',
+  '=KL2AX' => '179',
   '=KL2RA' => '179',
   '=KL3JC' => '186',
   '=KL4CZ' => '179',
+  '=KL7DJ' => '179',
   '=KL7HQR' => '179',
   '=KL7IKV' => '179',
+  '=KL7NW' => '179',
   '=KL7QW' => '179',
   '=KL7SK' => '179',
   '=KM4FO' => '179',
   '=KN4LVP' => '182',
   '=KN4RXC' => '191,900,902,904,906,908',
   '=KN8U' => '179',
-  '=KO4DHN' => '191,900,902,904,906,908',
+  '=KO4OL' => '179',
   '=KO8SCA' => '179',
   '=KO9V' => '179',
   '=KP2Z' => '194',
   '=KP3M' => '179',
+  '=KP4MD' => '179',
   '=KR4F' => '179',
   '=KS0CW' => '179',
   '=KS4X' => '179',
   '=KZ4KX' => '179',
   '=KZ9V' => '179',
   '=LU1AW/X' => '197,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962',
-  '=LU1QR/Q' => '197,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962',
+  '=LU1DLF/D' => '197,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962',
   '=LU2DVI/H' => '197,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962',
-  '=LU3HT/H' => '197,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962',
+  '=LU4AA/H' => '197,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962',
+  '=LU4AA/K' => '197,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962',
   '=LU5QR/Q' => '197,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962',
+  '=LU5YF/V' => '197,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962',
+  '=LW3DVN/X' => '197,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962',
   '=MM0DHQ/NHS' => '144,688',
   '=MM0LSM' => '687',
   '=MM0NQY' => '687',
   '=N4BCD' => '179',
   '=N4BER' => '186',
   '=N4DW' => '179',
+  '=N4EL' => '179',
   '=N4HAI' => '179',
+  '=N4HID' => '179',
+  '=N4JRG' => '179',
   '=N4KC' => '179',
   '=N4KH' => '179',
   '=N4MMT' => '194',
   '=N6DW' => '179',
   '=N6QEK' => '191,900,902,904,906,908',
   '=N6RSH' => '179',
-  '=N7BMD' => '186',
   '=N7CGC' => '191,900,902,904,906,908',
   '=N7DKL' => '191,900,902,904,906,908',
   '=N7DR' => '179',
   '=N7WY' => '179',
   '=N7ZZ' => '179',
   '=N8AID' => '179',
-  '=N8GU' => '179',
   '=N8II' => '179',
   '=N8NA' => '179',
   '=N8NN' => '179',
   '=NG7A' => '179',
   '=NH2B' => '180',
   '=NH2LS' => '191,900,902,904,906,908',
+  '=NH6L' => '179',
   '=NH6T' => '179',
   '=NI7R' => '179',
   '=NJ4P' => '179',
   '=NN9DD' => '179',
   '=NO9E' => '179',
   '=NP2GG' => '179',
+  '=NP3FB' => '179',
   '=NP3K' => '179',
   '=NQ6N' => '179',
   '=NR4L' => '179',
   '=NX1P' => '179',
   '=NY6DX' => '179',
   '=NZ6T' => '179',
+  '=NZ7Q' => '179',
   '=R100RK' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
   '=R2ET/9' => '265,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379',
   '=R2MWO' => '264',
   '=R4IN' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
   '=R4IO' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
   '=R4IT' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
+  '=R5QA/1' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
+  '=R7AB/P' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
+  '=R8CW/4' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
   '=R8FF/3' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
-  '=R8FF/7' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
   '=R8FF/8' => '265,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379',
   '=R8FF/P' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
   '=R8MB/1' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
   '=R8XF/1' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
-  '=R9WCJ/8' => '265,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379',
+  '=R8XF/3' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
+  '=R9JBF/1' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
+  '=R9PS/9' => '265,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379',
   '=RA/UT5IA' => '265,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379',
   '=RA0QK/8' => '265,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379',
+  '=RA1WS/1' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
   '=RA4HL' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
   '=RA4NCC' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
   '=RA9UUY/6' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
   '=RU4HD' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
   '=RU4HP' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
   '=RU4I' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
+  '=RV1CC/1' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
   '=RW4HM' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
   '=RW4HTK' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
   '=RW4HW' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
   '=RW4HZ' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
   '=RW9WJ/4' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
   '=RX9KT/6' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
-  '=RX9WT/8' => '265,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379',
   '=SV0XAZ' => '240',
   '=SV2ASP/A' => '238',
   '=SV2RSG/A' => '238',
   '=TA1BZ/2' => '249,1170,1172,1174,1176,1178,1180,1182,1184,1186,1188',
   '=TA1C/2' => '249,1170,1172,1174,1176,1178,1180,1182,1184,1186,1188',
+  '=TA1CX/2' => '249,1170,1172,1174,1176,1178,1180,1182,1184,1186,1188',
   '=TA1D/3' => '249,1170,1172,1174,1176,1178,1180,1182,1184,1186,1188',
   '=TA1D/4' => '249,1170,1172,1174,1176,1178,1180,1182,1184,1186,1188',
   '=TA1FA/2' => '249,1170,1172,1174,1176,1178,1180,1182,1184,1186,1188',
   '=TA6CQ/1' => '1171',
   '=TO1A' => '139',
   '=TO5A' => '123',
-  '=TO5O' => '123',
   '=TO5T' => '123',
   '=TO7A' => '123',
   '=TO8FTDM' => '118',
   '=UA4NF' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
   '=UA4PN' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
   '=UA4RF' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
-  '=UB5O/1' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
-  '=UB5O/2' => '264',
-  '=UB5O/4' => '265,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379',
-  '=UB5O/9' => '265,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379',
   '=UC4I' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
   '=UD6AOP/0' => '265,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379',
   '=UI4I' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315',
   '=VE2FK' => '276,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533',
   '=VE2IDX' => '276,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533',
   '=VE2IM' => '276,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533',
-  '=VE2KK' => '276,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533',
   '=VE8AT' => '276,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533',
-  '=VER20200625' => '276,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533',
-  '=VERSION' => '75',
+  '=VER20200724' => '276,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533',
+  '=VERSION' => '271',
   '=VK0AI' => '336',
   '=VK0EK' => '335',
   '=VK3YQS/9' => '338',
   '=W0RIC' => '179',
   '=W0ZEE' => '191,900,902,904,906,908',
   '=W0ZP' => '179',
+  '=W1ETT' => '186',
   '=W1GKT' => '179',
   '=W1JM' => '191,900,902,904,906,908',
   '=W1LYD' => '191,900,902,904,906,908',
   '=W6SFG' => '179',
   '=W6UB' => '179',
   '=W6XR' => '179',
+  '=W7DXX' => '179',
   '=W7EE' => '179',
   '=W7HJ' => '179',
   '=W7II' => '179',
   '=W7IMP' => '179',
   '=W7IY' => '179',
-  '=W7KF' => '179',
   '=W7NX' => '186',
   '=W7RY' => '179',
   '=W7UT' => '179',
   '=W9PL' => '179',
   '=W9RM' => '179',
   '=W9RNY' => '179',
+  '=WA0LJM' => '179',
   '=WA0WWW' => '179',
   '=WA1FCN' => '179',
   '=WA1FVJ' => '191,900,902,904,906,908',
   '=WA1UJU' => '179',
   '=WA2VYA' => '179',
   '=WA3C' => '179',
-  '=WA4JA' => '179',
   '=WA5POK' => '179',
   '=WA6AW' => '186',
   '=WA6CZL' => '186',
   '=WB3JFS' => '179',
   '=WB4JTT' => '186',
   '=WB4YDY' => '179',
+  '=WB5WAJ' => '179',
   '=WB8BPU' => '179',
   '=WB8YYY' => '179',
   '=WB9QAF' => '179',
   '=WH6GCO' => '191,900,902,904,906,908',
   '=WH6LE' => '179',
   '=WH7R' => '179',
+  '=WJ4HCP' => '179',
   '=WJ9B' => '179',
   '=WL7OU' => '179',
   '=WM5DX' => '179',
   '=WN7S' => '179',
+  '=WN7Y' => '179',
   '=WO7U' => '179',
   '=WP3ME' => '179',
   '=WQ5L' => '179',
   '=WS7X' => '179',
   '=WS9M' => '179',
   '=WT2P' => '179',
+  '=WT7TT' => '179',
   '=WT8WV' => '179',
   '=WU0B' => '179',
   '=WU9B' => '179',
   '=WV4P' => '179',
   '=WV8SW' => '179',
-  '=WW4AL' => '191,900,902,904,906,908',
   '=WW4R' => '179',
   '=WW5M' => '179',
   '=WX4W' => '179',
index 23f2dfd1d6776dcf73071f5b76372076348907f3..c56ef30d034ae88e73af139012f13b4a052b119f 100644 (file)
@@ -1,6 +1,6 @@
 ! $Id$
 !
-! This file was created by Jim Reisert AD1C on 25 Jun 2020
+! This file was created by Jim Reisert AD1C on 24 Jul 2020
 ! See: https://www.country-files.com/dx-cluster/wpxloc/
 !
 ! Highest DXCC number is 359 ("VERSION" entity)
index bef5626d9e30a998aabbb6ccf70115a77362bdc2..0f45213596374b5da4c7f585f3bf730906a413dc 100644 (file)
@@ -959,7 +959,7 @@ sub announce
                $buf = dd(['ann', $to, $target, $text, @_])
        } else {
                $buf = "$to$target de $_[0]: $text";
-               $buf =~ s/\%5E/^/g;
+               #$buf =~ s/\%5E/^/g;
                $buf .= "\a\a" if $self->{beep};
        }
        $self->local_send($target eq 'WX' ? 'W' : 'N', $buf);
@@ -984,7 +984,7 @@ sub chat
                $buf = dd(['chat', $to, $target, $text, @_])
        } else {
                $buf = "$target de $_[0]: $text";
-               $buf =~ s/\%5E/^/g;
+               #$buf =~ s/\%5E/^/g;
                $buf .= "\a\a" if $self->{beep};
        }
        $self->local_send('C', $buf);
@@ -1070,7 +1070,7 @@ sub dx_spot
        } else {
                $buf = $self->format_dx_spot(@_);
                $buf .= "\a\a" if $self->{beep};
-               $buf =~ s/\%5E/^/g;
+               #$buf =~ s/\%5E/^/g;
        }
 
        $self->local_send('X', $buf);
index 38d89bbc7d4b772c5c985ac3f9b73b4a72cf5a3f..174a98a4792697ee7513f8298c03e7710b97d671 100644 (file)
@@ -216,7 +216,7 @@ sub handle_29
        
        my $ref = get_fwq($fromnode, $stream);
        if ($ref) {
-               $_[4] =~ s/\%5E/^/g;
+               $_[4] =~ s/\%5E/~/g;
                if (@{$ref->{lines}}) {
                        push @{$ref->{lines}}, $_[4];
                } else {
index ec2201cee725b941dcff95c9c8f682dcd5cea038..2e9724e9ed78c4c6da3b95e85673f7eea183f309 100644 (file)
@@ -43,7 +43,7 @@ sub pc10
        $origin ||= $main::mycall;
        $text = unpad($text);
        $text = ' ' unless $text && length $text > 0;
-       $text =~ s/\^/%5E/g;
+       $text =~ s/\^/~/g;
        return "PC10^$from^$user1^$text^*^$user2^$origin^~";
 }
 
@@ -54,7 +54,7 @@ sub pc11
        my $hops = get_hops(11);
        my $t = time;
        $text = ' ' if !$text;
-       $text =~ s/\^/%5E/g;
+       $text =~ s/\^/~/g;
        return sprintf "PC11^%.1f^$dxcall^%s^%s^$text^$mycall^$main::mycall^$hops^~", $freq, cldate($t), ztime($t);
 }
 
@@ -65,7 +65,7 @@ sub pc61
        my $hops = get_hops(61) || get_hops(11);
        my $t = time;
        $text = ' ' if !$text;
-       $text =~ s/\^/%5E/g;
+       $text =~ s/\^/~/g;
        return sprintf "PC61^%.1f^$dxcall^%s^%s^$text^$mycall^$main::mycall^$ipaddr^$hops^~", $freq, cldate($t), ztime($t);
 }
 
@@ -75,7 +75,7 @@ sub pc12
        my ($call, $text, $tonode, $sysop, $wx, $origin) = @_;
        my $hops = get_hops(12);
        $text ||= ' ';
-       $text =~ s/\^/%5E/g;
+       $text =~ s/\^/~/g;
        $tonode ||= '*';
        $sysop ||= ' ';
        $wx ||= '0';
@@ -232,7 +232,7 @@ sub pc29
 {
        my ($fromnode, $tonode, $stream, $text) = @_;
        $text = ' ' unless defined $text && length $text > 0;
-       $text =~ s/\^/%5E/og;                   # remove ^
+       $text =~ s/\^/~/g;                      # remove ^
        return "PC29^$fromnode^$tonode^$stream^$text^~";
 }
 
index 8d5db6aaedb9d5894f3aec59f4986d1413931adc..d9fbe053f5d20960d6eb2c3397e2b1e5af059126 100644 (file)
@@ -46,15 +46,28 @@ use constant {
                          SOrigin => 4,
                          SZone => 11,
                         };
+use constant {
+                         OQual => 0,
+                         OAvediff => 1,
+                         OSpare => 2,
+                         ODiff => 3,
+                        };
+use constant {
+                         CTime => 0,
+                         CQual => 1,
+                         CData => 2,
+                        };
+
+
+our $DATA_VERSION = 1;
 
-       
 our @ISA = qw(DXChannel);
 
 our $startup_delay = 5*60;             # don't send anything out until this timer has expired
                                 # this is to allow the feed to "warm up" with duplicates
                                 # so that the "big rush" doesn't happen.
 
-our $minspottime = 60*60;              # the time between respots of a callsign - if a call is
+our $minspottime = 15*60;              # the time between respots of a callsign - if a call is
                                 # still being spotted (on the same freq) and it has been
                                 # spotted before, it's spotted again after this time
                                 # until the next minspottime has passed.
@@ -73,20 +86,25 @@ my %runtime;                                        # how long each channel has been running
 our $cachefn = localdata('rbn_cache');
 our $cache_valid = 4*60;               # The cache file is considered valid if it is not more than this old
 
+our $maxqrgdiff = 10;                  # the maximum
+our $minqual = 2;                              # the minimum quality we will accept for output
+
 my $json;
 my $noinrush = 0;                              # override the inrushpreventor if set
 
 sub init
 {
        $json = DXJSON->new;
-       $spots = {};
        if (check_cache()) {
                $noinrush = 1;
+       } else {
+               $spots = {VERSION=>$DATA_VERSION};
        }
        if (defined $DB::VERSION) {
                $noinrush = 1;
                $json->indent(1);
        }
+       
 }
 
 sub new 
@@ -117,6 +135,7 @@ sub new
        $self->{showstats} = 0;
        $self->{pingint} = 0;
        $self->{nopings} = 0;
+       $self->{queue} = {};
 
        return $self;
 }
@@ -196,7 +215,7 @@ sub normal
 
        # add base RBN
 
-       my $tim = $main::systime;
+       my $now = $main::systime;
 
        # parse line
        dbg "RBN:RAW,$line" if isdbg('rbnraw');
@@ -275,41 +294,64 @@ sub normal
                # process to just the standard "message passing" which has been shown to be able to sustain over 5000 
                # per second (limited by the test program's output and network speed, rather than DXSpider's handling).
 
-               my $nqrg = nearest(1, $qrg);  # normalised to nearest Khz
+               my $nearest = 1;
+               my $search = 5;
+               my $mult = 10;
+               my $tqrg = $qrg * $mult; 
+               my $nqrg = nearest($nearest, $tqrg);  # normalised to nearest Khz
 #              my $nqrg = nearest_even($qrg);  # normalised to nearest Khz
                my $sp = "$call|$nqrg";           # hopefully the skimmers will be calibrated at least this well!
-               my $spp = sprintf("$call|%d", $nqrg+1); # but, clearly, my hopes are rudely dashed
-               my $spm = sprintf("$call|%d", $nqrg-1); # in BOTH directions!
 
-               # do we have it?
-               my $spot = $spots->{$sp};
-               $spot = $spots->{$spp}, $sp = $spp, dbg(qq{RBN: SPP using $spp for $sp}) if isdbg('rbn') && !$spot && exists $spots->{$spp};
-               $spot = $spots->{$spm}, $sp = $spm, dbg(qq{RBN: SPM using $spm for $sp}) if isdbg('rbn') && !$spot && exists $spots->{$spm};
+               # find it?
+               my $cand = $spots->{$sp};
+               unless ($cand) {
+                       my ($i, $new);
+                       for ($i = $tqrg; !$cand && $i <= $tqrg+$search; $i += 1) {
+                               $new = "$call|$i";
+                               $cand = $spots->{$new}, last if exists $spots->{$new};
+                       }
+                       if ($cand) {
+                               my $diff = $i - $tqrg;
+                               dbg(qq{RBN: QRG Diff using $new (+$diff) for $sp for qrg $qrg}) if (isdbg('rbnqrg') || isdbg('rbn'));
+                               $sp = $new;
+                       }
+               }
+               unless ($cand) {
+                       my ($i, $new);
+                       for ($i = $tqrg; !$cand && $i >= $tqrg-$search; $i -= 1) {
+                               $new = "$call|$i";
+                               $cand = $spots->{$new}, last if exists $spots->{$new};
+                       }
+                       if ($cand) {
+                               my $diff = $tqrg - $i;
+                               dbg(qq{RBN: QRG Diff using $new (-$diff) for $sp for qrg $qrg}) if (isdbg('rbnqrg') || isdbg('rbn'));
+                               $sp = $new;
+                       }
+               }
                
-
                # if we have one and there is only one slot and that slot's time isn't expired for respot then return
                my $respot = 0;
-               if ($spot && ref $spot) {
-                       if (@$spot == 1) {
-                               unless ($self->{minspottime} > 0 && $tim - $spot->[0] >= $self->{minspottime}) {
-                                       dbg("RBN: key: '$sp' call: $call qrg: $qrg DUPE \@ ". atime(int $spot->[0])) if isdbg('rbn');
+               if ($cand && ref $cand) {
+                       if (@$cand <= CData) {
+                               unless ($self->{minspottime} > 0 && $now - $cand->[CTime] >= $self->{minspottime}) {
+                                       dbg("RBN: key: '$sp' call: $call qrg: $qrg DUPE \@ ". atime(int $cand->[CTime])) if isdbg('rbn');
                                        return;
                                }
                                
-                               dbg("RBN: key: '$sp' RESPOTTING call: $call qrg: $qrg last seen \@ ". atime(int $spot->[0])) if isdbg('rbn');
-                               undef $spot;    # it's about to be recreated (in one place)
+                               dbg("RBN: key: '$sp' RESPOTTING call: $call qrg: $qrg last seen \@ ". atime(int $cand->[CTime])) if isdbg('rbn');
+                               $cand->[CTime] = $now;
                                ++$respot;
                        }
 
                        # otherwise we have a spot being built up at the moment
-               } elsif ($spot) {
-                       dbg("RBN: key '$sp' = '$spot' not ref");
+               } elsif ($cand) {
+                       dbg("RBN: key '$sp' = '$cand' not ref");
                        return;
                }
 
                # here we either have an existing spot record buildup on the go, or we need to create the first one
-               unless ($spot) {
-                       $spots->{$sp} = $spot = [$main::systime];
+               unless ($cand) {
+                       $spots->{$sp} = $cand = [$now, 0];
                        dbg("RBN: key: '$sp' call: $call qrg: $qrg NEW" . ($respot ? ' RESPOT' : '')) if isdbg('rbn');
                }
 
@@ -320,7 +362,7 @@ sub normal
                # deal with the unix time
                my ($hh,$mm) = $t =~ /(\d\d)(\d\d)Z$/;
                my $utz = $hh*3600 + $mm*60 + $main::systime_daystart; # possible issue with late spot from previous day
-               $utz -= 86400 if $utz > $tim+3600;                                         # too far ahead, drag it back one day
+               $utz -= 86400 if $utz > $now+3600;                                         # too far ahead, drag it back one day
 
                # create record and add into the buildup
                my $r = [$origin, nearest(.1, $qrg), $call, $mode, $s, $t, $utz, $respot, $u];
@@ -336,51 +378,12 @@ sub normal
                }
                $r->[RSpotData] = \@s;
 
-               push @{$self->{queue}}, $sp if @$spot == 1; # queue the KEY (not the record)
+               ++$self->{queue}->{$sp};# unless @$cand>= CData; # queue the KEY (not the record)
 
                dbg("RBN: key: '$sp' ADD RECORD call: $call qrg: $qrg origin: $origin") if isdbg('rbn');
 
-               push @$spot, $r;
+               push @$cand, $r;
 
-               # At this point we run the queue to see if anything can be sent onwards to the punter
-               my $now = $main::systime;
-
-               # now run the waiting queue which just contains KEYS ($call|$qrg)
-               foreach $sp (@{$self->{queue}}) {
-                       my $cand = $spots->{$sp};
-                       unless ($cand && $cand->[0]) {
-                               dbg "RBN Cand " . ($cand ? 'def' : 'undef') . " [0] " . ($cand->[0] ? 'def' : 'undef') . " dwell $dwelltime";
-                               next;
-                       } 
-                       if ($now >= $cand->[0] + $dwelltime ) {
-                               # we have a candidate, create qualitee value(s);
-                               unless (@$cand > 1) {
-                                       dbg "RBN: QUEUE key '$sp' MISSING RECORDS " . dd($cand) if isdbg 'rbn';
-                                       shift @{$self->{queue}};
-                                       next;
-                               }
-                               my $savedtime = shift @$cand; # save the start time
-                               my $r = $cand->[0];
-                               my $quality = @$cand;
-                               $quality = 9 if $quality > 9;
-                               $quality = "Q:$quality";
-                               if (isdbg('progress')) {
-                                       my $s = "RBN: SPOT key: '$sp' = $r->[RCall] on $r->[RQrg] by $r->[ROrigin] \@ $r->[RTime] $quality";
-                                       $s .=  " route: $self->{call}";
-                                       dbg($s);
-                               }
-                               
-                               send_dx_spot($self, $quality, $cand);
-                               
-                               # clear out the data and make this now just "spotted", but no further action required until respot time
-                               dbg "RBN: QUEUE key '$sp' cleared" if isdbg 'rbn';
-                               
-                               $spots->{$sp} = [$savedtime];
-                               shift @{$self->{queue}};
-                       } else {
-                               dbg sprintf("RBN: QUEUE key: '$sp' SEND time not yet reached %.1f secs left", $spot->[0] + $dwelltime - $now) if isdbg 'rbnqueue'; 
-                       }
-               }
        } else {
                dbg "RBN:DATA,$line" if isdbg('rbn');
        }
@@ -391,7 +394,7 @@ sub send_dx_spot
 {
        my $self = shift;
        my $quality = shift;
-       my $spot = shift;
+       my $cand = shift;
 
        ++$self->{norbn};
        ++$self->{norbn10};
@@ -399,7 +402,7 @@ sub send_dx_spot
        
        # $r = [$origin, $qrg, $call, $mode, $s, $utz, $respot];
 
-       my $mode = $spot->[0]->[3]; # as all the modes will be the same;
+       my $mode = $cand->[CData]->[RMode]; # as all the modes will be the same;
        
        my @dxchan = DXChannel::get_all();
 
@@ -426,7 +429,7 @@ sub send_dx_spot
                                   )) if isdbg('rbnll');
 
                # send one spot to one user out of the ones that we have
-               $self->dx_spot($dxchan, $quality, $spot) if $want;
+               $self->dx_spot($dxchan, $quality, $cand) if $want;
        }
 }
 
@@ -435,7 +438,7 @@ sub dx_spot
        my $self = shift;
        my $dxchan = shift;
        my $quality = shift;
-       my $spot = shift;
+       my $cand = shift;
        my $call = $dxchan->{call};
        
 
@@ -453,14 +456,17 @@ sub dx_spot
 
        my $filtered;
        my $rf = $dxchan->{rbnfilter} || $dxchan->{spotsfilter};
-       foreach my $r (@$spot) {
+       my $comment;
+       
+       foreach my $r (@$cand) {
                # $r = [$origin, $qrg, $call, $mode, $s, $t, $utz, $respot, $qra];
                # Spot::prepare($qrg, $call, $utz, $comment, $origin);
+               next unless ref $r;
 
-               my $comment = sprintf "%-3s %2ddB $quality", $r->[RMode], $r->[RStrength];
                $respot = 1 if $r->[Respot];
                $qra = $r->[RQra] if !$qra && $r->[RQra] && is_qra($r->[RQra]);
 
+               $comment = sprintf "%-3s %2ddB $quality", $r->[RMode], $r->[RStrength];
                my $s = $r->[RSpotData];                # the prepared spot
                $s->[SComment] = $comment;              # apply new generated comment
                
@@ -507,6 +513,9 @@ sub dx_spot
                $saver->[SComment] .= '*' if $c > 1;
                $saver->[SComment] .= '+' if $respot;
                $saver->[SComment] .= " Z:$z" if $z;
+               if ($c > 1 && (isdbg('rbnqrg') || isdbg('rbn'))) {
+                       
+               }
                
                dbg("RBN: SENDING to $call spot: $saver->[SCall] qrg: $saver->[SQrg] origin: $saver->[SOrigin] $saver->[SComment]") if isdbg 'rbnll';
                if ($dxchan->{ve7cc}) {
@@ -539,6 +548,58 @@ sub dx_spot
        }
 }
 
+# per second
+sub process
+{
+       foreach my $dxchan (DXChannel::get_all()) {
+               next unless $dxchan->is_rbn;
+               
+               # At this point we run the queue to see if anything can be sent onwards to the punter
+               my $now = $main::systime;
+
+               # now run the waiting queue which just contains KEYS ($call|$qrg)
+               foreach my $sp (keys %{$dxchan->{queue}}) {
+                       my $cand = $spots->{$sp};
+                       unless ($cand && $cand->[CTime]) {
+                               dbg "RBN Cand $sp " . ($cand ? 'def' : 'undef') . " [CTime] " . ($cand->[CTime] ? 'def' : 'undef') . " dwell $dwelltime";
+                               next;
+                       } 
+                       if ($now >= $cand->[CTime] + $dwelltime ) {
+                               # we have a candidate, create qualitee value(s);
+                               unless (@$cand > CData) {
+                                       dbg "RBN: QUEUE key '$sp' MISSING RECORDS, IGNORED" . dd($cand) if isdbg 'rbn';
+                                       next;
+                               }
+                               dbg "RBN: QUEUE PROCESSING key: '$sp' $now >= $cand->[CTime]" if isdbg 'rbnqueue'; 
+                               my $r = $cand->[CData];
+                               my $quality = @$cand - CData;
+                               $quality = 9 if $quality > 9;
+                               $cand->[CQual] = $quality if $quality > $cand->[CQual];
+                               my $squality = "Q:$cand->[CQual]";
+
+                               if ($cand->[CQual] >= $minqual) {
+                                       if (isdbg('progress')) {
+                                               my $s = "RBN: SPOT key: '$sp' = $r->[RCall] on $r->[RQrg] by $r->[ROrigin] \@ $r->[RTime] $squality route: $dxchan->{call}";
+                                               dbg($s);
+                                       }
+                                       send_dx_spot($dxchan, $squality, $cand);
+                               } elsif (isdbg('rbn')) {
+                                       my $s = "RBN: SPOT IGNORED(Q $cand->[CQual] < $minqual) key: '$sp' = $r->[RCall] on $r->[RQrg] by $r->[ROrigin] \@ $r->[RTime] $squality route: $dxchan->{call}";
+                                       dbg($s);
+                               }
+                               
+                               # clear out the data and make this now just "spotted", but no further action required until respot time
+                               dbg "RBN: QUEUE key '$sp' cleared" if isdbg 'rbn';
+                               
+                               $spots->{$sp} = [$now, $cand->[CQual]];
+                               delete $dxchan->{queue}->{$sp};
+                       } else {
+                               dbg sprintf("RBN: QUEUE key: '$sp' SEND time not yet reached %.1f secs left", $cand->[CTime] + $dwelltime - $now) if isdbg 'rbnqueue'; 
+                       }
+               }
+       }
+       
+}
 
 sub per_minute
 {
@@ -561,8 +622,8 @@ sub per_10_minute
 {
        my $count = 0;
        my $removed = 0;
-       while (my ($k,$v) = each %{$spots}) {
-               if ($main::systime - $v->[0] > $minspottime*2) {
+       while (my ($k,$cand) = each %{$spots}) {
+               if ($main::systime - $cand->[CTime] > $minspottime*2) {
                        delete $spots->{$k};
                        ++$removed;
                }
@@ -573,7 +634,8 @@ sub per_10_minute
        dbg "RBN:STATS spot cache remain: $count removed: $removed"; # if isdbg('rbn');
        foreach my $dxchan (DXChannel::get_all()) {
                next unless $dxchan->is_rbn;
-               dbg "RBN:STATS 10-minute $dxchan->{call} raw: $dxchan->{noraw10} sent: $dxchan->{norbn10} delivered: $dxchan->{nospot10} users: " . scalar keys %{$dxchan->{nousers10}};
+               my $nq = keys %{$dxchan->{queue}};
+               dbg "RBN:STATS 10-minute $dxchan->{call} queue: $nq raw: $dxchan->{noraw10} sent: $dxchan->{norbn10} delivered: $dxchan->{nospot10} users: " . scalar keys %{$dxchan->{nousers10}};
                $dxchan->{noraw10} = $dxchan->{norbn10} = $dxchan->{nospot10} = 0; $dxchan->{nousers10} = {};
        }
 }
@@ -582,7 +644,8 @@ sub per_hour
 {
        foreach my $dxchan (DXChannel::get_all()) {
                next unless $dxchan->is_rbn;
-               dbg "RBN:STATS hour $dxchan->{call} raw: $dxchan->{norawhour} sent: $dxchan->{norbnhour} delivered: $dxchan->{nospothour} users: " . scalar keys %{$dxchan->{nousershour}};
+               my $nq = keys %{$dxchan->{queue}};
+               dbg "RBN:STATS hour $dxchan->{call} queue: $nq raw: $dxchan->{norawhour} sent: $dxchan->{norbnhour} delivered: $dxchan->{nospothour} users: " . scalar keys %{$dxchan->{nousershour}};
                $dxchan->{norawhour} = $dxchan->{norbnhour} = $dxchan->{nospothour} = 0; $dxchan->{nousershour} = {};
        }
 }
@@ -621,9 +684,18 @@ sub check_cache
                        }
                        if ($s) {
                                eval {$spots = $json->decode($s)};
-                               if ($spots && ref $spots) {
-                                       dbg("RBN:check_cache spot cache restored");
-                                       return 1;
+                               if ($spots && ref $spots) {     
+                                       if (exists $spots->{VERSION} && $spots->{VERSION} == $DATA_VERSION) {
+                                               # now clean out anything that is current
+                                               while (my ($k, $cand) = each %$spots) {
+                                                       next unless ref $cand;
+                                                       if (@$cand > CData) {
+                                                               $spots->{$k} = [$cand->[CTime], $cand->[CQual]];
+                                                       }
+                                               }
+                                               dbg("RBN:check_cache spot cache restored");
+                                               return 1;
+                                       } 
                                }
                        }
                        dbg("RBN::checkcache error decoding $@");
index 763c60bda86747a30df086dac5c10f2f11e3c14c..2205cc5bce1e127226599e66a866e9928d571688 100644 (file)
@@ -331,6 +331,7 @@ sub search
                        my $rec = 0;
                        my $in;
                        while (<$fh>) {
+                               chomp;
                                my @r = split /\^/;
                                ++$rec;
                                if ($dxchan) {
index 81a11144b8f3ed4b1fbd0e538c77da67d9207eaa..729b91c07f43359a6856f9b831ff4857cf6f8e8f 100644 (file)
@@ -47,8 +47,10 @@ sub dx_spot
                my $loc = $ref->qra || '';
                $loc_spotter = substr($loc, 0, 4) if $loc;
        }
+       my $text = $_[4];
+       $text =~ s/\^/~/g;
        
-       return sprintf("CC11^%0.1f^%s^", $freq, $spotted) . join('^', cldate($t), ztime($t), @_, $spotted_cc, $spotter_cc, $loc_spotted, $loc_spotter);
+       return sprintf("CC11^%0.1f^%s^", $freq, $spotted) . join('^', cldate($t), ztime($t), @_[0..3], $text, @_[5..10], $spotted_cc, $spotter_cc, $loc_spotted, $loc_spotter);
 }
 
 1;
index a38e5a1095d2e325c1c35ecf9160544841303af4..ca70610f9d7d824dfa0ae89a5f8c09f01473e623 100755 (executable)
@@ -773,7 +773,8 @@ sub per_sec
        DXUser::process();
        AGWMsg::process();
        DXCron::process();                      # do cron jobs
-       
+       RBN::process();
+
        Timer::handler();
        DXLog::flushall();
 }