cat001.h
Go to the documentation of this file.
1 /*
2  * libasterix
3  * Copyright [2020] SinoATC (http://www.sinoatc.com/).
4  * Copyright [2013-2020] Aerosys Corporation (http://www.aerosys.cn/).
5  * All Rights Reserved.
6  *
7  * NOTICE: All information contained herein is, and remains
8  * the property of SinoATC and its suppliers, if any.
9  * The intellectual and technical concepts contained herein
10  * are proprietary to Aerosys Corporation and its suppliers and may be
11  * covered by U.S. and Foreign Patents, patents in process,
12  * and are protected by trade secret or copyright law.
13  * Dissemination of this information or reproduction of this material
14  * is strictly forbidden unless prior written permission is obtained
15  * from SinoATC.
16  */
17 
25 #ifndef LIBASTERIX_CAT001_H
26 #define LIBASTERIX_CAT001_H
27 
28 #include "dataitem.h"
29 #include "datarecord.h"
30 #include "datablock.h"
31 #include "cat_generic.h"
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
37 // Data Item
38 
41 
49 
51 #define ast_dataitem_001_010_get_size ast_dataitem_data_source_identifier_get_size
52 
54 #define ast_dataitem_001_010_decode ast_dataitem_data_source_identifier_decode
55 
57 #define ast_dataitem_001_010_encode ast_dataitem_data_source_identifier_encode
58 
60 #define ast_dataitem_001_010_get_summary ast_dataitem_data_source_identifier_get_summary
61 
63 #define ast_dataitem_001_010_get_detail_html ast_dataitem_data_source_identifier_get_detail_html
64 
73 typedef enum _ast_conventional_radar_target_type_t
74 {
78 
79 typedef enum _ast_radar_detection_type_t
80 {
86 
87 typedef enum _ast_radar_emergency_type_t
88 {
94 
96 typedef struct _ast_dataitem_001_020_t
97 {
98  bool valid;
99 
101  bool simulated;
103  int antenna;
104  bool spi;
106  bool test;
111 
113 #define ast_dataitem_001_020_get_size ast_dataitem_get_size_var_2_byte
114 
117 
119 AST_API ast_dataitem_t ast_dataitem_001_020_encode(unsigned char* const buffer, const size_t buf_size, const ast_dataitem_ex_t xdi);
120 
122 AST_API void ast_dataitem_001_020_get_summary(char* summary, const size_t summary_size, const ast_dataitem_t di);
123 
125 AST_API void ast_dataitem_001_020_get_detail_html(char *detail, const size_t detail_size, const ast_dataitem_t di);
126 
135 typedef struct _ast_dataitem_001_030_t
137 {
138  bool valid;
139 
141 
143 #define ast_dataitem_001_030_get_size ast_dataitem_get_size_var_2_byte
144 
146 //AST_API ast_dataitem_001_030_t ast_dataitem_001_030_decode(const ast_dataitem_t di);
147 
149 //AST_API void ast_dataitem_001_030_get_summary(char* summary, const size_t summary_size, const ast_dataitem_t di);
150 
152 //AST_API void ast_dataitem_001_030_get_detail_html(char* detail, const size_t detail_size, const ast_dataitem_t di);
153 
162 typedef struct _ast_dataitem_001_040_t
164 {
165  bool valid;
166 
167  int raw_rho;
168  int raw_theta;
169 
170  double rho;
171  double theta;
173 
175 #define ast_dataitem_001_040_get_size ast_dataitem_get_size_fixed_4_byte
176 
179 
181 AST_API ast_dataitem_t ast_dataitem_001_040_encode(unsigned char* const buffer, const size_t buf_size, const ast_dataitem_ex_t xdi);
182 
184 AST_API void ast_dataitem_001_040_get_summary(char* summary, const size_t summary_size, const ast_dataitem_t di);
185 
187 AST_API void ast_dataitem_001_040_get_detail_html(char* detail, const size_t detail_size, const ast_dataitem_t di);
188 
197 typedef struct _ast_dataitem_001_042_t
199 {
200  bool valid;
201 
202  int raw_x;
203  int raw_y;
204 
205  double x;
206  double y;
208 
210 #define ast_dataitem_001_042_get_size ast_dataitem_get_size_fixed_4_byte
211 
214 
216 AST_API ast_dataitem_t ast_dataitem_001_042_encode(unsigned char* const buffer, const size_t buf_size, const ast_dataitem_ex_t xdi);
217 
219 AST_API void ast_dataitem_001_042_get_summary(char* summary, const size_t summary_size, const ast_dataitem_t di);
220 
222 AST_API void ast_dataitem_001_042_get_detail_html(char* detail, const size_t detail_size, const ast_dataitem_t di);
223 
231 #define ast_dataitem_001_050_get_size ast_dataitem_mode_2_code_get_size
233 
242 typedef struct _ast_dataitem_001_060_t
244 {
245  bool valid;
246 
248 
250 #define ast_dataitem_001_060_get_size ast_dataitem_get_size_fixed_2_byte
251 
253 //AST_API ast_dataitem_001_060_t ast_dataitem_001_060_decode(const ast_dataitem_t di);
254 
256 //AST_API void ast_dataitem_001_060_get_summary(char* summary, const size_t summary_size, const ast_dataitem_t di);
257 
259 //AST_API void ast_dataitem_001_060_get_detail_html(char* detail, const size_t detail_size, const ast_dataitem_t di);
260 
271 
273 #define ast_dataitem_001_070_get_size ast_dataitem_mode_3a_code_get_size
274 
276 #define ast_dataitem_001_070_decode ast_dataitem_mode_3a_code_decode
277 
279 #define ast_dataitem_001_070_encode ast_dataitem_mode_3a_code_encode
280 
282 #define ast_dataitem_001_070_get_summary ast_dataitem_mode_3a_code_get_summary
283 
285 #define ast_dataitem_001_070_get_detail_html ast_dataitem_mode_3a_code_get_detail_html
286 
297 
299 #define ast_dataitem_001_080_get_size ast_dataitem_mode_3a_confidence_get_size
300 
302 #define ast_dataitem_001_080_decode ast_dataitem_mode_3a_confidence_decode
303 
305 #define ast_dataitem_001_080_get_summary ast_dataitem_mode_3a_confidence_get_summary
306 
308 #define ast_dataitem_001_080_get_detail_html ast_dataitem_mode_3a_confidence_get_detail_html
309 
320 
322 #define ast_dataitem_001_090_get_size ast_dataitem_mode_c_code_get_size
323 
325 #define ast_dataitem_001_090_decode ast_dataitem_mode_c_code_decode
326 
328 #define ast_dataitem_001_090_encode ast_dataitem_mode_c_code_encode
329 
331 #define ast_dataitem_001_090_get_summary ast_dataitem_mode_c_code_get_summary
332 
334 #define ast_dataitem_001_090_get_detail_html ast_dataitem_mode_c_code_get_detail_html
335 
346 
348 #define ast_dataitem_001_100_get_size ast_dataitem_mode_c_confidence_get_size
349 
351 #define ast_dataitem_001_100_decode ast_dataitem_mode_c_confidence_decode
352 
354 #define ast_dataitem_001_100_get_summary ast_dataitem_mode_c_confidence_get_summary
355 
357 #define ast_dataitem_001_100_get_detail_html ast_dataitem_mode_c_confidence_get_detail_html
358 
367 typedef struct _ast_dataitem_001_120_t
369 {
370  bool valid;
371 
373 
375 #define ast_dataitem_001_120_get_size ast_dataitem_get_size_fixed_1_byte
376 
378 //AST_API ast_dataitem_001_120_t ast_dataitem_001_120_decode(const ast_dataitem_t di);
379 
381 //AST_API void ast_dataitem_001_120_get_summary(char* summary, const size_t summary_size, const ast_dataitem_t di);
382 
384 //AST_API void ast_dataitem_001_120_get_detail_html(char* detail, const size_t detail_size, const ast_dataitem_t di);
385 
394 #define ast_dataitem_001_130_get_size ast_dataitem_get_size_var_2_byte
396 
398 #define ast_dataitem_001_130_get_summary ast_dataitem_binary_data_get_summary
399 
401 #define ast_dataitem_001_130_get_detail_html ast_dataitem_get_detail_html_dummy
402 
410 #define ast_dataitem_001_131_get_size ast_dataitem_get_size_fixed_1_byte
412 
421 typedef struct _ast_dataitem_001_141_t
423 {
424  bool valid;
425 
426  unsigned int raw_time;
427 
428  unsigned int sec;
429  unsigned int msec;
431 
433 #define ast_dataitem_001_141_get_size ast_dataitem_get_size_fixed_2_byte
434 
437 
439 AST_API ast_dataitem_t ast_dataitem_001_141_encode(unsigned char* const buffer, const size_t buf_size, const ast_dataitem_ex_t xdi);
440 
442 AST_API void ast_dataitem_001_141_get_summary(char* summary, const size_t summary_size, const ast_dataitem_t di);
443 
445 AST_API void ast_dataitem_001_141_get_detail_html(char* detail, const size_t detail_size, const ast_dataitem_t di);
446 
457 
459 #define ast_dataitem_001_161_get_size ast_dataitem_track_number_get_size
460 
462 #define ast_dataitem_001_161_decode ast_dataitem_track_number_decode
463 
465 #define ast_dataitem_001_161_encode ast_dataitem_track_number_encode
466 
468 #define ast_dataitem_001_161_get_summary ast_dataitem_track_number_get_summary
469 
471 #define ast_dataitem_001_161_get_detail_html ast_dataitem_track_number_get_detail_html
472 
481 typedef enum _ast_conventional_radar_track_type_t
482 {
486 
488 typedef struct _ast_dataitem_001_170
489 {
490  bool valid;
491 
492  bool tentative;
494  bool manoeuvre;
497  bool ghost;
500 
502 #define ast_dataitem_001_170_get_size ast_dataitem_get_size_var_2_byte
503 
506 
508 AST_API ast_dataitem_t ast_dataitem_001_170_encode(unsigned char* const buffer, const size_t buf_size, const ast_dataitem_ex_t xdi);
509 
511 AST_API void ast_dataitem_001_170_get_summary(char* summary, const size_t summary_size, const ast_dataitem_t di);
512 
514 AST_API void ast_dataitem_001_170_get_detail_html(char* detail, const size_t detail_size, const ast_dataitem_t di);
515 
526 
528 #define ast_dataitem_001_200_get_size ast_dataitem_velocity_polar_get_size
529 
531 #define ast_dataitem_001_200_decode ast_dataitem_velocity_polar_decode
532 
534 #define ast_dataitem_001_200_encode ast_dataitem_velocity_polar_encode
535 
537 #define ast_dataitem_001_200_get_summary ast_dataitem_velocity_polar_get_summary
538 
540 #define ast_dataitem_001_200_get_detail_html ast_dataitem_velocity_polar_get_detail_html
541 
550 typedef struct _ast_dataitem_001_210
552 {
553  bool valid;
554 
555  int quality1;
556  int quality2;
558 
560 #define ast_dataitem_001_210_get_size ast_dataitem_get_size_var_2_byte
561 
564 
566 AST_API void ast_dataitem_001_210_get_summary(char* summary, const size_t summary_size, const ast_dataitem_t di);
567 
569 AST_API void ast_dataitem_001_210_get_detail_html(char* detail, const size_t detail_size, const ast_dataitem_t di);
570 
579 #define ast_dataitem_001_REF_get_size ast_dataitem_reserved_expansion_field_get_size
581 
583 //ast_dataitem_001_REF_t ast_dataitem_062_REF_decode(const ast_dataitem_t di);
584 
586 #define ast_dataitem_001_REF_get_summary ast_dataitem_reserved_expansion_field_get_summary
587 
589 #define ast_dataitem_001_REF_get_detail_html ast_dataitem_reserved_expansion_field_get_detail_html
590 
594 // Data Record
595 
598 
600 #define ast_datarecord_001_get_timeofday 0
601 
604 
607 
610 
612 #define ast_datarecord_001_get_callsign 0
613 
615 #define ast_datarecord_001_get_icaoaddr 0
616 
618 #define ast_datarecord_001_get_coordinate 0
619 
622 
625 
627 #define ast_datarecord_001_get_heading 0
628 
630 #define ast_datarecord_001_get_speed 0
631 
637 typedef struct _ast_datarecord_001_t
639 {
640  bool valid;
641 
653  //ast_dataitem_001_130_t dataitem_001_130;
659 
661 
664 
666 AST_API ast_datarecord_t ast_datarecord_001_assemble(unsigned char* const buffer, const size_t bufsize, const ast_datarecord_001_t dr, const ast_uap_t uap);
667 
670 // Data Block
671 
674 
681 ast_datablock_t ast_datablock_001_mixuap_decode(const unsigned char* const buffer, const size_t bufsize);
682 
683 
684 #ifdef __cplusplus
685  }
686 #endif // extern "C"
687 
688 #endif //LIBASTERIX_CAT001_H
689 
690 // vim:set ft=c sw=2 sts=2 fenc=utf8:
bool valid
Definition: cat001.h:245
Altitude.
Definition: type.h:111
Datablock.
Definition: datablock.h:44
ast_dataitem_001_010_t dataitem_001_010
Definition: cat001.h:642
bool doubt_association
Definition: cat001.h:495
ast_radar_emergency_type_t emergency
Definition: cat001.h:107
bool test
Definition: cat001.h:106
Extracted dataitem.
Definition: dataitem.h:430
Definition: cat001.h:91
ast_sacsic_t ast_datarecord_001_get_sacsic(const ast_datarecord_t dr)
Get SAC/SIC function.
int raw_y
Raw format as defined in doc, resolution 1/2^(6+f) nm.
Definition: cat001.h:203
const char * ast_dataitem_001_get_name(const ast_dataitem_type_t type)
Get name function.
bool valid
Definition: cat001.h:98
Implementation of Datarecord concept defined by ASTERIX.
Data Source Identifier (aka SAC/SIC)
Definition: type.h:35
Definition: uap.h:38
ast_dataitem_t ast_dataitem_001_042_encode(unsigned char *const buffer, const size_t buf_size, const ast_dataitem_ex_t xdi)
Encode function.
int raw_rho
Raw format as defined in doc, resolution 1/128 nm.
Definition: cat001.h:167
double y
nm
Definition: cat001.h:206
ast_conventional_radar_target_type_t target_type
Definition: cat001.h:100
bool manoeuvre
Definition: cat001.h:494
int antenna
Definition: cat001.h:103
Data Item Itrack_number - Track Number.
Definition: cat_generic.h:718
void ast_dataitem_001_210_get_summary(char *summary, const size_t summary_size, const ast_dataitem_t di)
Get summary function.
Definition: cat001.h:84
ast_dataitem_001_100_t dataitem_001_100
Definition: cat001.h:651
ast_dataitem_mode_3a_code_t ast_dataitem_001_070_t
Data Item I001/070 - Mode-3/A Code in Octal Representation.
Definition: cat001.h:270
ast_dataitem_001_040_t dataitem_001_040
Definition: cat001.h:645
Definition: cat001.h:89
Data Item I001/120 - Calculated Position in Cartesian Coordinates.
Definition: cat001.h:368
#define AST_API
Definition: platform.h:63
Data Item - Data Source Identifier.
Definition: cat_generic.h:93
ast_conventional_radar_track_type_t type
Definition: cat001.h:493
bool valid
Definition: cat001.h:640
ast_dataitem_t ast_dataitem_001_141_encode(unsigned char *const buffer, const size_t buf_size, const ast_dataitem_ex_t xdi)
Encode function.
bool valid
Definition: cat001.h:165
ast_dataitem_001_141_t dataitem_001_141
Definition: cat001.h:654
Data Item I001/042 - Calculated Position in Cartesian Coordinates.
Definition: cat001.h:198
double rho
nm
Definition: cat001.h:170
Data Item I001/210 - Track Quality.
Definition: cat001.h:551
void ast_dataitem_001_210_get_detail_html(char *detail, const size_t detail_size, const ast_dataitem_t di)
Get detail function.
void ast_dataitem_001_170_get_summary(char *summary, const size_t summary_size, const ast_dataitem_t di)
Get summary function.
void ast_dataitem_001_141_get_detail_html(char *detail, const size_t detail_size, const ast_dataitem_t di)
Get detail function.
void ast_dataitem_001_020_get_detail_html(char *detail, const size_t detail_size, const ast_dataitem_t di)
Get detail function.
bool last_report
Definition: cat001.h:498
ast_dataitem_001_141_t ast_dataitem_001_141_decode(const ast_dataitem_t di)
Decode function.
bool military_emergency
Definition: cat001.h:108
ast_tracknum_t ast_datarecord_001_get_tracknum(const ast_datarecord_t dr)
Get track number function.
ast_dataitem_mode_c_code_t ast_dataitem_001_090_t
Data Item I001/090 - Mode-C in Binary Representation.
Definition: cat001.h:319
ast_radar_detection_type_t detection_type
Definition: cat001.h:102
bool valid
Definition: cat001.h:490
ast_dataitem_001_080_t dataitem_001_080
Definition: cat001.h:649
ast_dataitem_velocity_polar_t ast_dataitem_001_200_t
Data Item I001/200 - Calculated Track Velocity in Ploar Coordinates.
Definition: cat001.h:525
ast_dataitem_001_090_t dataitem_001_090
Definition: cat001.h:650
ast_dataitem_t ast_dataitem_001_020_encode(unsigned char *const buffer, const size_t buf_size, const ast_dataitem_ex_t xdi)
Encode function.
ast_dataitem_001_210_t dataitem_001_210
Definition: cat001.h:658
Data Item - Mode-3/A Code Confidence Indicator.
Definition: cat_generic.h:520
double x
nm
Definition: cat001.h:205
bool tentative
Definition: cat001.h:492
bool spi
Definition: cat001.h:104
ast_dataitem_001_042_t ast_dataitem_001_042_decode(const ast_dataitem_t di)
Decode function.
ast_dataitem_001_210_t ast_dataitem_001_210_decode(const ast_dataitem_t di)
Decode function.
This file includes the common used data items shares by different categories.
Polar Coordinate.
Definition: type.h:129
Data Item I001/040 - Measured Position in Polar Coordinates.
Definition: cat001.h:163
bool valid
Definition: cat001.h:200
int quality2
Definition: cat001.h:556
Definition: type.h:66
ast_conventional_radar_target_type_t
Definition: cat001.h:73
ast_datablock_t ast_datablock_001_mixuap_decode(const unsigned char *const buffer, const size_t bufsize)
Decode CAT001 data block with data records using mixed track and plot UAP.
bool valid
Definition: cat001.h:370
ast_dataitem_001_200_t dataitem_001_200
Definition: cat001.h:657
bool ghost
Definition: cat001.h:497
ast_dataitem_001_040_t ast_dataitem_001_040_decode(const ast_dataitem_t di)
Decode function.
void ast_dataitem_001_020_get_summary(char *summary, const size_t summary_size, const ast_dataitem_t di)
Get Summary function.
Definition: cat001.h:75
ast_polar_coordinate_t ast_datarecord_001_get_polarcoord(const ast_datarecord_t dr)
Get polar coordinate function.
int raw_theta
Raw format as defined in doc, resolution 360/2^16 degree.
Definition: cat001.h:168
Data Item - Mode-C Code.
Definition: cat_generic.h:558
Definition: cat001.h:90
int rdp_chain
Definition: cat001.h:496
Item I001/020 - Target Report Descriptor.
Definition: cat001.h:96
double theta
degree
Definition: cat001.h:171
unsigned int msec
Definition: cat001.h:429
ast_conventional_radar_track_type_t
Definition: cat001.h:481
Squawk (aka Mode-3/A Code)
Definition: type.h:80
ast_dataitem_data_source_identifier_t ast_dataitem_001_010_t
Data Item I001/010 - Data Source Identifier.
Definition: cat001.h:48
Implementation of Dataitem concept defined by ASTERIX.
unsigned int raw_time
Definition: cat001.h:426
ast_dataitem_001_120_t dataitem_001_120
Definition: cat001.h:652
ast_dataitem_001_070_t dataitem_001_070
Definition: cat001.h:648
bool valid
Definition: cat001.h:424
int quality1
Definition: cat001.h:555
bool military_identification
Definition: cat001.h:109
Definition: cat001.h:81
ast_radar_detection_type_t
Definition: cat001.h:79
void ast_dataitem_001_141_get_summary(char *summary, const size_t summary_size, const ast_dataitem_t di)
Get summary funciton.
ast_dataitem_mode_c_confidence_t ast_dataitem_001_100_t
Data Item I001/100 - Mode-C Code and Code Confidence Indicator.
Definition: cat001.h:345
Data Item - Calculated Track Track Velocity in Polar Co-ordinates.
Definition: cat_generic.h:756
ast_squawk_t ast_datarecord_001_get_squawk(const ast_datarecord_t dr)
Get Mode-3/A code function.
Dataitem.
Definition: dataitem.h:419
int raw_x
Raw format as defined in doc, resolution 1/2^(6+f) nm.
Definition: cat001.h:202
ast_dataitem_001_020_t dataitem_001_020
Definition: cat001.h:643
Data Item - Mode-3/A Code in Octal Representation.
Definition: cat_generic.h:474
void ast_dataitem_001_170_get_detail_html(char *detail, const size_t detail_size, const ast_dataitem_t di)
Get detail function.
Data Item - Mode-C Code and Code Confidence Indicator.
Definition: cat_generic.h:601
Definition: cat001.h:92
ast_dataitem_type_t
Definition of data item id in each category.
Definition: dataitem.h:66
ast_dataitem_001_060_t dataitem_001_060
Definition: cat001.h:647
Implementation of Datablock concept defined by ASTERIX.
ast_altitude_t ast_datarecord_001_get_flightlevel(const ast_datarecord_t dr)
Get flight level function.
unsigned int sec
Raw format as defined in doc, reset zero at mid night and every 512 seconds, resolution 1/128s.
Definition: cat001.h:428
ast_radar_emergency_type_t
Definition: cat001.h:87
ast_dataitem_001_020_t ast_dataitem_001_020_decode(const ast_dataitem_t di)
Decode function.
ast_msgtype_t ast_datarecord_001_get_msgtype(const ast_datarecord_t dr)
Get message type function.
ast_datarecord_t ast_datarecord_001_assemble(unsigned char *const buffer, const size_t bufsize, const ast_datarecord_001_t dr, const ast_uap_t uap)
Assemble function.
ast_dataitem_mode_3a_confidence_t ast_dataitem_001_080_t
Data Item I001/080 - Mode-3/A Code Confidence Indicator.
Definition: cat001.h:296
ast_dataitem_001_170_t ast_dataitem_001_170_decode(const ast_dataitem_t di)
Decode function.
bool simulated
Definition: cat001.h:101
Datarecord.
Definition: datarecord.h:42
ast_datarecord_001_t ast_datarecord_001_disassemble(const ast_datarecord_t dr)
Disassemble function.
Data Record I001 - Monoradar Target Reports.
Definition: cat001.h:638
ast_dataitem_001_042_t dataitem_001_042
Definition: cat001.h:646
ast_dataitem_001_030_t dataitem_001_030
Definition: cat001.h:644
ast_dataitem_track_number_t ast_dataitem_001_161_t
Data Item I001/161 - Track Plot Number.
Definition: cat001.h:456
void ast_dataitem_001_042_get_detail_html(char *detail, const size_t detail_size, const ast_dataitem_t di)
Get detail function.
Data Item I001/060 - Mode-2 Code Confidence Indicator.
Definition: cat001.h:243
bool valid
Definition: cat001.h:138
ast_dataitem_t ast_dataitem_001_040_encode(unsigned char *const buffer, const size_t buf_size, const ast_dataitem_ex_t xdi)
Encode function.
bool valid
Definition: cat001.h:553
void ast_dataitem_001_040_get_summary(char *summary, const size_t summary_size, const ast_dataitem_t di)
Get summary function.
Data Item I001/141 - Truncated Time of Day.
Definition: cat001.h:422
void ast_dataitem_001_040_get_detail_html(char *detail, const size_t detail_size, const ast_dataitem_t di)
Get detail function.
Data Item I001/030 - Warning/Error Conditions.
Definition: cat001.h:136
ast_dataitem_001_170_t dataitem_001_170
Definition: cat001.h:656
Data Item I001/170 - Track Status.
Definition: cat001.h:488
void ast_dataitem_001_042_get_summary(char *summary, const size_t summary_size, const ast_dataitem_t di)
Get summary function.
Definition: cat001.h:83
ast_dataitem_t ast_dataitem_001_170_encode(unsigned char *const buffer, const size_t buf_size, const ast_dataitem_ex_t xdi)
Encode function.
bool fixed_transponder
Definition: cat001.h:105
ast_dataitem_001_161_t dataitem_001_161
Definition: cat001.h:655
Definition: cat001.h:483
Track Number.
Definition: type.h:73
Definition: cat001.h:82