<?php

// VERSION: 21.101
// Automatically extracted from FIT SDK https://developer.garmin.com/fit/download/
// Extracted from CSV versions of the Profile Type tab in Profile.xlsx
//add private in front of $enum_data when updating phpFitFileAnaysis.php


$enum_data = [
    'file' => [
        'type' => 'enum',
        1 => 'device', // Read only, single file. Must be in root directory.
        2 => 'settings', // Read/write, single file. Directory=Settings
        3 => 'sport', // Read/write, multiple files, file number = sport type. Directory=Sports
        4 => 'activity', // Read/erase, multiple files. Directory=Activities
        5 => 'workout', // Read/write/erase, multiple files. Directory=Workouts
        6 => 'course', // Read/write/erase, multiple files. Directory=Courses
        7 => 'schedules', // Read/write, single file. Directory=Schedules
        9 => 'weight', // Read only, single file. Circular buffer. All message definitions at start of file. Directory=Weight
        10 => 'totals', // Read only, single file. Directory=Totals
        11 => 'goals', // Read/write, single file. Directory=Goals
        14 => 'blood_pressure', // Read only. Directory=Blood Pressure
        15 => 'monitoring_a', // Read only. Directory=Monitoring. File number=sub type.
        20 => 'activity_summary', // Read/erase, multiple files. Directory=Activities
        28 => 'monitoring_daily',
        32 => 'monitoring_b', // Read only. Directory=Monitoring. File number=identifier
        34 => 'segment', // Read/write/erase. Multiple Files. Directory=Segments
        35 => 'segment_list', // Read/write/erase. Single File. Directory=Segments
        40 => 'exd_configuration', // Read/write/erase. Single File. Directory=Settings
        0xF7 => 'mfg_range_min', // 0xF7 - 0xFE reserved for manufacturer specific file types
        0xFE => 'mfg_range_max', // 0xF7 - 0xFE reserved for manufacturer specific file types
    ],
    'mesg_num' => [
        'type' => 'uint16',
        0 => 'file_id',
        1 => 'capabilities',
        2 => 'device_settings',
        3 => 'user_profile',
        4 => 'hrm_profile',
        5 => 'sdm_profile',
        6 => 'bike_profile',
        7 => 'zones_target',
        8 => 'hr_zone',
        9 => 'power_zone',
        10 => 'met_zone',
        12 => 'sport',
        15 => 'goal',
        18 => 'session',
        19 => 'lap',
        20 => 'record',
        21 => 'event',
        23 => 'device_info',
        26 => 'workout',
        27 => 'workout_step',
        28 => 'schedule',
        30 => 'weight_scale',
        31 => 'course',
        32 => 'course_point',
        33 => 'totals',
        34 => 'activity',
        35 => 'software',
        37 => 'file_capabilities',
        38 => 'mesg_capabilities',
        39 => 'field_capabilities',
        49 => 'file_creator',
        51 => 'blood_pressure',
        53 => 'speed_zone',
        55 => 'monitoring',
        72 => 'training_file',
        78 => 'hrv',
        80 => 'ant_rx',
        81 => 'ant_tx',
        82 => 'ant_channel_id',
        101 => 'length',
        103 => 'monitoring_info',
        105 => 'pad',
        106 => 'slave_device',
        127 => 'connectivity',
        128 => 'weather_conditions',
        129 => 'weather_alert',
        131 => 'cadence_zone',
        132 => 'hr',
        142 => 'segment_lap',
        145 => 'memo_glob',
        148 => 'segment_id',
        149 => 'segment_leaderboard_entry',
        150 => 'segment_point',
        151 => 'segment_file',
        158 => 'workout_session',
        159 => 'watchface_settings',
        160 => 'gps_metadata',
        161 => 'camera_event',
        162 => 'timestamp_correlation',
        164 => 'gyroscope_data',
        165 => 'accelerometer_data',
        167 => 'three_d_sensor_calibration',
        169 => 'video_frame',
        174 => 'obdii_data',
        177 => 'nmea_sentence',
        178 => 'aviation_attitude',
        184 => 'video',
        185 => 'video_title',
        186 => 'video_description',
        187 => 'video_clip',
        188 => 'ohr_settings',
        200 => 'exd_screen_configuration',
        201 => 'exd_data_field_configuration',
        202 => 'exd_data_concept_configuration',
        206 => 'field_description',
        207 => 'developer_data_id',
        208 => 'magnetometer_data',
        209 => 'barometer_data',
        210 => 'one_d_sensor_calibration',
        216 => 'time_in_zone',
        225 => 'set',
        227 => 'stress_level',
        258 => 'dive_settings',
        259 => 'dive_gas',
        262 => 'dive_alarm',
        264 => 'exercise_title',
        268 => 'dive_summary',
        285 => 'jump',
        312 => 'split',
        317 => 'climb_pro',
        375 => 'device_aux_battery_info',
        0xFF00 => 'mfg_range_min', // 0xFF00 - 0xFFFE reserved for manufacturer specific messages
        0xFFFE => 'mfg_range_max', // 0xFF00 - 0xFFFE reserved for manufacturer specific messages
    ],
    'checksum' => [
        'type' => 'uint8',
        0 => 'clear', // Allows clear of checksum for flash memory where can only write 1 to 0 without erasing sector.
        1 => 'ok', // Set to mark checksum as valid if computes to invalid values 0 or 0xFF. Checksum can also be set to ok to save encoding computation time.
    ],
    'file_flags' => [
        'type' => 'uint8z',
        0x02 => 'read',
        0x04 => 'write',
        0x08 => 'erase',
    ],
    'mesg_count' => [
        'type' => 'enum',
        0 => 'num_per_file',
        1 => 'max_per_file',
        2 => 'max_per_file_type',
    ],
    'date_time' => [
        'type' => 'uint32',
        0x10000000 => 'min', // if date_time is < 0x10000000 then it is system time (seconds from device power on)
    ],
    'local_date_time' => [
        'type' => 'uint32',
        0x10000000 => 'min', // if date_time is < 0x10000000 then it is system time (seconds from device power on)
    ],
    'message_index' => [
        'type' => 'uint16',
        0x8000 => 'selected', // message is selected if set
        0x7000 => 'reserved', // reserved (default 0)
        0x0FFF => 'mask', // index
    ],
    'device_index' => [
        'type' => 'uint8',
        0 => 'creator', // Creator of the file is always device index 0.
    ],
    'gender' => [
        'type' => 'enum',
        0 => 'female',
        1 => 'male',
    ],
    'language' => [
        'type' => 'enum',
        0 => 'english',
        1 => 'french',
        2 => 'italian',
        3 => 'german',
        4 => 'spanish',
        5 => 'croatian',
        6 => 'czech',
        7 => 'danish',
        8 => 'dutch',
        9 => 'finnish',
        10 => 'greek',
        11 => 'hungarian',
        12 => 'norwegian',
        13 => 'polish',
        14 => 'portuguese',
        15 => 'slovakian',
        16 => 'slovenian',
        17 => 'swedish',
        18 => 'russian',
        19 => 'turkish',
        20 => 'latvian',
        21 => 'ukrainian',
        22 => 'arabic',
        23 => 'farsi',
        24 => 'bulgarian',
        25 => 'romanian',
        26 => 'chinese',
        27 => 'japanese',
        28 => 'korean',
        29 => 'taiwanese',
        30 => 'thai',
        31 => 'hebrew',
        32 => 'brazilian_portuguese',
        33 => 'indonesian',
        34 => 'malaysian',
        35 => 'vietnamese',
        36 => 'burmese',
        37 => 'mongolian',
        254 => 'custom',
    ],
    'language_bits_0' => [
        'type' => 'uint8z',
        0x01 => 'english',
        0x02 => 'french',
        0x04 => 'italian',
        0x08 => 'german',
        0x10 => 'spanish',
        0x20 => 'croatian',
        0x40 => 'czech',
        0x80 => 'danish',
    ],
    'language_bits_1' => [
        'type' => 'uint8z',
        0x01 => 'dutch',
        0x02 => 'finnish',
        0x04 => 'greek',
        0x08 => 'hungarian',
        0x10 => 'norwegian',
        0x20 => 'polish',
        0x40 => 'portuguese',
        0x80 => 'slovakian',
    ],
    'language_bits_2' => [
        'type' => 'uint8z',
        0x01 => 'slovenian',
        0x02 => 'swedish',
        0x04 => 'russian',
        0x08 => 'turkish',
        0x10 => 'latvian',
        0x20 => 'ukrainian',
        0x40 => 'arabic',
        0x80 => 'farsi',
    ],
    'language_bits_3' => [
        'type' => 'uint8z',
        0x01 => 'bulgarian',
        0x02 => 'romanian',
        0x04 => 'chinese',
        0x08 => 'japanese',
        0x10 => 'korean',
        0x20 => 'taiwanese',
        0x40 => 'thai',
        0x80 => 'hebrew',
    ],
    'language_bits_4' => [
        'type' => 'uint8z',
        0x01 => 'brazilian_portuguese',
        0x02 => 'indonesian',
        0x04 => 'malaysian',
        0x08 => 'vietnamese',
        0x10 => 'burmese',
        0x20 => 'mongolian',
    ],
    'time_zone' => [
        'type' => 'enum',
        0 => 'almaty',
        1 => 'bangkok',
        2 => 'bombay',
        3 => 'brasilia',
        4 => 'cairo',
        5 => 'cape_verde_is',
        6 => 'darwin',
        7 => 'eniwetok',
        8 => 'fiji',
        9 => 'hong_kong',
        10 => 'islamabad',
        11 => 'kabul',
        12 => 'magadan',
        13 => 'mid_atlantic',
        14 => 'moscow',
        15 => 'muscat',
        16 => 'newfoundland',
        17 => 'samoa',
        18 => 'sydney',
        19 => 'tehran',
        20 => 'tokyo',
        21 => 'us_alaska',
        22 => 'us_atlantic',
        23 => 'us_central',
        24 => 'us_eastern',
        25 => 'us_hawaii',
        26 => 'us_mountain',
        27 => 'us_pacific',
        28 => 'other',
        29 => 'auckland',
        30 => 'kathmandu',
        31 => 'europe_western_wet',
        32 => 'europe_central_cet',
        33 => 'europe_eastern_eet',
        34 => 'jakarta',
        35 => 'perth',
        36 => 'adelaide',
        37 => 'brisbane',
        38 => 'tasmania',
        39 => 'iceland',
        40 => 'amsterdam',
        41 => 'athens',
        42 => 'barcelona',
        43 => 'berlin',
        44 => 'brussels',
        45 => 'budapest',
        46 => 'copenhagen',
        47 => 'dublin',
        48 => 'helsinki',
        49 => 'lisbon',
        50 => 'london',
        51 => 'madrid',
        52 => 'munich',
        53 => 'oslo',
        54 => 'paris',
        55 => 'prague',
        56 => 'reykjavik',
        57 => 'rome',
        58 => 'stockholm',
        59 => 'vienna',
        60 => 'warsaw',
        61 => 'zurich',
        62 => 'quebec',
        63 => 'ontario',
        64 => 'manitoba',
        65 => 'saskatchewan',
        66 => 'alberta',
        67 => 'british_columbia',
        68 => 'boise',
        69 => 'boston',
        70 => 'chicago',
        71 => 'dallas',
        72 => 'denver',
        73 => 'kansas_city',
        74 => 'las_vegas',
        75 => 'los_angeles',
        76 => 'miami',
        77 => 'minneapolis',
        78 => 'new_york',
        79 => 'new_orleans',
        80 => 'phoenix',
        81 => 'santa_fe',
        82 => 'seattle',
        83 => 'washington_dc',
        84 => 'us_arizona',
        85 => 'chita',
        86 => 'ekaterinburg',
        87 => 'irkutsk',
        88 => 'kaliningrad',
        89 => 'krasnoyarsk',
        90 => 'novosibirsk',
        91 => 'petropavlovsk_kamchatskiy',
        92 => 'samara',
        93 => 'vladivostok',
        94 => 'mexico_central',
        95 => 'mexico_mountain',
        96 => 'mexico_pacific',
        97 => 'cape_town',
        98 => 'winkhoek',
        99 => 'lagos',
        100 => 'riyahd',
        101 => 'venezuela',
        102 => 'australia_lh',
        103 => 'santiago',
        253 => 'manual',
        254 => 'automatic',
    ],
    'display_measure' => [
        'type' => 'enum',
        0 => 'metric',
        1 => 'statute',
        2 => 'nautical',
    ],
    'display_heart' => [
        'type' => 'enum',
        0 => 'bpm',
        1 => 'max',
        2 => 'reserve',
    ],
    'display_power' => [
        'type' => 'enum',
        0 => 'watts',
        1 => 'percent_ftp',
    ],
    'display_position' => [
        'type' => 'enum',
        0 => 'degree', // dd.dddddd
        1 => 'degree_minute', // dddmm.mmm
        2 => 'degree_minute_second', // dddmmss
        3 => 'austrian_grid', // Austrian Grid (BMN)
        4 => 'british_grid', // British National Grid
        5 => 'dutch_grid', // Dutch grid system
        6 => 'hungarian_grid', // Hungarian grid system
        7 => 'finnish_grid', // Finnish grid system Zone3 KKJ27
        8 => 'german_grid', // Gausss Krueger (German)
        9 => 'icelandic_grid', // Icelandic Grid
        10 => 'indonesian_equatorial', // Indonesian Equatorial LCO
        11 => 'indonesian_irian', // Indonesian Irian LCO
        12 => 'indonesian_southern', // Indonesian Southern LCO
        13 => 'india_zone_0', // India zone 0
        14 => 'india_zone_IA', // India zone IA
        15 => 'india_zone_IB', // India zone IB
        16 => 'india_zone_IIA', // India zone IIA
        17 => 'india_zone_IIB', // India zone IIB
        18 => 'india_zone_IIIA', // India zone IIIA
        19 => 'india_zone_IIIB', // India zone IIIB
        20 => 'india_zone_IVA', // India zone IVA
        21 => 'india_zone_IVB', // India zone IVB
        22 => 'irish_transverse', // Irish Transverse Mercator
        23 => 'irish_grid', // Irish Grid
        24 => 'loran', // Loran TD
        25 => 'maidenhead_grid', // Maidenhead grid system
        26 => 'mgrs_grid', // MGRS grid system
        27 => 'new_zealand_grid', // New Zealand grid system
        28 => 'new_zealand_transverse', // New Zealand Transverse Mercator
        29 => 'qatar_grid', // Qatar National Grid
        30 => 'modified_swedish_grid', // Modified RT-90 (Sweden)
        31 => 'swedish_grid', // RT-90 (Sweden)
        32 => 'south_african_grid', // South African Grid
        33 => 'swiss_grid', // Swiss CH-1903 grid
        34 => 'taiwan_grid', // Taiwan Grid
        35 => 'united_states_grid', // United States National Grid
        36 => 'utm_ups_grid', // UTM/UPS grid system
        37 => 'west_malayan', // West Malayan RSO
        38 => 'borneo_rso', // Borneo RSO
        39 => 'estonian_grid', // Estonian grid system
        40 => 'latvian_grid', // Latvian Transverse Mercator
        41 => 'swedish_ref_99_grid', // Reference Grid 99 TM (Swedish)
    ],
    'switch' => [
        'type' => 'enum',
        0 => 'off',
        1 => 'on',
        2 => 'auto',
    ],
    'sport' => [
        'type' => 'enum',
        0 => 'generic',
        1 => 'running',
        2 => 'cycling',
        3 => 'transition', // Mulitsport transition
        4 => 'fitness_equipment',
        5 => 'swimming',
        6 => 'basketball',
        7 => 'soccer',
        8 => 'tennis',
        9 => 'american_football',
        10 => 'training',
        11 => 'walking',
        12 => 'cross_country_skiing',
        13 => 'alpine_skiing',
        14 => 'snowboarding',
        15 => 'rowing',
        16 => 'mountaineering',
        17 => 'hiking',
        18 => 'multisport',
        19 => 'paddling',
        20 => 'flying',
        21 => 'e_biking',
        22 => 'motorcycling',
        23 => 'boating',
        24 => 'driving',
        25 => 'golf',
        26 => 'hang_gliding',
        27 => 'horseback_riding',
        28 => 'hunting',
        29 => 'fishing',
        30 => 'inline_skating',
        31 => 'rock_climbing',
        32 => 'sailing',
        33 => 'ice_skating',
        34 => 'sky_diving',
        35 => 'snowshoeing',
        36 => 'snowmobiling',
        37 => 'stand_up_paddleboarding',
        38 => 'surfing',
        39 => 'wakeboarding',
        40 => 'water_skiing',
        41 => 'kayaking',
        42 => 'rafting',
        43 => 'windsurfing',
        44 => 'kitesurfing',
        45 => 'tactical',
        46 => 'jumpmaster',
        47 => 'boxing',
        48 => 'floor_climbing',
        53 => 'diving',
        64 => 'racket',
        76 => 'water_tubing',
        77 => 'wakesurfing',
        254 => 'all', // All is for goals only to include all sports.
    ],
    'sport_bits_0' => [
        'type' => 'uint8z',
        0x01 => 'generic',
        0x02 => 'running',
        0x04 => 'cycling',
        0x08 => 'transition', // Mulitsport transition
        0x10 => 'fitness_equipment',
        0x20 => 'swimming',
        0x40 => 'basketball',
        0x80 => 'soccer',
    ],
    'sport_bits_1' => [
        'type' => 'uint8z',
        0x01 => 'tennis',
        0x02 => 'american_football',
        0x04 => 'training',
        0x08 => 'walking',
        0x10 => 'cross_country_skiing',
        0x20 => 'alpine_skiing',
        0x40 => 'snowboarding',
        0x80 => 'rowing',
    ],
    'sport_bits_2' => [
        'type' => 'uint8z',
        0x01 => 'mountaineering',
        0x02 => 'hiking',
        0x04 => 'multisport',
        0x08 => 'paddling',
        0x10 => 'flying',
        0x20 => 'e_biking',
        0x40 => 'motorcycling',
        0x80 => 'boating',
    ],
    'sport_bits_3' => [
        'type' => 'uint8z',
        0x01 => 'driving',
        0x02 => 'golf',
        0x04 => 'hang_gliding',
        0x08 => 'horseback_riding',
        0x10 => 'hunting',
        0x20 => 'fishing',
        0x40 => 'inline_skating',
        0x80 => 'rock_climbing',
    ],
    'sport_bits_4' => [
        'type' => 'uint8z',
        0x01 => 'sailing',
        0x02 => 'ice_skating',
        0x04 => 'sky_diving',
        0x08 => 'snowshoeing',
        0x10 => 'snowmobiling',
        0x20 => 'stand_up_paddleboarding',
        0x40 => 'surfing',
        0x80 => 'wakeboarding',
    ],
    'sport_bits_5' => [
        'type' => 'uint8z',
        0x01 => 'water_skiing',
        0x02 => 'kayaking',
        0x04 => 'rafting',
        0x08 => 'windsurfing',
        0x10 => 'kitesurfing',
        0x20 => 'tactical',
        0x40 => 'jumpmaster',
        0x80 => 'boxing',
    ],
    'sport_bits_6' => [
        'type' => 'uint8z',
        0x01 => 'floor_climbing',
    ],
    'sub_sport' => [
        'type' => 'enum',
        0 => 'generic',
        1 => 'treadmill', // Run/Fitness Equipment
        2 => 'street', // Run
        3 => 'trail', // Run
        4 => 'track', // Run
        5 => 'spin', // Cycling
        6 => 'indoor_cycling', // Cycling/Fitness Equipment
        7 => 'road', // Cycling
        8 => 'mountain', // Cycling
        9 => 'downhill', // Cycling
        10 => 'recumbent', // Cycling
        11 => 'cyclocross', // Cycling
        12 => 'hand_cycling', // Cycling
        13 => 'track_cycling', // Cycling
        14 => 'indoor_rowing', // Fitness Equipment
        15 => 'elliptical', // Fitness Equipment
        16 => 'stair_climbing', // Fitness Equipment
        17 => 'lap_swimming', // Swimming
        18 => 'open_water', // Swimming
        19 => 'flexibility_training', // Training
        20 => 'strength_training', // Training
        21 => 'warm_up', // Tennis
        22 => 'match', // Tennis
        23 => 'exercise', // Tennis
        24 => 'challenge',
        25 => 'indoor_skiing', // Fitness Equipment
        26 => 'cardio_training', // Training
        27 => 'indoor_walking', // Walking/Fitness Equipment
        28 => 'e_bike_fitness', // E-Biking
        29 => 'bmx', // Cycling
        30 => 'casual_walking', // Walking
        31 => 'speed_walking', // Walking
        32 => 'bike_to_run_transition', // Transition
        33 => 'run_to_bike_transition', // Transition
        34 => 'swim_to_bike_transition', // Transition
        35 => 'atv', // Motorcycling
        36 => 'motocross', // Motorcycling
        37 => 'backcountry', // Alpine Skiing/Snowboarding
        38 => 'resort', // Alpine Skiing/Snowboarding
        39 => 'rc_drone', // Flying
        40 => 'wingsuit', // Flying
        41 => 'whitewater', // Kayaking/Rafting
        42 => 'skate_skiing', // Cross Country Skiing
        43 => 'yoga', // Training
        44 => 'pilates', // Fitness Equipment
        45 => 'indoor_running', // Run
        46 => 'gravel_cycling', // Cycling
        47 => 'e_bike_mountain', // Cycling
        48 => 'commuting', // Cycling
        49 => 'mixed_surface', // Cycling
        50 => 'navigate',
        51 => 'track_me',
        52 => 'map',
        53 => 'single_gas_diving', // Diving
        54 => 'multi_gas_diving', // Diving
        55 => 'gauge_diving', // Diving
        56 => 'apnea_diving', // Diving
        57 => 'apnea_hunting', // Diving
        58 => 'virtual_activity',
        59 => 'obstacle', // Used for events where participants run, crawl through mud, climb over walls, etc.
        62 => 'breathing',
        65 => 'sail_race', // Sailing
        67 => 'ultra', // Ultramarathon
        68 => 'indoor_climbing', // Climbing
        69 => 'bouldering', // Climbing
        84 => 'pickleball', // Racket
        85 => 'padel', // Racket
        254 => 'all',
    ],
    'sport_event' => [
        'type' => 'enum',
        0 => 'uncategorized',
        1 => 'geocaching',
        2 => 'fitness',
        3 => 'recreation',
        4 => 'race',
        5 => 'special_event',
        6 => 'training',
        7 => 'transportation',
        8 => 'touring',
    ],
    'activity' => [
        'type' => 'enum',
        0 => 'manual',
        1 => 'auto_multi_sport',
    ],
    'intensity' => [
        'type' => 'enum',
        0 => 'active',
        1 => 'rest',
        2 => 'warmup',
        3 => 'cooldown',
        4 => 'recovery',
        5 => 'interval',
        6 => 'other',
    ],
    'session_trigger' => [
        'type' => 'enum',
        0 => 'activity_end',
        1 => 'manual', // User changed sport.
        2 => 'auto_multi_sport', // Auto multi-sport feature is enabled and user pressed lap button to advance session.
        3 => 'fitness_equipment', // Auto sport change caused by user linking to fitness equipment.
    ],
    'autolap_trigger' => [
        'type' => 'enum',
        0 => 'time',
        1 => 'distance',
        2 => 'position_start',
        3 => 'position_lap',
        4 => 'position_waypoint',
        5 => 'position_marked',
        6 => 'off',
    ],
    'lap_trigger' => [
        'type' => 'enum',
        0 => 'manual',
        1 => 'time',
        2 => 'distance',
        3 => 'position_start',
        4 => 'position_lap',
        5 => 'position_waypoint',
        6 => 'position_marked',
        7 => 'session_end',
        8 => 'fitness_equipment',
    ],
    'time_mode' => [
        'type' => 'enum',
        0 => 'hour12',
        1 => 'hour24', // Does not use a leading zero and has a colon
        2 => 'military', // Uses a leading zero and does not have a colon
        3 => 'hour_12_with_seconds',
        4 => 'hour_24_with_seconds',
        5 => 'utc',
    ],
    'backlight_mode' => [
        'type' => 'enum',
        0 => 'off',
        1 => 'manual',
        2 => 'key_and_messages',
        3 => 'auto_brightness',
        4 => 'smart_notifications',
        5 => 'key_and_messages_night',
        6 => 'key_and_messages_and_smart_notifications',
    ],
    'date_mode' => [
        'type' => 'enum',
        0 => 'day_month',
        1 => 'month_day',
    ],
    'backlight_timeout' => [
        'type' => 'uint8',
        0 => 'infinite', // Backlight stays on forever.
    ],
    'event' => [
        'type' => 'enum',
        0 => 'timer', // Group 0. Start / stop_all
        3 => 'workout', // start / stop
        4 => 'workout_step', // Start at beginning of workout. Stop at end of each step.
        5 => 'power_down', // stop_all group 0
        6 => 'power_up', // stop_all group 0
        7 => 'off_course', // start / stop group 0
        8 => 'session', // Stop at end of each session.
        9 => 'lap', // Stop at end of each lap.
        10 => 'course_point', // marker
        11 => 'battery', // marker
        12 => 'virtual_partner_pace', // Group 1. Start at beginning of activity if VP enabled, when VP pace is changed during activity or VP enabled mid activity. stop_disable when VP disabled.
        13 => 'hr_high_alert', // Group 0. Start / stop when in alert condition.
        14 => 'hr_low_alert', // Group 0. Start / stop when in alert condition.
        15 => 'speed_high_alert', // Group 0. Start / stop when in alert condition.
        16 => 'speed_low_alert', // Group 0. Start / stop when in alert condition.
        17 => 'cad_high_alert', // Group 0. Start / stop when in alert condition.
        18 => 'cad_low_alert', // Group 0. Start / stop when in alert condition.
        19 => 'power_high_alert', // Group 0. Start / stop when in alert condition.
        20 => 'power_low_alert', // Group 0. Start / stop when in alert condition.
        21 => 'recovery_hr', // marker
        22 => 'battery_low', // marker
        23 => 'time_duration_alert', // Group 1. Start if enabled mid activity (not required at start of activity). Stop when duration is reached. stop_disable if disabled.
        24 => 'distance_duration_alert', // Group 1. Start if enabled mid activity (not required at start of activity). Stop when duration is reached. stop_disable if disabled.
        25 => 'calorie_duration_alert', // Group 1. Start if enabled mid activity (not required at start of activity). Stop when duration is reached. stop_disable if disabled.
        26 => 'activity', // Group 1.. Stop at end of activity.
        27 => 'fitness_equipment', // marker
        28 => 'length', // Stop at end of each length.
        32 => 'user_marker', // marker
        33 => 'sport_point', // marker
        36 => 'calibration', // start/stop/marker
        42 => 'front_gear_change', // marker
        43 => 'rear_gear_change', // marker
        44 => 'rider_position_change', // marker
        45 => 'elev_high_alert', // Group 0. Start / stop when in alert condition.
        46 => 'elev_low_alert', // Group 0. Start / stop when in alert condition.
        47 => 'comm_timeout', // marker
        75 => 'radar_threat_alert', // start/stop/marker
    ],
    'event_type' => [
        'type' => 'enum',
        0 => 'start',
        1 => 'stop',
        2 => 'consecutive_depreciated',
        3 => 'marker',
        4 => 'stop_all',
        5 => 'begin_depreciated',
        6 => 'end_depreciated',
        7 => 'end_all_depreciated',
        8 => 'stop_disable',
        9 => 'stop_disable_all',
    ],
    'timer_trigger' => [
        'type' => 'enum',
        0 => 'manual',
        1 => 'auto',
        2 => 'fitness_equipment',
    ],
    'fitness_equipment_state' => [
        'type' => 'enum',
        0 => 'ready',
        1 => 'in_use',
        2 => 'paused',
        3 => 'unknown', // lost connection to fitness equipment
    ],
    'tone' => [
        'type' => 'enum',
        0 => 'off',
        1 => 'tone',
        2 => 'vibrate',
        3 => 'tone_and_vibrate',
    ],
    'autoscroll' => [
        'type' => 'enum',
        0 => 'none',
        1 => 'slow',
        2 => 'medium',
        3 => 'fast',
    ],
    'activity_class' => [
        'type' => 'enum',
        0x7F => 'level', // 0 to 100
        100 => 'level_max',
        0x80 => 'athlete',
    ],
    'hr_zone_calc' => [
        'type' => 'enum',
        0 => 'custom',
        1 => 'percent_max_hr',
        2 => 'percent_hrr',
        3 => 'percent_lthr',
    ],
    'pwr_zone_calc' => [
        'type' => 'enum',
        0 => 'custom',
        1 => 'percent_ftp',
    ],
    'wkt_step_duration' => [
        'type' => 'enum',
        0 => 'time',
        1 => 'distance',
        2 => 'hr_less_than',
        3 => 'hr_greater_than',
        4 => 'calories',
        5 => 'open',
        6 => 'repeat_until_steps_cmplt',
        7 => 'repeat_until_time',
        8 => 'repeat_until_distance',
        9 => 'repeat_until_calories',
        10 => 'repeat_until_hr_less_than',
        11 => 'repeat_until_hr_greater_than',
        12 => 'repeat_until_power_less_than',
        13 => 'repeat_until_power_greater_than',
        14 => 'power_less_than',
        15 => 'power_greater_than',
        16 => 'training_peaks_tss',
        17 => 'repeat_until_power_last_lap_less_than',
        18 => 'repeat_until_max_power_last_lap_less_than',
        19 => 'power_3s_less_than',
        20 => 'power_10s_less_than',
        21 => 'power_30s_less_than',
        22 => 'power_3s_greater_than',
        23 => 'power_10s_greater_than',
        24 => 'power_30s_greater_than',
        25 => 'power_lap_less_than',
        26 => 'power_lap_greater_than',
        27 => 'repeat_until_training_peaks_tss',
        28 => 'repetition_time',
        29 => 'reps',
        31 => 'time_only',
    ],
    'wkt_step_target' => [
        'type' => 'enum',
        0 => 'speed',
        1 => 'heart_rate',
        2 => 'open',
        3 => 'cadence',
        4 => 'power',
        5 => 'grade',
        6 => 'resistance',
        7 => 'power_3s',
        8 => 'power_10s',
        9 => 'power_30s',
        10 => 'power_lap',
        11 => 'swim_stroke',
        12 => 'speed_lap',
        13 => 'heart_rate_lap',
    ],
    'goal' => [
        'type' => 'enum',
        0 => 'time',
        1 => 'distance',
        2 => 'calories',
        3 => 'frequency',
        4 => 'steps',
        5 => 'ascent',
        6 => 'active_minutes',
    ],
    'goal_recurrence' => [
        'type' => 'enum',
        0 => 'off',
        1 => 'daily',
        2 => 'weekly',
        3 => 'monthly',
        4 => 'yearly',
        5 => 'custom',
    ],
    'goal_source' => [
        'type' => 'enum',
        0 => 'auto', // Device generated
        1 => 'community', // Social network sourced goal
        2 => 'user', // Manually generated
    ],
    'schedule' => [
        'type' => 'enum',
        0 => 'workout',
        1 => 'course',
    ],
    'course_point' => [
        'type' => 'enum',
        0 => 'generic',
        1 => 'summit',
        2 => 'valley',
        3 => 'water',
        4 => 'food',
        5 => 'danger',
        6 => 'left',
        7 => 'right',
        8 => 'straight',
        9 => 'first_aid',
        10 => 'fourth_category',
        11 => 'third_category',
        12 => 'second_category',
        13 => 'first_category',
        14 => 'hors_category',
        15 => 'sprint',
        16 => 'left_fork',
        17 => 'right_fork',
        18 => 'middle_fork',
        19 => 'slight_left',
        20 => 'sharp_left',
        21 => 'slight_right',
        22 => 'sharp_right',
        23 => 'u_turn',
        24 => 'segment_start',
        25 => 'segment_end',
        27 => 'campsite',
        28 => 'aid_station',
        29 => 'rest_area',
        30 => 'general_distance', // Used with UpAhead
        31 => 'service',
        32 => 'energy_gel',
        33 => 'sports_drink',
        34 => 'mile_marker',
        35 => 'checkpoint',
        36 => 'shelter',
        37 => 'meeting_spot',
        38 => 'overlook',
        39 => 'toilet',
        40 => 'shower',
        41 => 'gear',
        42 => 'sharp_curve',
        43 => 'steep_incline',
        44 => 'tunnel',
        45 => 'bridge',
        46 => 'obstacle',
        47 => 'crossing',
        48 => 'store',
        49 => 'transition',
        50 => 'navaid',
        51 => 'transport',
        52 => 'alert',
        53 => 'info',
    ],
    'manufacturer' => [
        'type' => 'uint16',
        1 => 'garmin',
        2 => 'garmin_fr405_antfs', // Do not use. Used by FR405 for ANTFS man id.
        3 => 'zephyr',
        4 => 'dayton',
        5 => 'idt',
        6 => 'srm',
        7 => 'quarq',
        8 => 'ibike',
        9 => 'saris',
        10 => 'spark_hk',
        11 => 'tanita',
        12 => 'echowell',
        13 => 'dynastream_oem',
        14 => 'nautilus',
        15 => 'dynastream',
        16 => 'timex',
        17 => 'metrigear',
        18 => 'xelic',
        19 => 'beurer',
        20 => 'cardiosport',
        21 => 'a_and_d',
        22 => 'hmm',
        23 => 'suunto',
        24 => 'thita_elektronik',
        25 => 'gpulse',
        26 => 'clean_mobile',
        27 => 'pedal_brain',
        28 => 'peaksware',
        29 => 'saxonar',
        30 => 'lemond_fitness',
        31 => 'dexcom',
        32 => 'wahoo_fitness',
        33 => 'octane_fitness',
        34 => 'archinoetics',
        35 => 'the_hurt_box',
        36 => 'citizen_systems',
        37 => 'magellan',
        38 => 'osynce',
        39 => 'holux',
        40 => 'concept2',
        41 => 'shimano',
        42 => 'one_giant_leap',
        43 => 'ace_sensor',
        44 => 'brim_brothers',
        45 => 'xplova',
        46 => 'perception_digital',
        47 => 'bf1systems',
        48 => 'pioneer',
        49 => 'spantec',
        50 => 'metalogics',
        51 => '4iiiis',
        52 => 'seiko_epson',
        53 => 'seiko_epson_oem',
        54 => 'ifor_powell',
        55 => 'maxwell_guider',
        56 => 'star_trac',
        57 => 'breakaway',
        58 => 'alatech_technology_ltd',
        59 => 'mio_technology_europe',
        60 => 'rotor',
        61 => 'geonaute',
        62 => 'id_bike',
        63 => 'specialized',
        64 => 'wtek',
        65 => 'physical_enterprises',
        66 => 'north_pole_engineering',
        67 => 'bkool',
        68 => 'cateye',
        69 => 'stages_cycling',
        70 => 'sigmasport',
        71 => 'tomtom',
        72 => 'peripedal',
        73 => 'wattbike',
        76 => 'moxy',
        77 => 'ciclosport',
        78 => 'powerbahn',
        79 => 'acorn_projects_aps',
        80 => 'lifebeam',
        81 => 'bontrager',
        82 => 'wellgo',
        83 => 'scosche',
        84 => 'magura',
        85 => 'woodway',
        86 => 'elite',
        87 => 'nielsen_kellerman',
        88 => 'dk_city',
        89 => 'tacx',
        90 => 'direction_technology',
        91 => 'magtonic',
        92 => '1partcarbon',
        93 => 'inside_ride_technologies',
        94 => 'sound_of_motion',
        95 => 'stryd',
        96 => 'icg', // Indoorcycling Group
        97 => 'MiPulse',
        98 => 'bsx_athletics',
        99 => 'look',
        100 => 'campagnolo_srl',
        101 => 'body_bike_smart',
        102 => 'praxisworks',
        103 => 'limits_technology', // Limits Technology Ltd.
        104 => 'topaction_technology', // TopAction Technology Inc.
        105 => 'cosinuss',
        106 => 'fitcare',
        107 => 'magene',
        108 => 'giant_manufacturing_co',
        109 => 'tigrasport', // Tigrasport
        110 => 'salutron',
        111 => 'technogym',
        112 => 'bryton_sensors',
        113 => 'latitude_limited',
        114 => 'soaring_technology',
        115 => 'igpsport',
        116 => 'thinkrider',
        117 => 'gopher_sport',
        118 => 'waterrower',
        119 => 'orangetheory',
        120 => 'inpeak',
        121 => 'kinetic',
        122 => 'johnson_health_tech',
        123 => 'polar_electro',
        124 => 'seesense',
        125 => 'nci_technology',
        126 => 'iqsquare',
        127 => 'leomo',
        128 => 'ifit_com',
        129 => 'coros_byte',
        130 => 'versa_design',
        131 => 'chileaf',
        132 => 'cycplus',
        133 => 'gravaa_byte',
        134 => 'sigeyi',
        135 => 'coospo',
        136 => 'geoid',
        137 => 'bosch',
        138 => 'kyto',
        139 => 'kinetic_sports',
        140 => 'decathlon_byte',
        141 => 'tq_systems',
        142 => 'tag_heuer',
        143 => 'keiser_fitness',
        144 => 'zwift_byte',
        145 => 'porsche_ep',
        255 => 'development',
        257 => 'healthandlife',
        258 => 'lezyne',
        259 => 'scribe_labs',
        260 => 'zwift',
        261 => 'watteam',
        262 => 'recon',
        263 => 'favero_electronics',
        264 => 'dynovelo',
        265 => 'strava',
        266 => 'precor', // Amer Sports
        267 => 'bryton',
        268 => 'sram',
        269 => 'navman', // MiTAC Global Corporation (Mio Technology)
        270 => 'cobi', // COBI GmbH
        271 => 'spivi',
        272 => 'mio_magellan',
        273 => 'evesports',
        274 => 'sensitivus_gauge',
        275 => 'podoon',
        276 => 'life_time_fitness',
        277 => 'falco_e_motors', // Falco eMotors Inc.
        278 => 'minoura',
        279 => 'cycliq',
        280 => 'luxottica',
        281 => 'trainer_road',
        282 => 'the_sufferfest',
        283 => 'fullspeedahead',
        284 => 'virtualtraining',
        285 => 'feedbacksports',
        286 => 'omata',
        287 => 'vdo',
        288 => 'magneticdays',
        289 => 'hammerhead',
        290 => 'kinetic_by_kurt',
        291 => 'shapelog',
        292 => 'dabuziduo',
        293 => 'jetblack',
        294 => 'coros',
        295 => 'virtugo',
        296 => 'velosense',
        297 => 'cycligentinc',
        298 => 'trailforks',
        299 => 'mahle_ebikemotion',
        300 => 'nurvv',
        301 => 'microprogram',
        302 => 'zone5cloud',
        303 => 'greenteg',
        304 => 'yamaha_motors',
        305 => 'whoop',
        306 => 'gravaa',
        307 => 'onelap',
        308 => 'monark_exercise',
        309 => 'form',
        310 => 'decathlon',
        311 => 'syncros',
        312 => 'heatup',
        313 => 'cannondale',
        314 => 'true_fitness',
        315 => 'RGT_cycling',
        316 => 'vasa',
        317 => 'race_republic',
        318 => 'fazua',
        319 => 'oreka_training',
        320 => 'lsec', // Lishun Electric & Communication
        321 => 'lululemon_studio',
        322 => 'shanyue',
        5759 => 'actigraphcorp',
    ],
    'garmin_product' => [
        'type' => 'uint16',
        1 => 'hrm1',
        2 => 'axh01', // AXH01 HRM chipset
        3 => 'axb01',
        4 => 'axb02',
        5 => 'hrm2ss',
        6 => 'dsi_alf02',
        7 => 'hrm3ss',
        8 => 'hrm_run_single_byte_product_id', // hrm_run model for HRM ANT+ messaging
        9 => 'bsm', // BSM model for ANT+ messaging
        10 => 'bcm', // BCM model for ANT+ messaging
        11 => 'axs01', // AXS01 HRM Bike Chipset model for ANT+ messaging
        12 => 'hrm_tri_single_byte_product_id', // hrm_tri model for HRM ANT+ messaging
        13 => 'hrm4_run_single_byte_product_id', // hrm4 run model for HRM ANT+ messaging
        14 => 'fr225_single_byte_product_id', // fr225 model for HRM ANT+ messaging
        15 => 'gen3_bsm_single_byte_product_id', // gen3_bsm model for Bike Speed ANT+ messaging
        16 => 'gen3_bcm_single_byte_product_id', // gen3_bcm model for Bike Cadence ANT+ messaging
        255 => 'OHR', // Garmin Wearable Optical Heart Rate Sensor for ANT+ HR Profile Broadcasting
        473 => 'fr301_china',
        474 => 'fr301_japan',
        475 => 'fr301_korea',
        494 => 'fr301_taiwan',
        717 => 'fr405', // Forerunner 405
        782 => 'fr50', // Forerunner 50
        987 => 'fr405_japan',
        988 => 'fr60', // Forerunner 60
        1011 => 'dsi_alf01',
        1018 => 'fr310xt', // Forerunner 310
        1036 => 'edge500',
        1124 => 'fr110', // Forerunner 110
        1169 => 'edge800',
        1199 => 'edge500_taiwan',
        1213 => 'edge500_japan',
        1253 => 'chirp',
        1274 => 'fr110_japan',
        1325 => 'edge200',
        1328 => 'fr910xt',
        1333 => 'edge800_taiwan',
        1334 => 'edge800_japan',
        1341 => 'alf04',
        1345 => 'fr610',
        1360 => 'fr210_japan',
        1380 => 'vector_ss',
        1381 => 'vector_cp',
        1386 => 'edge800_china',
        1387 => 'edge500_china',
        1405 => 'approach_g10',
        1410 => 'fr610_japan',
        1422 => 'edge500_korea',
        1436 => 'fr70',
        1446 => 'fr310xt_4t',
        1461 => 'amx',
        1482 => 'fr10',
        1497 => 'edge800_korea',
        1499 => 'swim',
        1537 => 'fr910xt_china',
        1551 => 'fenix',
        1555 => 'edge200_taiwan',
        1561 => 'edge510',
        1567 => 'edge810',
        1570 => 'tempe',
        1600 => 'fr910xt_japan',
        1623 => 'fr620',
        1632 => 'fr220',
        1664 => 'fr910xt_korea',
        1688 => 'fr10_japan',
        1721 => 'edge810_japan',
        1735 => 'virb_elite',
        1736 => 'edge_touring', // Also Edge Touring Plus
        1742 => 'edge510_japan',
        1743 => 'hrm_tri', // Also HRM-Swim
        1752 => 'hrm_run',
        1765 => 'fr920xt',
        1821 => 'edge510_asia',
        1822 => 'edge810_china',
        1823 => 'edge810_taiwan',
        1836 => 'edge1000',
        1837 => 'vivo_fit',
        1853 => 'virb_remote',
        1885 => 'vivo_ki',
        1903 => 'fr15',
        1907 => 'vivo_active',
        1918 => 'edge510_korea',
        1928 => 'fr620_japan',
        1929 => 'fr620_china',
        1930 => 'fr220_japan',
        1931 => 'fr220_china',
        1936 => 'approach_s6',
        1956 => 'vivo_smart',
        1967 => 'fenix2',
        1988 => 'epix',
        2050 => 'fenix3',
        2052 => 'edge1000_taiwan',
        2053 => 'edge1000_japan',
        2061 => 'fr15_japan',
        2067 => 'edge520',
        2070 => 'edge1000_china',
        2072 => 'fr620_russia',
        2073 => 'fr220_russia',
        2079 => 'vector_s',
        2100 => 'edge1000_korea',
        2130 => 'fr920xt_taiwan',
        2131 => 'fr920xt_china',
        2132 => 'fr920xt_japan',
        2134 => 'virbx',
        2135 => 'vivo_smart_apac',
        2140 => 'etrex_touch',
        2147 => 'edge25',
        2148 => 'fr25',
        2150 => 'vivo_fit2',
        2153 => 'fr225',
        2156 => 'fr630',
        2157 => 'fr230',
        2158 => 'fr735xt',
        2160 => 'vivo_active_apac',
        2161 => 'vector_2',
        2162 => 'vector_2s',
        2172 => 'virbxe',
        2173 => 'fr620_taiwan',
        2174 => 'fr220_taiwan',
        2175 => 'truswing',
        2187 => 'd2airvenu',
        2188 => 'fenix3_china',
        2189 => 'fenix3_twn',
        2192 => 'varia_headlight',
        2193 => 'varia_taillight_old',
        2204 => 'edge_explore_1000',
        2219 => 'fr225_asia',
        2225 => 'varia_radar_taillight',
        2226 => 'varia_radar_display',
        2238 => 'edge20',
        2260 => 'edge520_asia',
        2261 => 'edge520_japan',
        2262 => 'd2_bravo',
        2266 => 'approach_s20',
        2271 => 'vivo_smart2',
        2274 => 'edge1000_thai',
        2276 => 'varia_remote',
        2288 => 'edge25_asia',
        2289 => 'edge25_jpn',
        2290 => 'edge20_asia',
        2292 => 'approach_x40',
        2293 => 'fenix3_japan',
        2294 => 'vivo_smart_emea',
        2310 => 'fr630_asia',
        2311 => 'fr630_jpn',
        2313 => 'fr230_jpn',
        2327 => 'hrm4_run',
        2332 => 'epix_japan',
        2337 => 'vivo_active_hr',
        2347 => 'vivo_smart_gps_hr',
        2348 => 'vivo_smart_hr',
        2361 => 'vivo_smart_hr_asia',
        2362 => 'vivo_smart_gps_hr_asia',
        2368 => 'vivo_move',
        2379 => 'varia_taillight',
        2396 => 'fr235_asia',
        2397 => 'fr235_japan',
        2398 => 'varia_vision',
        2406 => 'vivo_fit3',
        2407 => 'fenix3_korea',
        2408 => 'fenix3_sea',
        2413 => 'fenix3_hr',
        2417 => 'virb_ultra_30',
        2429 => 'index_smart_scale',
        2431 => 'fr235',
        2432 => 'fenix3_chronos',
        2441 => 'oregon7xx',
        2444 => 'rino7xx',
        2457 => 'epix_korea',
        2473 => 'fenix3_hr_chn',
        2474 => 'fenix3_hr_twn',
        2475 => 'fenix3_hr_jpn',
        2476 => 'fenix3_hr_sea',
        2477 => 'fenix3_hr_kor',
        2496 => 'nautix',
        2497 => 'vivo_active_hr_apac',
        2512 => 'oregon7xx_ww',
        2530 => 'edge_820',
        2531 => 'edge_explore_820',
        2533 => 'fr735xt_apac',
        2534 => 'fr735xt_japan',
        2544 => 'fenix5s',
        2547 => 'd2_bravo_titanium',
        2567 => 'varia_ut800', // Varia UT 800 SW
        2593 => 'running_dynamics_pod',
        2599 => 'edge_820_china',
        2600 => 'edge_820_japan',
        2604 => 'fenix5x',
        2606 => 'vivo_fit_jr',
        2622 => 'vivo_smart3',
        2623 => 'vivo_sport',
        2628 => 'edge_820_taiwan',
        2629 => 'edge_820_korea',
        2630 => 'edge_820_sea',
        2650 => 'fr35_hebrew',
        2656 => 'approach_s60',
        2667 => 'fr35_apac',
        2668 => 'fr35_japan',
        2675 => 'fenix3_chronos_asia',
        2687 => 'virb_360',
        2691 => 'fr935',
        2697 => 'fenix5',
        2700 => 'vivoactive3',
        2733 => 'fr235_china_nfc',
        2769 => 'foretrex_601_701',
        2772 => 'vivo_move_hr',
        2713 => 'edge_1030',
        2727 => 'fr35_sea',
        2787 => 'vector_3',
        2796 => 'fenix5_asia',
        2797 => 'fenix5s_asia',
        2798 => 'fenix5x_asia',
        2806 => 'approach_z80',
        2814 => 'fr35_korea',
        2819 => 'd2charlie',
        2831 => 'vivo_smart3_apac',
        2832 => 'vivo_sport_apac',
        2833 => 'fr935_asia',
        2859 => 'descent',
        2878 => 'vivo_fit4',
        2886 => 'fr645',
        2888 => 'fr645m',
        2891 => 'fr30',
        2900 => 'fenix5s_plus',
        2909 => 'Edge_130',
        2924 => 'edge_1030_asia',
        2927 => 'vivosmart_4',
        2945 => 'vivo_move_hr_asia',
        2962 => 'approach_x10',
        2977 => 'fr30_asia',
        2988 => 'vivoactive3m_w',
        3003 => 'fr645_asia',
        3004 => 'fr645m_asia',
        3011 => 'edge_explore',
        3028 => 'gpsmap66',
        3049 => 'approach_s10',
        3066 => 'vivoactive3m_l',
        3085 => 'approach_g80',
        3092 => 'edge_130_asia',
        3095 => 'edge_1030_bontrager',
        3110 => 'fenix5_plus',
        3111 => 'fenix5x_plus',
        3112 => 'edge_520_plus',
        3113 => 'fr945',
        3121 => 'edge_530',
        3122 => 'edge_830',
        3126 => 'instinct_esports',
        3134 => 'fenix5s_plus_apac',
        3135 => 'fenix5x_plus_apac',
        3142 => 'edge_520_plus_apac',
        3144 => 'fr235l_asia',
        3145 => 'fr245_asia',
        3163 => 'vivo_active3m_apac',
        3192 => 'gen3_bsm', // gen3 bike speed sensor
        3193 => 'gen3_bcm', // gen3 bike cadence sensor
        3218 => 'vivo_smart4_asia',
        3224 => 'vivoactive4_small',
        3225 => 'vivoactive4_large',
        3226 => 'venu',
        3246 => 'marq_driver',
        3247 => 'marq_aviator',
        3248 => 'marq_captain',
        3249 => 'marq_commander',
        3250 => 'marq_expedition',
        3251 => 'marq_athlete',
        3258 => 'descent_mk2',
        3284 => 'gpsmap66i',
        3287 => 'fenix6S_sport',
        3288 => 'fenix6S',
        3289 => 'fenix6_sport',
        3290 => 'fenix6',
        3291 => 'fenix6x',
        3299 => 'hrm_dual', // HRM-Dual
        3300 => 'hrm_pro', // HRM-Pro
        3308 => 'vivo_move3_premium',
        3314 => 'approach_s40',
        3321 => 'fr245m_asia',
        3349 => 'edge_530_apac',
        3350 => 'edge_830_apac',
        3378 => 'vivo_move3',
        3387 => 'vivo_active4_small_asia',
        3388 => 'vivo_active4_large_asia',
        3389 => 'vivo_active4_oled_asia',
        3405 => 'swim2',
        3420 => 'marq_driver_asia',
        3421 => 'marq_aviator_asia',
        3422 => 'vivo_move3_asia',
        3441 => 'fr945_asia',
        3446 => 'vivo_active3t_chn',
        3448 => 'marq_captain_asia',
        3449 => 'marq_commander_asia',
        3450 => 'marq_expedition_asia',
        3451 => 'marq_athlete_asia',
        3466 => 'instinct_solar',
        3469 => 'fr45_asia',
        3473 => 'vivoactive3_daimler',
        3498 => 'legacy_rey',
        3499 => 'legacy_darth_vader',
        3500 => 'legacy_captain_marvel',
        3501 => 'legacy_first_avenger',
        3512 => 'fenix6s_sport_asia',
        3513 => 'fenix6s_asia',
        3514 => 'fenix6_sport_asia',
        3515 => 'fenix6_asia',
        3516 => 'fenix6x_asia',
        3535 => 'legacy_captain_marvel_asia',
        3536 => 'legacy_first_avenger_asia',
        3537 => 'legacy_rey_asia',
        3538 => 'legacy_darth_vader_asia',
        3542 => 'descent_mk2s',
        3558 => 'edge_130_plus',
        3570 => 'edge_1030_plus',
        3578 => 'rally_200', // Rally 100/200 Power Meter Series
        3589 => 'fr745',
        3600 => 'venusq',
        3615 => 'lily',
        3624 => 'marq_adventurer',
        3638 => 'enduro',
        3639 => 'swim2_apac',
        3648 => 'marq_adventurer_asia',
        3652 => 'fr945_lte',
        3702 => 'descent_mk2_asia', // Mk2 and Mk2i
        3703 => 'venu2',
        3704 => 'venu2s',
        3737 => 'venu_daimler_asia',
        3739 => 'marq_golfer',
        3740 => 'venu_daimler',
        3794 => 'fr745_asia',
        3809 => 'lily_asia',
        3812 => 'edge_1030_plus_asia',
        3813 => 'edge_130_plus_asia',
        3823 => 'approach_s12',
        3872 => 'enduro_asia',
        3837 => 'venusq_asia',
        3843 => 'edge_1040',
        3850 => 'marq_golfer_asia',
        3851 => 'venu2_plus',
        3869 => 'fr55',
        3888 => 'instinct_2',
        3905 => 'fenix7s',
        3906 => 'fenix7',
        3907 => 'fenix7x',
        3908 => 'fenix7s_apac',
        3909 => 'fenix7_apac',
        3910 => 'fenix7x_apac',
        3927 => 'approach_g12',
        3930 => 'descent_mk2s_asia',
        3934 => 'approach_s42',
        3943 => 'epix_gen2',
        3944 => 'epix_gen2_apac',
        3949 => 'venu2s_asia',
        3950 => 'venu2_asia',
        3978 => 'fr945_lte_asia',
        3982 => 'vivo_move_sport',
        3986 => 'approach_S12_asia',
        3990 => 'fr255_music',
        3991 => 'fr255_small_music',
        3992 => 'fr255',
        3993 => 'fr255_small',
        4001 => 'approach_g12_asia',
        4002 => 'approach_s42_asia',
        4005 => 'descent_g1',
        4017 => 'venu2_plus_asia',
        4024 => 'fr955',
        4033 => 'fr55_asia',
        4063 => 'vivosmart_5',
        4071 => 'instinct_2_asia',
        4105 => 'marq_gen2', // Adventurer, Athlete, Captain, Golfer
        4115 => 'venusq2',
        4116 => 'venusq2music',
        4124 => 'marq_gen2_aviator',
        4125 => 'd2_air_x10',
        4130 => 'hrm_pro_plus',
        4132 => 'descent_g1_asia',
        4135 => 'tactix7',
        4155 => 'instinct_crossover',
        4169 => 'edge_explore2',
        4265 => 'tacx_neo_smart', // Neo Smart, Tacx
        4266 => 'tacx_neo2_smart', // Neo 2 Smart, Tacx
        4267 => 'tacx_neo2_t_smart', // Neo 2T Smart, Tacx
        4268 => 'tacx_neo_smart_bike', // Neo Smart Bike, Tacx
        4269 => 'tacx_satori_smart', // Satori Smart, Tacx
        4270 => 'tacx_flow_smart', // Flow Smart, Tacx
        4271 => 'tacx_vortex_smart', // Vortex Smart, Tacx
        4272 => 'tacx_bushido_smart', // Bushido Smart, Tacx
        4273 => 'tacx_genius_smart', // Genius Smart, Tacx
        4274 => 'tacx_flux_flux_s_smart', // Flux/Flux S Smart, Tacx
        4275 => 'tacx_flux2_smart', // Flux 2 Smart, Tacx
        4276 => 'tacx_magnum', // Magnum, Tacx
        4305 => 'edge_1040_asia',
        4341 => 'enduro2',
        10007 => 'sdm4', // SDM4 footpod
        10014 => 'edge_remote',
        20533 => 'tacx_training_app_win',
        20534 => 'tacx_training_app_mac',
        20565 => 'tacx_training_app_mac_catalyst',
        20119 => 'training_center',
        30045 => 'tacx_training_app_android',
        30046 => 'tacx_training_app_ios',
        30047 => 'tacx_training_app_legacy',
        65531 => 'connectiq_simulator',
        65532 => 'android_antplus_plugin',
        65534 => 'connect', // Garmin Connect website
    ],
    'antplus_device_type' => [
        'type' => 'uint8',
        1 => 'antfs',
        11 => 'bike_power',
        12 => 'environment_sensor_legacy',
        15 => 'multi_sport_speed_distance',
        16 => 'control',
        17 => 'fitness_equipment',
        18 => 'blood_pressure',
        19 => 'geocache_node',
        20 => 'light_electric_vehicle',
        25 => 'env_sensor',
        26 => 'racquet',
        27 => 'control_hub',
        31 => 'muscle_oxygen',
        34 => 'shifting',
        35 => 'bike_light_main',
        36 => 'bike_light_shared',
        38 => 'exd',
        40 => 'bike_radar',
        46 => 'bike_aero',
        119 => 'weight_scale',
        120 => 'heart_rate',
        121 => 'bike_speed_cadence',
        122 => 'bike_cadence',
        123 => 'bike_speed',
        124 => 'stride_speed_distance',
    ],
    'ant_network' => [
        'type' => 'enum',
        0 => 'public',
        1 => 'antplus',
        2 => 'antfs',
        3 => 'private',
    ],
    'workout_capabilities' => [
        'type' => 'uint32z',
        0x00000001 => 'interval',
        0x00000002 => 'custom',
        0x00000004 => 'fitness_equipment',
        0x00000008 => 'firstbeat',
        0x00000010 => 'new_leaf',
        0x00000020 => 'tcx', // For backwards compatibility. Watch should add missing id fields then clear flag.
        0x00000080 => 'speed', // Speed source required for workout step.
        0x00000100 => 'heart_rate', // Heart rate source required for workout step.
        0x00000200 => 'distance', // Distance source required for workout step.
        0x00000400 => 'cadence', // Cadence source required for workout step.
        0x00000800 => 'power', // Power source required for workout step.
        0x00001000 => 'grade', // Grade source required for workout step.
        0x00002000 => 'resistance', // Resistance source required for workout step.
        0x00004000 => 'protected',
    ],
    'battery_status' => [
        'type' => 'uint8',
        1 => 'new',
        2 => 'good',
        3 => 'ok',
        4 => 'low',
        5 => 'critical',
        6 => 'charging',
        7 => 'unknown',
    ],
    'hr_type' => [
        'type' => 'enum',
        0 => 'normal',
        1 => 'irregular',
    ],
    'course_capabilities' => [
        'type' => 'uint32z',
        0x00000001 => 'processed',
        0x00000002 => 'valid',
        0x00000004 => 'time',
        0x00000008 => 'distance',
        0x00000010 => 'position',
        0x00000020 => 'heart_rate',
        0x00000040 => 'power',
        0x00000080 => 'cadence',
        0x00000100 => 'training',
        0x00000200 => 'navigation',
        0x00000400 => 'bikeway',
        0x00001000 => 'aviation', // Denote course files to be used as flight plans
    ],
    'weight' => [
        'type' => 'uint16',
        0xFFFE => 'calculating',
    ],
    'workout_hr' => [
        'type' => 'uint32',
        100 => 'bpm_offset',
    ],
    'workout_power' => [
        'type' => 'uint32',
        1000 => 'watts_offset',
    ],
    'bp_status' => [
        'type' => 'enum',
        0 => 'no_error',
        1 => 'error_incomplete_data',
        2 => 'error_no_measurement',
        3 => 'error_data_out_of_range',
        4 => 'error_irregular_heart_rate',
    ],
    'user_local_id' => [
        'type' => 'uint16',
        0x0000 => 'local_min',
        0x000F => 'local_max',
        0x0010 => 'stationary_min',
        0x00FF => 'stationary_max',
        0x0100 => 'portable_min',
        0xFFFE => 'portable_max',
    ],
    'swim_stroke' => [
        'type' => 'enum',
        0 => 'freestyle',
        1 => 'backstroke',
        2 => 'breaststroke',
        3 => 'butterfly',
        4 => 'drill',
        5 => 'mixed',
        6 => 'im', // IM is a mixed interval containing the same number of lengths for each of: Butterfly, Backstroke, Breaststroke, Freestyle, swam in that order.
    ],
    'activity_type' => [
        'type' => 'enum',
        0 => 'generic',
        1 => 'running',
        2 => 'cycling',
        3 => 'transition', // Mulitsport transition
        4 => 'fitness_equipment',
        5 => 'swimming',
        6 => 'walking',
        8 => 'sedentary',
        254 => 'all', // All is for goals only to include all sports.
    ],
    'activity_subtype' => [
        'type' => 'enum',
        0 => 'generic',
        1 => 'treadmill', // Run
        2 => 'street', // Run
        3 => 'trail', // Run
        4 => 'track', // Run
        5 => 'spin', // Cycling
        6 => 'indoor_cycling', // Cycling
        7 => 'road', // Cycling
        8 => 'mountain', // Cycling
        9 => 'downhill', // Cycling
        10 => 'recumbent', // Cycling
        11 => 'cyclocross', // Cycling
        12 => 'hand_cycling', // Cycling
        13 => 'track_cycling', // Cycling
        14 => 'indoor_rowing', // Fitness Equipment
        15 => 'elliptical', // Fitness Equipment
        16 => 'stair_climbing', // Fitness Equipment
        17 => 'lap_swimming', // Swimming
        18 => 'open_water', // Swimming
        254 => 'all',
    ],
    'activity_level' => [
        'type' => 'enum',
        0 => 'low',
        1 => 'medium',
        2 => 'high',
    ],
    'side' => [
        'type' => 'enum',
        0 => 'right',
        1 => 'left',
    ],
    'left_right_balance' => [
        'type' => 'uint8',
        0x7F => 'mask', // % contribution
        0x80 => 'right', // data corresponds to right if set, otherwise unknown
    ],
    'left_right_balance_100' => [
        'type' => 'uint16',
        0x3FFF => 'mask', // % contribution scaled by 100
        0x8000 => 'right', // data corresponds to right if set, otherwise unknown
    ],
    'length_type' => [
        'type' => 'enum',
        0 => 'idle', // Rest period. Length with no strokes
        1 => 'active', // Length with strokes.
    ],
    'day_of_week' => [
        'type' => 'enum',
        0 => 'sunday',
        1 => 'monday',
        2 => 'tuesday',
        3 => 'wednesday',
        4 => 'thursday',
        5 => 'friday',
        6 => 'saturday',
    ],
    'connectivity_capabilities' => [
        'type' => 'uint32z',
        0x00000001 => 'bluetooth',
        0x00000002 => 'bluetooth_le',
        0x00000004 => 'ant',
        0x00000008 => 'activity_upload',
        0x00000010 => 'course_download',
        0x00000020 => 'workout_download',
        0x00000040 => 'live_track',
        0x00000080 => 'weather_conditions',
        0x00000100 => 'weather_alerts',
        0x00000200 => 'gps_ephemeris_download',
        0x00000400 => 'explicit_archive',
        0x00000800 => 'setup_incomplete',
        0x00001000 => 'continue_sync_after_software_update',
        0x00002000 => 'connect_iq_app_download',
        0x00004000 => 'golf_course_download',
        0x00008000 => 'device_initiates_sync', // Indicates device is in control of initiating all syncs
        0x00010000 => 'connect_iq_watch_app_download',
        0x00020000 => 'connect_iq_widget_download',
        0x00040000 => 'connect_iq_watch_face_download',
        0x00080000 => 'connect_iq_data_field_download',
        0x00100000 => 'connect_iq_app_managment', // Device supports delete and reorder of apps via GCM
        0x00200000 => 'swing_sensor',
        0x00400000 => 'swing_sensor_remote',
        0x00800000 => 'incident_detection', // Device supports incident detection
        0x01000000 => 'audio_prompts',
        0x02000000 => 'wifi_verification', // Device supports reporting wifi verification via GCM
        0x04000000 => 'true_up', // Device supports True Up
        0x08000000 => 'find_my_watch', // Device supports Find My Watch
        0x10000000 => 'remote_manual_sync',
        0x20000000 => 'live_track_auto_start', // Device supports LiveTrack auto start
        0x40000000 => 'live_track_messaging', // Device supports LiveTrack Messaging
        0x80000000 => 'instant_input', // Device supports instant input feature
    ],
    'weather_report' => [
        'type' => 'enum',
        0 => 'current',
        1 => 'forecast', // Deprecated use hourly_forecast instead
        1 => 'hourly_forecast',
        2 => 'daily_forecast',
    ],
    'weather_status' => [
        'type' => 'enum',
        0 => 'clear',
        1 => 'partly_cloudy',
        2 => 'mostly_cloudy',
        3 => 'rain',
        4 => 'snow',
        5 => 'windy',
        6 => 'thunderstorms',
        7 => 'wintry_mix',
        8 => 'fog',
        11 => 'hazy',
        12 => 'hail',
        13 => 'scattered_showers',
        14 => 'scattered_thunderstorms',
        15 => 'unknown_precipitation',
        16 => 'light_rain',
        17 => 'heavy_rain',
        18 => 'light_snow',
        19 => 'heavy_snow',
        20 => 'light_rain_snow',
        21 => 'heavy_rain_snow',
        22 => 'cloudy',
    ],
    'weather_severity' => [
        'type' => 'enum',
        0 => 'unknown',
        1 => 'warning',
        2 => 'watch',
        3 => 'advisory',
        4 => 'statement',
    ],
    'weather_severe_type' => [
        'type' => 'enum',
        0 => 'unspecified',
        1 => 'tornado',
        2 => 'tsunami',
        3 => 'hurricane',
        4 => 'extreme_wind',
        5 => 'typhoon',
        6 => 'inland_hurricane',
        7 => 'hurricane_force_wind',
        8 => 'waterspout',
        9 => 'severe_thunderstorm',
        10 => 'wreckhouse_winds',
        11 => 'les_suetes_wind',
        12 => 'avalanche',
        13 => 'flash_flood',
        14 => 'tropical_storm',
        15 => 'inland_tropical_storm',
        16 => 'blizzard',
        17 => 'ice_storm',
        18 => 'freezing_rain',
        19 => 'debris_flow',
        20 => 'flash_freeze',
        21 => 'dust_storm',
        22 => 'high_wind',
        23 => 'winter_storm',
        24 => 'heavy_freezing_spray',
        25 => 'extreme_cold',
        26 => 'wind_chill',
        27 => 'cold_wave',
        28 => 'heavy_snow_alert',
        29 => 'lake_effect_blowing_snow',
        30 => 'snow_squall',
        31 => 'lake_effect_snow',
        32 => 'winter_weather',
        33 => 'sleet',
        34 => 'snowfall',
        35 => 'snow_and_blowing_snow',
        36 => 'blowing_snow',
        37 => 'snow_alert',
        38 => 'arctic_outflow',
        39 => 'freezing_drizzle',
        40 => 'storm',
        41 => 'storm_surge',
        42 => 'rainfall',
        43 => 'areal_flood',
        44 => 'coastal_flood',
        45 => 'lakeshore_flood',
        46 => 'excessive_heat',
        47 => 'heat',
        48 => 'weather',
        49 => 'high_heat_and_humidity',
        50 => 'humidex_and_health',
        51 => 'humidex',
        52 => 'gale',
        53 => 'freezing_spray',
        54 => 'special_marine',
        55 => 'squall',
        56 => 'strong_wind',
        57 => 'lake_wind',
        58 => 'marine_weather',
        59 => 'wind',
        60 => 'small_craft_hazardous_seas',
        61 => 'hazardous_seas',
        62 => 'small_craft',
        63 => 'small_craft_winds',
        64 => 'small_craft_rough_bar',
        65 => 'high_water_level',
        66 => 'ashfall',
        67 => 'freezing_fog',
        68 => 'dense_fog',
        69 => 'dense_smoke',
        70 => 'blowing_dust',
        71 => 'hard_freeze',
        72 => 'freeze',
        73 => 'frost',
        74 => 'fire_weather',
        75 => 'flood',
        76 => 'rip_tide',
        77 => 'high_surf',
        78 => 'smog',
        79 => 'air_quality',
        80 => 'brisk_wind',
        81 => 'air_stagnation',
        82 => 'low_water',
        83 => 'hydrological',
        84 => 'special_weather',
    ],
    'time_into_day' => [
        'type' => 'uint32',
    ],
    'localtime_into_day' => [
        'type' => 'uint32',
    ],
    'stroke_type' => [
        'type' => 'enum',
        0 => 'no_event',
        1 => 'other', // stroke was detected but cannot be identified
        2 => 'serve',
        3 => 'forehand',
        4 => 'backhand',
        5 => 'smash',
    ],
    'body_location' => [
        'type' => 'enum',
        0 => 'left_leg',
        1 => 'left_calf',
        2 => 'left_shin',
        3 => 'left_hamstring',
        4 => 'left_quad',
        5 => 'left_glute',
        6 => 'right_leg',
        7 => 'right_calf',
        8 => 'right_shin',
        9 => 'right_hamstring',
        10 => 'right_quad',
        11 => 'right_glute',
        12 => 'torso_back',
        13 => 'left_lower_back',
        14 => 'left_upper_back',
        15 => 'right_lower_back',
        16 => 'right_upper_back',
        17 => 'torso_front',
        18 => 'left_abdomen',
        19 => 'left_chest',
        20 => 'right_abdomen',
        21 => 'right_chest',
        22 => 'left_arm',
        23 => 'left_shoulder',
        24 => 'left_bicep',
        25 => 'left_tricep',
        26 => 'left_brachioradialis', // Left anterior forearm
        27 => 'left_forearm_extensors', // Left posterior forearm
        28 => 'right_arm',
        29 => 'right_shoulder',
        30 => 'right_bicep',
        31 => 'right_tricep',
        32 => 'right_brachioradialis', // Right anterior forearm
        33 => 'right_forearm_extensors', // Right posterior forearm
        34 => 'neck',
        35 => 'throat',
        36 => 'waist_mid_back',
        37 => 'waist_front',
        38 => 'waist_left',
        39 => 'waist_right',
    ],
    'segment_lap_status' => [
        'type' => 'enum',
        0 => 'end',
        1 => 'fail',
    ],
    'segment_leaderboard_type' => [
        'type' => 'enum',
        0 => 'overall',
        1 => 'personal_best',
        2 => 'connections',
        3 => 'group',
        4 => 'challenger',
        5 => 'kom',
        6 => 'qom',
        7 => 'pr',
        8 => 'goal',
        9 => 'rival',
        10 => 'club_leader',
    ],
    'segment_delete_status' => [
        'type' => 'enum',
        0 => 'do_not_delete',
        1 => 'delete_one',
        2 => 'delete_all',
    ],
    'segment_selection_type' => [
        'type' => 'enum',
        0 => 'starred',
        1 => 'suggested',
    ],
    'source_type' => [
        'type' => 'enum',
        0 => 'ant', // External device connected with ANT
        1 => 'antplus', // External device connected with ANT+
        2 => 'bluetooth', // External device connected with BT
        3 => 'bluetooth_low_energy', // External device connected with BLE
        4 => 'wifi', // External device connected with Wifi
        5 => 'local', // Onboard device
    ],
    'local_device_type' => [
        'type' => 'uint8',
        0 => 'gps', // Onboard gps receiver
        1 => 'glonass', // Onboard glonass receiver
        2 => 'gps_glonass', // Onboard gps glonass receiver
        3 => 'accelerometer', // Onboard sensor
        4 => 'barometer', // Onboard sensor
        5 => 'temperature', // Onboard sensor
        10 => 'whr', // Onboard wrist HR sensor
        12 => 'sensor_hub', // Onboard software package
    ],
    'ble_device_type' => [
        'type' => 'uint8',
        0 => 'connected_gps', // GPS that is provided over a proprietary bluetooth service
        1 => 'heart_rate',
        2 => 'bike_power',
        3 => 'bike_speed_cadence',
        4 => 'bike_speed',
        5 => 'bike_cadence',
        6 => 'footpod',
        7 => 'bike_trainer', // Indoor-Bike FTMS protocol
    ],
    'display_orientation' => [
        'type' => 'enum',
        0 => 'auto', // automatic if the device supports it
        1 => 'portrait',
        2 => 'landscape',
        3 => 'portrait_flipped', // portrait mode but rotated 180 degrees
        4 => 'landscape_flipped', // landscape mode but rotated 180 degrees
    ],
    'workout_equipment' => [
        'type' => 'enum',
        0 => 'none',
        1 => 'swim_fins',
        2 => 'swim_kickboard',
        3 => 'swim_paddles',
        4 => 'swim_pull_buoy',
        5 => 'swim_snorkel',
    ],
    'watchface_mode' => [
        'type' => 'enum',
        0 => 'digital',
        1 => 'analog',
        2 => 'connect_iq',
        3 => 'disabled',
    ],
    'digital_watchface_layout' => [
        'type' => 'enum',
        0 => 'traditional',
        1 => 'modern',
        2 => 'bold',
    ],
    'analog_watchface_layout' => [
        'type' => 'enum',
        0 => 'minimal',
        1 => 'traditional',
        2 => 'modern',
    ],
    'rider_position_type' => [
        'type' => 'enum',
        0 => 'seated',
        1 => 'standing',
        2 => 'transition_to_seated',
        3 => 'transition_to_standing',
    ],
    'power_phase_type' => [
        'type' => 'enum',
        0 => 'power_phase_start_angle',
        1 => 'power_phase_end_angle',
        2 => 'power_phase_arc_length',
        3 => 'power_phase_center',
    ],
    'camera_event_type' => [
        'type' => 'enum',
        0 => 'video_start', // Start of video recording
        1 => 'video_split', // Mark of video file split (end of one file, beginning of the other)
        2 => 'video_end', // End of video recording
        3 => 'photo_taken', // Still photo taken
        4 => 'video_second_stream_start',
        5 => 'video_second_stream_split',
        6 => 'video_second_stream_end',
        7 => 'video_split_start', // Mark of video file split start
        8 => 'video_second_stream_split_start',
        11 => 'video_pause', // Mark when a video recording has been paused
        12 => 'video_second_stream_pause',
        13 => 'video_resume', // Mark when a video recording has been resumed
        14 => 'video_second_stream_resume',
    ],
    'sensor_type' => [
        'type' => 'enum',
        0 => 'accelerometer',
        1 => 'gyroscope',
        2 => 'compass', // Magnetometer
        3 => 'barometer',
    ],
    'bike_light_network_config_type' => [
        'type' => 'enum',
        0 => 'auto',
        4 => 'individual',
        5 => 'high_visibility',
        6 => 'trail',
    ],
    'comm_timeout_type' => [
        'type' => 'uint16',
        0 => 'wildcard_pairing_timeout', // Timeout pairing to any device
        1 => 'pairing_timeout', // Timeout pairing to previously paired device
        2 => 'connection_lost', // Temporary loss of communications
        3 => 'connection_timeout', // Connection closed due to extended bad communications
    ],
    'camera_orientation_type' => [
        'type' => 'enum',
        0 => 'camera_orientation_0',
        1 => 'camera_orientation_90',
        2 => 'camera_orientation_180',
        3 => 'camera_orientation_270',
    ],
    'attitude_stage' => [
        'type' => 'enum',
        0 => 'failed',
        1 => 'aligning',
        2 => 'degraded',
        3 => 'valid',
    ],
    'attitude_validity' => [
        'type' => 'uint16',
        0x0001 => 'track_angle_heading_valid',
        0x0002 => 'pitch_valid',
        0x0004 => 'roll_valid',
        0x0008 => 'lateral_body_accel_valid',
        0x0010 => 'normal_body_accel_valid',
        0x0020 => 'turn_rate_valid',
        0x0040 => 'hw_fail',
        0x0080 => 'mag_invalid',
        0x0100 => 'no_gps',
        0x0200 => 'gps_invalid',
        0x0400 => 'solution_coasting',
        0x0800 => 'true_track_angle',
        0x1000 => 'magnetic_heading',
    ],
    'auto_sync_frequency' => [
        'type' => 'enum',
        0 => 'never',
        1 => 'occasionally',
        2 => 'frequent',
        3 => 'once_a_day',
        4 => 'remote',
    ],
    'exd_layout' => [
        'type' => 'enum',
        0 => 'full_screen',
        1 => 'half_vertical',
        2 => 'half_horizontal',
        3 => 'half_vertical_right_split',
        4 => 'half_horizontal_bottom_split',
        5 => 'full_quarter_split',
        6 => 'half_vertical_left_split',
        7 => 'half_horizontal_top_split',
        8 => 'dynamic', // The EXD may display the configured concepts in any layout it sees fit.
    ],
    'exd_display_type' => [
        'type' => 'enum',
        0 => 'numerical',
        1 => 'simple',
        2 => 'graph',
        3 => 'bar',
        4 => 'circle_graph',
        5 => 'virtual_partner',
        6 => 'balance',
        7 => 'string_list',
        8 => 'string',
        9 => 'simple_dynamic_icon',
        10 => 'gauge',
    ],
    'exd_data_units' => [
        'type' => 'enum',
        0 => 'no_units',
        1 => 'laps',
        2 => 'miles_per_hour',
        3 => 'kilometers_per_hour',
        4 => 'feet_per_hour',
        5 => 'meters_per_hour',
        6 => 'degrees_celsius',
        7 => 'degrees_farenheit',
        8 => 'zone',
        9 => 'gear',
        10 => 'rpm',
        11 => 'bpm',
        12 => 'degrees',
        13 => 'millimeters',
        14 => 'meters',
        15 => 'kilometers',
        16 => 'feet',
        17 => 'yards',
        18 => 'kilofeet',
        19 => 'miles',
        20 => 'time',
        21 => 'enum_turn_type',
        22 => 'percent',
        23 => 'watts',
        24 => 'watts_per_kilogram',
        25 => 'enum_battery_status',
        26 => 'enum_bike_light_beam_angle_mode',
        27 => 'enum_bike_light_battery_status',
        28 => 'enum_bike_light_network_config_type',
        29 => 'lights',
        30 => 'seconds',
        31 => 'minutes',
        32 => 'hours',
        33 => 'calories',
        34 => 'kilojoules',
        35 => 'milliseconds',
        36 => 'second_per_mile',
        37 => 'second_per_kilometer',
        38 => 'centimeter',
        39 => 'enum_course_point',
        40 => 'bradians',
        41 => 'enum_sport',
        42 => 'inches_hg',
        43 => 'mm_hg',
        44 => 'mbars',
        45 => 'hecto_pascals',
        46 => 'feet_per_min',
        47 => 'meters_per_min',
        48 => 'meters_per_sec',
        49 => 'eight_cardinal',
    ],
    'exd_qualifiers' => [
        'type' => 'enum',
        0 => 'no_qualifier',
        1 => 'instantaneous',
        2 => 'average',
        3 => 'lap',
        4 => 'maximum',
        5 => 'maximum_average',
        6 => 'maximum_lap',
        7 => 'last_lap',
        8 => 'average_lap',
        9 => 'to_destination',
        10 => 'to_go',
        11 => 'to_next',
        12 => 'next_course_point',
        13 => 'total',
        14 => 'three_second_average',
        15 => 'ten_second_average',
        16 => 'thirty_second_average',
        17 => 'percent_maximum',
        18 => 'percent_maximum_average',
        19 => 'lap_percent_maximum',
        20 => 'elapsed',
        21 => 'sunrise',
        22 => 'sunset',
        23 => 'compared_to_virtual_partner',
        24 => 'maximum_24h',
        25 => 'minimum_24h',
        26 => 'minimum',
        27 => 'first',
        28 => 'second',
        29 => 'third',
        30 => 'shifter',
        31 => 'last_sport',
        32 => 'moving',
        33 => 'stopped',
        34 => 'estimated_total',
        242 => 'zone_9',
        243 => 'zone_8',
        244 => 'zone_7',
        245 => 'zone_6',
        246 => 'zone_5',
        247 => 'zone_4',
        248 => 'zone_3',
        249 => 'zone_2',
        250 => 'zone_1',
    ],
    'exd_descriptors' => [
        'type' => 'enum',
        0 => 'bike_light_battery_status',
        1 => 'beam_angle_status',
        2 => 'batery_level',
        3 => 'light_network_mode',
        4 => 'number_lights_connected',
        5 => 'cadence',
        6 => 'distance',
        7 => 'estimated_time_of_arrival',
        8 => 'heading',
        9 => 'time',
        10 => 'battery_level',
        11 => 'trainer_resistance',
        12 => 'trainer_target_power',
        13 => 'time_seated',
        14 => 'time_standing',
        15 => 'elevation',
        16 => 'grade',
        17 => 'ascent',
        18 => 'descent',
        19 => 'vertical_speed',
        20 => 'di2_battery_level',
        21 => 'front_gear',
        22 => 'rear_gear',
        23 => 'gear_ratio',
        24 => 'heart_rate',
        25 => 'heart_rate_zone',
        26 => 'time_in_heart_rate_zone',
        27 => 'heart_rate_reserve',
        28 => 'calories',
        29 => 'gps_accuracy',
        30 => 'gps_signal_strength',
        31 => 'temperature',
        32 => 'time_of_day',
        33 => 'balance',
        34 => 'pedal_smoothness',
        35 => 'power',
        36 => 'functional_threshold_power',
        37 => 'intensity_factor',
        38 => 'work',
        39 => 'power_ratio',
        40 => 'normalized_power',
        41 => 'training_stress_Score',
        42 => 'time_on_zone',
        43 => 'speed',
        44 => 'laps',
        45 => 'reps',
        46 => 'workout_step',
        47 => 'course_distance',
        48 => 'navigation_distance',
        49 => 'course_estimated_time_of_arrival',
        50 => 'navigation_estimated_time_of_arrival',
        51 => 'course_time',
        52 => 'navigation_time',
        53 => 'course_heading',
        54 => 'navigation_heading',
        55 => 'power_zone',
        56 => 'torque_effectiveness',
        57 => 'timer_time',
        58 => 'power_weight_ratio',
        59 => 'left_platform_center_offset',
        60 => 'right_platform_center_offset',
        61 => 'left_power_phase_start_angle',
        62 => 'right_power_phase_start_angle',
        63 => 'left_power_phase_finish_angle',
        64 => 'right_power_phase_finish_angle',
        65 => 'gears', // Combined gear information
        66 => 'pace',
        67 => 'training_effect',
        68 => 'vertical_oscillation',
        69 => 'vertical_ratio',
        70 => 'ground_contact_time',
        71 => 'left_ground_contact_time_balance',
        72 => 'right_ground_contact_time_balance',
        73 => 'stride_length',
        74 => 'running_cadence',
        75 => 'performance_condition',
        76 => 'course_type',
        77 => 'time_in_power_zone',
        78 => 'navigation_turn',
        79 => 'course_location',
        80 => 'navigation_location',
        81 => 'compass',
        82 => 'gear_combo',
        83 => 'muscle_oxygen',
        84 => 'icon',
        85 => 'compass_heading',
        86 => 'gps_heading',
        87 => 'gps_elevation',
        88 => 'anaerobic_training_effect',
        89 => 'course',
        90 => 'off_course',
        91 => 'glide_ratio',
        92 => 'vertical_distance',
        93 => 'vmg',
        94 => 'ambient_pressure',
        95 => 'pressure',
        96 => 'vam',
    ],
    'auto_activity_detect' => [
        'type' => 'uint32',
        0x00000000 => 'none',
        0x00000001 => 'running',
        0x00000002 => 'cycling',
        0x00000004 => 'swimming',
        0x00000008 => 'walking',
        0x00000020 => 'elliptical',
        0x00000400 => 'sedentary',
    ],
    'supported_exd_screen_layouts' => [
        'type' => 'uint32z',
        0x00000001 => 'full_screen',
        0x00000002 => 'half_vertical',
        0x00000004 => 'half_horizontal',
        0x00000008 => 'half_vertical_right_split',
        0x00000010 => 'half_horizontal_bottom_split',
        0x00000020 => 'full_quarter_split',
        0x00000040 => 'half_vertical_left_split',
        0x00000080 => 'half_horizontal_top_split',
    ],
    'fit_base_type' => [
        'type' => 'uint8',
        0 => 'enum',
        1 => 'sint8',
        2 => 'uint8',
        131 => 'sint16',
        132 => 'uint16',
        133 => 'sint32',
        134 => 'uint32',
        7 => 'string',
        136 => 'float32',
        137 => 'float64',
        10 => 'uint8z',
        139 => 'uint16z',
        140 => 'uint32z',
        13 => 'byte',
        142 => 'sint64',
        143 => 'uint64',
        144 => 'uint64z',
    ],
    'turn_type' => [
        'type' => 'enum',
        0 => 'arriving_idx',
        1 => 'arriving_left_idx',
        2 => 'arriving_right_idx',
        3 => 'arriving_via_idx',
        4 => 'arriving_via_left_idx',
        5 => 'arriving_via_right_idx',
        6 => 'bear_keep_left_idx',
        7 => 'bear_keep_right_idx',
        8 => 'continue_idx',
        9 => 'exit_left_idx',
        10 => 'exit_right_idx',
        11 => 'ferry_idx',
        12 => 'roundabout_45_idx',
        13 => 'roundabout_90_idx',
        14 => 'roundabout_135_idx',
        15 => 'roundabout_180_idx',
        16 => 'roundabout_225_idx',
        17 => 'roundabout_270_idx',
        18 => 'roundabout_315_idx',
        19 => 'roundabout_360_idx',
        20 => 'roundabout_neg_45_idx',
        21 => 'roundabout_neg_90_idx',
        22 => 'roundabout_neg_135_idx',
        23 => 'roundabout_neg_180_idx',
        24 => 'roundabout_neg_225_idx',
        25 => 'roundabout_neg_270_idx',
        26 => 'roundabout_neg_315_idx',
        27 => 'roundabout_neg_360_idx',
        28 => 'roundabout_generic_idx',
        29 => 'roundabout_neg_generic_idx',
        30 => 'sharp_turn_left_idx',
        31 => 'sharp_turn_right_idx',
        32 => 'turn_left_idx',
        33 => 'turn_right_idx',
        34 => 'uturn_left_idx',
        35 => 'uturn_right_idx',
        36 => 'icon_inv_idx',
        37 => 'icon_idx_cnt',
    ],
    'bike_light_beam_angle_mode' => [
        'type' => 'uint8',
        0 => 'manual',
        1 => 'auto',
    ],
    'fit_base_unit' => [
        'type' => 'uint16',
        0 => 'other',
        1 => 'kilogram',
        2 => 'pound',
    ],
    'set_type' => [
        'type' => 'uint8',
        0 => 'rest',
        1 => 'active',
    ],
    'exercise_category' => [
        'type' => 'uint16',
        0 => 'bench_press',
        1 => 'calf_raise',
        2 => 'cardio',
        3 => 'carry',
        4 => 'chop',
        5 => 'core',
        6 => 'crunch',
        7 => 'curl',
        8 => 'deadlift',
        9 => 'flye',
        10 => 'hip_raise',
        11 => 'hip_stability',
        12 => 'hip_swing',
        13 => 'hyperextension',
        14 => 'lateral_raise',
        15 => 'leg_curl',
        16 => 'leg_raise',
        17 => 'lunge',
        18 => 'olympic_lift',
        19 => 'plank',
        20 => 'plyo',
        21 => 'pull_up',
        22 => 'push_up',
        23 => 'row',
        24 => 'shoulder_press',
        25 => 'shoulder_stability',
        26 => 'shrug',
        27 => 'sit_up',
        28 => 'squat',
        29 => 'total_body',
        30 => 'triceps_extension',
        31 => 'warm_up',
        32 => 'run',
        65534 => 'unknown',
    ],
    'bench_press_exercise_name' => [
        'type' => 'uint16',
        0 => 'alternating_dumbbell_chest_press_on_swiss_ball',
        1 => 'barbell_bench_press',
        2 => 'barbell_board_bench_press',
        3 => 'barbell_floor_press',
        4 => 'close_grip_barbell_bench_press',
        5 => 'decline_dumbbell_bench_press',
        6 => 'dumbbell_bench_press',
        7 => 'dumbbell_floor_press',
        8 => 'incline_barbell_bench_press',
        9 => 'incline_dumbbell_bench_press',
        10 => 'incline_smith_machine_bench_press',
        11 => 'isometric_barbell_bench_press',
        12 => 'kettlebell_chest_press',
        13 => 'neutral_grip_dumbbell_bench_press',
        14 => 'neutral_grip_dumbbell_incline_bench_press',
        15 => 'one_arm_floor_press',
        16 => 'weighted_one_arm_floor_press',
        17 => 'partial_lockout',
        18 => 'reverse_grip_barbell_bench_press',
        19 => 'reverse_grip_incline_bench_press',
        20 => 'single_arm_cable_chest_press',
        21 => 'single_arm_dumbbell_bench_press',
        22 => 'smith_machine_bench_press',
        23 => 'swiss_ball_dumbbell_chest_press',
        24 => 'triple_stop_barbell_bench_press',
        25 => 'wide_grip_barbell_bench_press',
        26 => 'alternating_dumbbell_chest_press',
    ],
    'calf_raise_exercise_name' => [
        'type' => 'uint16',
        0 => '3_way_calf_raise',
        1 => '3_way_weighted_calf_raise',
        2 => '3_way_single_leg_calf_raise',
        3 => '3_way_weighted_single_leg_calf_raise',
        4 => 'donkey_calf_raise',
        5 => 'weighted_donkey_calf_raise',
        6 => 'seated_calf_raise',
        7 => 'weighted_seated_calf_raise',
        8 => 'seated_dumbbell_toe_raise',
        9 => 'single_leg_bent_knee_calf_raise',
        10 => 'weighted_single_leg_bent_knee_calf_raise',
        11 => 'single_leg_decline_push_up',
        12 => 'single_leg_donkey_calf_raise',
        13 => 'weighted_single_leg_donkey_calf_raise',
        14 => 'single_leg_hip_raise_with_knee_hold',
        15 => 'single_leg_standing_calf_raise',
        16 => 'single_leg_standing_dumbbell_calf_raise',
        17 => 'standing_barbell_calf_raise',
        18 => 'standing_calf_raise',
        19 => 'weighted_standing_calf_raise',
        20 => 'standing_dumbbell_calf_raise',
    ],
    'cardio_exercise_name' => [
        'type' => 'uint16',
        0 => 'bob_and_weave_circle',
        1 => 'weighted_bob_and_weave_circle',
        2 => 'cardio_core_crawl',
        3 => 'weighted_cardio_core_crawl',
        4 => 'double_under',
        5 => 'weighted_double_under',
        6 => 'jump_rope',
        7 => 'weighted_jump_rope',
        8 => 'jump_rope_crossover',
        9 => 'weighted_jump_rope_crossover',
        10 => 'jump_rope_jog',
        11 => 'weighted_jump_rope_jog',
        12 => 'jumping_jacks',
        13 => 'weighted_jumping_jacks',
        14 => 'ski_moguls',
        15 => 'weighted_ski_moguls',
        16 => 'split_jacks',
        17 => 'weighted_split_jacks',
        18 => 'squat_jacks',
        19 => 'weighted_squat_jacks',
        20 => 'triple_under',
        21 => 'weighted_triple_under',
    ],
    'carry_exercise_name' => [
        'type' => 'uint16',
        0 => 'bar_holds',
        1 => 'farmers_walk',
        2 => 'farmers_walk_on_toes',
        3 => 'hex_dumbbell_hold',
        4 => 'overhead_carry',
    ],
    'chop_exercise_name' => [
        'type' => 'uint16',
        0 => 'cable_pull_through',
        1 => 'cable_rotational_lift',
        2 => 'cable_woodchop',
        3 => 'cross_chop_to_knee',
        4 => 'weighted_cross_chop_to_knee',
        5 => 'dumbbell_chop',
        6 => 'half_kneeling_rotation',
        7 => 'weighted_half_kneeling_rotation',
        8 => 'half_kneeling_rotational_chop',
        9 => 'half_kneeling_rotational_reverse_chop',
        10 => 'half_kneeling_stability_chop',
        11 => 'half_kneeling_stability_reverse_chop',
        12 => 'kneeling_rotational_chop',
        13 => 'kneeling_rotational_reverse_chop',
        14 => 'kneeling_stability_chop',
        15 => 'kneeling_woodchopper',
        16 => 'medicine_ball_wood_chops',
        17 => 'power_squat_chops',
        18 => 'weighted_power_squat_chops',
        19 => 'standing_rotational_chop',
        20 => 'standing_split_rotational_chop',
        21 => 'standing_split_rotational_reverse_chop',
        22 => 'standing_stability_reverse_chop',
    ],
    'core_exercise_name' => [
        'type' => 'uint16',
        0 => 'abs_jabs',
        1 => 'weighted_abs_jabs',
        2 => 'alternating_plate_reach',
        3 => 'barbell_rollout',
        4 => 'weighted_barbell_rollout',
        5 => 'body_bar_oblique_twist',
        6 => 'cable_core_press',
        7 => 'cable_side_bend',
        8 => 'side_bend',
        9 => 'weighted_side_bend',
        10 => 'crescent_circle',
        11 => 'weighted_crescent_circle',
        12 => 'cycling_russian_twist',
        13 => 'weighted_cycling_russian_twist',
        14 => 'elevated_feet_russian_twist',
        15 => 'weighted_elevated_feet_russian_twist',
        16 => 'half_turkish_get_up',
        17 => 'kettlebell_windmill',
        18 => 'kneeling_ab_wheel',
        19 => 'weighted_kneeling_ab_wheel',
        20 => 'modified_front_lever',
        21 => 'open_knee_tucks',
        22 => 'weighted_open_knee_tucks',
        23 => 'side_abs_leg_lift',
        24 => 'weighted_side_abs_leg_lift',
        25 => 'swiss_ball_jackknife',
        26 => 'weighted_swiss_ball_jackknife',
        27 => 'swiss_ball_pike',
        28 => 'weighted_swiss_ball_pike',
        29 => 'swiss_ball_rollout',
        30 => 'weighted_swiss_ball_rollout',
        31 => 'triangle_hip_press',
        32 => 'weighted_triangle_hip_press',
        33 => 'trx_suspended_jackknife',
        34 => 'weighted_trx_suspended_jackknife',
        35 => 'u_boat',
        36 => 'weighted_u_boat',
        37 => 'windmill_switches',
        38 => 'weighted_windmill_switches',
        39 => 'alternating_slide_out',
        40 => 'weighted_alternating_slide_out',
        41 => 'ghd_back_extensions',
        42 => 'weighted_ghd_back_extensions',
        43 => 'overhead_walk',
        44 => 'inchworm',
        45 => 'weighted_modified_front_lever',
        46 => 'russian_twist',
        47 => 'abdominal_leg_rotations', // Deprecated do not use
        48 => 'arm_and_leg_extension_on_knees',
        49 => 'bicycle',
        50 => 'bicep_curl_with_leg_extension',
        51 => 'cat_cow',
        52 => 'corkscrew',
        53 => 'criss_cross',
        54 => 'criss_cross_with_ball', // Deprecated do not use
        55 => 'double_leg_stretch',
        56 => 'knee_folds',
        57 => 'lower_lift',
        58 => 'neck_pull',
        59 => 'pelvic_clocks',
        60 => 'roll_over',
        61 => 'roll_up',
        62 => 'rolling',
        63 => 'rowing_1',
        64 => 'rowing_2',
        65 => 'scissors',
        66 => 'single_leg_circles',
        67 => 'single_leg_stretch',
        68 => 'snake_twist_1_and_2', // Deprecated do not use
        69 => 'swan',
        70 => 'swimming',
        71 => 'teaser',
        72 => 'the_hundred',
    ],
    'crunch_exercise_name' => [
        'type' => 'uint16',
        0 => 'bicycle_crunch',
        1 => 'cable_crunch',
        2 => 'circular_arm_crunch',
        3 => 'crossed_arms_crunch',
        4 => 'weighted_crossed_arms_crunch',
        5 => 'cross_leg_reverse_crunch',
        6 => 'weighted_cross_leg_reverse_crunch',
        7 => 'crunch_chop',
        8 => 'weighted_crunch_chop',
        9 => 'double_crunch',
        10 => 'weighted_double_crunch',
        11 => 'elbow_to_knee_crunch',
        12 => 'weighted_elbow_to_knee_crunch',
        13 => 'flutter_kicks',
        14 => 'weighted_flutter_kicks',
        15 => 'foam_roller_reverse_crunch_on_bench',
        16 => 'weighted_foam_roller_reverse_crunch_on_bench',
        17 => 'foam_roller_reverse_crunch_with_dumbbell',
        18 => 'foam_roller_reverse_crunch_with_medicine_ball',
        19 => 'frog_press',
        20 => 'hanging_knee_raise_oblique_crunch',
        21 => 'weighted_hanging_knee_raise_oblique_crunch',
        22 => 'hip_crossover',
        23 => 'weighted_hip_crossover',
        24 => 'hollow_rock',
        25 => 'weighted_hollow_rock',
        26 => 'incline_reverse_crunch',
        27 => 'weighted_incline_reverse_crunch',
        28 => 'kneeling_cable_crunch',
        29 => 'kneeling_cross_crunch',
        30 => 'weighted_kneeling_cross_crunch',
        31 => 'kneeling_oblique_cable_crunch',
        32 => 'knees_to_elbow',
        33 => 'leg_extensions',
        34 => 'weighted_leg_extensions',
        35 => 'leg_levers',
        36 => 'mcgill_curl_up',
        37 => 'weighted_mcgill_curl_up',
        38 => 'modified_pilates_roll_up_with_ball',
        39 => 'weighted_modified_pilates_roll_up_with_ball',
        40 => 'pilates_crunch',
        41 => 'weighted_pilates_crunch',
        42 => 'pilates_roll_up_with_ball',
        43 => 'weighted_pilates_roll_up_with_ball',
        44 => 'raised_legs_crunch',
        45 => 'weighted_raised_legs_crunch',
        46 => 'reverse_crunch',
        47 => 'weighted_reverse_crunch',
        48 => 'reverse_crunch_on_a_bench',
        49 => 'weighted_reverse_crunch_on_a_bench',
        50 => 'reverse_curl_and_lift',
        51 => 'weighted_reverse_curl_and_lift',
        52 => 'rotational_lift',
        53 => 'weighted_rotational_lift',
        54 => 'seated_alternating_reverse_crunch',
        55 => 'weighted_seated_alternating_reverse_crunch',
        56 => 'seated_leg_u',
        57 => 'weighted_seated_leg_u',
        58 => 'side_to_side_crunch_and_weave',
        59 => 'weighted_side_to_side_crunch_and_weave',
        60 => 'single_leg_reverse_crunch',
        61 => 'weighted_single_leg_reverse_crunch',
        62 => 'skater_crunch_cross',
        63 => 'weighted_skater_crunch_cross',
        64 => 'standing_cable_crunch',
        65 => 'standing_side_crunch',
        66 => 'step_climb',
        67 => 'weighted_step_climb',
        68 => 'swiss_ball_crunch',
        69 => 'swiss_ball_reverse_crunch',
        70 => 'weighted_swiss_ball_reverse_crunch',
        71 => 'swiss_ball_russian_twist',
        72 => 'weighted_swiss_ball_russian_twist',
        73 => 'swiss_ball_side_crunch',
        74 => 'weighted_swiss_ball_side_crunch',
        75 => 'thoracic_crunches_on_foam_roller',
        76 => 'weighted_thoracic_crunches_on_foam_roller',
        77 => 'triceps_crunch',
        78 => 'weighted_bicycle_crunch',
        79 => 'weighted_crunch',
        80 => 'weighted_swiss_ball_crunch',
        81 => 'toes_to_bar',
        82 => 'weighted_toes_to_bar',
        83 => 'crunch',
        84 => 'straight_leg_crunch_with_ball',
    ],
    'curl_exercise_name' => [
        'type' => 'uint16',
        0 => 'alternating_dumbbell_biceps_curl',
        1 => 'alternating_dumbbell_biceps_curl_on_swiss_ball',
        2 => 'alternating_incline_dumbbell_biceps_curl',
        3 => 'barbell_biceps_curl',
        4 => 'barbell_reverse_wrist_curl',
        5 => 'barbell_wrist_curl',
        6 => 'behind_the_back_barbell_reverse_wrist_curl',
        7 => 'behind_the_back_one_arm_cable_curl',
        8 => 'cable_biceps_curl',
        9 => 'cable_hammer_curl',
        10 => 'cheating_barbell_biceps_curl',
        11 => 'close_grip_ez_bar_biceps_curl',
        12 => 'cross_body_dumbbell_hammer_curl',
        13 => 'dead_hang_biceps_curl',
        14 => 'decline_hammer_curl',
        15 => 'dumbbell_biceps_curl_with_static_hold',
        16 => 'dumbbell_hammer_curl',
        17 => 'dumbbell_reverse_wrist_curl',
        18 => 'dumbbell_wrist_curl',
        19 => 'ez_bar_preacher_curl',
        20 => 'forward_bend_biceps_curl',
        21 => 'hammer_curl_to_press',
        22 => 'incline_dumbbell_biceps_curl',
        23 => 'incline_offset_thumb_dumbbell_curl',
        24 => 'kettlebell_biceps_curl',
        25 => 'lying_concentration_cable_curl',
        26 => 'one_arm_preacher_curl',
        27 => 'plate_pinch_curl',
        28 => 'preacher_curl_with_cable',
        29 => 'reverse_ez_bar_curl',
        30 => 'reverse_grip_wrist_curl',
        31 => 'reverse_grip_barbell_biceps_curl',
        32 => 'seated_alternating_dumbbell_biceps_curl',
        33 => 'seated_dumbbell_biceps_curl',
        34 => 'seated_reverse_dumbbell_curl',
        35 => 'split_stance_offset_pinky_dumbbell_curl',
        36 => 'standing_alternating_dumbbell_curls',
        37 => 'standing_dumbbell_biceps_curl',
        38 => 'standing_ez_bar_biceps_curl',
        39 => 'static_curl',
        40 => 'swiss_ball_dumbbell_overhead_triceps_extension',
        41 => 'swiss_ball_ez_bar_preacher_curl',
        42 => 'twisting_standing_dumbbell_biceps_curl',
        43 => 'wide_grip_ez_bar_biceps_curl',
    ],
    'deadlift_exercise_name' => [
        'type' => 'uint16',
        0 => 'barbell_deadlift',
        1 => 'barbell_straight_leg_deadlift',
        2 => 'dumbbell_deadlift',
        3 => 'dumbbell_single_leg_deadlift_to_row',
        4 => 'dumbbell_straight_leg_deadlift',
        5 => 'kettlebell_floor_to_shelf',
        6 => 'one_arm_one_leg_deadlift',
        7 => 'rack_pull',
        8 => 'rotational_dumbbell_straight_leg_deadlift',
        9 => 'single_arm_deadlift',
        10 => 'single_leg_barbell_deadlift',
        11 => 'single_leg_barbell_straight_leg_deadlift',
        12 => 'single_leg_deadlift_with_barbell',
        13 => 'single_leg_rdl_circuit',
        14 => 'single_leg_romanian_deadlift_with_dumbbell',
        15 => 'sumo_deadlift',
        16 => 'sumo_deadlift_high_pull',
        17 => 'trap_bar_deadlift',
        18 => 'wide_grip_barbell_deadlift',
    ],
    'flye_exercise_name' => [
        'type' => 'uint16',
        0 => 'cable_crossover',
        1 => 'decline_dumbbell_flye',
        2 => 'dumbbell_flye',
        3 => 'incline_dumbbell_flye',
        4 => 'kettlebell_flye',
        5 => 'kneeling_rear_flye',
        6 => 'single_arm_standing_cable_reverse_flye',
        7 => 'swiss_ball_dumbbell_flye',
        8 => 'arm_rotations',
        9 => 'hug_a_tree',
    ],
    'hip_raise_exercise_name' => [
        'type' => 'uint16',
        0 => 'barbell_hip_thrust_on_floor',
        1 => 'barbell_hip_thrust_with_bench',
        2 => 'bent_knee_swiss_ball_reverse_hip_raise',
        3 => 'weighted_bent_knee_swiss_ball_reverse_hip_raise',
        4 => 'bridge_with_leg_extension',
        5 => 'weighted_bridge_with_leg_extension',
        6 => 'clam_bridge',
        7 => 'front_kick_tabletop',
        8 => 'weighted_front_kick_tabletop',
        9 => 'hip_extension_and_cross',
        10 => 'weighted_hip_extension_and_cross',
        11 => 'hip_raise',
        12 => 'weighted_hip_raise',
        13 => 'hip_raise_with_feet_on_swiss_ball',
        14 => 'weighted_hip_raise_with_feet_on_swiss_ball',
        15 => 'hip_raise_with_head_on_bosu_ball',
        16 => 'weighted_hip_raise_with_head_on_bosu_ball',
        17 => 'hip_raise_with_head_on_swiss_ball',
        18 => 'weighted_hip_raise_with_head_on_swiss_ball',
        19 => 'hip_raise_with_knee_squeeze',
        20 => 'weighted_hip_raise_with_knee_squeeze',
        21 => 'incline_rear_leg_extension',
        22 => 'weighted_incline_rear_leg_extension',
        23 => 'kettlebell_swing',
        24 => 'marching_hip_raise',
        25 => 'weighted_marching_hip_raise',
        26 => 'marching_hip_raise_with_feet_on_a_swiss_ball',
        27 => 'weighted_marching_hip_raise_with_feet_on_a_swiss_ball',
        28 => 'reverse_hip_raise',
        29 => 'weighted_reverse_hip_raise',
        30 => 'single_leg_hip_raise',
        31 => 'weighted_single_leg_hip_raise',
        32 => 'single_leg_hip_raise_with_foot_on_bench',
        33 => 'weighted_single_leg_hip_raise_with_foot_on_bench',
        34 => 'single_leg_hip_raise_with_foot_on_bosu_ball',
        35 => 'weighted_single_leg_hip_raise_with_foot_on_bosu_ball',
        36 => 'single_leg_hip_raise_with_foot_on_foam_roller',
        37 => 'weighted_single_leg_hip_raise_with_foot_on_foam_roller',
        38 => 'single_leg_hip_raise_with_foot_on_medicine_ball',
        39 => 'weighted_single_leg_hip_raise_with_foot_on_medicine_ball',
        40 => 'single_leg_hip_raise_with_head_on_bosu_ball',
        41 => 'weighted_single_leg_hip_raise_with_head_on_bosu_ball',
        42 => 'weighted_clam_bridge',
        43 => 'single_leg_swiss_ball_hip_raise_and_leg_curl',
        44 => 'clams',
        45 => 'inner_thigh_circles', // Deprecated do not use
        46 => 'inner_thigh_side_lift', // Deprecated do not use
        47 => 'leg_circles',
        48 => 'leg_lift',
        49 => 'leg_lift_in_external_rotation',
    ],
    'hip_stability_exercise_name' => [
        'type' => 'uint16',
        0 => 'band_side_lying_leg_raise',
        1 => 'dead_bug',
        2 => 'weighted_dead_bug',
        3 => 'external_hip_raise',
        4 => 'weighted_external_hip_raise',
        5 => 'fire_hydrant_kicks',
        6 => 'weighted_fire_hydrant_kicks',
        7 => 'hip_circles',
        8 => 'weighted_hip_circles',
        9 => 'inner_thigh_lift',
        10 => 'weighted_inner_thigh_lift',
        11 => 'lateral_walks_with_band_at_ankles',
        12 => 'pretzel_side_kick',
        13 => 'weighted_pretzel_side_kick',
        14 => 'prone_hip_internal_rotation',
        15 => 'weighted_prone_hip_internal_rotation',
        16 => 'quadruped',
        17 => 'quadruped_hip_extension',
        18 => 'weighted_quadruped_hip_extension',
        19 => 'quadruped_with_leg_lift',
        20 => 'weighted_quadruped_with_leg_lift',
        21 => 'side_lying_leg_raise',
        22 => 'weighted_side_lying_leg_raise',
        23 => 'sliding_hip_adduction',
        24 => 'weighted_sliding_hip_adduction',
        25 => 'standing_adduction',
        26 => 'weighted_standing_adduction',
        27 => 'standing_cable_hip_abduction',
        28 => 'standing_hip_abduction',
        29 => 'weighted_standing_hip_abduction',
        30 => 'standing_rear_leg_raise',
        31 => 'weighted_standing_rear_leg_raise',
        32 => 'supine_hip_internal_rotation',
        33 => 'weighted_supine_hip_internal_rotation',
    ],
    'hip_swing_exercise_name' => [
        'type' => 'uint16',
        0 => 'single_arm_kettlebell_swing',
        1 => 'single_arm_dumbbell_swing',
        2 => 'step_out_swing',
    ],
    'hyperextension_exercise_name' => [
        'type' => 'uint16',
        0 => 'back_extension_with_opposite_arm_and_leg_reach',
        1 => 'weighted_back_extension_with_opposite_arm_and_leg_reach',
        2 => 'base_rotations',
        3 => 'weighted_base_rotations',
        4 => 'bent_knee_reverse_hyperextension',
        5 => 'weighted_bent_knee_reverse_hyperextension',
        6 => 'hollow_hold_and_roll',
        7 => 'weighted_hollow_hold_and_roll',
        8 => 'kicks',
        9 => 'weighted_kicks',
        10 => 'knee_raises',
        11 => 'weighted_knee_raises',
        12 => 'kneeling_superman',
        13 => 'weighted_kneeling_superman',
        14 => 'lat_pull_down_with_row',
        15 => 'medicine_ball_deadlift_to_reach',
        16 => 'one_arm_one_leg_row',
        17 => 'one_arm_row_with_band',
        18 => 'overhead_lunge_with_medicine_ball',
        19 => 'plank_knee_tucks',
        20 => 'weighted_plank_knee_tucks',
        21 => 'side_step',
        22 => 'weighted_side_step',
        23 => 'single_leg_back_extension',
        24 => 'weighted_single_leg_back_extension',
        25 => 'spine_extension',
        26 => 'weighted_spine_extension',
        27 => 'static_back_extension',
        28 => 'weighted_static_back_extension',
        29 => 'superman_from_floor',
        30 => 'weighted_superman_from_floor',
        31 => 'swiss_ball_back_extension',
        32 => 'weighted_swiss_ball_back_extension',
        33 => 'swiss_ball_hyperextension',
        34 => 'weighted_swiss_ball_hyperextension',
        35 => 'swiss_ball_opposite_arm_and_leg_lift',
        36 => 'weighted_swiss_ball_opposite_arm_and_leg_lift',
        37 => 'superman_on_swiss_ball',
        38 => 'cobra',
        39 => 'supine_floor_barre', // Deprecated do not use
    ],
    'lateral_raise_exercise_name' => [
        'type' => 'uint16',
        0 => '45_degree_cable_external_rotation',
        1 => 'alternating_lateral_raise_with_static_hold',
        2 => 'bar_muscle_up',
        3 => 'bent_over_lateral_raise',
        4 => 'cable_diagonal_raise',
        5 => 'cable_front_raise',
        6 => 'calorie_row',
        7 => 'combo_shoulder_raise',
        8 => 'dumbbell_diagonal_raise',
        9 => 'dumbbell_v_raise',
        10 => 'front_raise',
        11 => 'leaning_dumbbell_lateral_raise',
        12 => 'lying_dumbbell_raise',
        13 => 'muscle_up',
        14 => 'one_arm_cable_lateral_raise',
        15 => 'overhand_grip_rear_lateral_raise',
        16 => 'plate_raises',
        17 => 'ring_dip',
        18 => 'weighted_ring_dip',
        19 => 'ring_muscle_up',
        20 => 'weighted_ring_muscle_up',
        21 => 'rope_climb',
        22 => 'weighted_rope_climb',
        23 => 'scaption',
        24 => 'seated_lateral_raise',
        25 => 'seated_rear_lateral_raise',
        26 => 'side_lying_lateral_raise',
        27 => 'standing_lift',
        28 => 'suspended_row',
        29 => 'underhand_grip_rear_lateral_raise',
        30 => 'wall_slide',
        31 => 'weighted_wall_slide',
        32 => 'arm_circles',
        33 => 'shaving_the_head',
    ],
    'leg_curl_exercise_name' => [
        'type' => 'uint16',
        0 => 'leg_curl',
        1 => 'weighted_leg_curl',
        2 => 'good_morning',
        3 => 'seated_barbell_good_morning',
        4 => 'single_leg_barbell_good_morning',
        5 => 'single_leg_sliding_leg_curl',
        6 => 'sliding_leg_curl',
        7 => 'split_barbell_good_morning',
        8 => 'split_stance_extension',
        9 => 'staggered_stance_good_morning',
        10 => 'swiss_ball_hip_raise_and_leg_curl',
        11 => 'zercher_good_morning',
    ],
    'leg_raise_exercise_name' => [
        'type' => 'uint16',
        0 => 'hanging_knee_raise',
        1 => 'hanging_leg_raise',
        2 => 'weighted_hanging_leg_raise',
        3 => 'hanging_single_leg_raise',
        4 => 'weighted_hanging_single_leg_raise',
        5 => 'kettlebell_leg_raises',
        6 => 'leg_lowering_drill',
        7 => 'weighted_leg_lowering_drill',
        8 => 'lying_straight_leg_raise',
        9 => 'weighted_lying_straight_leg_raise',
        10 => 'medicine_ball_leg_drops',
        11 => 'quadruped_leg_raise',
        12 => 'weighted_quadruped_leg_raise',
        13 => 'reverse_leg_raise',
        14 => 'weighted_reverse_leg_raise',
        15 => 'reverse_leg_raise_on_swiss_ball',
        16 => 'weighted_reverse_leg_raise_on_swiss_ball',
        17 => 'single_leg_lowering_drill',
        18 => 'weighted_single_leg_lowering_drill',
        19 => 'weighted_hanging_knee_raise',
        20 => 'lateral_stepover',
        21 => 'weighted_lateral_stepover',
    ],
    'lunge_exercise_name' => [
        'type' => 'uint16',
        0 => 'overhead_lunge',
        1 => 'lunge_matrix',
        2 => 'weighted_lunge_matrix',
        3 => 'alternating_barbell_forward_lunge',
        4 => 'alternating_dumbbell_lunge_with_reach',
        5 => 'back_foot_elevated_dumbbell_split_squat',
        6 => 'barbell_box_lunge',
        7 => 'barbell_bulgarian_split_squat',
        8 => 'barbell_crossover_lunge',
        9 => 'barbell_front_split_squat',
        10 => 'barbell_lunge',
        11 => 'barbell_reverse_lunge',
        12 => 'barbell_side_lunge',
        13 => 'barbell_split_squat',
        14 => 'core_control_rear_lunge',
        15 => 'diagonal_lunge',
        16 => 'drop_lunge',
        17 => 'dumbbell_box_lunge',
        18 => 'dumbbell_bulgarian_split_squat',
        19 => 'dumbbell_crossover_lunge',
        20 => 'dumbbell_diagonal_lunge',
        21 => 'dumbbell_lunge',
        22 => 'dumbbell_lunge_and_rotation',
        23 => 'dumbbell_overhead_bulgarian_split_squat',
        24 => 'dumbbell_reverse_lunge_to_high_knee_and_press',
        25 => 'dumbbell_side_lunge',
        26 => 'elevated_front_foot_barbell_split_squat',
        27 => 'front_foot_elevated_dumbbell_split_squat',
        28 => 'gunslinger_lunge',
        29 => 'lawnmower_lunge',
        30 => 'low_lunge_with_isometric_adduction',
        31 => 'low_side_to_side_lunge',
        32 => 'lunge',
        33 => 'weighted_lunge',
        34 => 'lunge_with_arm_reach',
        35 => 'lunge_with_diagonal_reach',
        36 => 'lunge_with_side_bend',
        37 => 'offset_dumbbell_lunge',
        38 => 'offset_dumbbell_reverse_lunge',
        39 => 'overhead_bulgarian_split_squat',
        40 => 'overhead_dumbbell_reverse_lunge',
        41 => 'overhead_dumbbell_split_squat',
        42 => 'overhead_lunge_with_rotation',
        43 => 'reverse_barbell_box_lunge',
        44 => 'reverse_box_lunge',
        45 => 'reverse_dumbbell_box_lunge',
        46 => 'reverse_dumbbell_crossover_lunge',
        47 => 'reverse_dumbbell_diagonal_lunge',
        48 => 'reverse_lunge_with_reach_back',
        49 => 'weighted_reverse_lunge_with_reach_back',
        50 => 'reverse_lunge_with_twist_and_overhead_reach',
        51 => 'weighted_reverse_lunge_with_twist_and_overhead_reach',
        52 => 'reverse_sliding_box_lunge',
        53 => 'weighted_reverse_sliding_box_lunge',
        54 => 'reverse_sliding_lunge',
        55 => 'weighted_reverse_sliding_lunge',
        56 => 'runners_lunge_to_balance',
        57 => 'weighted_runners_lunge_to_balance',
        58 => 'shifting_side_lunge',
        59 => 'side_and_crossover_lunge',
        60 => 'weighted_side_and_crossover_lunge',
        61 => 'side_lunge',
        62 => 'weighted_side_lunge',
        63 => 'side_lunge_and_press',
        64 => 'side_lunge_jump_off',
        65 => 'side_lunge_sweep',
        66 => 'weighted_side_lunge_sweep',
        67 => 'side_lunge_to_crossover_tap',
        68 => 'weighted_side_lunge_to_crossover_tap',
        69 => 'side_to_side_lunge_chops',
        70 => 'weighted_side_to_side_lunge_chops',
        71 => 'siff_jump_lunge',
        72 => 'weighted_siff_jump_lunge',
        73 => 'single_arm_reverse_lunge_and_press',
        74 => 'sliding_lateral_lunge',
        75 => 'weighted_sliding_lateral_lunge',
        76 => 'walking_barbell_lunge',
        77 => 'walking_dumbbell_lunge',
        78 => 'walking_lunge',
        79 => 'weighted_walking_lunge',
        80 => 'wide_grip_overhead_barbell_split_squat',
    ],
    'olympic_lift_exercise_name' => [
        'type' => 'uint16',
        0 => 'barbell_hang_power_clean',
        1 => 'barbell_hang_squat_clean',
        2 => 'barbell_power_clean',
        3 => 'barbell_power_snatch',
        4 => 'barbell_squat_clean',
        5 => 'clean_and_jerk',
        6 => 'barbell_hang_power_snatch',
        7 => 'barbell_hang_pull',
        8 => 'barbell_high_pull',
        9 => 'barbell_snatch',
        10 => 'barbell_split_jerk',
        11 => 'clean',
        12 => 'dumbbell_clean',
        13 => 'dumbbell_hang_pull',
        14 => 'one_hand_dumbbell_split_snatch',
        15 => 'push_jerk',
        16 => 'single_arm_dumbbell_snatch',
        17 => 'single_arm_hang_snatch',
        18 => 'single_arm_kettlebell_snatch',
        19 => 'split_jerk',
        20 => 'squat_clean_and_jerk',
    ],
    'plank_exercise_name' => [
        'type' => 'uint16',
        0 => '45_degree_plank',
        1 => 'weighted_45_degree_plank',
        2 => '90_degree_static_hold',
        3 => 'weighted_90_degree_static_hold',
        4 => 'bear_crawl',
        5 => 'weighted_bear_crawl',
        6 => 'cross_body_mountain_climber',
        7 => 'weighted_cross_body_mountain_climber',
        8 => 'elbow_plank_pike_jacks',
        9 => 'weighted_elbow_plank_pike_jacks',
        10 => 'elevated_feet_plank',
        11 => 'weighted_elevated_feet_plank',
        12 => 'elevator_abs',
        13 => 'weighted_elevator_abs',
        14 => 'extended_plank',
        15 => 'weighted_extended_plank',
        16 => 'full_plank_passe_twist',
        17 => 'weighted_full_plank_passe_twist',
        18 => 'inching_elbow_plank',
        19 => 'weighted_inching_elbow_plank',
        20 => 'inchworm_to_side_plank',
        21 => 'weighted_inchworm_to_side_plank',
        22 => 'kneeling_plank',
        23 => 'weighted_kneeling_plank',
        24 => 'kneeling_side_plank_with_leg_lift',
        25 => 'weighted_kneeling_side_plank_with_leg_lift',
        26 => 'lateral_roll',
        27 => 'weighted_lateral_roll',
        28 => 'lying_reverse_plank',
        29 => 'weighted_lying_reverse_plank',
        30 => 'medicine_ball_mountain_climber',
        31 => 'weighted_medicine_ball_mountain_climber',
        32 => 'modified_mountain_climber_and_extension',
        33 => 'weighted_modified_mountain_climber_and_extension',
        34 => 'mountain_climber',
        35 => 'weighted_mountain_climber',
        36 => 'mountain_climber_on_sliding_discs',
        37 => 'weighted_mountain_climber_on_sliding_discs',
        38 => 'mountain_climber_with_feet_on_bosu_ball',
        39 => 'weighted_mountain_climber_with_feet_on_bosu_ball',
        40 => 'mountain_climber_with_hands_on_bench',
        41 => 'mountain_climber_with_hands_on_swiss_ball',
        42 => 'weighted_mountain_climber_with_hands_on_swiss_ball',
        43 => 'plank',
        44 => 'plank_jacks_with_feet_on_sliding_discs',
        45 => 'weighted_plank_jacks_with_feet_on_sliding_discs',
        46 => 'plank_knee_twist',
        47 => 'weighted_plank_knee_twist',
        48 => 'plank_pike_jumps',
        49 => 'weighted_plank_pike_jumps',
        50 => 'plank_pikes',
        51 => 'weighted_plank_pikes',
        52 => 'plank_to_stand_up',
        53 => 'weighted_plank_to_stand_up',
        54 => 'plank_with_arm_raise',
        55 => 'weighted_plank_with_arm_raise',
        56 => 'plank_with_knee_to_elbow',
        57 => 'weighted_plank_with_knee_to_elbow',
        58 => 'plank_with_oblique_crunch',
        59 => 'weighted_plank_with_oblique_crunch',
        60 => 'plyometric_side_plank',
        61 => 'weighted_plyometric_side_plank',
        62 => 'rolling_side_plank',
        63 => 'weighted_rolling_side_plank',
        64 => 'side_kick_plank',
        65 => 'weighted_side_kick_plank',
        66 => 'side_plank',
        67 => 'weighted_side_plank',
        68 => 'side_plank_and_row',
        69 => 'weighted_side_plank_and_row',
        70 => 'side_plank_lift',
        71 => 'weighted_side_plank_lift',
        72 => 'side_plank_with_elbow_on_bosu_ball',
        73 => 'weighted_side_plank_with_elbow_on_bosu_ball',
        74 => 'side_plank_with_feet_on_bench',
        75 => 'weighted_side_plank_with_feet_on_bench',
        76 => 'side_plank_with_knee_circle',
        77 => 'weighted_side_plank_with_knee_circle',
        78 => 'side_plank_with_knee_tuck',
        79 => 'weighted_side_plank_with_knee_tuck',
        80 => 'side_plank_with_leg_lift',
        81 => 'weighted_side_plank_with_leg_lift',
        82 => 'side_plank_with_reach_under',
        83 => 'weighted_side_plank_with_reach_under',
        84 => 'single_leg_elevated_feet_plank',
        85 => 'weighted_single_leg_elevated_feet_plank',
        86 => 'single_leg_flex_and_extend',
        87 => 'weighted_single_leg_flex_and_extend',
        88 => 'single_leg_side_plank',
        89 => 'weighted_single_leg_side_plank',
        90 => 'spiderman_plank',
        91 => 'weighted_spiderman_plank',
        92 => 'straight_arm_plank',
        93 => 'weighted_straight_arm_plank',
        94 => 'straight_arm_plank_with_shoulder_touch',
        95 => 'weighted_straight_arm_plank_with_shoulder_touch',
        96 => 'swiss_ball_plank',
        97 => 'weighted_swiss_ball_plank',
        98 => 'swiss_ball_plank_leg_lift',
        99 => 'weighted_swiss_ball_plank_leg_lift',
        100 => 'swiss_ball_plank_leg_lift_and_hold',
        101 => 'swiss_ball_plank_with_feet_on_bench',
        102 => 'weighted_swiss_ball_plank_with_feet_on_bench',
        103 => 'swiss_ball_prone_jackknife',
        104 => 'weighted_swiss_ball_prone_jackknife',
        105 => 'swiss_ball_side_plank',
        106 => 'weighted_swiss_ball_side_plank',
        107 => 'three_way_plank',
        108 => 'weighted_three_way_plank',
        109 => 'towel_plank_and_knee_in',
        110 => 'weighted_towel_plank_and_knee_in',
        111 => 't_stabilization',
        112 => 'weighted_t_stabilization',
        113 => 'turkish_get_up_to_side_plank',
        114 => 'weighted_turkish_get_up_to_side_plank',
        115 => 'two_point_plank',
        116 => 'weighted_two_point_plank',
        117 => 'weighted_plank',
        118 => 'wide_stance_plank_with_diagonal_arm_lift',
        119 => 'weighted_wide_stance_plank_with_diagonal_arm_lift',
        120 => 'wide_stance_plank_with_diagonal_leg_lift',
        121 => 'weighted_wide_stance_plank_with_diagonal_leg_lift',
        122 => 'wide_stance_plank_with_leg_lift',
        123 => 'weighted_wide_stance_plank_with_leg_lift',
        124 => 'wide_stance_plank_with_opposite_arm_and_leg_lift',
        125 => 'weighted_mountain_climber_with_hands_on_bench',
        126 => 'weighted_swiss_ball_plank_leg_lift_and_hold',
        127 => 'weighted_wide_stance_plank_with_opposite_arm_and_leg_lift',
        128 => 'plank_with_feet_on_swiss_ball',
        129 => 'side_plank_to_plank_with_reach_under',
        130 => 'bridge_with_glute_lower_lift',
        131 => 'bridge_one_leg_bridge',
        132 => 'plank_with_arm_variations',
        133 => 'plank_with_leg_lift',
        134 => 'reverse_plank_with_leg_pull',
    ],
    'plyo_exercise_name' => [
        'type' => 'uint16',
        0 => 'alternating_jump_lunge',
        1 => 'weighted_alternating_jump_lunge',
        2 => 'barbell_jump_squat',
        3 => 'body_weight_jump_squat',
        4 => 'weighted_jump_squat',
        5 => 'cross_knee_strike',
        6 => 'weighted_cross_knee_strike',
        7 => 'depth_jump',
        8 => 'weighted_depth_jump',
        9 => 'dumbbell_jump_squat',
        10 => 'dumbbell_split_jump',
        11 => 'front_knee_strike',
        12 => 'weighted_front_knee_strike',
        13 => 'high_box_jump',
        14 => 'weighted_high_box_jump',
        15 => 'isometric_explosive_body_weight_jump_squat',
        16 => 'weighted_isometric_explosive_jump_squat',
        17 => 'lateral_leap_and_hop',
        18 => 'weighted_lateral_leap_and_hop',
        19 => 'lateral_plyo_squats',
        20 => 'weighted_lateral_plyo_squats',
        21 => 'lateral_slide',
        22 => 'weighted_lateral_slide',
        23 => 'medicine_ball_overhead_throws',
        24 => 'medicine_ball_side_throw',
        25 => 'medicine_ball_slam',
        26 => 'side_to_side_medicine_ball_throws',
        27 => 'side_to_side_shuffle_jump',
        28 => 'weighted_side_to_side_shuffle_jump',
        29 => 'squat_jump_onto_box',
        30 => 'weighted_squat_jump_onto_box',
        31 => 'squat_jumps_in_and_out',
        32 => 'weighted_squat_jumps_in_and_out',
    ],
    'pull_up_exercise_name' => [
        'type' => 'uint16',
        0 => 'banded_pull_ups',
        1 => '30_degree_lat_pulldown',
        2 => 'band_assisted_chin_up',
        3 => 'close_grip_chin_up',
        4 => 'weighted_close_grip_chin_up',
        5 => 'close_grip_lat_pulldown',
        6 => 'crossover_chin_up',
        7 => 'weighted_crossover_chin_up',
        8 => 'ez_bar_pullover',
        9 => 'hanging_hurdle',
        10 => 'weighted_hanging_hurdle',
        11 => 'kneeling_lat_pulldown',
        12 => 'kneeling_underhand_grip_lat_pulldown',
        13 => 'lat_pulldown',
        14 => 'mixed_grip_chin_up',
        15 => 'weighted_mixed_grip_chin_up',
        16 => 'mixed_grip_pull_up',
        17 => 'weighted_mixed_grip_pull_up',
        18 => 'reverse_grip_pulldown',
        19 => 'standing_cable_pullover',
        20 => 'straight_arm_pulldown',
        21 => 'swiss_ball_ez_bar_pullover',
        22 => 'towel_pull_up',
        23 => 'weighted_towel_pull_up',
        24 => 'weighted_pull_up',
        25 => 'wide_grip_lat_pulldown',
        26 => 'wide_grip_pull_up',
        27 => 'weighted_wide_grip_pull_up',
        28 => 'burpee_pull_up',
        29 => 'weighted_burpee_pull_up',
        30 => 'jumping_pull_ups',
        31 => 'weighted_jumping_pull_ups',
        32 => 'kipping_pull_up',
        33 => 'weighted_kipping_pull_up',
        34 => 'l_pull_up',
        35 => 'weighted_l_pull_up',
        36 => 'suspended_chin_up',
        37 => 'weighted_suspended_chin_up',
        38 => 'pull_up',
    ],
    'push_up_exercise_name' => [
        'type' => 'uint16',
        0 => 'chest_press_with_band',
        1 => 'alternating_staggered_push_up',
        2 => 'weighted_alternating_staggered_push_up',
        3 => 'alternating_hands_medicine_ball_push_up',
        4 => 'weighted_alternating_hands_medicine_ball_push_up',
        5 => 'bosu_ball_push_up',
        6 => 'weighted_bosu_ball_push_up',
        7 => 'clapping_push_up',
        8 => 'weighted_clapping_push_up',
        9 => 'close_grip_medicine_ball_push_up',
        10 => 'weighted_close_grip_medicine_ball_push_up',
        11 => 'close_hands_push_up',
        12 => 'weighted_close_hands_push_up',
        13 => 'decline_push_up',
        14 => 'weighted_decline_push_up',
        15 => 'diamond_push_up',
        16 => 'weighted_diamond_push_up',
        17 => 'explosive_crossover_push_up',
        18 => 'weighted_explosive_crossover_push_up',
        19 => 'explosive_push_up',
        20 => 'weighted_explosive_push_up',
        21 => 'feet_elevated_side_to_side_push_up',
        22 => 'weighted_feet_elevated_side_to_side_push_up',
        23 => 'hand_release_push_up',
        24 => 'weighted_hand_release_push_up',
        25 => 'handstand_push_up',
        26 => 'weighted_handstand_push_up',
        27 => 'incline_push_up',
        28 => 'weighted_incline_push_up',
        29 => 'isometric_explosive_push_up',
        30 => 'weighted_isometric_explosive_push_up',
        31 => 'judo_push_up',
        32 => 'weighted_judo_push_up',
        33 => 'kneeling_push_up',
        34 => 'weighted_kneeling_push_up',
        35 => 'medicine_ball_chest_pass',
        36 => 'medicine_ball_push_up',
        37 => 'weighted_medicine_ball_push_up',
        38 => 'one_arm_push_up',
        39 => 'weighted_one_arm_push_up',
        40 => 'weighted_push_up',
        41 => 'push_up_and_row',
        42 => 'weighted_push_up_and_row',
        43 => 'push_up_plus',
        44 => 'weighted_push_up_plus',
        45 => 'push_up_with_feet_on_swiss_ball',
        46 => 'weighted_push_up_with_feet_on_swiss_ball',
        47 => 'push_up_with_one_hand_on_medicine_ball',
        48 => 'weighted_push_up_with_one_hand_on_medicine_ball',
        49 => 'shoulder_push_up',
        50 => 'weighted_shoulder_push_up',
        51 => 'single_arm_medicine_ball_push_up',
        52 => 'weighted_single_arm_medicine_ball_push_up',
        53 => 'spiderman_push_up',
        54 => 'weighted_spiderman_push_up',
        55 => 'stacked_feet_push_up',
        56 => 'weighted_stacked_feet_push_up',
        57 => 'staggered_hands_push_up',
        58 => 'weighted_staggered_hands_push_up',
        59 => 'suspended_push_up',
        60 => 'weighted_suspended_push_up',
        61 => 'swiss_ball_push_up',
        62 => 'weighted_swiss_ball_push_up',
        63 => 'swiss_ball_push_up_plus',
        64 => 'weighted_swiss_ball_push_up_plus',
        65 => 't_push_up',
        66 => 'weighted_t_push_up',
        67 => 'triple_stop_push_up',
        68 => 'weighted_triple_stop_push_up',
        69 => 'wide_hands_push_up',
        70 => 'weighted_wide_hands_push_up',
        71 => 'parallette_handstand_push_up',
        72 => 'weighted_parallette_handstand_push_up',
        73 => 'ring_handstand_push_up',
        74 => 'weighted_ring_handstand_push_up',
        75 => 'ring_push_up',
        76 => 'weighted_ring_push_up',
        77 => 'push_up',
        78 => 'pilates_pushup',
    ],
    'row_exercise_name' => [
        'type' => 'uint16',
        0 => 'barbell_straight_leg_deadlift_to_row',
        1 => 'cable_row_standing',
        2 => 'dumbbell_row',
        3 => 'elevated_feet_inverted_row',
        4 => 'weighted_elevated_feet_inverted_row',
        5 => 'face_pull',
        6 => 'face_pull_with_external_rotation',
        7 => 'inverted_row_with_feet_on_swiss_ball',
        8 => 'weighted_inverted_row_with_feet_on_swiss_ball',
        9 => 'kettlebell_row',
        10 => 'modified_inverted_row',
        11 => 'weighted_modified_inverted_row',
        12 => 'neutral_grip_alternating_dumbbell_row',
        13 => 'one_arm_bent_over_row',
        14 => 'one_legged_dumbbell_row',
        15 => 'renegade_row',
        16 => 'reverse_grip_barbell_row',
        17 => 'rope_handle_cable_row',
        18 => 'seated_cable_row',
        19 => 'seated_dumbbell_row',
        20 => 'single_arm_cable_row',
        21 => 'single_arm_cable_row_and_rotation',
        22 => 'single_arm_inverted_row',
        23 => 'weighted_single_arm_inverted_row',
        24 => 'single_arm_neutral_grip_dumbbell_row',
        25 => 'single_arm_neutral_grip_dumbbell_row_and_rotation',
        26 => 'suspended_inverted_row',
        27 => 'weighted_suspended_inverted_row',
        28 => 't_bar_row',
        29 => 'towel_grip_inverted_row',
        30 => 'weighted_towel_grip_inverted_row',
        31 => 'underhand_grip_cable_row',
        32 => 'v_grip_cable_row',
        33 => 'wide_grip_seated_cable_row',
    ],
    'shoulder_press_exercise_name' => [
        'type' => 'uint16',
        0 => 'alternating_dumbbell_shoulder_press',
        1 => 'arnold_press',
        2 => 'barbell_front_squat_to_push_press',
        3 => 'barbell_push_press',
        4 => 'barbell_shoulder_press',
        5 => 'dead_curl_press',
        6 => 'dumbbell_alternating_shoulder_press_and_twist',
        7 => 'dumbbell_hammer_curl_to_lunge_to_press',
        8 => 'dumbbell_push_press',
        9 => 'floor_inverted_shoulder_press',
        10 => 'weighted_floor_inverted_shoulder_press',
        11 => 'inverted_shoulder_press',
        12 => 'weighted_inverted_shoulder_press',
        13 => 'one_arm_push_press',
        14 => 'overhead_barbell_press',
        15 => 'overhead_dumbbell_press',
        16 => 'seated_barbell_shoulder_press',
        17 => 'seated_dumbbell_shoulder_press',
        18 => 'single_arm_dumbbell_shoulder_press',
        19 => 'single_arm_step_up_and_press',
        20 => 'smith_machine_overhead_press',
        21 => 'split_stance_hammer_curl_to_press',
        22 => 'swiss_ball_dumbbell_shoulder_press',
        23 => 'weight_plate_front_raise',
    ],
    'shoulder_stability_exercise_name' => [
        'type' => 'uint16',
        0 => '90_degree_cable_external_rotation',
        1 => 'band_external_rotation',
        2 => 'band_internal_rotation',
        3 => 'bent_arm_lateral_raise_and_external_rotation',
        4 => 'cable_external_rotation',
        5 => 'dumbbell_face_pull_with_external_rotation',
        6 => 'floor_i_raise',
        7 => 'weighted_floor_i_raise',
        8 => 'floor_t_raise',
        9 => 'weighted_floor_t_raise',
        10 => 'floor_y_raise',
        11 => 'weighted_floor_y_raise',
        12 => 'incline_i_raise',
        13 => 'weighted_incline_i_raise',
        14 => 'incline_l_raise',
        15 => 'weighted_incline_l_raise',
        16 => 'incline_t_raise',
        17 => 'weighted_incline_t_raise',
        18 => 'incline_w_raise',
        19 => 'weighted_incline_w_raise',
        20 => 'incline_y_raise',
        21 => 'weighted_incline_y_raise',
        22 => 'lying_external_rotation',
        23 => 'seated_dumbbell_external_rotation',
        24 => 'standing_l_raise',
        25 => 'swiss_ball_i_raise',
        26 => 'weighted_swiss_ball_i_raise',
        27 => 'swiss_ball_t_raise',
        28 => 'weighted_swiss_ball_t_raise',
        29 => 'swiss_ball_w_raise',
        30 => 'weighted_swiss_ball_w_raise',
        31 => 'swiss_ball_y_raise',
        32 => 'weighted_swiss_ball_y_raise',
    ],
    'shrug_exercise_name' => [
        'type' => 'uint16',
        0 => 'barbell_jump_shrug',
        1 => 'barbell_shrug',
        2 => 'barbell_upright_row',
        3 => 'behind_the_back_smith_machine_shrug',
        4 => 'dumbbell_jump_shrug',
        5 => 'dumbbell_shrug',
        6 => 'dumbbell_upright_row',
        7 => 'incline_dumbbell_shrug',
        8 => 'overhead_barbell_shrug',
        9 => 'overhead_dumbbell_shrug',
        10 => 'scaption_and_shrug',
        11 => 'scapular_retraction',
        12 => 'serratus_chair_shrug',
        13 => 'weighted_serratus_chair_shrug',
        14 => 'serratus_shrug',
        15 => 'weighted_serratus_shrug',
        16 => 'wide_grip_jump_shrug',
    ],
    'sit_up_exercise_name' => [
        'type' => 'uint16',
        0 => 'alternating_sit_up',
        1 => 'weighted_alternating_sit_up',
        2 => 'bent_knee_v_up',
        3 => 'weighted_bent_knee_v_up',
        4 => 'butterfly_sit_up',
        5 => 'weighted_butterfly_situp',
        6 => 'cross_punch_roll_up',
        7 => 'weighted_cross_punch_roll_up',
        8 => 'crossed_arms_sit_up',
        9 => 'weighted_crossed_arms_sit_up',
        10 => 'get_up_sit_up',
        11 => 'weighted_get_up_sit_up',
        12 => 'hovering_sit_up',
        13 => 'weighted_hovering_sit_up',
        14 => 'kettlebell_sit_up',
        15 => 'medicine_ball_alternating_v_up',
        16 => 'medicine_ball_sit_up',
        17 => 'medicine_ball_v_up',
        18 => 'modified_sit_up',
        19 => 'negative_sit_up',
        20 => 'one_arm_full_sit_up',
        21 => 'reclining_circle',
        22 => 'weighted_reclining_circle',
        23 => 'reverse_curl_up',
        24 => 'weighted_reverse_curl_up',
        25 => 'single_leg_swiss_ball_jackknife',
        26 => 'weighted_single_leg_swiss_ball_jackknife',
        27 => 'the_teaser',
        28 => 'the_teaser_weighted',
        29 => 'three_part_roll_down',
        30 => 'weighted_three_part_roll_down',
        31 => 'v_up',
        32 => 'weighted_v_up',
        33 => 'weighted_russian_twist_on_swiss_ball',
        34 => 'weighted_sit_up',
        35 => 'x_abs',
        36 => 'weighted_x_abs',
        37 => 'sit_up',
    ],
    'squat_exercise_name' => [
        'type' => 'uint16',
        0 => 'leg_press',
        1 => 'back_squat_with_body_bar',
        2 => 'back_squats',
        3 => 'weighted_back_squats',
        4 => 'balancing_squat',
        5 => 'weighted_balancing_squat',
        6 => 'barbell_back_squat',
        7 => 'barbell_box_squat',
        8 => 'barbell_front_squat',
        9 => 'barbell_hack_squat',
        10 => 'barbell_hang_squat_snatch',
        11 => 'barbell_lateral_step_up',
        12 => 'barbell_quarter_squat',
        13 => 'barbell_siff_squat',
        14 => 'barbell_squat_snatch',
        15 => 'barbell_squat_with_heels_raised',
        16 => 'barbell_stepover',
        17 => 'barbell_step_up',
        18 => 'bench_squat_with_rotational_chop',
        19 => 'weighted_bench_squat_with_rotational_chop',
        20 => 'body_weight_wall_squat',
        21 => 'weighted_wall_squat',
        22 => 'box_step_squat',
        23 => 'weighted_box_step_squat',
        24 => 'braced_squat',
        25 => 'crossed_arm_barbell_front_squat',
        26 => 'crossover_dumbbell_step_up',
        27 => 'dumbbell_front_squat',
        28 => 'dumbbell_split_squat',
        29 => 'dumbbell_squat',
        30 => 'dumbbell_squat_clean',
        31 => 'dumbbell_stepover',
        32 => 'dumbbell_step_up',
        33 => 'elevated_single_leg_squat',
        34 => 'weighted_elevated_single_leg_squat',
        35 => 'figure_four_squats',
        36 => 'weighted_figure_four_squats',
        37 => 'goblet_squat',
        38 => 'kettlebell_squat',
        39 => 'kettlebell_swing_overhead',
        40 => 'kettlebell_swing_with_flip_to_squat',
        41 => 'lateral_dumbbell_step_up',
        42 => 'one_legged_squat',
        43 => 'overhead_dumbbell_squat',
        44 => 'overhead_squat',
        45 => 'partial_single_leg_squat',
        46 => 'weighted_partial_single_leg_squat',
        47 => 'pistol_squat',
        48 => 'weighted_pistol_squat',
        49 => 'plie_slides',
        50 => 'weighted_plie_slides',
        51 => 'plie_squat',
        52 => 'weighted_plie_squat',
        53 => 'prisoner_squat',
        54 => 'weighted_prisoner_squat',
        55 => 'single_leg_bench_get_up',
        56 => 'weighted_single_leg_bench_get_up',
        57 => 'single_leg_bench_squat',
        58 => 'weighted_single_leg_bench_squat',
        59 => 'single_leg_squat_on_swiss_ball',
        60 => 'weighted_single_leg_squat_on_swiss_ball',
        61 => 'squat',
        62 => 'weighted_squat',
        63 => 'squats_with_band',
        64 => 'staggered_squat',
        65 => 'weighted_staggered_squat',
        66 => 'step_up',
        67 => 'weighted_step_up',
        68 => 'suitcase_squats',
        69 => 'sumo_squat',
        70 => 'sumo_squat_slide_in',
        71 => 'weighted_sumo_squat_slide_in',
        72 => 'sumo_squat_to_high_pull',
        73 => 'sumo_squat_to_stand',
        74 => 'weighted_sumo_squat_to_stand',
        75 => 'sumo_squat_with_rotation',
        76 => 'weighted_sumo_squat_with_rotation',
        77 => 'swiss_ball_body_weight_wall_squat',
        78 => 'weighted_swiss_ball_wall_squat',
        79 => 'thrusters',
        80 => 'uneven_squat',
        81 => 'weighted_uneven_squat',
        82 => 'waist_slimming_squat',
        83 => 'wall_ball',
        84 => 'wide_stance_barbell_squat',
        85 => 'wide_stance_goblet_squat',
        86 => 'zercher_squat',
        87 => 'kbs_overhead', // Deprecated do not use
        88 => 'squat_and_side_kick',
        89 => 'squat_jumps_in_n_out',
        90 => 'pilates_plie_squats_parallel_turned_out_flat_and_heels',
        91 => 'releve_straight_leg_and_knee_bent_with_one_leg_variation',
    ],
    'total_body_exercise_name' => [
        'type' => 'uint16',
        0 => 'burpee',
        1 => 'weighted_burpee',
        2 => 'burpee_box_jump',
        3 => 'weighted_burpee_box_jump',
        4 => 'high_pull_burpee',
        5 => 'man_makers',
        6 => 'one_arm_burpee',
        7 => 'squat_thrusts',
        8 => 'weighted_squat_thrusts',
        9 => 'squat_plank_push_up',
        10 => 'weighted_squat_plank_push_up',
        11 => 'standing_t_rotation_balance',
        12 => 'weighted_standing_t_rotation_balance',
    ],
    'triceps_extension_exercise_name' => [
        'type' => 'uint16',
        0 => 'bench_dip',
        1 => 'weighted_bench_dip',
        2 => 'body_weight_dip',
        3 => 'cable_kickback',
        4 => 'cable_lying_triceps_extension',
        5 => 'cable_overhead_triceps_extension',
        6 => 'dumbbell_kickback',
        7 => 'dumbbell_lying_triceps_extension',
        8 => 'ez_bar_overhead_triceps_extension',
        9 => 'incline_dip',
        10 => 'weighted_incline_dip',
        11 => 'incline_ez_bar_lying_triceps_extension',
        12 => 'lying_dumbbell_pullover_to_extension',
        13 => 'lying_ez_bar_triceps_extension',
        14 => 'lying_triceps_extension_to_close_grip_bench_press',
        15 => 'overhead_dumbbell_triceps_extension',
        16 => 'reclining_triceps_press',
        17 => 'reverse_grip_pressdown',
        18 => 'reverse_grip_triceps_pressdown',
        19 => 'rope_pressdown',
        20 => 'seated_barbell_overhead_triceps_extension',
        21 => 'seated_dumbbell_overhead_triceps_extension',
        22 => 'seated_ez_bar_overhead_triceps_extension',
        23 => 'seated_single_arm_overhead_dumbbell_extension',
        24 => 'single_arm_dumbbell_overhead_triceps_extension',
        25 => 'single_dumbbell_seated_overhead_triceps_extension',
        26 => 'single_leg_bench_dip_and_kick',
        27 => 'weighted_single_leg_bench_dip_and_kick',
        28 => 'single_leg_dip',
        29 => 'weighted_single_leg_dip',
        30 => 'static_lying_triceps_extension',
        31 => 'suspended_dip',
        32 => 'weighted_suspended_dip',
        33 => 'swiss_ball_dumbbell_lying_triceps_extension',
        34 => 'swiss_ball_ez_bar_lying_triceps_extension',
        35 => 'swiss_ball_ez_bar_overhead_triceps_extension',
        36 => 'tabletop_dip',
        37 => 'weighted_tabletop_dip',
        38 => 'triceps_extension_on_floor',
        39 => 'triceps_pressdown',
        40 => 'weighted_dip',
    ],
    'warm_up_exercise_name' => [
        'type' => 'uint16',
        0 => 'quadruped_rocking',
        1 => 'neck_tilts',
        2 => 'ankle_circles',
        3 => 'ankle_dorsiflexion_with_band',
        4 => 'ankle_internal_rotation',
        5 => 'arm_circles',
        6 => 'bent_over_reach_to_sky',
        7 => 'cat_camel',
        8 => 'elbow_to_foot_lunge',
        9 => 'forward_and_backward_leg_swings',
        10 => 'groiners',
        11 => 'inverted_hamstring_stretch',
        12 => 'lateral_duck_under',
        13 => 'neck_rotations',
        14 => 'opposite_arm_and_leg_balance',
        15 => 'reach_roll_and_lift',
        16 => 'scorpion', // Deprecated do not use
        17 => 'shoulder_circles',
        18 => 'side_to_side_leg_swings',
        19 => 'sleeper_stretch',
        20 => 'slide_out',
        21 => 'swiss_ball_hip_crossover',
        22 => 'swiss_ball_reach_roll_and_lift',
        23 => 'swiss_ball_windshield_wipers',
        24 => 'thoracic_rotation',
        25 => 'walking_high_kicks',
        26 => 'walking_high_knees',
        27 => 'walking_knee_hugs',
        28 => 'walking_leg_cradles',
        29 => 'walkout',
        30 => 'walkout_from_push_up_position',
    ],
    'run_exercise_name' => [
        'type' => 'uint16',
        0 => 'run',
        1 => 'walk',
        2 => 'jog',
        3 => 'sprint',
    ],
    'water_type' => [
        'type' => 'enum',
        0 => 'fresh',
        1 => 'salt',
        2 => 'en13319',
        3 => 'custom',
    ],
    'tissue_model_type' => [
        'type' => 'enum',
        0 => 'zhl_16c', // Buhlmann's decompression algorithm, version C
    ],
    'dive_gas_status' => [
        'type' => 'enum',
        0 => 'disabled',
        1 => 'enabled',
        2 => 'backup_only',
    ],
    'dive_alarm_type' => [
        'type' => 'enum',
        0 => 'depth', // Alarm when a certain depth is crossed
        1 => 'time', // Alarm when a certain time has transpired
    ],
    'dive_backlight_mode' => [
        'type' => 'enum',
        0 => 'at_depth',
        1 => 'always_on',
    ],
    'favero_product' => [
        'type' => 'uint16',
        10 => 'assioma_uno',
        12 => 'assioma_duo',
    ],
    'split_type' => [
        'type' => 'enum',
        1 => 'ascent_split',
        2 => 'descent_split',
        3 => 'interval_active',
        4 => 'interval_rest',
        5 => 'interval_warmup',
        6 => 'interval_cooldown',
        7 => 'interval_recovery',
        8 => 'interval_other',
        9 => 'climb_active',
        10 => 'climb_rest',
        11 => 'surf_active',
        12 => 'run_active',
        13 => 'run_rest',
        14 => 'workout_round',
        17 => 'rwd_run', // run/walk detection running
        18 => 'rwd_walk', // run/walk detection walking
        21 => 'windsurf_active',
        22 => 'rwd_stand', // run/walk detection standing
        23 => 'transition', // Marks the time going from ascent_split to descent_split/used in backcountry ski
        28 => 'ski_lift_split',
        29 => 'ski_run_split',
    ],
    'climb_pro_event' => [
        'type' => 'enum',
        0 => 'approach',
        1 => 'start',
        2 => 'complete',
    ],
    'tap_sensitivity' => [
        'type' => 'enum',
        0 => 'high',
        1 => 'medium',
        2 => 'low',
    ],
    'radar_threat_level_type' => [
        'type' => 'enum',
        0 => 'threat_unknown',
        1 => 'threat_none',
        2 => 'threat_approaching',
        3 => 'threat_approaching_fast',
    ]
];
