[8229] | 1 | #!/usr/bin/env perl
|
---|
| 2 |
|
---|
| 3 | # ========================================================================
|
---|
| 4 | # createRnx3Aliases.pl
|
---|
| 5 | # ========================================================================
|
---|
| 6 | #
|
---|
| 7 | # Purpose : Helps to create Rnx3 alias mountpoints for a existing
|
---|
| 8 | # BKG NtripCaster installation. See help for details.
|
---|
| 9 | #
|
---|
[8230] | 10 | # Revision: $Id: createRnx3Aliases.pl 8230 2018-01-03 14:40:27Z wiese $
|
---|
[8229] | 11 | # ========================================================================
|
---|
| 12 |
|
---|
| 13 | # Uses
|
---|
| 14 | use strict;
|
---|
| 15 | use warnings;
|
---|
| 16 |
|
---|
| 17 | # Arguments
|
---|
| 18 | my ($confDir) = @ARGV;
|
---|
| 19 | if ( !defined $confDir || $confDir =~ /-h|--help/ ) {
|
---|
| 20 | print <<EOI_HLP;
|
---|
| 21 |
|
---|
| 22 | createRnx3Aliases.pl - Helps to create Rnx3 alias mountpoints for a existing
|
---|
| 23 | BKG NtripCaster installation.
|
---|
| 24 |
|
---|
| 25 | See White Paper URL???
|
---|
| 26 | For NtripCaster admins.
|
---|
| 27 | The output contains the alias records for the ntripcaster.conf file.
|
---|
| 28 | Creates a new sourcetable file with alias records included.
|
---|
| 29 |
|
---|
| 30 | USAGE:
|
---|
| 31 | $0 <ntripcaster-conf-dir>
|
---|
| 32 |
|
---|
| 33 | EXAMPLES:
|
---|
| 34 | $0 /home/rt/eurefcaster/conf
|
---|
| 35 |
|
---|
| 36 | Authors:
|
---|
| 37 | Erwin Wiesensarter <Erwin.Wiesensarter\@bkg.bund.de>
|
---|
| 38 |
|
---|
| 39 | EOI_HLP
|
---|
| 40 | exit;
|
---|
| 41 | }
|
---|
| 42 |
|
---|
| 43 | my $ntripcaster_conf = $confDir . '/ntripcaster.conf';
|
---|
| 44 | my $sourcetable_dat = $confDir . '/sourcetable.dat';
|
---|
| 45 |
|
---|
| 46 | my @igsLongNames = <DATA>;
|
---|
| 47 | chomp $_ for (@igsLongNames);
|
---|
| 48 |
|
---|
| 49 | my @existing_mpts;
|
---|
| 50 | my %st_streams = parseSourcetable($sourcetable_dat);
|
---|
| 51 |
|
---|
| 52 | # Create alias names for each stream
|
---|
| 53 | # ----------------------------------
|
---|
| 54 | my @alias;
|
---|
| 55 | my $rnx3Name = "";
|
---|
| 56 | while ( my ( $fourCharId, $rows ) = each %st_streams ) {
|
---|
| 57 |
|
---|
| 58 | # RAW streams
|
---|
| 59 | my @raw = grep ( $_->[3] =~ /RAW/i, @$rows );
|
---|
| 60 | if (@raw) {
|
---|
| 61 | if ( scalar @raw > 1 ) {
|
---|
| 62 | warn "WARN: more than one RAW stream for $fourCharId\n";
|
---|
| 63 | }
|
---|
| 64 | my $i = 0;
|
---|
| 65 | foreach (@raw) {
|
---|
| 66 | if ( $i == 0 ) {
|
---|
| 67 | $rnx3Name = $fourCharId . "00" . $_->[8] . 9;
|
---|
| 68 | if ( grep { $rnx3Name eq $_ } @existing_mpts ) {
|
---|
| 69 | print "$rnx3Name already exists - skip";
|
---|
| 70 | next;
|
---|
| 71 | }
|
---|
| 72 | printf "%-5s %-8s %-6s %-9s\n", $_->[1], $_->[3], $_->[4], $rnx3Name;
|
---|
| 73 | push ( @alias, [ $_->[1], $rnx3Name ] );
|
---|
| 74 | }
|
---|
| 75 | else {
|
---|
| 76 | printf "%-5s %-8s %-6s %-9s\n", $_->[1], $_->[3], $_->[4], "skipped";
|
---|
| 77 | }
|
---|
| 78 |
|
---|
| 79 | $i++;
|
---|
| 80 | }
|
---|
| 81 | }
|
---|
| 82 |
|
---|
| 83 | # RTCM streams
|
---|
| 84 | my @rtcm = map { $_->[0] }
|
---|
| 85 | sort { $b->[2] <=> $a->[2] }
|
---|
| 86 | map { [ $_, split ( /\s+/, $_->[3], 2 ) ] }
|
---|
| 87 | grep { $_->[3] =~ /RTCM/i } @$rows;
|
---|
| 88 |
|
---|
| 89 | my $i = 0;
|
---|
| 90 | foreach (@rtcm) {
|
---|
| 91 | $rnx3Name = $fourCharId . "00" . $_->[8] . $i++;
|
---|
| 92 | if ( grep { $rnx3Name eq $_ } @existing_mpts ) {
|
---|
| 93 | print "$rnx3Name already exists - skip";
|
---|
| 94 | next;
|
---|
| 95 | }
|
---|
| 96 | printf "%-5s %-15s %-9s\n", $_->[1], $_->[3], $rnx3Name;
|
---|
| 97 | push ( @alias, [ $_->[1], $rnx3Name ] );
|
---|
| 98 | }
|
---|
| 99 |
|
---|
| 100 | print "\n";
|
---|
| 101 | }
|
---|
| 102 |
|
---|
| 103 | print "===================== Alias ===================== (insert in $ntripcaster_conf)\n";
|
---|
| 104 | foreach ( sort { ( $a->[1] ) cmp ( $b->[1] ) } @alias ) {
|
---|
| 105 | print "alias /$_->[1] /$_->[0]\n";
|
---|
| 106 | }
|
---|
| 107 | print "\n";
|
---|
| 108 |
|
---|
| 109 | writeNewSourcetable($sourcetable_dat);
|
---|
| 110 |
|
---|
| 111 | ###############################################################################
|
---|
| 112 | sub parseSourcetable {
|
---|
| 113 | my ($sourcetableFil) = @_;
|
---|
| 114 |
|
---|
| 115 | my %st;
|
---|
| 116 | open ( my $ST, '<', $sourcetableFil ) || die "Could not open file '$sourcetableFil': $!\n";
|
---|
| 117 | while (<$ST>) {
|
---|
| 118 | chomp;
|
---|
| 119 | next if ( $_ =~ /^#/ );
|
---|
| 120 | $_ =~ /^(CAS|NET|STR);.+/ || die "Weird sourcetable line: [$_]";
|
---|
| 121 | if ( $_ =~ /^STR;/ ) {
|
---|
| 122 | my @fields = split ';', $_;
|
---|
| 123 | push ( @existing_mpts, $fields[1] );
|
---|
| 124 | scalar @fields >= 18 || die "Not enough fields in line: [$_]\nsee http://software.rtcm-ntrip.org/wiki/STR";
|
---|
| 125 | if ( $fields[1] =~ /^CLK|EPH$/i ) {
|
---|
| 126 | print "INFO: skip $fields[1]\n";
|
---|
| 127 | next;
|
---|
| 128 | }
|
---|
| 129 |
|
---|
| 130 | # Consider only mountpoint names with length 5
|
---|
| 131 | if ( length ( $fields[1] ) == 5 ) {
|
---|
| 132 | my $fourCharId = substr ( $fields[1], 0, 4 );
|
---|
| 133 |
|
---|
| 134 | # Compare country code with official IGS station list (IGS Network.csv 21.12.2017 from
|
---|
| 135 | # http://www.igs.org/network)
|
---|
| 136 | my @igs_found = grep ( $fourCharId eq substr ( $_, 0, 4 ), @igsLongNames );
|
---|
| 137 | if (@igs_found) {
|
---|
| 138 | my $rnx3Name = $fourCharId . "00" . $fields[8];
|
---|
| 139 | $rnx3Name eq $igs_found[0]
|
---|
[8230] | 140 | || die
|
---|
| 141 | "wrong country code \"$fields[8]\" for sourcetable stream $fields[1] (IGS: $igs_found[0])\n";
|
---|
[8229] | 142 | }
|
---|
| 143 | push ( @{ $st{$fourCharId} }, \@fields );
|
---|
| 144 | }
|
---|
| 145 | }
|
---|
| 146 | }
|
---|
| 147 | close ($ST);
|
---|
| 148 | return %st;
|
---|
| 149 | }
|
---|
| 150 |
|
---|
| 151 | sub writeNewSourcetable {
|
---|
| 152 | my ($sourcetable_orig) = @_;
|
---|
| 153 |
|
---|
| 154 | my $sourcetable_new = $sourcetable_orig . '.new';
|
---|
| 155 |
|
---|
| 156 | open ( my $ORIG, '<', $sourcetable_orig ) || die "Could not open file '$sourcetable_orig': $!\n";
|
---|
| 157 | open ( my $NEW, '>', $sourcetable_new ) || die "Could not open file '$sourcetable_new': $!\n";
|
---|
| 158 | while (<$ORIG>) {
|
---|
| 159 | print $NEW $_;
|
---|
| 160 | my @fields = split ( ';', $_ );
|
---|
| 161 | if ( @fields && $fields[0] eq "STR" ) {
|
---|
| 162 | my @found = grep ( $_->[0] eq $fields[1], @alias ); # search for mountpoint
|
---|
| 163 | if (@found) {
|
---|
| 164 | $fields[1] = $found[0]->[1];
|
---|
| 165 | $fields[18] = $found[0]->[0];
|
---|
| 166 | my $alias_rc = join ( ';', @fields );
|
---|
| 167 | print $NEW "$alias_rc\n";
|
---|
| 168 | }
|
---|
| 169 | }
|
---|
| 170 | }
|
---|
| 171 | close ($ORIG) || die "Could not close file $sourcetable_orig: $!";
|
---|
| 172 | close ($NEW) || die "Could not close file $sourcetable_new: $!";
|
---|
| 173 |
|
---|
| 174 | print "INFO: New sourcetable $sourcetable_new created\n";
|
---|
| 175 | }
|
---|
| 176 |
|
---|
| 177 | __DATA__
|
---|
| 178 | ABMF00GLP
|
---|
| 179 | ABPO00MDG
|
---|
| 180 | ADIS00ETH
|
---|
| 181 | AGGO00ARG
|
---|
| 182 | AIRA00JPN
|
---|
| 183 | AJAC00FRA
|
---|
| 184 | ALBH00CAN
|
---|
| 185 | ALGO00CAN
|
---|
| 186 | ALIC00AUS
|
---|
| 187 | ALRT00CAN
|
---|
| 188 | AMC200USA
|
---|
| 189 | ANKR00TUR
|
---|
| 190 | ANMG00MYS
|
---|
| 191 | ANTC00CHL
|
---|
| 192 | AREG00PER
|
---|
| 193 | AREQ00PER
|
---|
| 194 | ARTU00RUS
|
---|
| 195 | ARUC00ARM
|
---|
| 196 | ASCG00SHN
|
---|
| 197 | ASPA00USA
|
---|
| 198 | AUCK00NZL
|
---|
| 199 | AZU100USA
|
---|
| 200 | BADG00RUS
|
---|
| 201 | BAIE00CAN
|
---|
| 202 | BAKE00CAN
|
---|
| 203 | BAKO00IDN
|
---|
| 204 | BAMF00CAN
|
---|
| 205 | BARH00USA
|
---|
| 206 | BHR300BHR
|
---|
| 207 | BHR400BHR
|
---|
| 208 | BIK000KGZ
|
---|
| 209 | BILL00USA
|
---|
| 210 | BJCO00BEN
|
---|
| 211 | BJFS00CHN
|
---|
| 212 | BJNM00CHN
|
---|
| 213 | BLYT00USA
|
---|
| 214 | BNOA00IDN
|
---|
| 215 | BOGI00POL
|
---|
| 216 | BOGT00COL
|
---|
| 217 | BOR100POL
|
---|
| 218 | BRAZ00BRA
|
---|
| 219 | BREW00USA
|
---|
| 220 | BRFT00BRA
|
---|
| 221 | BRMU00GBR
|
---|
| 222 | BRST00FRA
|
---|
| 223 | BRUN00BRN
|
---|
| 224 | BRUX00BEL
|
---|
| 225 | BSHM00ISR
|
---|
| 226 | BTNG00IDN
|
---|
| 227 | BUCU00ROU
|
---|
| 228 | BZRG00ITA
|
---|
| 229 | CAGS00CAN
|
---|
| 230 | CAS100ATA
|
---|
| 231 | CCJ200JPN
|
---|
| 232 | CEBR00ESP
|
---|
| 233 | CEDU00AUS
|
---|
| 234 | CGGN00NGA
|
---|
| 235 | CHAN00CHN
|
---|
| 236 | CHIL00USA
|
---|
| 237 | CHOF00JPN
|
---|
| 238 | CHPG00BRA
|
---|
| 239 | CHPI00BRA
|
---|
| 240 | CHTI00NZL
|
---|
| 241 | CHUM00KAZ
|
---|
| 242 | CHUR00CAN
|
---|
| 243 | CHWK00CAN
|
---|
| 244 | CIT100USA
|
---|
| 245 | CKIS00COK
|
---|
| 246 | CKSV00TWN
|
---|
| 247 | CLAR00USA
|
---|
| 248 | CMP900USA
|
---|
| 249 | CMUM00THA
|
---|
| 250 | CNMR00USA
|
---|
| 251 | COCO00AUS
|
---|
| 252 | CORD00ARG
|
---|
| 253 | COSO00USA
|
---|
| 254 | COTE00ATA
|
---|
| 255 | COYQ00CHL
|
---|
| 256 | CPNM00THA
|
---|
| 257 | CPVG00CPV
|
---|
| 258 | CRAO00UKR
|
---|
| 259 | CRFP00USA
|
---|
| 260 | CRO100VIR
|
---|
| 261 | CUSV00THA
|
---|
| 262 | CUT000AUS
|
---|
| 263 | CUUT00THA
|
---|
| 264 | CZTG00ATF
|
---|
| 265 | DAE200KOR
|
---|
| 266 | DAEJ00KOR
|
---|
| 267 | DAKR00SEN
|
---|
| 268 | DARW00AUS
|
---|
| 269 | DAV100ATA
|
---|
| 270 | DEAR00ZAF
|
---|
| 271 | DGAR00GBR
|
---|
| 272 | DHLG00USA
|
---|
| 273 | DJIG00DJI
|
---|
| 274 | DLF100NLD
|
---|
| 275 | DLTV00VNM
|
---|
| 276 | DRAG00ISR
|
---|
| 277 | DRAO00CAN
|
---|
| 278 | DUBO00CAN
|
---|
| 279 | DUM100ATA
|
---|
| 280 | DUND00NZL
|
---|
| 281 | DYNG00GRC
|
---|
| 282 | EBRE00ESP
|
---|
| 283 | EIL300USA
|
---|
| 284 | EIL400USA
|
---|
| 285 | EPRT00USA
|
---|
| 286 | ESCU00CAN
|
---|
| 287 | EUSM00MYS
|
---|
| 288 | FAA100PYF
|
---|
| 289 | FAIR00USA
|
---|
| 290 | FALE00WSM
|
---|
| 291 | FALK00FLK
|
---|
| 292 | FFMJ00DEU
|
---|
| 293 | FLIN00CAN
|
---|
| 294 | FLRS00PRT
|
---|
| 295 | FRDN00CAN
|
---|
| 296 | FTNA00WLF
|
---|
| 297 | FUNC00PRT
|
---|
| 298 | GAMB00PYF
|
---|
| 299 | GAMG00KOR
|
---|
| 300 | GANP00SVK
|
---|
| 301 | GCGO00USA
|
---|
| 302 | GENO00ITA
|
---|
| 303 | GLPS00ECU
|
---|
| 304 | GLSV00UKR
|
---|
| 305 | GMSD00JPN
|
---|
| 306 | GODE00USA
|
---|
| 307 | GODN00USA
|
---|
| 308 | GODS00USA
|
---|
| 309 | GODZ00USA
|
---|
| 310 | GOL200USA
|
---|
| 311 | GOLD00USA
|
---|
| 312 | GOP600CZE
|
---|
| 313 | GOP700CZE
|
---|
| 314 | GOPE00CZE
|
---|
| 315 | GOUG00SHN
|
---|
| 316 | GRAC00FRA
|
---|
| 317 | GRAS00FRA
|
---|
| 318 | GRAZ00AUT
|
---|
| 319 | GUAM00GUM
|
---|
| 320 | GUAO00CHN
|
---|
| 321 | GUAT00GTM
|
---|
| 322 | GUUG00GUM
|
---|
| 323 | HALY00SAU
|
---|
| 324 | HAMD00IRN
|
---|
| 325 | HARB00ZAF
|
---|
| 326 | HARV00USA
|
---|
| 327 | HERS00GBR
|
---|
| 328 | HERT00GBR
|
---|
| 329 | HKSL00HKG
|
---|
| 330 | HKWS00HKG
|
---|
| 331 | HLFX00CAN
|
---|
| 332 | HNLC00USA
|
---|
| 333 | HNPT00USA
|
---|
| 334 | HNUS00ZAF
|
---|
| 335 | HOB200AUS
|
---|
| 336 | HOFN00ISL
|
---|
| 337 | HOLB00CAN
|
---|
| 338 | HOLM00CAN
|
---|
| 339 | HOLP00USA
|
---|
| 340 | HRAG00ZAF
|
---|
| 341 | HRAO00ZAF
|
---|
| 342 | HUEG00DEU
|
---|
| 343 | HYDE00IND
|
---|
| 344 | IENG00ITA
|
---|
| 345 | IISC00IND
|
---|
| 346 | INEG00MEX
|
---|
| 347 | INVK00CAN
|
---|
| 348 | IQAL00CAN
|
---|
| 349 | IQQE00CHL
|
---|
| 350 | IRKJ00RUS
|
---|
| 351 | IRKM00RUS
|
---|
| 352 | IRKT00RUS
|
---|
| 353 | ISBA00IRQ
|
---|
| 354 | ISPA00CHL
|
---|
| 355 | ISTA00TUR
|
---|
| 356 | IZMI00TUR
|
---|
| 357 | JCTW00ZAF
|
---|
| 358 | JFNG00CHN
|
---|
| 359 | JNAV00VNM
|
---|
| 360 | JOG200IDN
|
---|
| 361 | JOZ200POL
|
---|
| 362 | JOZE00POL
|
---|
| 363 | JPLM00USA
|
---|
| 364 | JPRE00ZAF
|
---|
| 365 | KARR00AUS
|
---|
| 366 | KAT100AUS
|
---|
| 367 | KELY00GRL
|
---|
| 368 | KERG00ATF
|
---|
| 369 | KGNI00JPN
|
---|
| 370 | KHAR00UKR
|
---|
| 371 | KIR000SWE
|
---|
| 372 | KIR800SWE
|
---|
| 373 | KIRI00KIR
|
---|
| 374 | KIRU00SWE
|
---|
| 375 | KIT300UZB
|
---|
| 376 | KITG00UZB
|
---|
| 377 | KMNM00TWN
|
---|
| 378 | KOKB00USA
|
---|
| 379 | KOKV00USA
|
---|
| 380 | KOS100NLD
|
---|
| 381 | KOUC00NCL
|
---|
| 382 | KOUG00GUF
|
---|
| 383 | KOUR00GUF
|
---|
| 384 | KRGG00ATF
|
---|
| 385 | KRS100TUR
|
---|
| 386 | KSMV00JPN
|
---|
| 387 | KUNM00CHN
|
---|
| 388 | KUUJ00CAN
|
---|
| 389 | KZN200RUS
|
---|
| 390 | LAE100PNG
|
---|
| 391 | LAMA00POL
|
---|
| 392 | LAUT00FJI
|
---|
| 393 | LBCH00USA
|
---|
| 394 | LCK300IND
|
---|
| 395 | LCK400IND
|
---|
| 396 | LEIJ00DEU
|
---|
| 397 | LHAZ00CHN
|
---|
| 398 | LLAG00ESP
|
---|
| 399 | LMMF00MTQ
|
---|
| 400 | LPAL00ESP
|
---|
| 401 | LPGS00ARG
|
---|
| 402 | LROC00FRA
|
---|
| 403 | M0SE00ITA
|
---|
| 404 | MAC100AUS
|
---|
| 405 | MAD200ESP
|
---|
| 406 | MADR00ESP
|
---|
| 407 | MAG000RUS
|
---|
| 408 | MAJU00MHL
|
---|
| 409 | MAL200KEN
|
---|
| 410 | MANA00NIC
|
---|
| 411 | MAR600SWE
|
---|
| 412 | MAR700SWE
|
---|
| 413 | MARS00FRA
|
---|
| 414 | MAS100ESP
|
---|
| 415 | MAT100ITA
|
---|
| 416 | MATE00ITA
|
---|
| 417 | MATG00ITA
|
---|
| 418 | MAUI00USA
|
---|
| 419 | MAW100ATA
|
---|
| 420 | MAYG00MYT
|
---|
| 421 | MBAR00UGA
|
---|
| 422 | MCHL00AUS
|
---|
| 423 | MCIL00JPN
|
---|
| 424 | MCM400ATA
|
---|
| 425 | MDO100USA
|
---|
| 426 | MDVJ00RUS
|
---|
| 427 | MEDI00ITA
|
---|
| 428 | MELI00ESP
|
---|
| 429 | MERS00TUR
|
---|
| 430 | MET300FIN
|
---|
| 431 | METG00FIN
|
---|
| 432 | METS00FIN
|
---|
| 433 | MFKG00ZAF
|
---|
| 434 | MGUE00ARG
|
---|
| 435 | MIKL00UKR
|
---|
| 436 | MIZU00JPN
|
---|
| 437 | MKEA00USA
|
---|
| 438 | MOBJ00RUS
|
---|
| 439 | MOBK00RUS
|
---|
| 440 | MOBN00RUS
|
---|
| 441 | MOBS00AUS
|
---|
| 442 | MOIU00KEN
|
---|
| 443 | MONP00USA
|
---|
| 444 | MORP00GBR
|
---|
| 445 | MQZG00NZL
|
---|
| 446 | MRL100NZL
|
---|
| 447 | MRL200NZL
|
---|
| 448 | MRO100AUS
|
---|
| 449 | MTKA00JPN
|
---|
| 450 | MTV100URY
|
---|
| 451 | MTV200URY
|
---|
| 452 | NAIN00CAN
|
---|
| 453 | NAMA00SAU
|
---|
| 454 | NANO00CAN
|
---|
| 455 | NAUR00NRU
|
---|
| 456 | NCKU00TWN
|
---|
| 457 | NICO00CYP
|
---|
| 458 | NIST00USA
|
---|
| 459 | NIUM00NIU
|
---|
| 460 | NKLG00GAB
|
---|
| 461 | NLIB00USA
|
---|
| 462 | NNOR00AUS
|
---|
| 463 | NOT100ITA
|
---|
| 464 | NOVM00RUS
|
---|
| 465 | NRC100CAN
|
---|
| 466 | NRIL00RUS
|
---|
| 467 | NRL100USA
|
---|
| 468 | NRMD00NCL
|
---|
| 469 | NTUS00SGP
|
---|
| 470 | NURK00RWA
|
---|
| 471 | NVSK00RUS
|
---|
| 472 | NYA100NOR
|
---|
| 473 | NYA200NOR
|
---|
| 474 | NYAL00NOR
|
---|
| 475 | OAK100GBR
|
---|
| 476 | OAK200GBR
|
---|
| 477 | OBE400DEU
|
---|
| 478 | OHI200ATA
|
---|
| 479 | OHI300ATA
|
---|
| 480 | ONS100SWE
|
---|
| 481 | ONSA00SWE
|
---|
| 482 | OPMT00FRA
|
---|
| 483 | ORID00MKD
|
---|
| 484 | OSN300KOR
|
---|
| 485 | OSN400KOR
|
---|
| 486 | OUS200NZL
|
---|
| 487 | OWMG00NZL
|
---|
| 488 | PADO00ITA
|
---|
| 489 | PALM00ATA
|
---|
| 490 | PARC00CHL
|
---|
| 491 | PARK00AUS
|
---|
| 492 | PBRI00IND
|
---|
| 493 | PDEL00PRT
|
---|
| 494 | PEN200HUN
|
---|
| 495 | PENC00HUN
|
---|
| 496 | PERT00AUS
|
---|
| 497 | PETS00RUS
|
---|
| 498 | PGEN00PHL
|
---|
| 499 | PICL00CAN
|
---|
| 500 | PIE100USA
|
---|
| 501 | PIMO00PHL
|
---|
| 502 | PIN100USA
|
---|
| 503 | PNGM00PNG
|
---|
| 504 | POHN00FSM
|
---|
| 505 | POL200KGZ
|
---|
| 506 | POLV00UKR
|
---|
| 507 | POTS00DEU
|
---|
| 508 | POVE00BRA
|
---|
| 509 | PPPC00PHL
|
---|
| 510 | PRDS00CAN
|
---|
| 511 | PRE300ZAF
|
---|
| 512 | PRE400ZAF
|
---|
| 513 | PTAG00PHL
|
---|
| 514 | PTBB00DEU
|
---|
| 515 | PTGG00PHL
|
---|
| 516 | PTVL00VUT
|
---|
| 517 | QAQ100GRL
|
---|
| 518 | QIKI00CAN
|
---|
| 519 | QUI300ECU
|
---|
| 520 | QUI400ECU
|
---|
| 521 | QUIN00USA
|
---|
| 522 | RABT00MAR
|
---|
| 523 | RAEG00PRT
|
---|
| 524 | RAMO00ISR
|
---|
| 525 | RBAY00ZAF
|
---|
| 526 | RCMN00KEN
|
---|
| 527 | RDSD00DOM
|
---|
| 528 | RECF00BRA
|
---|
| 529 | REDU00BEL
|
---|
| 530 | RESO00CAN
|
---|
| 531 | REUN00REU
|
---|
| 532 | REYK00ISL
|
---|
| 533 | RGDG00ARG
|
---|
| 534 | RIGA00LVA
|
---|
| 535 | RIO200ARG
|
---|
| 536 | RIOP00ECU
|
---|
| 537 | ROAP00ESP
|
---|
| 538 | ROCK00USA
|
---|
| 539 | ROTH00ATA
|
---|
| 540 | SALU00BRA
|
---|
| 541 | SAMO00WSM
|
---|
| 542 | SANT00CHL
|
---|
| 543 | SASK00CAN
|
---|
| 544 | SASS00DEU
|
---|
| 545 | SAVO00BRA
|
---|
| 546 | SBOK00ZAF
|
---|
| 547 | SCH200CAN
|
---|
| 548 | SCIP00USA
|
---|
| 549 | SCOR00GRL
|
---|
| 550 | SCRZ00BOL
|
---|
| 551 | SCTB00ATA
|
---|
| 552 | SCUB00CUB
|
---|
| 553 | SEJN00KOR
|
---|
| 554 | SEY200SYC
|
---|
| 555 | SEYG00SYC
|
---|
| 556 | SFDM00USA
|
---|
| 557 | SFER00ESP
|
---|
| 558 | SGOC00LKA
|
---|
| 559 | SHAO00CHN
|
---|
| 560 | SHE200CAN
|
---|
| 561 | SIMO00ZAF
|
---|
| 562 | SIN100SGP
|
---|
| 563 | SMST00JPN
|
---|
| 564 | SNI100USA
|
---|
| 565 | SOD300FIN
|
---|
| 566 | SOFI00BGR
|
---|
| 567 | SOLA00SAU
|
---|
| 568 | SOLO00SLB
|
---|
| 569 | SPK100USA
|
---|
| 570 | SPT000SWE
|
---|
| 571 | SPTU00BRA
|
---|
| 572 | SSIA00SLV
|
---|
| 573 | STFU00USA
|
---|
| 574 | STHL00GBR
|
---|
| 575 | STJ300CAN
|
---|
| 576 | STJO00CAN
|
---|
| 577 | STK200JPN
|
---|
| 578 | STR100AUS
|
---|
| 579 | STR200AUS
|
---|
| 580 | SULP00UKR
|
---|
| 581 | SUTH00ZAF
|
---|
| 582 | SUTM00ZAF
|
---|
| 583 | SUWN00KOR
|
---|
| 584 | SVTL00RUS
|
---|
| 585 | SYDN00AUS
|
---|
| 586 | SYOG00ATA
|
---|
| 587 | TABL00USA
|
---|
| 588 | TANA00ETH
|
---|
| 589 | TASH00UZB
|
---|
| 590 | TCMS00TWN
|
---|
| 591 | TDOU00ZAF
|
---|
| 592 | TEHN00IRN
|
---|
| 593 | THTG00PYF
|
---|
| 594 | THTI00PYF
|
---|
| 595 | THU200GRL
|
---|
| 596 | THU300GRL
|
---|
| 597 | TID100AUS
|
---|
| 598 | TIDB00AUS
|
---|
| 599 | TIT200DEU
|
---|
| 600 | TIXI00RUS
|
---|
| 601 | TLSE00FRA
|
---|
| 602 | TLSG00FRA
|
---|
| 603 | TNML00TWN
|
---|
| 604 | TONG00TON
|
---|
| 605 | TORP00USA
|
---|
| 606 | TOW200AUS
|
---|
| 607 | TRAK00USA
|
---|
| 608 | TRO100NOR
|
---|
| 609 | TSK200JPN
|
---|
| 610 | TSKB00JPN
|
---|
| 611 | TUBI00TUR
|
---|
| 612 | TUVA00TUV
|
---|
| 613 | TWTF00TWN
|
---|
| 614 | UCAL00CAN
|
---|
| 615 | UCLP00USA
|
---|
| 616 | UCLU00CAN
|
---|
| 617 | UFPR00BRA
|
---|
| 618 | ULAB00MNG
|
---|
| 619 | ULDI00ZAF
|
---|
| 620 | UNB300CAN
|
---|
| 621 | UNBD00CAN
|
---|
| 622 | UNBJ00CAN
|
---|
| 623 | UNBN00CAN
|
---|
| 624 | UNSA00ARG
|
---|
| 625 | UNX200AUS
|
---|
| 626 | UNX300AUS
|
---|
| 627 | URUM00CHN
|
---|
| 628 | USN700USA
|
---|
| 629 | USN800USA
|
---|
| 630 | USN900USA
|
---|
| 631 | USNO00USA
|
---|
| 632 | USUD00JPN
|
---|
| 633 | UZHL00UKR
|
---|
| 634 | VACS00MUS
|
---|
| 635 | VALD00CAN
|
---|
| 636 | VESL00ATA
|
---|
| 637 | VILL00ESP
|
---|
| 638 | VIS000SWE
|
---|
| 639 | VNDP00USA
|
---|
| 640 | VOIM00MDG
|
---|
| 641 | WAB200CHE
|
---|
| 642 | WARK00NZL
|
---|
| 643 | WARN00DEU
|
---|
| 644 | WDC500USA
|
---|
| 645 | WDC600USA
|
---|
| 646 | WES200USA
|
---|
| 647 | WGTN00NZL
|
---|
| 648 | WHC100USA
|
---|
| 649 | WHIT00CAN
|
---|
| 650 | WIDC00USA
|
---|
| 651 | WILL00CAN
|
---|
| 652 | WIND00NAM
|
---|
| 653 | WLSN00USA
|
---|
| 654 | WROC00POL
|
---|
| 655 | WSRT00NLD
|
---|
| 656 | WTZ300DEU
|
---|
| 657 | WTZA00DEU
|
---|
| 658 | WTZR00DEU
|
---|
| 659 | WTZS00DEU
|
---|
| 660 | WTZZ00DEU
|
---|
| 661 | WUH200CHN
|
---|
| 662 | WUHN00CHN
|
---|
| 663 | XIAN00CHN
|
---|
| 664 | XMIS00AUS
|
---|
| 665 | YAKT00RUS
|
---|
| 666 | YAR200AUS
|
---|
| 667 | YAR300AUS
|
---|
| 668 | YARR00AUS
|
---|
| 669 | YEBE00ESP
|
---|
| 670 | YEL200CAN
|
---|
| 671 | YELL00CAN
|
---|
| 672 | YIBL00OMN
|
---|
| 673 | YKRO00CIV
|
---|
| 674 | YONS00KOR
|
---|
| 675 | YSSK00RUS
|
---|
| 676 | ZAMB00ZMB
|
---|
| 677 | ZECK00RUS
|
---|
| 678 | ZIM200CHE
|
---|
| 679 | ZIM300CHE
|
---|
| 680 | ZIMJ00CHE
|
---|
| 681 | ZIMM00CHE
|
---|
| 682 | ZWE200RUS
|
---|
| 683 |
|
---|