diff --git a/.github/actions/publish-ui-dist/action.yaml b/.github/actions/publish-ui-dist/action.yaml index f5433bfaf..7c9d34429 100644 --- a/.github/actions/publish-ui-dist/action.yaml +++ b/.github/actions/publish-ui-dist/action.yaml @@ -31,7 +31,8 @@ runs: echo "BUILD_VERSION=$Env:GITHUB_RUN_NUMBER-$Env:GITHUB_RUN_ID" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append echo "RUNNER_TOOL_CACHE=$Env:RUNNER_TOOL_CACHE" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append shell: pwsh - + + # dotnet publish src/ClientUI/ClientUI.csproj -c Release -f net7.0-windows10.0.19041.0 -p:RuntimeIdentifierOverride=win10-x64 -p:PublishSingleFile=true -p:SelfContained=true - name: Publish ${{ inputs.os }} run: dotnet publish ${{ github.workspace }}/src/ClientUI/ClientUI.csproj -c Release -f ${{ inputs.framework }} -p:RuntimeIdentifierOverride=${{ inputs.os }} -p:PublishSingleFile=true -p:SelfContained=true shell: pwsh diff --git a/.github/workflows/pr-check.yml b/.github/workflows/pr-check.yml index 9f744e6d1..5c70a54d3 100644 --- a/.github/workflows/pr-check.yml +++ b/.github/workflows/pr-check.yml @@ -42,7 +42,7 @@ jobs: strategy: matrix: dotnet: [ '7.0.401' ] - framework: ['net7.0-windows10.0.22621.0'] + framework: ['net7.0-windows10.0.19041.0'] os: [ 'win10-x64' ] steps: diff --git a/.github/workflows/publish-latest.yaml b/.github/workflows/publish-latest.yaml index 7dcac94ed..4d0a4b45b 100644 --- a/.github/workflows/publish-latest.yaml +++ b/.github/workflows/publish-latest.yaml @@ -45,7 +45,7 @@ jobs: strategy: matrix: dotnet: [ '7.0.400' ] - framework: ['net7.0-windows10.0.22621.0'] + framework: ['net7.0-windows10.0.19041.0'] os: [ 'win10-x64' ] steps: diff --git a/.github/workflows/publish-release.yaml b/.github/workflows/publish-release.yaml index 6f02573f3..79811c06a 100644 --- a/.github/workflows/publish-release.yaml +++ b/.github/workflows/publish-release.yaml @@ -53,7 +53,7 @@ jobs: strategy: matrix: dotnet: [ '7.0.400' ] - framework: ['net7.0-windows10.0.22621.0'] + framework: ['net7.0-windows10.0.19041.0'] os: [ 'win10-x64' ] steps: diff --git a/src/Api/Api.csproj b/src/Api/Api.csproj index 5b9813ef8..33b270204 100644 --- a/src/Api/Api.csproj +++ b/src/Api/Api.csproj @@ -26,7 +26,7 @@ - + diff --git a/src/ClientUI/ClientUI.csproj b/src/ClientUI/ClientUI.csproj index 86e56edc4..a297e2a1d 100644 --- a/src/ClientUI/ClientUI.csproj +++ b/src/ClientUI/ClientUI.csproj @@ -2,7 +2,7 @@ - $(TargetFrameworks);net7.0-windows10.0.22621.0 + $(TargetFrameworks);net7.0-windows10.0.19041.0 Exe @@ -60,14 +60,6 @@ - - - - - NU1603,NETSDK1023 - - - diff --git a/src/Common/Common.csproj b/src/Common/Common.csproj index de1b42be4..a32173bbb 100644 --- a/src/Common/Common.csproj +++ b/src/Common/Common.csproj @@ -8,26 +8,26 @@ - + - - - + + + - + - + - - - - + + + + diff --git a/src/ConsoleClient/ConsoleClient.csproj b/src/ConsoleClient/ConsoleClient.csproj index f778d75ae..025ad9fbd 100644 --- a/src/ConsoleClient/ConsoleClient.csproj +++ b/src/ConsoleClient/ConsoleClient.csproj @@ -30,17 +30,15 @@ - - + - - - - - + + + + diff --git a/src/Conversion/Conversion.csproj b/src/Conversion/Conversion.csproj index 44c2bcc47..247f685b8 100644 --- a/src/Conversion/Conversion.csproj +++ b/src/Conversion/Conversion.csproj @@ -6,6 +6,10 @@ $(NoWarn);1591 + + + + diff --git a/src/Garmin/FitSdk/Cookbook/ActivityDecode/.vscode/extensions.json b/src/Garmin/FitSdk/Cookbook/ActivityDecode/.vscode/extensions.json deleted file mode 100644 index 180e233d1..000000000 --- a/src/Garmin/FitSdk/Cookbook/ActivityDecode/.vscode/extensions.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - // See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations. - // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp - - // List of extensions which should be recommended for users of this workspace. - "recommendations": [ - "ms-dotnettools.csharp", - "mechatroner.rainbow-csv" - ], - // List of extensions recommended by VS Code that should not be recommended for users of this workspace. - "unwantedRecommendations": [ - - ] -} \ No newline at end of file diff --git a/src/Garmin/FitSdk/Cookbook/ActivityDecode/.vscode/launch.json b/src/Garmin/FitSdk/Cookbook/ActivityDecode/.vscode/launch.json deleted file mode 100644 index 0f6f71f6d..000000000 --- a/src/Garmin/FitSdk/Cookbook/ActivityDecode/.vscode/launch.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - // Use IntelliSense to find out which attributes exist for C# debugging - // Use hover for the description of the existing attributes - // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md - "version": "0.2.0", - "configurations": [ - { - "name": ".NET Core Launch (console)", - "type": "coreclr", - "request": "launch", - "preLaunchTask": "build", - // If you have changed target frameworks, make sure to update the program path. - "program": "${workspaceFolder}/bin/Debug/netcoreapp3.1/ActivityDecode.dll", - "args": ["${workspaceFolder}/../../../examples/activity.fit"], - "cwd": "${workspaceFolder}", - // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console - "console": "internalConsole", - "stopAtEntry": false - }, - { - "name": ".NET Core Attach", - "type": "coreclr", - "request": "attach", - "processId": "${command:pickProcess}" - } - ] -} \ No newline at end of file diff --git a/src/Garmin/FitSdk/Cookbook/ActivityDecode/.vscode/tasks.json b/src/Garmin/FitSdk/Cookbook/ActivityDecode/.vscode/tasks.json deleted file mode 100644 index 1df4bcb5f..000000000 --- a/src/Garmin/FitSdk/Cookbook/ActivityDecode/.vscode/tasks.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "version": "2.0.0", - "tasks": [ - { - "label": "build", - "command": "dotnet", - "type": "process", - "args": [ - "build", - "${workspaceFolder}/ActivityDecode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - }, - { - "label": "publish", - "command": "dotnet", - "type": "process", - "args": [ - "publish", - "${workspaceFolder}/ActivityDecode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - }, - { - "label": "watch", - "command": "dotnet", - "type": "process", - "args": [ - "watch", - "run", - "${workspaceFolder}/ActivityDecode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - } - ] -} \ No newline at end of file diff --git a/src/Garmin/FitSdk/Cookbook/ActivityDecode/ActivityDecode.csproj b/src/Garmin/FitSdk/Cookbook/ActivityDecode/ActivityDecode.csproj deleted file mode 100644 index 4e1dba9cd..000000000 --- a/src/Garmin/FitSdk/Cookbook/ActivityDecode/ActivityDecode.csproj +++ /dev/null @@ -1,12 +0,0 @@ - - - - Exe - netcoreapp3.1 - - - - ..\..\Dynastream.Fit.Portable.dll - - - diff --git a/src/Garmin/FitSdk/Cookbook/ActivityDecode/ActivityParser.cs b/src/Garmin/FitSdk/Cookbook/ActivityDecode/ActivityParser.cs deleted file mode 100644 index c148d9327..000000000 --- a/src/Garmin/FitSdk/Cookbook/ActivityDecode/ActivityParser.cs +++ /dev/null @@ -1,96 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using System; -using System.Collections.Generic; -using System.Linq; -using Dynastream.Fit; -using Extensions; - -public class ActivityParser -{ - private FitMessages _messages; - public bool IsActivityFile => _messages?.FileId != null ? (_messages?.FileId?.GetType() ?? File.Invalid) == File.Activity : false; - - public ActivityParser(FitMessages messages) - { - _messages = messages; - } - - public List ParseSessions() - { - if (!IsActivityFile) - { - throw new Exception($"Expected FIT File Type: Activity, recieved File Type: {_messages?.FileId?.GetType()}"); - } - - // When there are no Sessions but there are Records create a Session message to recover as much data as possible - if (_messages.Sessions.Count == 0 && _messages.Records.Count > 0) - { - Dynastream.Fit.DateTime startTime = _messages.Records[0].GetTimestamp(); - Dynastream.Fit.DateTime timestamp = _messages.Records[_messages.Records.Count - 1].GetTimestamp(); - - var session = new SessionMesg(); - session.SetStartTime(startTime); - session.SetTimestamp(timestamp); - session.SetTotalElapsedTime(timestamp.GetTimeStamp() - startTime.GetTimeStamp()); - session.SetTotalTimerTime(timestamp.GetTimeStamp() - startTime.GetTimeStamp()); - - _messages.Sessions.Add(session); - } - - int recordsTaken = 0; - - var sessions = new List(_messages.Sessions.Count); - foreach (SessionMesg sessionMesg in _messages.Sessions) - { - var session = new SessionMessages(sessionMesg) - { - Laps = _messages.Laps.Skip(sessionMesg.GetFirstLapIndex() ?? 0).Take(sessionMesg.GetNumLaps() ?? 0).ToList(), - - ClimbPros = _messages.ClimbPros.Where(climb => climb.Within(sessionMesg)).ToList(), - Events = _messages.Events.Where(evt => evt.Within(sessionMesg)).ToList(), - DeviceInfos = _messages.DeviceInfos.Where(deviceInfo => deviceInfo.Within(sessionMesg)).ToList(), - Lengths = _messages.Lengths.Where(length => length.Overlaps(sessionMesg)).ToList(), - Records = _messages.Records.Skip(recordsTaken).Where(record => record.Within(sessionMesg)).ToList(), - SegmentLaps = _messages.SegmentLaps.Where(segmentLap => segmentLap.Overlaps(sessionMesg)).ToList(), - - TimerEvents = _messages.Events.Where(evt => evt.GetEvent() == Event.Timer && evt.Within(sessionMesg)).ToList(), - FrontGearChangeEvents = _messages.Events.Where(evt => evt.GetEvent() == Event.FrontGearChange && evt.Within(sessionMesg)).ToList(), - RearGearChangeEvents = _messages.Events.Where(evt => evt.GetEvent() == Event.RearGearChange && evt.Within(sessionMesg)).ToList(), - RiderPositionChangeEvents = _messages.Events.Where(evt => evt.GetEvent() == Event.RiderPositionChange && evt.Within(sessionMesg)).ToList(), - - Activity = _messages.Activity, - FileId = _messages.FileId, - RecordFieldNames = _messages.RecordFieldNames, - RecordDeveloperFieldNames = _messages.RecordDeveloperFieldNames, - UserProfile = _messages.UserProfile, - Workout = _messages.Workout, - WorkoutSteps = _messages.WorkoutSteps, - ZonesTarget = _messages.ZonesTarget, - }; - - recordsTaken += session.Records.Count; - sessions.Add(session); - } - - return sessions; - } - - public List DevicesWhereBatteryStatusIsLow() - { - var batteryStatus = new List() { BatteryStatus.Critical, BatteryStatus.Low }; - var deviceInfos = new List(); - - deviceInfos = _messages.DeviceInfos.Where(info => batteryStatus.Contains(info.GetBatteryStatus() ?? BatteryStatus.Unknown)).ToList(); - return deviceInfos; - } -} diff --git a/src/Garmin/FitSdk/Cookbook/ActivityDecode/Export.cs b/src/Garmin/FitSdk/Cookbook/ActivityDecode/Export.cs deleted file mode 100644 index 6753723c2..000000000 --- a/src/Garmin/FitSdk/Cookbook/ActivityDecode/Export.cs +++ /dev/null @@ -1,139 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Dynastream.Fit; -using Extensions; - -public class Export -{ - private const string Unknown = "unknown"; - private const double MetersToYards = 1.09361; - private const double DefaultPoolLength = 25.0; - - static public string RecordsToCSV(SessionMessages session) - { - var stringBuilder = new StringBuilder(); - - // Add a comment row with: Sport Type, Sub Sport, Date/Time, Total Distance (meters), Calories, Duration (seconds) - stringBuilder.AppendLine($"#Records,{session.Session.GetSport().ToString()},{session.Session.GetSubSport().ToString()},{session.Session.GetStartTime().GetDateTime().ToString("yyyy-MM-dd HH:mm:ss")},{session.Session.GetTotalDistance()},{session.Session.GetTotalCalories() ?? 0},{session.Session.GetTotalElapsedTime() ?? 0}"); - - // Create the header row - stringBuilder.Append("Seconds,"); - stringBuilder.Append($"{string.Join(",", session.RecordFieldNames)},"); - - if (session.RecordDeveloperFieldNames.Count > 0) - { - stringBuilder.Append($"developerdata_{string.Join(",developerdata_", session.RecordDeveloperFieldNames).Replace(" ","_")},"); - } - - stringBuilder.Append("TimerEvent,Lap"); - stringBuilder.AppendLine(); - - var lapQueue = new Queue(session.Laps); - var lap = lapQueue.Count > 0 ? lapQueue.Dequeue() : null; - var lapId = 1; - - uint firstTimeStamp = session.Records[0].GetTimestamp().GetTimeStamp(); - - foreach (ExtendedRecordMesg record in session.Records) - { - while (lap != null && record.GetTimestamp().GetTimeStamp() > lap.GetTimestamp().GetTimeStamp()) - { - lap = lapQueue.Count > 0 ? lapQueue.Dequeue() : null; - lapId++; - } - - stringBuilder.Append($"{record.GetTimestamp().GetTimeStamp() - firstTimeStamp},"); - - foreach (string fieldName in session.RecordFieldNames) - { - var numFieldValues = record.GetNumFieldValues(fieldName); - if (numFieldValues > 1) - { - for (int i = 0; i < numFieldValues; i++) - { - stringBuilder.Append($"{record.GetFieldValue(fieldName, i)}|"); - } - stringBuilder.Length--; - stringBuilder.Append($","); - } - else - { - stringBuilder.Append($"{record.GetFieldValue(fieldName)},"); - } - } - - foreach (string devFieldName in session.RecordDeveloperFieldNames) - { - DeveloperField devField = record.DeveloperFields.Where(f => f.Name == devFieldName).FirstOrDefault(); - if (devField != null) - { - stringBuilder.Append($"{devField.GetValue(0)}"); - } - stringBuilder.Append(","); - } - - stringBuilder.Append($"{(record.EventType == EventType.Invalid ? "" : record.EventType.ToString())},"); - stringBuilder.Append($"{lapId}"); - - stringBuilder.AppendLine(); - } - - return stringBuilder.ToString(); - } - - static public string LengthsToCSV(SessionMessages session) - { - var isMetric = session.Session.GetPoolLengthUnit() == DisplayMeasure.Metric; - var unitConversion = isMetric ? 1.0 : MetersToYards; - double poolLength = session.Session.GetPoolLength() ?? DefaultPoolLength; - var poolLengthString = $"{Math.Round(poolLength * unitConversion)}"; - var totalDistance = Math.Round((session.Session.GetNumActiveLengths() ?? 0) * poolLength * unitConversion); - - var stringBuilder = new StringBuilder(); - - // Add a comment row with: Sport Type, Sub Sport, Date/Time, Total Distance, Pool Length, Units, Calories, Duration (Seconds) - stringBuilder.AppendLine($"#Lengths,{session.Session.GetSport().ToString()},{session.Session.GetSubSport().ToString()},{session.Session.GetStartTime().GetDateTime().ToString("yyyy-MM-dd HH:mm:ss")},{totalDistance},{poolLengthString},{(isMetric ? "meters" : "yards")},{session.Session.GetTotalCalories() ?? 0},{session.Session.GetTotalElapsedTime() ?? 0}"); - - // Create the header row - stringBuilder.AppendLine($"LENGTH TYPE,DURATION (seconds),DISTANCE ({(isMetric ? "meters" : "yards")}),PACE,STOKE COUNT,SWOLF,DPS,STROKE RATE,STROKE TYPE"); - - foreach (LengthMesg length in session.Lengths) - { - var type = length.GetLengthType() ?? LengthType.Invalid; - float elapsedTime = length.GetTotalElapsedTime() ?? 0; - double speed = (length.GetAvgSpeed() ?? 0) * unitConversion; - ushort? totalStrokes = length.GetTotalStrokes(); - var swolf = elapsedTime + (totalStrokes ?? 0); - double? distancePerStroke = totalStrokes.HasValue ? Math.Round(poolLength * unitConversion / totalStrokes ?? 1, 2) : (double?)null; - - stringBuilder.Append($"{type.ToString()},"); - stringBuilder.Append($"{elapsedTime},"); - stringBuilder.Append($"{(type == LengthType.Active ? poolLengthString : "")},"); - stringBuilder.Append($"{(type == LengthType.Active ? Math.Round(speed, 2).ToString() : "")},"); - stringBuilder.Append($"{(type == LengthType.Active ? totalStrokes.ToString() : "")},"); - stringBuilder.Append($"{(type == LengthType.Active ? swolf.ToString() : "")},"); - stringBuilder.Append($"{(type == LengthType.Active ? distancePerStroke.ToString() : "")},"); - stringBuilder.Append($"{length.GetAvgSwimmingCadence().ToString() ?? ""},"); - stringBuilder.Append($"{length.GetSwimStroke().ToString() ?? ""}"); - - stringBuilder.AppendLine(); - } - - return stringBuilder.ToString(); - - } -} - diff --git a/src/Garmin/FitSdk/Cookbook/ActivityDecode/ExtendedRecordMesg.cs b/src/Garmin/FitSdk/Cookbook/ActivityDecode/ExtendedRecordMesg.cs deleted file mode 100644 index a39c9fe69..000000000 --- a/src/Garmin/FitSdk/Cookbook/ActivityDecode/ExtendedRecordMesg.cs +++ /dev/null @@ -1,27 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using Dynastream.Fit; -public class ExtendedRecordMesg : RecordMesg -{ - public EventType EventType {get; private set;} - - public ExtendedRecordMesg(RecordMesg mesg) : base(mesg) - { - EventType = EventType.Invalid; - } - - public ExtendedRecordMesg(EventMesg mesg) - { - SetTimestamp(mesg.GetTimestamp()); - EventType = mesg.GetEventType() ?? EventType.Invalid; - } -} \ No newline at end of file diff --git a/src/Garmin/FitSdk/Cookbook/ActivityDecode/Extensions.cs b/src/Garmin/FitSdk/Cookbook/ActivityDecode/Extensions.cs deleted file mode 100644 index 33765cf70..000000000 --- a/src/Garmin/FitSdk/Cookbook/ActivityDecode/Extensions.cs +++ /dev/null @@ -1,122 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using System; -using System.Text; -using Dynastream.Fit; - -namespace Extensions -{ - public static class FitExtensions - { - public static System.DateTime FitEpoch = new System.DateTime(1989, 12, 31, 0, 0, 0, System.DateTimeKind.Utc); - private const byte TimestampFieldId = 253; - - public static TimeSpan? TimezoneOffset(this ActivityMesg activity) - { - if (activity == null) - { - return null; - } - - if (!activity.GetLocalTimestamp().HasValue) - { - return null; - } - return TimeSpan.FromSeconds((int)activity.GetLocalTimestamp() - (int)activity.GetTimestamp().GetTimeStamp()); - } - public static System.DateTime LocalTimestampAsSystemDateTime(this ActivityMesg activity) - { - return new System.DateTime((long)(activity.GetLocalTimestamp() ?? 0) * 10000000L + FitEpoch.Ticks, DateTimeKind.Local); - } - - public static Dynastream.Fit.DateTime LocalTimestampAsFitDateTime(this ActivityMesg activity) - { - return new Dynastream.Fit.DateTime(activity.GetLocalTimestamp() ?? 0); - } - - public static Dynastream.Fit.DateTime GetTimestamp(this Mesg mesg) - { - Object val = mesg.GetFieldValue(TimestampFieldId); - if (val == null) - { - return null; - } - - return mesg.TimestampToDateTime(Convert.ToUInt32(val)); - } - - public static Dynastream.Fit.DateTime GetStartTime(this Mesg mesg) - { - Object val = mesg.GetFieldValue("StartTime"); - if (val == null) - { - return null; - } - - return mesg.TimestampToDateTime(Convert.ToUInt32(val)); - - } - public static Dynastream.Fit.DateTime GetEndTime(this Mesg mesg) - { - var startTime = mesg.GetStartTime(); - if(startTime == null) - { - return null; - } - - Object val = mesg.GetFieldValue("TotalElapsedTime"); - if (val == null) - { - return null; - } - - startTime.Add(Convert.ToUInt32(val)); - return startTime; - - } - - public static string GetValueAsString(this Mesg mesg, String name) - { - Field field = mesg.GetField(name, false); - if(field == null) - { - return null; - } - - byte[] data = (byte[])field.GetValue(); - - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - public static bool Overlaps(this Mesg mesg, SessionMesg session) - { - if(mesg.GetStartTime() == null || mesg.GetEndTime() == null || session.GetStartTime() == null || session.GetEndTime() == null) - { - return false; - } - - return Math.Max(mesg.GetStartTime().GetTimeStamp(),session.GetStartTime().GetTimeStamp()) <= - Math.Min(mesg.GetEndTime().GetTimeStamp(),session.GetEndTime().GetTimeStamp()); - } - - public static bool Within(this Mesg mesg, SessionMesg session) - { - if(mesg.GetTimestamp() == null || session.GetStartTime() == null || session.GetEndTime() == null) - { - return false; - } - - return mesg.GetTimestamp().GetDateTime() >= session.GetStartTime().GetDateTime() - && mesg.GetTimestamp().GetDateTime() <= session.GetEndTime().GetDateTime(); - } - } -} \ No newline at end of file diff --git a/src/Garmin/FitSdk/Cookbook/ActivityDecode/FileTypeException.cs b/src/Garmin/FitSdk/Cookbook/ActivityDecode/FileTypeException.cs deleted file mode 100644 index 73e74bb67..000000000 --- a/src/Garmin/FitSdk/Cookbook/ActivityDecode/FileTypeException.cs +++ /dev/null @@ -1,29 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using System; - -public class FileTypeException : Exception -{ - public FileTypeException() - { - } - - public FileTypeException(string message) - : base(message) - { - } - - public FileTypeException(string message, Exception inner) - : base(message, inner) - { - } -} \ No newline at end of file diff --git a/src/Garmin/FitSdk/Cookbook/ActivityDecode/FitDecoder.cs b/src/Garmin/FitSdk/Cookbook/ActivityDecode/FitDecoder.cs deleted file mode 100644 index e707cac68..000000000 --- a/src/Garmin/FitSdk/Cookbook/ActivityDecode/FitDecoder.cs +++ /dev/null @@ -1,216 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using System.IO; - -using Dynastream.Fit; - -public class FitDecoder -{ - public FitMessages Messages { get; private set; } - private Stream inputStream; - private Dynastream.Fit.File fileType; - - public FitDecoder(Stream stream, Dynastream.Fit.File fileType) - { - inputStream = stream; - this.fileType = fileType; - - Messages = new FitMessages(); - } - - public bool Decode() - { - // Create the Decode Object - Decode decoder = new Decode(); - - // Check that this is a FIT file - if (!decoder.IsFIT(inputStream)) - { - throw new FileTypeException($"Expected FIT File Type: {fileType}, received a non FIT file."); - } - - // Create the Message Broadcaster Object - MesgBroadcaster mesgBroadcaster = new MesgBroadcaster(); - - // Connect the the Decode and Message Broadcaster Objects - decoder.MesgEvent += mesgBroadcaster.OnMesg; - decoder.MesgDefinitionEvent += mesgBroadcaster.OnMesgDefinition; - decoder.DeveloperFieldDescriptionEvent += OnDeveloperFieldDescriptionEvent; - - // Connect the Message Broadcaster Events to the Message Listener Delegates - mesgBroadcaster.ActivityMesgEvent += OnActivityMesg; - mesgBroadcaster.ClimbProMesgEvent += OnClimbProMesg; - mesgBroadcaster.CourseMesgEvent += OnCourseMesg; - mesgBroadcaster.CoursePointMesgEvent += OnCoursePointMesg; - mesgBroadcaster.DeviceInfoMesgEvent += OnDeviceInfoMesg; - mesgBroadcaster.EventMesgEvent += OnEventMesg; - mesgBroadcaster.FileIdMesgEvent += OnFileIdMesg; - mesgBroadcaster.HrMesgEvent += OnHrMesg; - mesgBroadcaster.HrvMesgEvent += OnHrvMesg; - mesgBroadcaster.LapMesgEvent += OnLapMesg; - mesgBroadcaster.LengthMesgEvent += OnLengthMesg; - mesgBroadcaster.RecordMesgEvent += OnRecordMesg; - mesgBroadcaster.SegmentLapMesgEvent += OnSegmentLapMesg; - mesgBroadcaster.SessionMesgEvent += OnSessionMesg; - mesgBroadcaster.UserProfileMesgEvent += OnUserProfileMesg; - mesgBroadcaster.WorkoutMesgEvent += OnWorkoutMesg; - mesgBroadcaster.WorkoutStepMesgEvent += OnWorkoutStepMesg; - mesgBroadcaster.ZonesTargetMesgEvent += OnZonesTargetMesg; - - // Decode the FIT File - try - { - bool readOK = decoder.Read(inputStream); - - // If there are HR messages, merge the heart-rate data with the Record messages. - if (readOK && Messages.HeartRates.Count > 0) - { - HrToRecordMesgWithoutPlugin.MergeHeartRates(Messages); - } - - return readOK; - } - catch (FileTypeException ex) - { - throw (ex); - } - catch (FitException ex) - { - throw (ex); - } - catch (System.Exception ex) - { - throw (ex); - } - finally - { - } - } - - public void OnActivityMesg(object sender, MesgEventArgs e) - { - Messages.Activity = (ActivityMesg)e.mesg; - } - - public void OnClimbProMesg(object sender, MesgEventArgs e) - { - Messages.ClimbPros.Add(e.mesg as ClimbProMesg); - } - - public void OnCourseMesg(object sender, MesgEventArgs e) - { - Messages.Course = (CourseMesg)e.mesg; - } - - public void OnCoursePointMesg(object sender, MesgEventArgs e) - { - Messages.CoursePoints.Add(e.mesg as CoursePointMesg); - } - - public void OnDeviceInfoMesg(object sender, MesgEventArgs e) - { - Messages.DeviceInfos.Add(e.mesg as DeviceInfoMesg); - } - - public void OnEventMesg(object sender, MesgEventArgs e) - { - var eventMesg = e.mesg as EventMesg; - Messages.Events.Add(eventMesg); - - if (eventMesg?.GetEvent() == Event.Timer && eventMesg?.GetTimestamp() != null) - { - Messages.Records.Add(new ExtendedRecordMesg(eventMesg)); - } - } - - public void OnFileIdMesg(object sender, MesgEventArgs e) - { - Messages.FileId = (FileIdMesg)e.mesg; - if ((e.mesg as FileIdMesg).GetType() != fileType) - { - throw new FileTypeException($"Expected FIT File Type: {fileType}, recieved File Type: {(e.mesg as FileIdMesg).GetType()}"); - } - } - - public void OnHrMesg(object sender, MesgEventArgs e) - { - Messages.HeartRates.Add(e.mesg as HrMesg); - } - - public void OnHrvMesg(object sender, MesgEventArgs e) - { - Messages.HeartRateVariabilites.Add(e.mesg as HrvMesg); - } - - public void OnLapMesg(object sender, MesgEventArgs e) - { - Messages.Laps.Add(e.mesg as LapMesg); - } - - public void OnLengthMesg(object sender, MesgEventArgs e) - { - Messages.Lengths.Add(e.mesg as LengthMesg); - } - - public void OnRecordMesg(object sender, MesgEventArgs e) - { - Messages.Records.Add(new ExtendedRecordMesg(e.mesg as RecordMesg)); - - foreach (Field field in e.mesg.Fields) - { - if (field.Name.ToLower() != "unknown") - { - Messages.RecordFieldNames.Add(field.Name); - } - } - - foreach (DeveloperField devField in e.mesg.DeveloperFields) - { - Messages.RecordDeveloperFieldNames.Add(devField.Name); - } - } - - public void OnSegmentLapMesg(object sender, MesgEventArgs e) - { - Messages.SegmentLaps.Add(e.mesg as SegmentLapMesg); - } - - public void OnSessionMesg(object sender, MesgEventArgs e) - { - Messages.Sessions.Add(e.mesg as SessionMesg); - } - - public void OnUserProfileMesg(object sender, MesgEventArgs e) - { - Messages.UserProfile = (UserProfileMesg)e.mesg; - } - - public void OnWorkoutMesg(object sender, MesgEventArgs e) - { - Messages.Workout = (WorkoutMesg)e.mesg; - } - - public void OnWorkoutStepMesg(object sender, MesgEventArgs e) - { - Messages.WorkoutSteps.Add(e.mesg as WorkoutStepMesg); - } - - public void OnZonesTargetMesg(object sender, MesgEventArgs e) - { - Messages.ZonesTarget = (ZonesTargetMesg)e.mesg; - } - - private void OnDeveloperFieldDescriptionEvent(object sender, DeveloperFieldDescriptionEventArgs e) - { - Messages.DeveloperFieldDescriptions.Add(e.Description as DeveloperFieldDescription); - } -} diff --git a/src/Garmin/FitSdk/Cookbook/ActivityDecode/FitMessages.cs b/src/Garmin/FitSdk/Cookbook/ActivityDecode/FitMessages.cs deleted file mode 100644 index b1521d8ff..000000000 --- a/src/Garmin/FitSdk/Cookbook/ActivityDecode/FitMessages.cs +++ /dev/null @@ -1,42 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using System.Collections.Generic; -using Dynastream.Fit; - -public class FitMessages -{ - public ActivityMesg Activity; - public List ClimbPros = new List(); - public CourseMesg Course; - public List CoursePoints = new List(); - public List DeviceInfos = new List(); - public List Events = new List(); - public FileIdMesg FileId; - public List HeartRates = new List(); - public List HeartRateVariabilites = new List(); - public List Laps = new List(); - public List Lengths = new List(); - public List Records = new List(); - public List SegmentLaps = new List(); - public List Sessions = new List(); - public UserProfileMesg UserProfile; - public WorkoutMesg Workout; - public List WorkoutSteps = new List(); - public ZonesTargetMesg ZonesTarget; - public List DeveloperFieldDescriptions = new List(); - public HashSet RecordFieldNames = new HashSet(); - public HashSet RecordDeveloperFieldNames = new HashSet(); - - public FitMessages() - { - } -} diff --git a/src/Garmin/FitSdk/Cookbook/ActivityDecode/HrToRecordMesgWithoutPlugin.cs b/src/Garmin/FitSdk/Cookbook/ActivityDecode/HrToRecordMesgWithoutPlugin.cs deleted file mode 100644 index a2d316ba1..000000000 --- a/src/Garmin/FitSdk/Cookbook/ActivityDecode/HrToRecordMesgWithoutPlugin.cs +++ /dev/null @@ -1,151 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using Dynastream.Fit; - -public class HrToRecordMesgWithoutPlugin -{ - public static void MergeHeartRates(FitMessages messages) - { - float? hr_anchor_event_timestamp = 0.0f; - DateTime hr_anchor_timestamp = new DateTime(0); - bool hr_anchor_set = false; - byte? last_valid_hr = 0; - DateTime last_valid_hr_time = new DateTime(0); - - DateTime record_range_start_time = new DateTime(messages.Records[0].GetTimestamp()); - int hr_start_index = 0; - int hr_start_sub_index = 0; - - // - // Update this foreach() to loop through just the Record messages - // - foreach (RecordMesg recordMesg in messages.Records) - { - long hrSum = 0; - long hrSumCount = 0; - - // Obtain the time for which the record message is valid - DateTime record_range_end_time = new DateTime(recordMesg.GetTimestamp()); - - // Need to determine timestamp range which applies to this record - bool findingInRangeHrMesgs = true; - - // Start searching HR mesgs where we left off - int hr_mesg_counter = hr_start_index; - int hr_sub_mesg_counter = hr_start_sub_index; - - // - // Update this while() to loop through just the HR messages - // - while (findingInRangeHrMesgs && (hr_mesg_counter < messages.HeartRates.Count)) - { - HrMesg hrMesg = new HrMesg(messages.HeartRates[hr_mesg_counter]); - - // Update HR timestamp anchor, if present - if (hrMesg.GetTimestamp() != null && hrMesg.GetTimestamp().GetTimeStamp() != 0) - { - hr_anchor_timestamp = new DateTime(hrMesg.GetTimestamp()); - hr_anchor_set = true; - - if (hrMesg.GetFractionalTimestamp() != null) - hr_anchor_timestamp.Add((double)hrMesg.GetFractionalTimestamp()); - - if (hrMesg.GetNumEventTimestamp() == 1) - { - hr_anchor_event_timestamp = hrMesg.GetEventTimestamp(0); - } - else - { - throw new FitException("FIT HrToRecordMesgBroadcastPlugin Error: Anchor HR mesg must have 1 event_timestamp"); - } - } - - if (hr_anchor_set == false) - { - // We cannot process any HR messages if we have not received a timestamp anchor - throw new FitException("FIT HrToRecordMesgBroadcastPlugin Error: No anchor timestamp received in a HR mesg before diff HR mesgs"); - } - else if (hrMesg.GetNumEventTimestamp() != hrMesg.GetNumFilteredBpm()) - { - throw new FitException("FIT HrToRecordMesgBroadcastPlugin Error: HR mesg with mismatching event timestamp and filtered bpm"); - } - for (int j = hr_sub_mesg_counter; j < hrMesg.GetNumEventTimestamp(); j++) - { - // Build up timestamp for each message using the anchor and event_timestamp - DateTime hrMesgTime = new DateTime(hr_anchor_timestamp); - float? event_timestamp = hrMesg.GetEventTimestamp(j); - - // Deal with roll over case - if (event_timestamp < hr_anchor_event_timestamp) - { - if ((hr_anchor_event_timestamp - event_timestamp) > (1 << 21)) - { - event_timestamp += (1 << 22); - } - else - { - throw new FitException("FIT HrToRecordMesgBroadcastPlugin Error: Anchor event_timestamp is greater than subsequent event_timestamp. This does not allow for correct delta calculation."); - } - } - hrMesgTime.Add((double)(event_timestamp - hr_anchor_event_timestamp)); - - // Check if hrMesgTime is gt record start time - // and if hrMesgTime is lte to record end time - if ((hrMesgTime.CompareTo(record_range_start_time) > 0) && - (hrMesgTime.CompareTo(record_range_end_time) <= 0)) - { - hrSum += (long)hrMesg.GetFilteredBpm(j); - hrSumCount++; - last_valid_hr_time = new DateTime(hrMesgTime); - - } - // check if hrMesgTime exceeds the record time - else if (hrMesgTime.CompareTo(record_range_end_time) > 0) - { - // Remember where we left off - hr_start_index = hr_mesg_counter; - hr_start_sub_index = j; - findingInRangeHrMesgs = false; - - if (hrSumCount > 0) - { - // Update record heart rate - last_valid_hr = (byte?)System.Math.Round((((float)hrSum) / hrSumCount), System.MidpointRounding.AwayFromZero); - recordMesg.SetHeartRate(last_valid_hr); - messages.RecordFieldNames.Add("HeartRate"); - } - // If no stored HR is available, fill in record messages with the - // last valid filtered hr for a maximum of 5 seconds - else if ((record_range_start_time.CompareTo(last_valid_hr_time) > 0) && - ((record_range_start_time.GetTimeStamp() - last_valid_hr_time.GetTimeStamp()) < 5)) - { - recordMesg.SetHeartRate(last_valid_hr); - messages.RecordFieldNames.Add("HeartRate"); - } - - // Reset HR average - hrSum = 0; - hrSumCount = 0; - - record_range_start_time = new DateTime(record_range_end_time); - - // Breaks out of looping within the event_timestamp array - break; - } - } - - hr_mesg_counter++; - hr_sub_mesg_counter = 0; - } - } - } -} \ No newline at end of file diff --git a/src/Garmin/FitSdk/Cookbook/ActivityDecode/Program.cs b/src/Garmin/FitSdk/Cookbook/ActivityDecode/Program.cs deleted file mode 100644 index 6130c0d7e..000000000 --- a/src/Garmin/FitSdk/Cookbook/ActivityDecode/Program.cs +++ /dev/null @@ -1,117 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using System; -using System.IO; -using Dynastream.Fit; -using Extensions; - -namespace ActivityParse -{ - class Program - { - static void Main(string[] args) - { - Console.WriteLine("FIT Decode Example Application"); - - if (args.Length != 1) - { - Console.WriteLine("Usage: decode.exe "); - return; - } - - try - { - // Attempt to open the input file - FileStream fileStream = new FileStream(args[0], FileMode.Open); - Console.WriteLine($"Opening {args[0]}"); - - // Create our FIT Decoder - FitDecoder fitDecoder = new FitDecoder(fileStream, Dynastream.Fit.File.Activity); - - // Decode the FIT file - try - { - Console.WriteLine("Decoding..."); - fitDecoder.Decode(); - } - catch (FileTypeException ex) - { - Console.WriteLine("DecodeDemo caught FileTypeException: " + ex.Message); - return; - } - catch (FitException ex) - { - Console.WriteLine("DecodeDemo caught FitException: " + ex.Message); - } - catch (Exception ex) - { - Console.WriteLine("DecodeDemo caught Exception: " + ex.Message); - } - finally - { - fileStream.Close(); - } - - // Check the time zone offset in the Activity message. - var timezoneOffset = fitDecoder.Messages.Activity.TimezoneOffset(); - Console.WriteLine($"The timezone offset for this activity file is {timezoneOffset?.TotalHours ?? 0} hours."); - - // Create the Activity Parser and group the messages into individual sessions. - ActivityParser activityParser = new ActivityParser(fitDecoder.Messages); - var sessions = activityParser.ParseSessions(); - - // Export a CSV file for each Activity Session - foreach (SessionMessages session in sessions) - { - if (session.Records.Count > 0) - { - var recordsCSV = Export.RecordsToCSV(session); - - var recordsPath = Path.Combine(Path.GetDirectoryName(args[0]), $"{Path.GetFileNameWithoutExtension(args[0])}_{session.Session.GetStartTime().GetDateTime().ToString("yyyyMMddHHmmss")}_{session.Session.GetSport()}_Records.csv"); - - using (StreamWriter outputFile = new StreamWriter(recordsPath)) - { - outputFile.WriteLine(recordsCSV); - } - - Console.WriteLine($"The file {recordsPath} has been saved."); - } - - if (session.Session.GetSport() == Sport.Swimming && session.Session.GetSubSport() == SubSport.LapSwimming && session.Lengths.Count > 0) - { - var lengthsCSV = Export.LengthsToCSV(session); - - var lengthsPath = Path.Combine(Path.GetDirectoryName(args[0]), $"{Path.GetFileNameWithoutExtension(args[0])}_{session.Session.GetStartTime().GetDateTime().ToString("yyyyMMddHHmmss")}_{session.Session.GetSport()}_Lengths.csv"); - - using (StreamWriter outputFile = new StreamWriter(lengthsPath)) - { - outputFile.WriteLine(lengthsCSV); - } - - Console.WriteLine($"The file {lengthsPath} has been saved."); - } - } - - // How are the sensor batteries? - var deviceInfos = activityParser.DevicesWhereBatteryStatusIsLow(); - foreach (DeviceInfoMesg info in deviceInfos) - { - Console.WriteLine($"Device Type {info.GetAntplusDeviceType()} has a low battery."); - } - } - catch (Exception ex) - { - Console.WriteLine($"Exception {ex}"); - } - } - } -} diff --git a/src/Garmin/FitSdk/Cookbook/ActivityDecode/SessionMessages.cs b/src/Garmin/FitSdk/Cookbook/ActivityDecode/SessionMessages.cs deleted file mode 100644 index 1f6610ce1..000000000 --- a/src/Garmin/FitSdk/Cookbook/ActivityDecode/SessionMessages.cs +++ /dev/null @@ -1,43 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using System.Collections.Generic; -using Dynastream.Fit; - -public class SessionMessages -{ - public ActivityMesg Activity; - public List ClimbPros = new List(); - public List DeviceInfos = new List(); - public List Events = new List(); - public FileIdMesg FileId; - public List Laps = new List(); - public List Lengths = new List(); - public List Records = new List(); - public HashSet RecordFieldNames = new HashSet(); - public HashSet RecordDeveloperFieldNames = new HashSet(); - public List SegmentLaps = new List(); - public SessionMesg Session; - public UserProfileMesg UserProfile; - public WorkoutMesg Workout; - public List WorkoutSteps = new List(); - public ZonesTargetMesg ZonesTarget; - - public List TimerEvents = new List(); - public List FrontGearChangeEvents = new List(); - public List RearGearChangeEvents = new List(); - public List RiderPositionChangeEvents = new List(); - - public SessionMessages(SessionMesg session) - { - Session = session; - } -} \ No newline at end of file diff --git a/src/Garmin/FitSdk/Cookbook/ActivityEncode/.vscode/extensions.json b/src/Garmin/FitSdk/Cookbook/ActivityEncode/.vscode/extensions.json deleted file mode 100644 index 8c76df3fe..000000000 --- a/src/Garmin/FitSdk/Cookbook/ActivityEncode/.vscode/extensions.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - // See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations. - // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp - - // List of extensions which should be recommended for users of this workspace. - "recommendations": [ - "ms-dotnettools.csharp" - ], - // List of extensions recommended by VS Code that should not be recommended for users of this workspace. - "unwantedRecommendations": [ - - ] -} \ No newline at end of file diff --git a/src/Garmin/FitSdk/Cookbook/ActivityEncode/.vscode/launch.json b/src/Garmin/FitSdk/Cookbook/ActivityEncode/.vscode/launch.json deleted file mode 100644 index 0e9683a02..000000000 --- a/src/Garmin/FitSdk/Cookbook/ActivityEncode/.vscode/launch.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - // Use IntelliSense to find out which attributes exist for C# debugging - // Use hover for the description of the existing attributes - // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md - "version": "0.2.0", - "configurations": [ - { - "name": ".NET Core Launch (console)", - "type": "coreclr", - "request": "launch", - "preLaunchTask": "build", - // If you have changed target frameworks, make sure to update the program path. - "program": "${workspaceFolder}/bin/Debug/netcoreapp3.1/ActivityEncode.dll", - "args": [], - "cwd": "${workspaceFolder}", - // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console - "console": "internalConsole", - "stopAtEntry": false - }, - { - "name": ".NET Core Attach", - "type": "coreclr", - "request": "attach", - "processId": "${command:pickProcess}" - } - ] -} \ No newline at end of file diff --git a/src/Garmin/FitSdk/Cookbook/ActivityEncode/.vscode/tasks.json b/src/Garmin/FitSdk/Cookbook/ActivityEncode/.vscode/tasks.json deleted file mode 100644 index 5c455a310..000000000 --- a/src/Garmin/FitSdk/Cookbook/ActivityEncode/.vscode/tasks.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "version": "2.0.0", - "tasks": [ - { - "label": "build", - "command": "dotnet", - "type": "process", - "args": [ - "build", - "${workspaceFolder}/ActivityEncode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - }, - { - "label": "publish", - "command": "dotnet", - "type": "process", - "args": [ - "publish", - "${workspaceFolder}/ActivityEncode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - }, - { - "label": "watch", - "command": "dotnet", - "type": "process", - "args": [ - "watch", - "run", - "${workspaceFolder}/ActivityEncode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - } - ] -} \ No newline at end of file diff --git a/src/Garmin/FitSdk/Cookbook/ActivityEncode/ActivityEncode.csproj b/src/Garmin/FitSdk/Cookbook/ActivityEncode/ActivityEncode.csproj deleted file mode 100644 index 2700d3e31..000000000 --- a/src/Garmin/FitSdk/Cookbook/ActivityEncode/ActivityEncode.csproj +++ /dev/null @@ -1,12 +0,0 @@ - - - - Exe - netcoreapp3.1 - - - - ..\..\Dynastream.Fit.Portable.dll - - - diff --git a/src/Garmin/FitSdk/Cookbook/ActivityEncode/Program.cs b/src/Garmin/FitSdk/Cookbook/ActivityEncode/Program.cs deleted file mode 100644 index 48c4c2fe6..000000000 --- a/src/Garmin/FitSdk/Cookbook/ActivityEncode/Program.cs +++ /dev/null @@ -1,433 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using System; -using System.Collections.Generic; -using System.IO; -using Dynastream.Fit; - -namespace ActivityEncode -{ - class Program - { - static void Main(string[] args) - { - CreateTimeBasedActivity(); - CreateLapSwimActivity(); - } - static public void CreateTimeBasedActivity() - { - const double TwoPI = Math.PI * 2.0; - const double SemicirclesPerMeter = 107.173; - const string FileName = "ActivityEncodeRecipe.fit"; - - var messages = new List(); - - // The starting timestamp for the activity - var startTime = new Dynastream.Fit.DateTime(System.DateTime.UtcNow); - - // Timer Events are a BEST PRACTICE for FIT ACTIVITY files - var eventMesgStart = new EventMesg(); - eventMesgStart.SetTimestamp(startTime); - eventMesgStart.SetEvent(Event.Timer); - eventMesgStart.SetEventType(EventType.Start); - messages.Add(eventMesgStart); - - // Create the Developer Id message for the developer data fields. - var developerIdMesg = new DeveloperDataIdMesg(); - // It is a BEST PRACTICE to reuse the same Guid for all FIT files created by your platform - byte[] appId = new Guid("00010203-0405-0607-0809-0A0B0C0D0E0F").ToByteArray(); - for (int i = 0; i < appId.Length; i++) - { - developerIdMesg.SetApplicationId(i, appId[i]); - } - developerIdMesg.SetDeveloperDataIndex(0); - developerIdMesg.SetApplicationVersion(110); - messages.Add(developerIdMesg); - - // Create the Developer Data Field Descriptions - var doughnutsFieldDescMesg = new FieldDescriptionMesg(); - doughnutsFieldDescMesg.SetDeveloperDataIndex(0); - doughnutsFieldDescMesg.SetFieldDefinitionNumber(0); - doughnutsFieldDescMesg.SetFitBaseTypeId(FitBaseType.Float32); - doughnutsFieldDescMesg.SetFieldName(0, "Doughnuts Earned"); - doughnutsFieldDescMesg.SetUnits(0, "doughnuts"); - doughnutsFieldDescMesg.SetNativeMesgNum(MesgNum.Session); - messages.Add(doughnutsFieldDescMesg); - - FieldDescriptionMesg hrFieldDescMesg = new FieldDescriptionMesg(); - hrFieldDescMesg.SetDeveloperDataIndex(0); - hrFieldDescMesg.SetFieldDefinitionNumber(1); - hrFieldDescMesg.SetFitBaseTypeId(FitBaseType.Uint8); - hrFieldDescMesg.SetFieldName(0, "Heart Rate"); - hrFieldDescMesg.SetUnits(0, "bpm"); - hrFieldDescMesg.SetNativeFieldNum(RecordMesg.FieldDefNum.HeartRate); - hrFieldDescMesg.SetNativeMesgNum(MesgNum.Record); - messages.Add(hrFieldDescMesg); - - // Every FIT ACTIVITY file MUST contain Record messages - var timestamp = new Dynastream.Fit.DateTime(startTime); - - // Create one hour (3600 seconds) of Record data - for (uint i = 0; i <= 3600; i++) - { - // Create a new Record message and set the timestamp - var recordMesg = new RecordMesg(); - recordMesg.SetTimestamp(timestamp); - - // Fake Record Data of Various Signal Patterns - recordMesg.SetDistance(i); // Ramp - recordMesg.SetSpeed(1); // Flatline - recordMesg.SetHeartRate((byte)((Math.Sin(TwoPI * (0.01 * i + 10)) + 1.0) * 127.0)); // Sine - recordMesg.SetCadence((byte)(i % 255)); // Sawtooth - recordMesg.SetPower((ushort)((i % 255) < 127 ? 150 : 250)); // Square - recordMesg.SetAltitude((float)Math.Abs(((double)i % 255.0) - 127.0)); // Triangle - recordMesg.SetPositionLat(0); - recordMesg.SetPositionLong((int)Math.Round(i * SemicirclesPerMeter)); - - // Add a Developer Field to the Record Message - var hrDevField = new DeveloperField(hrFieldDescMesg, developerIdMesg); - recordMesg.SetDeveloperField(hrDevField); - hrDevField.SetValue((byte)((Math.Sin(TwoPI * (0.01 * i + 10)) + 1.0) * 127.0)); // Sine - - // Write the Rercord message to the output stream - messages.Add(recordMesg); - - // Increment the timestamp by one second - timestamp.Add(1); - } - - // Timer Events are a BEST PRACTICE for FIT ACTIVITY files - var eventMesgStop = new EventMesg(); - eventMesgStop.SetTimestamp(timestamp); - eventMesgStop.SetEvent(Event.Timer); - eventMesgStop.SetEventType(EventType.StopAll); - messages.Add(eventMesgStop); - - // Every FIT ACTIVITY file MUST contain at least one Lap message - var lapMesg = new LapMesg(); - lapMesg.SetMessageIndex(0); - lapMesg.SetTimestamp(timestamp); - lapMesg.SetStartTime(startTime); - lapMesg.SetTotalElapsedTime(timestamp.GetTimeStamp() - startTime.GetTimeStamp()); - lapMesg.SetTotalTimerTime(timestamp.GetTimeStamp() - startTime.GetTimeStamp()); - messages.Add(lapMesg); - - // Every FIT ACTIVITY file MUST contain at least one Session message - var sessionMesg = new SessionMesg(); - sessionMesg.SetMessageIndex(0); - sessionMesg.SetTimestamp(timestamp); - sessionMesg.SetStartTime(startTime); - sessionMesg.SetTotalElapsedTime(timestamp.GetTimeStamp() - startTime.GetTimeStamp()); - sessionMesg.SetTotalTimerTime(timestamp.GetTimeStamp() - startTime.GetTimeStamp()); - sessionMesg.SetSport(Sport.StandUpPaddleboarding); - sessionMesg.SetSubSport(SubSport.Generic); - sessionMesg.SetFirstLapIndex(0); - sessionMesg.SetNumLaps(1); - - // Add a Developer Field to the Session message - var doughnutsEarnedDevField = new DeveloperField(doughnutsFieldDescMesg, developerIdMesg); - doughnutsEarnedDevField.SetValue(sessionMesg.GetTotalElapsedTime() / 1200.0f); - sessionMesg.SetDeveloperField(doughnutsEarnedDevField); - messages.Add(sessionMesg); - - // Every FIT ACTIVITY file MUST contain EXACTLY one Activity message - var activityMesg = new ActivityMesg(); - activityMesg.SetTimestamp(timestamp); - activityMesg.SetNumSessions(1); - var timezoneOffset = (int)TimeZoneInfo.Local.BaseUtcOffset.TotalSeconds; - activityMesg.SetLocalTimestamp((uint)((int)timestamp.GetTimeStamp() + timezoneOffset)); - activityMesg.SetTotalTimerTime(timestamp.GetTimeStamp() - startTime.GetTimeStamp()); - messages.Add(activityMesg); - - CreateActivityFile(messages, FileName, startTime); - - } - - static public void CreateLapSwimActivity() - { - // Example Swim Data representing a 500 yard pool swim using different strokes and drills. - var swimData = new List>() - { - new Dictionary(){{"type", "Active"},{"duration",20U},{"stroke","Freestyle"},{"strokes",30U}}, - new Dictionary(){{"type", "Active"},{"duration",25U},{"stroke","Freestyle"},{"strokes",20U}}, - new Dictionary(){{"type", "Active"},{"duration",30U},{"stroke","Freestyle"},{"strokes",10U}}, - new Dictionary(){{"type", "Active"},{"duration",35U},{"stroke","Freestyle"},{"strokes",20U}}, - new Dictionary(){{"type", "Lap"}}, - new Dictionary(){{"type", "Idle"},{"duration",60U}}, - new Dictionary(){{"type", "Lap"}}, - new Dictionary(){{"type", "Active"},{"duration",20U},{"stroke","Backstroke"},{"strokes",30U}}, - new Dictionary(){{"type", "Active"},{"duration",25U},{"stroke","Backstroke"},{"strokes",20U}}, - new Dictionary(){{"type", "Active"},{"duration",30U},{"stroke","Backstroke"},{"strokes",10U}}, - new Dictionary(){{"type", "Active"},{"duration",35U},{"stroke","Backstroke"},{"strokes",20U}}, - new Dictionary(){{"type", "Lap"}}, - new Dictionary(){{"type", "Idle"},{"duration",60U}}, - new Dictionary(){{"type", "Lap"}}, - new Dictionary(){{"type", "Active"},{"duration",20U},{"stroke","Breaststroke"},{"strokes",30U}}, - new Dictionary(){{"type", "Active"},{"duration",25U},{"stroke","Breaststroke"},{"strokes",20U}}, - new Dictionary(){{"type", "Active"},{"duration",30U},{"stroke","Breaststroke"},{"strokes",10U}}, - new Dictionary(){{"type", "Active"},{"duration",35U},{"stroke","Breaststroke"},{"strokes",20U}}, - new Dictionary(){{"type", "Lap"}}, - new Dictionary(){{"type", "Idle"},{"duration",60U}}, - new Dictionary(){{"type", "Lap"}}, - new Dictionary(){{"type", "Active"},{"duration",20U},{"stroke","Butterfly"},{"strokes",30U}}, - new Dictionary(){{"type", "Active"},{"duration",25U},{"stroke","Butterfly"},{"strokes",20U}}, - new Dictionary(){{"type", "Active"},{"duration",30U},{"stroke","Butterfly"},{"strokes",10U}}, - new Dictionary(){{"type", "Active"},{"duration",35U},{"stroke","Butterfly"},{"strokes",20U}}, - new Dictionary(){{"type", "Lap"}}, - new Dictionary(){{"type", "Idle"},{"duration",60U}}, - new Dictionary(){{"type", "Lap"}}, - new Dictionary(){{"type", "Active"},{"duration",40U},{"stroke","Drill"}}, - new Dictionary(){{"type", "Active"},{"duration",40U},{"stroke","Drill"}}, - new Dictionary(){{"type", "Active"},{"duration",40U},{"stroke","Drill"}}, - new Dictionary(){{"type", "Active"},{"duration",40U},{"stroke","Drill"}}, - new Dictionary(){{"type", "Lap"}}, - }; - - const string FileName = "ActivityEncodeRecipeLapSwim.fit"; - var messages = new List(); - - // The starting timestamp for the activity - var startTime = new Dynastream.Fit.DateTime(System.DateTime.UtcNow); - - - // Timer Events are a BEST PRACTICE for FIT ACTIVITY files - var eventMesgStart = new EventMesg(); - eventMesgStart.SetTimestamp(startTime); - eventMesgStart.SetEvent(Event.Timer); - eventMesgStart.SetEventType(EventType.Start); - messages.Add(eventMesgStart); - - // - // Create a Length or Lap message for each item in the sample swim data. Calculate - // distance, duration, and stroke count for each lap and the overall session. - // - - // Session Accumulators - uint sessionTotalElapsedTime = 0; - float sessionDistance = 0; - ushort sessionNumLengths = 0; - ushort sessionNumActiveLengths = 0; - ushort sessionTotalStrokes = 0; - ushort sessionNumLaps = 0; - - // Lap accumulators - uint lapTotalElapsedTime = 0; - float lapDistance = 0; - ushort lapNumActiveLengths = 0; - ushort lapNumLengths = 0; - ushort lapFirstLengthIndex = 0; - ushort lapTotalStrokes = 0; - var lapStartTime = new Dynastream.Fit.DateTime(startTime); - - var poolLength = 22.86f; - var poolLengthUnit = DisplayMeasure.Statute; - var timestamp = new Dynastream.Fit.DateTime(startTime); - ushort messageIndex = 0; - - foreach (var swimLength in swimData) - { - string type = (string)swimLength["type"]; - - if (type.Equals("Lap")) - { - // Create a Lap message, set its fields, and write it to the file - var lapMesg = new LapMesg(); - lapMesg.SetMessageIndex(sessionNumLaps); - lapMesg.SetTimestamp(timestamp); - lapMesg.SetStartTime(lapStartTime); - lapMesg.SetTotalElapsedTime(lapTotalElapsedTime); - lapMesg.SetTotalTimerTime(lapTotalElapsedTime); - lapMesg.SetTotalDistance(lapDistance); - lapMesg.SetFirstLengthIndex(lapFirstLengthIndex); - lapMesg.SetNumActiveLengths(lapNumActiveLengths); - lapMesg.SetNumLengths(lapNumLengths); - lapMesg.SetTotalStrokes(lapTotalStrokes); - lapMesg.SetAvgStrokeDistance(lapDistance / lapTotalStrokes); - lapMesg.SetSport(Sport.Swimming); - lapMesg.SetSubSport(SubSport.LapSwimming); - messages.Add(lapMesg); - - sessionNumLaps++; - - // Reset the Lap accumulators - lapFirstLengthIndex = messageIndex; - lapNumActiveLengths = 0; - lapNumLengths = 0; - lapTotalElapsedTime = 0; - lapDistance = 0; - lapTotalStrokes = 0; - lapStartTime = new Dynastream.Fit.DateTime(timestamp); - } - else - { - uint duration = (uint)swimLength["duration"]; - var lengthType = (LengthType)Enum.Parse(typeof(LengthType), type); - - // Create a Length message and its fields - var lengthMesg = new LengthMesg(); - lengthMesg.SetMessageIndex(messageIndex++); - lengthMesg.SetStartTime(timestamp); - lengthMesg.SetTotalElapsedTime(duration); - lengthMesg.SetTotalTimerTime(duration); - lengthMesg.SetLengthType(lengthType); - - timestamp.Add(duration); - lengthMesg.SetTimestamp(timestamp); - - // Create the Record message that pairs with the Length Message - var recordMesg = new RecordMesg(); - recordMesg.SetTimestamp(timestamp); - recordMesg.SetDistance(sessionDistance + poolLength); - - // Is this an Active Length? - if (lengthType == LengthType.Active) - { - // Get the Active data from the model - string stroke = swimLength.ContainsKey("stroke") ? (String)swimLength["stroke"] : "Freestyle"; - uint strokes = swimLength.ContainsKey("strokes") ? (uint)swimLength["strokes"] : 0; - SwimStroke swimStroke = (SwimStroke)Enum.Parse(typeof(SwimStroke), stroke); - - // Set the Active data on the Length Message - lengthMesg.SetAvgSpeed(poolLength / (float)duration); - lengthMesg.SetSwimStroke(swimStroke); - - if (strokes > 0) - { - lengthMesg.SetTotalStrokes((ushort)strokes); - lengthMesg.SetAvgSwimmingCadence((byte)(strokes * 60U / duration)); - } - - // Set the Active data on the Record Message - recordMesg.SetSpeed(poolLength / (float)duration); - if (strokes > 0) - { - recordMesg.SetCadence((byte)((strokes * 60U) / duration)); - } - - // Increment the "Active" accumulators - sessionNumActiveLengths++; - lapNumActiveLengths++; - sessionDistance += poolLength; - lapDistance += poolLength; - sessionTotalStrokes += (ushort)strokes; - lapTotalStrokes += (ushort)strokes; - } - - // Write the messages to the file - messages.Add(recordMesg); - messages.Add(lengthMesg); - - // Increment the "Total" accumulators - sessionTotalElapsedTime += duration; - lapTotalElapsedTime += duration; - sessionNumLengths++; - lapNumLengths++; - } - } - - // Timer Events are a BEST PRACTICE for FIT ACTIVITY files - var eventMesgStop = new EventMesg(); - eventMesgStop.SetTimestamp(timestamp); - eventMesgStop.SetEvent(Event.Timer); - eventMesgStop.SetEventType(EventType.StopAll); - messages.Add(eventMesgStop); - - // Every FIT ACTIVITY file MUST contain at least one Session message - var sessionMesg = new SessionMesg(); - sessionMesg.SetMessageIndex(0); - sessionMesg.SetTimestamp(timestamp); - sessionMesg.SetStartTime(startTime); - sessionMesg.SetTotalElapsedTime(sessionTotalElapsedTime); - sessionMesg.SetTotalTimerTime(sessionTotalElapsedTime); - sessionMesg.SetTotalDistance(sessionDistance); - sessionMesg.SetSport(Sport.Swimming); - sessionMesg.SetSubSport(SubSport.LapSwimming); - sessionMesg.SetFirstLapIndex(0); - sessionMesg.SetNumLaps(sessionNumLaps); - sessionMesg.SetPoolLength(poolLength); - sessionMesg.SetPoolLengthUnit(poolLengthUnit); - sessionMesg.SetNumLengths(sessionNumLengths); - sessionMesg.SetNumActiveLengths(sessionNumActiveLengths); - sessionMesg.SetTotalStrokes(sessionTotalStrokes); - sessionMesg.SetAvgStrokeDistance(sessionDistance / sessionTotalStrokes); - messages.Add(sessionMesg); - - // Every FIT ACTIVITY file MUST contain EXACTLY one Activity message - var activityMesg = new ActivityMesg(); - activityMesg.SetTimestamp(timestamp); - activityMesg.SetNumSessions(1); - var timezoneOffset = (int)TimeZoneInfo.Local.BaseUtcOffset.TotalSeconds; - activityMesg.SetLocalTimestamp((uint)((int)timestamp.GetTimeStamp() + timezoneOffset)); - activityMesg.SetTotalTimerTime(sessionTotalElapsedTime); - messages.Add(activityMesg); - - CreateActivityFile(messages, FileName, startTime); - } - - static void CreateActivityFile(List messages, String filename, Dynastream.Fit.DateTime startTime) - { - // The combination of file type, manufacturer id, product id, and serial number should be unique. - // When available, a non-random serial number should be used. - Dynastream.Fit.File fileType = Dynastream.Fit.File.Activity; - ushort manufacturerId = Manufacturer.Development; - ushort productId = 0; - float softwareVersion = 1.0f; - - Random random = new Random(); - uint serialNumber = (uint)random.Next(); - - // Every FIT file MUST contain a File ID message - var fileIdMesg = new FileIdMesg(); - fileIdMesg.SetType(fileType); - fileIdMesg.SetManufacturer(manufacturerId); - fileIdMesg.SetProduct(productId); - fileIdMesg.SetTimeCreated(startTime); - fileIdMesg.SetSerialNumber(serialNumber); - - // A Device Info message is a BEST PRACTICE for FIT ACTIVITY files - var deviceInfoMesg = new DeviceInfoMesg(); - deviceInfoMesg.SetDeviceIndex(DeviceIndex.Creator); - deviceInfoMesg.SetManufacturer(Manufacturer.Development); - deviceInfoMesg.SetProduct(productId); - deviceInfoMesg.SetProductName("FIT Cookbook"); // Max 20 Chars - deviceInfoMesg.SetSerialNumber(serialNumber); - deviceInfoMesg.SetSoftwareVersion(softwareVersion); - deviceInfoMesg.SetTimestamp(startTime); - - // Create the output stream, this can be any type of stream, including a file or memory stream. Must have read/write access - FileStream fitDest = new FileStream(filename, FileMode.Create, FileAccess.ReadWrite, FileShare.Read); - - // Create a FIT Encode object - Encode encoder = new Encode(ProtocolVersion.V20); - - // Write the FIT header to the output stream - encoder.Open(fitDest); - - // Write the messages to the file, in the proper sequence - encoder.Write(fileIdMesg); - encoder.Write(deviceInfoMesg); - - foreach (Mesg message in messages) - { - encoder.Write(message); - } - - // Update the data size in the header and calculate the CRC - encoder.Close(); - - // Close the output stream - fitDest.Close(); - - Console.WriteLine($"Encoded FIT file {fitDest.Name}"); - } - } -} diff --git a/src/Garmin/FitSdk/Cookbook/CourseEncode/.vscode/extensions.json b/src/Garmin/FitSdk/Cookbook/CourseEncode/.vscode/extensions.json deleted file mode 100644 index 2ec794d54..000000000 --- a/src/Garmin/FitSdk/Cookbook/CourseEncode/.vscode/extensions.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - // See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations. - // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp - - // List of extensions which should be recommended for users of this workspace. - "recommendations": [ - "ms-dotnettools.csharp", - ], - // List of extensions recommended by VS Code that should not be recommended for users of this workspace. - "unwantedRecommendations": [ - - ] -} \ No newline at end of file diff --git a/src/Garmin/FitSdk/Cookbook/CourseEncode/.vscode/launch.json b/src/Garmin/FitSdk/Cookbook/CourseEncode/.vscode/launch.json deleted file mode 100644 index 3332041bc..000000000 --- a/src/Garmin/FitSdk/Cookbook/CourseEncode/.vscode/launch.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - // Use IntelliSense to find out which attributes exist for C# debugging - // Use hover for the description of the existing attributes - // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md - "version": "0.2.0", - "configurations": [ - { - "name": ".NET Core Launch (console)", - "type": "coreclr", - "request": "launch", - "preLaunchTask": "build", - // If you have changed target frameworks, make sure to update the program path. - "program": "${workspaceFolder}/bin/Debug/netcoreapp3.1/CourseEncode.dll", - "args": [], - "cwd": "${workspaceFolder}", - // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console - "console": "internalConsole", - "stopAtEntry": false - }, - { - "name": ".NET Core Attach", - "type": "coreclr", - "request": "attach", - "processId": "${command:pickProcess}" - } - ] -} \ No newline at end of file diff --git a/src/Garmin/FitSdk/Cookbook/CourseEncode/.vscode/tasks.json b/src/Garmin/FitSdk/Cookbook/CourseEncode/.vscode/tasks.json deleted file mode 100644 index e791fefee..000000000 --- a/src/Garmin/FitSdk/Cookbook/CourseEncode/.vscode/tasks.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "version": "2.0.0", - "tasks": [ - { - "label": "build", - "command": "dotnet", - "type": "process", - "args": [ - "build", - "${workspaceFolder}/CourseEncode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - }, - { - "label": "publish", - "command": "dotnet", - "type": "process", - "args": [ - "publish", - "${workspaceFolder}/CourseEncode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - }, - { - "label": "watch", - "command": "dotnet", - "type": "process", - "args": [ - "watch", - "run", - "${workspaceFolder}/CourseEncode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - } - ] -} \ No newline at end of file diff --git a/src/Garmin/FitSdk/Cookbook/CourseEncode/CourseEncode.csproj b/src/Garmin/FitSdk/Cookbook/CourseEncode/CourseEncode.csproj deleted file mode 100644 index 795570060..000000000 --- a/src/Garmin/FitSdk/Cookbook/CourseEncode/CourseEncode.csproj +++ /dev/null @@ -1,12 +0,0 @@ - - - - Exe - netcoreapp3.1 - - - - ..\..\Dynastream.Fit.Portable.dll - - - diff --git a/src/Garmin/FitSdk/Cookbook/CourseEncode/Program.cs b/src/Garmin/FitSdk/Cookbook/CourseEncode/Program.cs deleted file mode 100644 index 3fe7e7956..000000000 --- a/src/Garmin/FitSdk/Cookbook/CourseEncode/Program.cs +++ /dev/null @@ -1,151 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using System; -using System.Collections.Generic; -using System.IO; -using Dynastream.Fit; - -namespace CourseEncode -{ - class Program - { - public const ushort ProductId = 0; - - static void Main(string[] args) - { - EncodeCourse(); - } - - public static void EncodeCourse() - { - const string filename = "CourseEncodeRecipe.fit"; - - // Example Record Data Defining a Course - var courseData = new List>() - { - new Dictionary(){{"timestamp",961262849U},{"position_lat",463583114},{"position_long",-1131028903},{"altitude",329f},{"distance",0f},{"speed",0f}}, - new Dictionary(){{"timestamp",961262855U},{"position_lat",463583127},{"position_long",-1131031938},{"altitude",328.6f},{"distance",22.03f},{"speed",3.0f}}, - new Dictionary(){{"timestamp",961262869U},{"position_lat",463583152},{"position_long",-1131038159},{"altitude",327.6f},{"distance",67.29f},{"speed",3.0f}}, - new Dictionary(){{"timestamp",961262876U},{"position_lat",463583164},{"position_long",-1131041346},{"altitude",327f},{"distance",90.52f},{"speed",3.0f}}, - new Dictionary(){{"timestamp",961262876U},{"position_lat",463583164},{"position_long",-1131041319},{"altitude",327f},{"distance",90.72f},{"speed",3.0f}}, - new Dictionary(){{"timestamp",961262891U},{"position_lat",463588537},{"position_long",-1131041383},{"altitude",327f},{"distance",140.72f},{"speed",3.0f}}, - new Dictionary(){{"timestamp",961262891U},{"position_lat",463588549},{"position_long",-1131041383},{"altitude",327f},{"distance",140.82f},{"speed",3.0f}}, - new Dictionary(){{"timestamp",961262897U},{"position_lat",463588537},{"position_long",-1131038293},{"altitude",327.6f},{"distance",163.26f},{"speed",3.0f}}, - new Dictionary(){{"timestamp",961262911U},{"position_lat",463588512},{"position_long",-1131032041},{"altitude",328.4f},{"distance",208.75f},{"speed",3.0f}}, - new Dictionary(){{"timestamp",961262918U},{"position_lat",463588499},{"position_long",-1131028879},{"altitude",329f},{"distance",231.8f},{"speed",3.0f}}, - new Dictionary(){{"timestamp",961262918U},{"position_lat",463588499},{"position_long",-1131028903},{"altitude",329f},{"distance",231.97f},{"speed",3.0f}}, - new Dictionary(){{"timestamp",961262933U},{"position_lat",463583127},{"position_long",-1131028903},{"altitude",329f},{"distance",281.96f},{"speed",3.0f}}, - }; - - // Create the output stream, this can be any type of stream, including a file or memory stream. Must have read/write access. - FileStream fitDest = new FileStream(filename, FileMode.Create, FileAccess.ReadWrite, FileShare.Read); - - // Create a FIT Encode object - Encode encoder = new Encode(ProtocolVersion.V10); - - // Write the FIT header to the output stream - encoder.Open(fitDest); - - // Reference points for the course - var firstRecord = courseData[0]; - var lastRecord = courseData[courseData.Count - 1]; - var halfwayRecord = courseData[courseData.Count / 2]; - var startTimestamp = (uint)firstRecord["timestamp"]; - var endTimestamp = (uint)lastRecord["timestamp"]; - var startDateTime = new Dynastream.Fit.DateTime(startTimestamp); - var endDateTime = new Dynastream.Fit.DateTime(endTimestamp); - - // Every FIT file MUST contain a File ID message - var fileIdMesg = new FileIdMesg(); - fileIdMesg.SetType(Dynastream.Fit.File.Course); - fileIdMesg.SetManufacturer(Manufacturer.Development); - fileIdMesg.SetProduct(ProductId); - fileIdMesg.SetTimeCreated(startDateTime); - fileIdMesg.SetSerialNumber(startDateTime.GetTimeStamp()); - encoder.Write(fileIdMesg); - - // Every FIT file MUST contain a Course message - var courseMesg = new CourseMesg(); - courseMesg.SetName("Garmin Field Day"); - courseMesg.SetSport(Sport.Cycling); - encoder.Write(courseMesg); - - // Every FIT COURSE file MUST contain a Lap message - var lapMesg = new LapMesg(); - lapMesg.SetStartTime(startDateTime); - lapMesg.SetTimestamp(startDateTime); - lapMesg.SetTotalElapsedTime(endTimestamp - startTimestamp); - lapMesg.SetTotalTimerTime(endTimestamp - startTimestamp); - lapMesg.SetStartPositionLat((int)firstRecord["position_lat"]); - lapMesg.SetStartPositionLong((int)firstRecord["position_long"]); - lapMesg.SetEndPositionLat((int)lastRecord["position_lat"]); - lapMesg.SetEndPositionLong((int)lastRecord["position_long"]); - lapMesg.SetTotalDistance((float)lastRecord["distance"]); - encoder.Write(lapMesg); - - // Timer Events are REQUIRED for FIT COURSE files - var eventMesgStart = new EventMesg(); - eventMesgStart.SetTimestamp(startDateTime); - eventMesgStart.SetEvent(Event.Timer); - eventMesgStart.SetEventType(EventType.Start); - encoder.Write(eventMesgStart); - - // Every FIT COURSE file MUST contain Record messages - foreach (var record in courseData) - { - var timestamp = (uint)record["timestamp"]; - var latitude = (int)record["position_lat"]; - var longitude = (int)record["position_long"]; - var distance = (float)record["distance"]; - var speed = (float)record["speed"]; - var altitude = (float)record["altitude"]; - - var recordMesg = new RecordMesg(); - recordMesg.SetTimestamp(new Dynastream.Fit.DateTime(timestamp)); - recordMesg.SetPositionLat(latitude); - recordMesg.SetPositionLong(longitude); - recordMesg.SetDistance(distance); - recordMesg.SetSpeed(speed); - recordMesg.SetAltitude(altitude); - encoder.Write(recordMesg); - - // Add a Course Point at the halfway point of the route - if (record == halfwayRecord) - { - var coursePointMesg = new CoursePointMesg(); - coursePointMesg.SetTimestamp(new Dynastream.Fit.DateTime(timestamp)); - coursePointMesg.SetName("Halfway"); - coursePointMesg.SetType(CoursePoint.Generic); - coursePointMesg.SetPositionLat(latitude); - coursePointMesg.SetPositionLong(longitude); - coursePointMesg.SetDistance(distance); - encoder.Write(coursePointMesg); - } - } - - // Timer Events are REQUIRED for FIT COURSE files - var eventMesgStop = new EventMesg(); - eventMesgStop.SetTimestamp(endDateTime); - eventMesgStop.SetEvent(Event.Timer); - eventMesgStop.SetEventType(EventType.StopAll); - encoder.Write(eventMesgStop); - - // Update the data size in the header and calculate the CRC - encoder.Close(); - - // Close the output stream - fitDest.Close(); - - Console.WriteLine($"Encoded FIT file {fitDest.Name}"); - } - } -} diff --git a/src/Garmin/FitSdk/Cookbook/WorkoutEncode/.vscode/extensions.json b/src/Garmin/FitSdk/Cookbook/WorkoutEncode/.vscode/extensions.json deleted file mode 100644 index 8c76df3fe..000000000 --- a/src/Garmin/FitSdk/Cookbook/WorkoutEncode/.vscode/extensions.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - // See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations. - // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp - - // List of extensions which should be recommended for users of this workspace. - "recommendations": [ - "ms-dotnettools.csharp" - ], - // List of extensions recommended by VS Code that should not be recommended for users of this workspace. - "unwantedRecommendations": [ - - ] -} \ No newline at end of file diff --git a/src/Garmin/FitSdk/Cookbook/WorkoutEncode/.vscode/launch.json b/src/Garmin/FitSdk/Cookbook/WorkoutEncode/.vscode/launch.json deleted file mode 100644 index 7ffbbcc81..000000000 --- a/src/Garmin/FitSdk/Cookbook/WorkoutEncode/.vscode/launch.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - // Use IntelliSense to find out which attributes exist for C# debugging - // Use hover for the description of the existing attributes - // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md - "version": "0.2.0", - "configurations": [ - { - "name": ".NET Core Launch (console)", - "type": "coreclr", - "request": "launch", - "preLaunchTask": "build", - // If you have changed target frameworks, make sure to update the program path. - "program": "${workspaceFolder}/bin/Debug/netcoreapp3.1/WorkoutEncode.dll", - "args": [], - "cwd": "${workspaceFolder}", - // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console - "console": "internalConsole", - "stopAtEntry": false - }, - { - "name": ".NET Core Attach", - "type": "coreclr", - "request": "attach", - "processId": "${command:pickProcess}" - } - ] - } \ No newline at end of file diff --git a/src/Garmin/FitSdk/Cookbook/WorkoutEncode/.vscode/tasks.json b/src/Garmin/FitSdk/Cookbook/WorkoutEncode/.vscode/tasks.json deleted file mode 100644 index b21e0977e..000000000 --- a/src/Garmin/FitSdk/Cookbook/WorkoutEncode/.vscode/tasks.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "version": "2.0.0", - "tasks": [ - { - "label": "build", - "command": "dotnet", - "type": "process", - "args": [ - "build", - "${workspaceFolder}/WorkoutEncode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - }, - { - "label": "publish", - "command": "dotnet", - "type": "process", - "args": [ - "publish", - "${workspaceFolder}/WorkoutEncode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - }, - { - "label": "watch", - "command": "dotnet", - "type": "process", - "args": [ - "watch", - "run", - "${workspaceFolder}/WorkoutEncode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - } - ] -} \ No newline at end of file diff --git a/src/Garmin/FitSdk/Cookbook/WorkoutEncode/Program.cs b/src/Garmin/FitSdk/Cookbook/WorkoutEncode/Program.cs deleted file mode 100644 index 5bbb8dfd7..000000000 --- a/src/Garmin/FitSdk/Cookbook/WorkoutEncode/Program.cs +++ /dev/null @@ -1,339 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// - -using System; -using System.Collections.Generic; -using System.IO; -using Dynastream.Fit; - -namespace WorkoutEncode -{ - class Program - { - static void Main(string[] args) - { - CreateBikeTempoWorkout(); - CreateRun800RepeatsWorkout(); - CreateCustomTargetValuesWorkout(); - CreatePoolSwimWorkout(); - } - - static void CreateBikeTempoWorkout() - { - var workoutSteps = new List(); - - workoutSteps.Add(CreateWorkoutStep(messageIndex: workoutSteps.Count, - durationType: WktStepDuration.Time, - durationValue: 600000, // milliseconds - targetType: WktStepTarget.HeartRate, - targetValue: 1, - intensity: Intensity.Warmup)); - - workoutSteps.Add(CreateWorkoutStep(messageIndex: workoutSteps.Count, - durationType: WktStepDuration.Time, - durationValue: 2400000, // milliseconds - targetType: WktStepTarget.Power, - targetValue: 3)); - - workoutSteps.Add(CreateWorkoutStep(messageIndex: workoutSteps.Count, - intensity: Intensity.Cooldown)); - - var workoutMesg = new WorkoutMesg(); - workoutMesg.SetWktName("Tempo Bike"); - workoutMesg.SetSport(Sport.Cycling); - workoutMesg.SetSubSport(SubSport.Invalid); - workoutMesg.SetNumValidSteps((ushort)workoutSteps.Count); - - CreateWorkout(workoutMesg, workoutSteps); - } - - - static void CreateRun800RepeatsWorkout() - { - var workoutSteps = new List(); - - workoutSteps.Add(CreateWorkoutStep(messageIndex: workoutSteps.Count, - durationType: WktStepDuration.Distance, - durationValue: 400000, // centimeters - targetType: WktStepTarget.HeartRate, - targetValue: 1, - intensity: Intensity.Warmup)); - - workoutSteps.Add(CreateWorkoutStep(messageIndex: workoutSteps.Count, - durationType: WktStepDuration.Distance, - durationValue: 80000, // centimeters - targetType: WktStepTarget.HeartRate, - targetValue: 4)); - - workoutSteps.Add(CreateWorkoutStep(messageIndex: workoutSteps.Count, - durationType: WktStepDuration.Distance, - durationValue: 20000, // centimeters - targetType: WktStepTarget.HeartRate, - targetValue: 2, - intensity: Intensity.Rest)); - - workoutSteps.Add(CreateWorkoutStepRepeat(messageIndex: workoutSteps.Count, repeatFrom: 1, repetitions: 5)); - - workoutSteps.Add(CreateWorkoutStep(messageIndex: workoutSteps.Count, - durationType: WktStepDuration.Distance, - durationValue: 100000, // centimeters - targetType: WktStepTarget.HeartRate, - targetValue: 2, - intensity: Intensity.Cooldown)); - - var workoutMesg = new WorkoutMesg(); - workoutMesg.SetWktName("Running 800m Repeats"); - workoutMesg.SetSport(Sport.Running); - workoutMesg.SetSubSport(SubSport.Invalid); - workoutMesg.SetNumValidSteps((ushort)workoutSteps.Count); - - CreateWorkout(workoutMesg, workoutSteps); - } - - static void CreateCustomTargetValuesWorkout() - { - var workoutSteps = new List(); - - workoutSteps.Add(CreateWorkoutStep(messageIndex: workoutSteps.Count, - durationType: WktStepDuration.Time, - durationValue: 600000, // milliseconds - targetType: WktStepTarget.HeartRate, - customTargetValueLow: 235, // 135 + 100 - customTargetValueHigh: 255, // 155 + 100 - intensity: Intensity.Warmup)); - - workoutSteps.Add(CreateWorkoutStep(messageIndex: workoutSteps.Count, - durationType: WktStepDuration.Time, - durationValue: 2400000, // milliseconds - targetType: WktStepTarget.Power, - customTargetValueLow: 1175, // 175 + 1000 - customTargetValueHigh: 1195)); // 195 + 1000 - - workoutSteps.Add(CreateWorkoutStep(messageIndex: workoutSteps.Count, - durationType: WktStepDuration.Time, - durationValue: 600000, // milliseconds - targetType: WktStepTarget.Speed, - customTargetValueLow: 5556, // 5.556 meters/second * 1000 - customTargetValueHigh: 6944, // 6.944 meters/second * 1000 - intensity: Intensity.Cooldown)); - - var workoutMesg = new WorkoutMesg(); - workoutMesg.SetWktName("Custom Target Values"); - workoutMesg.SetSport(Sport.Cycling); - workoutMesg.SetSubSport(SubSport.Invalid); - workoutMesg.SetNumValidSteps((ushort)workoutSteps.Count); - - CreateWorkout(workoutMesg, workoutSteps); - } - - static void CreatePoolSwimWorkout() - { - var workoutSteps = new List(); - - // Warm Up 200 yds - workoutSteps.Add(CreateWorkoutStepSwim(messageIndex: workoutSteps.Count, - distance: 182.88f, - intensity: Intensity.Warmup)); - // Rest until lap button pressed - workoutSteps.Add(CreateWorkoutStepSwimRest(messageIndex: workoutSteps.Count)); - - // Drill w/ kickboard 200 yds - workoutSteps.Add(CreateWorkoutStepSwim(messageIndex: workoutSteps.Count, - distance: 182.88f, - swimStroke: SwimStroke.Drill, - equipment: WorkoutEquipment.SwimKickboard)); - // Rest until lap button pressed - workoutSteps.Add(CreateWorkoutStepSwimRest(messageIndex: workoutSteps.Count)); - - // 5 x 100 yds on 2:00 - workoutSteps.Add(CreateWorkoutStepSwim(messageIndex: workoutSteps.Count, - distance: 91.44f, - swimStroke: SwimStroke.Freestyle)); - - workoutSteps.Add(CreateWorkoutStepSwimRest(messageIndex: workoutSteps.Count, - durationType: WktStepDuration.RepetitionTime, - durationTime: 120.0f)); - - workoutSteps.Add(CreateWorkoutStepRepeat(messageIndex: workoutSteps.Count, repeatFrom: 4, repetitions: 5)); - - // Rest until lap button pressed - workoutSteps.Add(CreateWorkoutStepSwimRest(messageIndex: workoutSteps.Count)); - - // Cool Down 100 yds - workoutSteps.Add(CreateWorkoutStepSwim(messageIndex: workoutSteps.Count, - distance: 91.44f, - intensity: Intensity.Cooldown)); - - var workoutMesg = new WorkoutMesg(); - workoutMesg.SetWktName("Pool Swim"); - workoutMesg.SetSport(Sport.Swimming); - workoutMesg.SetSubSport(SubSport.LapSwimming); - workoutMesg.SetPoolLength(22.86f); // 25 yards - workoutMesg.SetPoolLengthUnit(DisplayMeasure.Statute); - workoutMesg.SetNumValidSteps((ushort)workoutSteps.Count); - - CreateWorkout(workoutMesg, workoutSteps); - } - - static void CreateWorkout(WorkoutMesg workoutMesg, List workoutSteps) - { - // The combination of file type, manufacturer id, product id, and serial number should be unique. - // When available, a non-random serial number should be used. - Dynastream.Fit.File fileType = Dynastream.Fit.File.Workout; - ushort manufacturerId = Manufacturer.Development; - ushort productId = 0; - Random random = new Random(); - uint serialNumber = (uint)random.Next(); - - // Every FIT file MUST contain a File ID message - var fileIdMesg = new FileIdMesg(); - fileIdMesg.SetType(fileType); - fileIdMesg.SetManufacturer(manufacturerId); - fileIdMesg.SetProduct(productId); - fileIdMesg.SetTimeCreated(new Dynastream.Fit.DateTime(System.DateTime.UtcNow)); - fileIdMesg.SetSerialNumber(serialNumber); - - // Create the output stream, this can be any type of stream, including a file or memory stream. Must have read/write access - FileStream fitDest = new FileStream($"{workoutMesg.GetWktNameAsString().Replace(' ', '_')}.fit", FileMode.Create, FileAccess.ReadWrite, FileShare.Read); - - // Create a FIT Encode object - Encode encoder = new Encode(ProtocolVersion.V10); - - // Write the FIT header to the output stream - encoder.Open(fitDest); - - // Write the messages to the file, in the proper sequence - encoder.Write(fileIdMesg); - encoder.Write(workoutMesg); - - foreach (WorkoutStepMesg workoutStep in workoutSteps) - { - encoder.Write(workoutStep); - } - - // Update the data size in the header and calculate the CRC - encoder.Close(); - - // Close the output stream - fitDest.Close(); - - Console.WriteLine($"Encoded FIT file {fitDest.Name}"); - } - - private static WorkoutStepMesg CreateWorkoutStep(int messageIndex, String name = null, String notes = null, Intensity intensity = Intensity.Active, WktStepDuration durationType = WktStepDuration.Open, uint? durationValue = null, WktStepTarget targetType = WktStepTarget.Open, uint targetValue = 0, uint? customTargetValueLow = null, uint? customTargetValueHigh = null) - { - if (durationType == WktStepDuration.Invalid) - { - return null; - } - - var workoutStepMesg = new WorkoutStepMesg(); - workoutStepMesg.SetMessageIndex((ushort)messageIndex); - - if (name != null) - { - workoutStepMesg.SetWktStepName(name); - } - - if (notes != null) - { - workoutStepMesg.SetNotes(notes); - } - - workoutStepMesg.SetIntensity(intensity); - workoutStepMesg.SetDurationType(durationType); - - if (durationValue.HasValue) - { - workoutStepMesg.SetDurationValue(durationValue); - } - - if (targetType != WktStepTarget.Invalid && customTargetValueLow.HasValue && customTargetValueHigh.HasValue) - { - workoutStepMesg.SetTargetType(targetType); - workoutStepMesg.SetTargetValue(0); - workoutStepMesg.SetCustomTargetValueLow(customTargetValueLow); - workoutStepMesg.SetCustomTargetValueHigh(customTargetValueHigh); - } - else if (targetType != WktStepTarget.Invalid) - { - workoutStepMesg.SetTargetType(targetType); - workoutStepMesg.SetTargetValue(targetValue); - workoutStepMesg.SetCustomTargetValueLow(0); - workoutStepMesg.SetCustomTargetValueHigh(0); - } - - return workoutStepMesg; - } - - private static WorkoutStepMesg CreateWorkoutStepRepeat(int messageIndex, uint repeatFrom, uint repetitions) - { - var workoutStepMesg = new WorkoutStepMesg(); - workoutStepMesg.SetMessageIndex((ushort)messageIndex); - - workoutStepMesg.SetDurationType(WktStepDuration.RepeatUntilStepsCmplt); - workoutStepMesg.SetDurationValue(repeatFrom); - - workoutStepMesg.SetTargetType(WktStepTarget.Open); - workoutStepMesg.SetTargetValue(repetitions); - - return workoutStepMesg; - } - - private static WorkoutStepMesg CreateWorkoutStepSwim(int messageIndex, float distance, String name = null, String notes = null, Intensity intensity = Intensity.Active, SwimStroke swimStroke = SwimStroke.Invalid, WorkoutEquipment? equipment = null) - { - var workoutStepMesg = new WorkoutStepMesg(); - workoutStepMesg.SetMessageIndex((ushort)messageIndex); - - if (name != null) - { - workoutStepMesg.SetWktStepName(name); - } - - if (notes != null) - { - workoutStepMesg.SetNotes(notes); - } - - workoutStepMesg.SetIntensity(intensity); - - workoutStepMesg.SetDurationType(WktStepDuration.Distance); - workoutStepMesg.SetDurationDistance(distance); - - workoutStepMesg.SetTargetType(WktStepTarget.SwimStroke); - - workoutStepMesg.SetTargetStrokeType((byte)swimStroke); - - if (equipment.HasValue) - { - workoutStepMesg.SetEquipment(equipment); - } - - return workoutStepMesg; - } - - private static WorkoutStepMesg CreateWorkoutStepSwimRest(int messageIndex, WktStepDuration durationType = WktStepDuration.Open, float? durationTime = null) - { - var workoutStepMesg = new WorkoutStepMesg(); - workoutStepMesg.SetMessageIndex((ushort)messageIndex); - - workoutStepMesg.SetDurationType(durationType); - workoutStepMesg.SetDurationTime(durationTime); - - workoutStepMesg.SetTargetType(WktStepTarget.Open); - - workoutStepMesg.SetIntensity(Intensity.Rest); - - return workoutStepMesg; - } - } -} diff --git a/src/Garmin/FitSdk/Cookbook/WorkoutEncode/WorkoutEncode.csproj b/src/Garmin/FitSdk/Cookbook/WorkoutEncode/WorkoutEncode.csproj deleted file mode 100644 index 2700d3e31..000000000 --- a/src/Garmin/FitSdk/Cookbook/WorkoutEncode/WorkoutEncode.csproj +++ /dev/null @@ -1,12 +0,0 @@ - - - - Exe - netcoreapp3.1 - - - - ..\..\Dynastream.Fit.Portable.dll - - - diff --git a/src/Garmin/FitSdk/Cookbook/readme.md b/src/Garmin/FitSdk/Cookbook/readme.md deleted file mode 100644 index 2bf86504a..000000000 --- a/src/Garmin/FitSdk/Cookbook/readme.md +++ /dev/null @@ -1,19 +0,0 @@ -# FIT SDK Cookbook - -The FIT SDK Cookbook contains examples of using the FIT SDK to solve real-world problems. There are recipes for encoding and decoding Activity, Workout, and Course files; and recipes that provide tips for working with the FIT SDK. - -The example projects provided in the cookbook are C# console apps written with .NET Core 3.1. All example projects in the cookbook use Visual Studio Code and can be compiled and executed on Windows, Mac, and Linux systems. The source code for the recipes is included with the FIT SDK and is located at /path/to/fit/sdk/cs/cookbook. The recipes are written in C#, but the concepts can be applied to the Java and C++ versions of the FIT SDK. - -The Cookbook projects reference the precompiled Dynastream.Fit.Portable.dll that is included with the FIT SDK. If needed, the C# FIT SDK source files can be directly included in the projects. - -## Prerequisites - -The following prerequisites are required for working with the example projects found in the cookbook. - -1. [Visual Studio Code](https://code.visualstudio.com/) with the [C# extension](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) installed. -2. The [NET Core SDK v3.1](https://dotnet.microsoft.com/download/dotnet-core) or later installed. - -## Using the recipes - -1. Open project folder in Visual Studio Code and install any extensions that are suggested for the project. -2. To start debugging press F5, or from the menu choose Run -> Start debugging. \ No newline at end of file diff --git a/src/Garmin/FitSdk/Dynastream.Fit.Portable.dll b/src/Garmin/FitSdk/Dynastream.Fit.Portable.dll deleted file mode 100644 index 801c47fbf..000000000 Binary files a/src/Garmin/FitSdk/Dynastream.Fit.Portable.dll and /dev/null differ diff --git a/src/Garmin/FitSdk/Dynastream.Fit.Portable.pdb b/src/Garmin/FitSdk/Dynastream.Fit.Portable.pdb deleted file mode 100644 index c20e619b1..000000000 Binary files a/src/Garmin/FitSdk/Dynastream.Fit.Portable.pdb and /dev/null differ diff --git a/src/Garmin/FitSdk/Dynastream/Fit/AccumulatedField.cs b/src/Garmin/FitSdk/Dynastream/Fit/AccumulatedField.cs deleted file mode 100644 index 725b75fa3..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/AccumulatedField.cs +++ /dev/null @@ -1,54 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace Dynastream.Fit -{ - public class AccumulatedField - { - public int mesgNum; - public int destFieldNum; - private long lastValue; - private long accumulatedValue; - - public AccumulatedField(int mesgNum, int destFieldNum) - { - this.mesgNum = mesgNum; - this.destFieldNum = destFieldNum; - this.lastValue = 0; - this.accumulatedValue = 0; - } - - public long Accumulate(long value, int bits) - { - long mask = (1L << bits) - 1; - - accumulatedValue += (value - lastValue) & mask; - lastValue = value; - - return accumulatedValue; - } - - public long Set(long value) - { - accumulatedValue = value; - this.lastValue = value; - return accumulatedValue; - } - } -} diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Accumulator.cs b/src/Garmin/FitSdk/Dynastream/Fit/Accumulator.cs deleted file mode 100644 index b0e9d069e..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Accumulator.cs +++ /dev/null @@ -1,74 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace Dynastream.Fit -{ - public class Accumulator - { - List accumulatedFields; - - public Accumulator() - { - accumulatedFields = new List(); - } - - public void Set(int mesgNum, int destFieldNum, long value) - { - AccumulatedField accumField = null; - int i; - - for (i = 0; i < accumulatedFields.Count; i++) - { - accumField = accumulatedFields[i]; - - if ((accumField.mesgNum == mesgNum) && (accumField.destFieldNum == destFieldNum)) - break; - } - - if (i == accumulatedFields.Count) - { - accumField = new AccumulatedField(mesgNum, destFieldNum); - accumulatedFields.Add(accumField); - } - - accumField.Set(value); - } - - public long Accumulate(int mesgNum, int destFieldNum, long value, int bits) - { - AccumulatedField accumField = null; - int i; - for (i = 0; i < accumulatedFields.Count; i++) - { - accumField = accumulatedFields[i]; - - if ((accumField.mesgNum == mesgNum) && (accumField.destFieldNum == destFieldNum)) - break; - } - - if (i == accumulatedFields.Count) - { - accumField = new AccumulatedField(mesgNum, destFieldNum); - accumulatedFields.Add(accumField); - } - - return accumField.Accumulate(value, bits); - } - } -} diff --git a/src/Garmin/FitSdk/Dynastream/Fit/BufferedMesgBroadcaster.cs b/src/Garmin/FitSdk/Dynastream/Fit/BufferedMesgBroadcaster.cs deleted file mode 100644 index 34153eeaa..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/BufferedMesgBroadcaster.cs +++ /dev/null @@ -1,113 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -using Dynastream.Utility; -using Dynastream.Fit; - -namespace Dynastream.Fit -{ - public delegate void MesgBroadcastEventHandler(object sender, MesgBroadcastEventArgs e); - public delegate void IncomingMesgEventHandler(object sender, IncomingMesgEventArgs e); - - public class MesgBroadcastEventArgs : EventArgs - { - public List mesgs = null; - - public MesgBroadcastEventArgs() - { - } - - public MesgBroadcastEventArgs(List newMesgs) - { - mesgs = newMesgs; - } - } - - public class IncomingMesgEventArgs : EventArgs - { - public Mesg mesg = null; - - public IncomingMesgEventArgs() - { - } - - public IncomingMesgEventArgs(Mesg newMesg) - { - mesg = new Mesg(newMesg); - } - } - - /// - /// - /// BufferedMesgBroadcaster intercepts the incoming messages - /// from the given decode stream, buffers them, and offers - /// an opportunity to edit the messages before broadcasting - /// the messages to all registered listeners. - /// - /// - /// To edit the messages, an IMesgBroadcastPlugin must be - /// registered. All registered IMesgBroadcastPlugins are given - /// the opportunity to see each message as they are decoded, - /// as well as to see and edit the final list of - /// messages before broadcast to listeners - /// - /// - public class BufferedMesgBroadcaster : MesgBroadcaster - { - #region Fields - private List mesgs = new List(); - public event MesgBroadcastEventHandler MesgBroadcastEvent; - public event IncomingMesgEventHandler IncomingMesgEvent; - #endregion - - #region Methods - - public void RegisterMesgBroadcastPlugin(IMesgBroadcastPlugin plugin) - { - MesgBroadcastEvent += plugin.OnBroadcast; - IncomingMesgEvent += plugin.OnIncomingMesg; - } - - public new void OnMesg(object sender, MesgEventArgs e) - { - // Notify any subscribers of either our general mesg event or specific profile mesg event - mesgs.Add(e.mesg); - if (IncomingMesgEvent != null) - { - IncomingMesgEvent(sender, new IncomingMesgEventArgs(e.mesg)); - } - } - - public void Broadcast() - { - if (MesgBroadcastEvent != null) - { - MesgBroadcastEvent(this, new MesgBroadcastEventArgs(mesgs)); - } - - foreach (Mesg mesg in mesgs) - { - base.OnMesg(this, new MesgEventArgs(mesg)); - } - - } - #endregion - } -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Crc.cs b/src/Garmin/FitSdk/Dynastream/Fit/Crc.cs deleted file mode 100644 index e692c9204..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Crc.cs +++ /dev/null @@ -1,64 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - /// - /// Implements Dynastream CRC16 function - /// - public static class CRC - { - private static ushort[] crcTable = new ushort[] - { - 0x0000, 0xCC01, 0xD801, 0x1400, 0xF001, 0x3C00, 0x2800, 0xE401, - 0xA001, 0x6C00, 0x7800, 0xB401, 0x5000, 0x9C01, 0x8801, 0x4400 - }; - - #region Methods - public static ushort Get16(ushort crc, byte data) - { - ushort tmp; - - // compute checksum of lower four bits of byte - tmp = crcTable[crc & 0xF]; - crc = (ushort)((crc >> 4) & 0x0FFF); - crc = (ushort)(crc ^ tmp ^ crcTable[data & 0xF]); - - // compute checksum of upper four bits of byte - tmp = crcTable[crc & 0xF]; - crc = (ushort)((crc >> 4) & 0x0FFF); - crc = (ushort)(crc ^ tmp ^ crcTable[(data >> 4) & 0xF]); - - return crc; - } - - public static ushort Calc16(byte[] dataBlock, int size) - { - ushort crc = 0; - - for (int i = 0; i < size; i++) - { - crc = CRC.Get16(crc, dataBlock[i]); - } - return crc; - } - #endregion // Methods - } -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Decode.cs b/src/Garmin/FitSdk/Dynastream/Fit/Decode.cs deleted file mode 100644 index 0ce7de389..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Decode.cs +++ /dev/null @@ -1,507 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Event Args Class associated with the DeveloperFieldDescrtiption Event - /// - public class DeveloperFieldDescriptionEventArgs : EventArgs - { - public DeveloperFieldDescription Description { get; private set; } - - public DeveloperFieldDescriptionEventArgs(DeveloperFieldDescription description) - { - Description = description; - } - } - - /// - /// This class will decode a .fit file reading the file header and any definition or data messages. - /// - public class Decode - { - private const long CRCSIZE = 2; - private const uint INVALID_DATA_SIZE = 0; - - #region Fields - private MesgDefinition[] localMesgDefs = new MesgDefinition[Fit.MaxLocalMesgs]; - private Header fileHeader; - private uint timestamp = 0; - private int lastTimeOffset = 0; - private bool invalidDataSize = false; - private Accumulator accumulator = new Accumulator(); - - private readonly DeveloperDataLookup m_lookup = new DeveloperDataLookup(); - #endregion - - #region Properties - public bool InvalidDataSize - { - get - { - return invalidDataSize; - } - set - { - invalidDataSize = value; - } - } - #endregion - - #region Constructors - public Decode() - { - } - #endregion - - #region Methods - public event MesgEventHandler MesgEvent; - public event MesgDefinitionEventHandler MesgDefinitionEvent; - public event EventHandler DeveloperFieldDescriptionEvent; - - /// - /// Reads the file header to check if the file is FIT. - /// Does not check CRC. - /// Returns true if file is FIT. - /// - /// Seekable (file)stream to parse - public bool IsFIT(Stream fitStream) - { - long position = fitStream.Position; - bool status = false; - try - { - // Does the header contain the flag string ".FIT"? - Header header = new Header(fitStream); - fitStream.Position = position; - status = header.IsValid(); - } - // If the header is malformed the ctor could throw an exception - catch (FitException) - { - } - - fitStream.Position = position; - return status; - } - - /// - /// Reads the FIT binary file header and crc to check compatibility and integrity. - /// Also checks data reords size. - /// Returns true if file is ok (not corrupt). - /// - /// Seekable (file)stream to parse. - public bool CheckIntegrity(Stream fitStream) - { - bool isValid = true; - long position = fitStream.Position; - long fileSize = 0; - - try - { - while ((fitStream.Position < fitStream.Length) && isValid) - { - // Is there a valid header? - Header header = new Header(fitStream); - isValid = header.IsValid(); - - // Get the file size from the header - // When the data size is 0 set flags, don't calculate CRC - if (header.DataSize > INVALID_DATA_SIZE) - { - fileSize = header.Size + header.DataSize + CRCSIZE; - - // Is the file CRC ok? - // Need to rewind the header size because the header is part of the CRC calculation. - byte[] data = new byte[fileSize]; - fitStream.Position = fitStream.Position - header.Size; - fitStream.Read(data, 0, data.Length); - isValid &= (CRC.Calc16(data, data.Length) == 0x0000); - } - else - { - invalidDataSize = true; - isValid = false; - } - } - } - catch (FitException) - { - isValid = false; - } - - fitStream.Position = position; - return isValid; - } - - /// - /// Reads a FIT binary file. - /// - /// Seekable (file)stream to parse. - /// - /// Returns true if reading finishes successfully. - /// - public bool Read(Stream fitStream) - { - bool status = true; - long position = fitStream.Position; - - while ((fitStream.Position < fitStream.Length) && status) - { - status = Read(fitStream, DecodeMode.Normal); - } - - fitStream.Position = position; - - return status; - } - - /// - /// Reads a FIT binary file. - /// - /// Seekable (file)stream to parse. - /// When true, skip file header. Also CRC will not be calculated. - /// - /// Returns true if reading finishes successfully. - /// - [Obsolete( - "Arguments to this function are ambiguous, " + - "use Read(stream, DecodeMode) instead. " + - "Function will be removed after 20.30.00", - false)] - public bool Read(Stream fitStream, bool skipHeader) - { - return Read(fitStream, skipHeader ? DecodeMode.InvalidHeader : DecodeMode.Normal); - } - - - /// - /// Reads a FIT binary File - /// - /// Seekable (file)stream to parse. - /// Decode Mode to use for reading the file - /// - /// Returns true if reading finishes successfully. - /// - public bool Read(Stream fitStream, DecodeMode mode) - { - bool readOK = true; - long fileSize = 0; - long filePosition = fitStream.Position; - - try - { - // Attempt to read header - if (mode == DecodeMode.Normal) - { - fileHeader = new Header(fitStream); - readOK &= fileHeader.IsValid(); - - // Get the file size from the header - // When the data size is invalid set the file size to the fitstream length - if (!invalidDataSize) - { - fileSize = fileHeader.Size + fileHeader.DataSize + CRCSIZE; - } - else - { - fileSize = fitStream.Length; - } - - if (!readOK) - { - throw new FitException("FIT decode error: File is not FIT format. Check file header data type. Error at stream position: " + fitStream.Position); - } - if ((fileHeader.ProtocolVersion & Fit.ProtocolVersionMajorMask) > (Fit.ProtocolMajorVersion << Fit.ProtocolVersionMajorShift)) - { - // The decoder does not support decode accross protocol major revisions - throw new FitException(String.Format("FIT decode error: Protocol Version {0}.X not supported by SDK Protocol Ver{1}.{2} ", (fileHeader.ProtocolVersion & Fit.ProtocolVersionMajorMask) >> Fit.ProtocolVersionMajorShift, Fit.ProtocolMajorVersion, Fit.ProtocolMinorVersion)); - } - } - else if(mode == DecodeMode.InvalidHeader) - { - // When skipping the header force the stream position to be at the beginning of the data - // Also the fileSize is the length of the filestream. - fitStream.Position += Fit.HeaderWithCRCSize; - fileSize = fitStream.Length; - } - else if (mode == DecodeMode.DataOnly) - { - // When the stream is only data move the position of the stream - // to the start. FileSize is the length of the stream - fitStream.Position = 0; - fileSize = fitStream.Length; - } - else - { - throw new FitException("Invalid Decode Mode Provided to read"); - } - - // Read data messages and definitions - while (fitStream.Position < (filePosition + fileSize - CRCSIZE)) - { - DecodeNextMessage(fitStream); - } - - // Is the file CRC ok? - if ((mode == DecodeMode.Normal) && !invalidDataSize) - { - byte[] data = new byte[fileSize]; - fitStream.Position = filePosition; - fitStream.Read(data, 0, data.Length); - readOK &= (CRC.Calc16(data, data.Length) == 0x0000); - fitStream.Position = filePosition + fileSize; - } - } - catch (EndOfStreamException e) - { - readOK = false; - Debug.WriteLine("{0} caught and ignored. ", e.GetType().Name); - throw new FitException("Decode:Read - Unexpected End of File at stream position" + fitStream.Position, e); - } - catch (FitException e) - { - // When attempting to decode files with invalid data size this indicates the EOF. - if (!invalidDataSize) - { - throw e; - } - } - return readOK; - } - - public void DecodeNextMessage(Stream fitStream) - { - BinaryReader br = new BinaryReader(fitStream); - byte nextByte = br.ReadByte(); - - // Is it a compressed timestamp mesg? - if ((nextByte & Fit.CompressedHeaderMask) == Fit.CompressedHeaderMask) - { - MemoryStream mesgBuffer = new MemoryStream(); - - int timeOffset = nextByte & Fit.CompressedTimeMask; - timestamp += (uint)((timeOffset - lastTimeOffset) & Fit.CompressedTimeMask); - lastTimeOffset = timeOffset; - Field timestampField = new Field(Profile.GetMesg(MesgNum.Record).GetField("Timestamp")); - timestampField.SetValue(timestamp); - - byte localMesgNum = (byte)((nextByte & Fit.CompressedLocalMesgNumMask) >> 5); - mesgBuffer.WriteByte(localMesgNum); - if (localMesgDefs[localMesgNum] == null) - { - throw new FitException("Decode:DecodeNextMessage - FIT decode error: Missing message definition for local message number " + localMesgNum + " at stream position " + fitStream.Position); - } - int fieldsSize = localMesgDefs[localMesgNum].GetMesgSize() - 1; - try - { - byte[] read = br.ReadBytes(fieldsSize); - if( read.Length < fieldsSize ) - { - throw new Exception("Field size mismatch, expected: " + fieldsSize + "received: " + read.Length); - } - mesgBuffer.Write(read, 0, fieldsSize); - } - catch (Exception e) - { - throw new FitException("Decode:DecodeNextMessage - Compressed Data Message unexpected end of file. Wanted " + fieldsSize + " bytes at stream position " + fitStream.Position, e); - } - - Mesg newMesg = new Mesg(mesgBuffer, localMesgDefs[localMesgNum]); - newMesg.InsertField(0, timestampField); - RaiseMesgEvent(newMesg); - } - // Is it a mesg def? - else if ((nextByte & Fit.MesgDefinitionMask) == Fit.MesgDefinitionMask) - { - MemoryStream mesgDefBuffer = new MemoryStream(); - - // Figure out number of fields (length) of our defn and build buffer - mesgDefBuffer.WriteByte(nextByte); - mesgDefBuffer.Write(br.ReadBytes(4), 0, 4); - byte numFields = br.ReadByte(); - mesgDefBuffer.WriteByte(numFields); - int numBytes = numFields * 3; //3 Bytes per field - try - { - byte[] read = br.ReadBytes(numBytes); - if( read.Length < numBytes ) - { - throw new Exception("Message Definition size mismatch, expected: " + numBytes + "received: " + read.Length); - } - mesgDefBuffer.Write(read, 0, numBytes); - - if ((nextByte & Fit.DevDataMask) == Fit.DevDataMask) - { - // Definition Contains Dev Data - byte numDevFields = br.ReadByte(); - mesgDefBuffer.WriteByte(numDevFields); - - numBytes = numDevFields * 3; - read = br.ReadBytes(numBytes); - if( read.Length < numBytes ) - { - throw new Exception("Message Definition size mismatch, expected: " + numBytes + "received: " + read.Length); - } - - // Read Dev Data - mesgDefBuffer.Write(read, 0, numBytes); - } - } - catch (Exception e) - { - throw new FitException("Decode:DecodeNextMessage - Defn Message unexpected end of file. Wanted " + numBytes + " bytes at stream position " + fitStream.Position, e); - } - - MesgDefinition newMesgDef = new MesgDefinition(mesgDefBuffer, m_lookup); - localMesgDefs[newMesgDef.LocalMesgNum] = newMesgDef; - if (MesgDefinitionEvent != null) - { - MesgDefinitionEvent(this, new MesgDefinitionEventArgs(newMesgDef)); - } - } - // Is it a data mesg? - else if ((nextByte & Fit.MesgDefinitionMask) == Fit.MesgHeaderMask) - { - MemoryStream mesgBuffer = new MemoryStream(); - - byte localMesgNum = (byte)(nextByte & Fit.LocalMesgNumMask); - mesgBuffer.WriteByte(localMesgNum); - if (localMesgDefs[localMesgNum] == null) - { - throw new FitException("Decode:DecodeNextMessage - FIT decode error: Missing message definition for local message number " + localMesgNum + " at stream position " + fitStream.Position); - } - int fieldsSize = localMesgDefs[localMesgNum].GetMesgSize() - 1; - try - { - byte[] read = br.ReadBytes(fieldsSize); - if( read.Length < fieldsSize ) - { - throw new Exception("Field size mismatch, expected: " + fieldsSize + "received: " + read.Length); - } - mesgBuffer.Write(read, 0, fieldsSize); - } - catch (Exception e) - { - throw new FitException("Decode:DecodeNextMessage - Data Message unexpected end of file. Wanted " + fieldsSize + " bytes at stream position " + fitStream.Position, e); - } - - Mesg newMesg = new Mesg(mesgBuffer, localMesgDefs[localMesgNum]); - - // If the new message contains a timestamp field, record the value to use as - // a reference for compressed timestamp headers - Field timestampField = newMesg.GetField("Timestamp"); - if (timestampField != null) - { - object tsValue = timestampField.GetValue(); - if (tsValue != null) - { - timestamp = (uint)tsValue; - lastTimeOffset = (int)timestamp & Fit.CompressedTimeMask; - } - } - - foreach (Field field in newMesg.FieldsList) - { - if (field.IsAccumulated) - { - int i; - for (i = 0; i < field.GetNumValues(); i++) - { - long value = Convert.ToInt64(field.GetRawValue(i)); - - foreach (Field fieldIn in newMesg.FieldsList) - { - foreach (FieldComponent fc in fieldIn.components) - { - if ((fc.fieldNum == field.Num) && (fc.accumulate)) - { - value = (long) ((((value / field.Scale) - field.Offset) + fc.offset) * fc.scale); - } - } - } - accumulator.Set(newMesg.Num, field.Num, value); - } - } - } - - // Now that the entire message is decoded we can evaluate subfields and expand any components - newMesg.ExpandComponents(accumulator); - - RaiseMesgEvent(newMesg); - } - else - { - throw new FitException("Decode:Read - FIT decode error: Unexpected Record Header Byte 0x" + nextByte.ToString("X") + " at stream position: " + fitStream.Position); - } - } - - /// - /// - /// - /// - /// - private void RaiseMesgEvent(Mesg newMesg) - { - if ((newMesg.Num == MesgNum.DeveloperDataId) || - (newMesg.Num == MesgNum.FieldDescription)) - { - HandleMetaData(newMesg); - } - - if (MesgEvent != null) - { - MesgEvent(this, new MesgEventArgs(newMesg)); - } - } - - private void HandleMetaData(Mesg newMesg) - { - if (newMesg.Num == MesgNum.DeveloperDataId) - { - var mesg = new DeveloperDataIdMesg(newMesg); - m_lookup.Add(mesg); - } - else if (newMesg.Num == MesgNum.FieldDescription) - { - var mesg = new FieldDescriptionMesg(newMesg); - DeveloperFieldDescription desc = m_lookup.Add(mesg); - if (desc != null) - { - OnDeveloperFieldDescriptionEvent( - new DeveloperFieldDescriptionEventArgs(desc)); - } - } - } - #endregion - - protected virtual void OnDeveloperFieldDescriptionEvent(DeveloperFieldDescriptionEventArgs e) - { - EventHandler handler = - DeveloperFieldDescriptionEvent; - - if (handler != null) - { - handler(this, e); - } - } - } // class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/DecodeMode.cs b/src/Garmin/FitSdk/Dynastream/Fit/DecodeMode.cs deleted file mode 100644 index 05356d4a7..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/DecodeMode.cs +++ /dev/null @@ -1,37 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Mode used for Read Operations - /// - public enum DecodeMode - { - /// - /// Indicates that file contains valid Header and CRC data - /// - Normal, - - /// - /// Indicates that the Stream Contains a Header that is Corrupt - /// - InvalidHeader, - - /// - /// Indicates that the Stream does not contain a Header or CRC - /// - DataOnly - } -} diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Defines.cs b/src/Garmin/FitSdk/Dynastream/Fit/Defines.cs deleted file mode 100644 index 5d6176940..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Defines.cs +++ /dev/null @@ -1,181 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; - -namespace Dynastream.Fit -{ - public enum ProtocolVersion - { - V10, - V20 - } - - public static class ProtocolVersionExtensions - { - private class DetailedProtocolVersion - { - public byte MajorVersion { get; private set; } - public byte MinorVersion { get; private set; } - - public byte Version - { - get - { - return (byte) ((MajorVersion << Fit.ProtocolVersionMajorShift) | - MinorVersion); - } - } - - public DetailedProtocolVersion(byte major, byte minor) - { - MajorVersion = major; - MinorVersion = minor; - } - } - - public static byte GetMajorVersion(this ProtocolVersion protocolVersion) - { - return s_versionMap[protocolVersion].MajorVersion; - } - - public static byte GetMinorVersion(this ProtocolVersion protocolVersion) - { - return s_versionMap[protocolVersion].MinorVersion; - } - - public static byte GetVersionByte(this ProtocolVersion protocolVersion) - - { - return s_versionMap[protocolVersion].Version; - } - - private static readonly Dictionary s_versionMap = - new Dictionary - { - {ProtocolVersion.V10, new DetailedProtocolVersion(1, 0)}, - {ProtocolVersion.V20, new DetailedProtocolVersion(2, 0)} - }; - } - - - public class Fit - { - public const byte ProtocolVersionMajorShift = 4; - public const byte ProtocolVersionMajorMask = (0x0F << ProtocolVersionMajorShift); - - public static readonly byte ProtocolVersion = Dynastream.Fit.ProtocolVersion.V20.GetVersionByte(); - public static readonly byte ProtocolMajorVersion = Dynastream.Fit.ProtocolVersion.V20.GetMajorVersion(); - public static readonly byte ProtocolMinorVersion = Dynastream.Fit.ProtocolVersion.V20.GetMinorVersion(); - - public const ushort ProfileVersion = ((ProfileMajorVersion * 100) + ProfileMinorVersion); - public const ushort ProfileMajorVersion = 21; - public const ushort ProfileMinorVersion = 105; - - public const byte HeaderTypeMask = 0xF0; - public const byte CompressedHeaderMask = 0x80; - public const byte CompressedTimeMask = 0x1F; - public const byte CompressedLocalMesgNumMask = 0x60; - - public const byte MesgDefinitionMask = 0x40; - public const byte DevDataMask = 0x20; - public const byte MesgHeaderMask = 0x00; - public const byte LocalMesgNumMask = 0x0F; - public const byte MaxLocalMesgs = LocalMesgNumMask + 1; - - public const byte MesgDefinitionReserved = 0x00; - public const byte LittleEndian = 0x00; - public const byte BigEndian = 0x01; - - public const ushort MaxMesgSize = 65535; - public const byte MaxFieldSize = 255; - - public const byte HeaderWithCRCSize = 14; - public const byte HeaderWithoutCRCSize = (HeaderWithCRCSize - 2); - - public const byte FieldNumInvalid = 255; - public const byte FieldNumTimeStamp = 253; - - public const ushort SubfieldIndexMainField = SubfieldIndexActiveSubfield + 1; - public const ushort SubfieldIndexActiveSubfield = 0xFFFE; - public const string SubfieldNameMainField = ""; - - public static FitType[] BaseType = new FitType[] - { - new FitType(false, 0x00, "enum", (byte)0xFF, 1, false, false), - new FitType(false, 0x01, "sint8", (sbyte)0x7F, 1, true, true), - new FitType(false, 0x02, "uint8", (byte)0xFF, 1, false, true), - new FitType(true, 0x83, "sint16", (short)0x7FFF, 2, true, true), - new FitType(true, 0x84, "uint16", (ushort)0xFFFF, 2, false, true), - new FitType(true, 0x85, "sint32", (int)0x7FFFFFFF, 4, true, true), - new FitType(true, 0x86, "uint32", (uint)0xFFFFFFFF, 4, false, true), - new FitType(false, 0x07, "string", (byte)0x00, 1, false, false), - new FitType(true, 0x88, "float32", BitConverter.ToSingle(new byte[] {0xFF, 0xFF, 0xFF, 0xFF}, 0), 4, true, false), - new FitType(true, 0x89, "float64", BitConverter.ToDouble(new byte[] {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, 0), 8, true, false), - new FitType(false, 0x0A, "uint8z", (byte)0x00, 1, false, true), - new FitType(true, 0x8B, "uint16z", (ushort)0x0000, 2, false, true), - new FitType(true, 0x8C, "uint32z", (uint)0x00000000, 4, false, true), - new FitType(false, 0x0D, "byte", (byte)0xFF, 1, false, false), - new FitType(true, 0x8E, "sint64", (long)0x7FFFFFFFFFFFFFFFL, 8, true, true), - new FitType(true, 0x8F, "uint64", (ulong)0xFFFFFFFFFFFFFFFFL, 8, false, true), - new FitType(true, 0x90, "uint64z", (ulong)0x0000000000000000L, 8, false, true), - }; - - - public struct FitType - { - public bool endianAbility; - public byte baseTypeField; - public string typeName; - public object invalidValue; - public byte size; - public bool isSigned; - public bool isInteger; - - public FitType(bool endianAbility, byte baseTypeField, string typeName, object invalidValue, byte size, bool isSigned, bool isInt) - { - this.endianAbility = endianAbility; - this.baseTypeField = baseTypeField; - this.typeName = typeName; - this.invalidValue = invalidValue; - this.size = size; - this.isSigned = isSigned; - this.isInteger = isInt; - } - } - - // Index into the BaseTypes array - public const byte Enum = 0x00; - public const byte SInt8 = 0x01; - public const byte UInt8 = 0x02; - public const byte SInt16 = 0x03; - public const byte UInt16 = 0x04; - public const byte SInt32 = 0x05; - public const byte UInt32 = 0x06; - public const byte String = 0x07; - public const byte Float32 = 0x08; - public const byte Float64 = 0x09; - public const byte UInt8z = 0x0A; - public const byte UInt16z = 0x0B; - public const byte UInt32z = 0x0C; - public const byte Byte = 0x0D; - public const byte SInt64 = 0x0E; - public const byte UInt64 = 0x0F; - public const byte UInt64z = 0x10; - - // And this with the type defn to get the index - public const byte BaseTypeNumMask = 0x1F; - } -} diff --git a/src/Garmin/FitSdk/Dynastream/Fit/DeveloperDataKey.cs b/src/Garmin/FitSdk/Dynastream/Fit/DeveloperDataKey.cs deleted file mode 100644 index 7b1381dd2..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/DeveloperDataKey.cs +++ /dev/null @@ -1,99 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.IO; - -namespace Dynastream.Fit -{ - internal class DeveloperDataKey - : IComparable - { - public byte DeveloperDataIndex { get; private set; } - public byte FieldDefNum { get; private set; } - - public DeveloperDataKey(byte developerDataIndex, byte fieldDefNum) - { - DeveloperDataIndex = developerDataIndex; - FieldDefNum = fieldDefNum; - } - - /// - /// Determines whether the specified is equal to the current . - /// - /// - /// true if the specified is equal to the current ; otherwise, false. - /// - /// The to compare with the current . - public override bool Equals(object obj) - { - if (ReferenceEquals(null, obj)) return false; - if (ReferenceEquals(this, obj)) return true; - if (obj.GetType() != GetType()) return false; - return Equals(obj as DeveloperDataKey); - } - - /// - /// Determines whether the specified is equal to the current . - /// - /// - /// true if the specified is equal to the current ; otherwise, false. - /// - /// - /// The to compare with the current . - /// - protected bool Equals(DeveloperDataKey other) - { - return (DeveloperDataIndex == other.DeveloperDataIndex) && - (FieldDefNum == other.FieldDefNum); - } - - /// - /// Serves as a hash function for a particular type. - /// - /// - /// A hash code for the current . - /// - public override int GetHashCode() - { - unchecked - { - return (DeveloperDataIndex.GetHashCode() * 397) ^ - FieldDefNum.GetHashCode(); - } - } - - /// - /// Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - /// - /// - /// A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: Value Meaning Less than zero This instance precedes in the sort order. Zero This instance occurs in the same position in the sort order as . Greater than zero This instance follows in the sort order. - /// - /// An object to compare with this instance. is not the same type as this instance. - public int CompareTo(object obj) - { - var other = obj as DeveloperDataKey; - if (other == null) - { - throw new InvalidOperationException("Cannot compare"); - } - - if (DeveloperDataIndex > other.DeveloperDataIndex) return 1; - if (DeveloperDataIndex < other.DeveloperDataIndex) return -1; - if (FieldDefNum > other.FieldDefNum) return 1; - if (FieldDefNum < other.FieldDefNum) return -1; - return 0; - } - } -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/DeveloperDataLookup.cs b/src/Garmin/FitSdk/Dynastream/Fit/DeveloperDataLookup.cs deleted file mode 100644 index 9a32e49d5..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/DeveloperDataLookup.cs +++ /dev/null @@ -1,100 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - - -#endregion - -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - internal class DeveloperDataLookup - { - private readonly Dictionary m_fieldDescriptionMesgs; - private readonly Dictionary m_developerDataIdMesgs; - - public DeveloperDataLookup() - { - m_fieldDescriptionMesgs = new Dictionary(); - m_developerDataIdMesgs = new Dictionary(); - } - - public Tuple GetMesgs(DeveloperDataKey key) - { - DeveloperDataIdMesg devIdMesg; - FieldDescriptionMesg descriptionMesg; - - m_developerDataIdMesgs.TryGetValue(key.DeveloperDataIndex, out devIdMesg); - m_fieldDescriptionMesgs.TryGetValue(key, out descriptionMesg); - - if (devIdMesg != null && descriptionMesg != null) - { - return new Tuple( - devIdMesg, - descriptionMesg); - } - - return null; - } - - public void Add(DeveloperDataIdMesg mesg) - { - byte? index = mesg.GetDeveloperDataIndex(); - if (index == null) - return; - - m_developerDataIdMesgs[index.Value] = mesg; - - // Remove all fields currently associated with this developer - var keysToRemove = - m_fieldDescriptionMesgs.Keys - .Where( - x => - x.DeveloperDataIndex == - index) - .ToList(); - foreach (var key in keysToRemove) - { - m_fieldDescriptionMesgs.Remove(key); - } - } - - public DeveloperFieldDescription Add(FieldDescriptionMesg mesg) - { - DeveloperFieldDescription desc = null; - - byte? developerDataIndex = mesg.GetDeveloperDataIndex(); - byte? fieldDefinitionNumber = mesg.GetFieldDefinitionNumber(); - if ((developerDataIndex != null) && - (fieldDefinitionNumber != null)) - { - var key = new DeveloperDataKey( - (byte)developerDataIndex, - (byte)fieldDefinitionNumber); - - m_fieldDescriptionMesgs[key] = mesg; - - // Build a Description of the pairing we just created - var pair = GetMesgs(key); - if (pair != null) - { - desc = new DeveloperFieldDescription(pair.Item1, pair.Item2); - } - } - - return desc; - } - } -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/DeveloperField.cs b/src/Garmin/FitSdk/Dynastream/Fit/DeveloperField.cs deleted file mode 100644 index f612e78fb..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/DeveloperField.cs +++ /dev/null @@ -1,191 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.IO; - -namespace Dynastream.Fit -{ - public class DeveloperField - : FieldBase - { - #region Fields - private readonly DeveloperFieldDefinition m_definition; - #endregion - - #region Properties - - public bool IsDefined - { - get { return m_definition.IsDefined; } - } - - public byte Num - { - get { return m_definition.FieldNum; } - } - - public byte DeveloperDataIndex - { - get { return m_definition.DeveloperDataIndex; } - } - - public uint AppVersion - { - get - { - if (m_definition.IsDefined) - { - return m_definition.DeveloperIdMesg.GetApplicationVersion() ?? 0; - } - - return 0; - } - } - - public byte[] AppId - { - get - { - if (m_definition.IsDefined) - { - var msg = m_definition.DeveloperIdMesg; - byte[] appId = new byte[msg.GetNumApplicationId()]; - - for (int i = 0; i < appId.Length; i++) - { - appId[i] = msg.GetApplicationId(i) ?? 0xFF; - } - - return appId; - } - - return null; - } - } - - public override string Name - { - get - { - return m_definition.IsDefined ? - m_definition.DescriptionMesg.GetFieldNameAsString(0) : null; - } - } - - public override byte Type - { - get - { - if (m_definition.IsDefined) - { - return m_definition.DescriptionMesg.GetFitBaseTypeId() ?? Fit.UInt8; - } - - return Fit.UInt8; - } - } - - public override double Scale - { - get - { - if (m_definition.IsDefined) - { - return m_definition.DescriptionMesg.GetScale() ?? 1.0; - } - - return 1.0; - } - } - - public override double Offset - { - get - { - if (m_definition.IsDefined) - { - return m_definition.DescriptionMesg.GetOffset() ?? 0.0; - } - - return 0.0; - } - } - - public override string Units - { - get - { - return m_definition.IsDefined ? - m_definition.DescriptionMesg.GetUnitsAsString(0) : null; - } - } - - /// - /// Retrieve the Native Field Number that this Developer Field Overrides - /// - /// - /// Native Field Number that is overridden if applicable, - /// otherwise - /// - public byte NativeOverride - { - get - { - if (m_definition.IsDefined) - { - return m_definition.DescriptionMesg.GetNativeFieldNum() ?? Fit.FieldNumInvalid; - } - - return Fit.FieldNumInvalid; - } - } - - #endregion - - #region Constructors - public DeveloperField(DeveloperField other) - : base(other) - { - m_definition = other.m_definition; - } - - internal DeveloperField(DeveloperFieldDefinition definition) - { - m_definition = definition; - } - - public DeveloperField(FieldDescriptionMesg description, DeveloperDataIdMesg developerDataIdMesg) - { - m_definition = new DeveloperFieldDefinition(description, developerDataIdMesg, 0); - } - - #endregion - - #region Methods - internal override Subfield GetSubfield(string subfieldName) - { - // Developer Fields do not currently support Sub Fields - return null; - } - - internal override Subfield GetSubfield(int subfieldIndex) - { - // Developer Fields do not currently support Sub Fields - return null; - } - - #endregion - } -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/DeveloperFieldDefinition.cs b/src/Garmin/FitSdk/Dynastream/Fit/DeveloperFieldDefinition.cs deleted file mode 100644 index 00e6905ad..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/DeveloperFieldDefinition.cs +++ /dev/null @@ -1,103 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; - -namespace Dynastream.Fit -{ - /// - /// Represents a Developer Field Definition - /// - internal class DeveloperFieldDefinition - { - private readonly FieldDescriptionMesg m_descriptionMesg; - private readonly DeveloperDataIdMesg m_developerIdMesg; - - /// - /// Gets a boolean indicating if the Field Definition has associated meta - /// data - /// - public bool IsDefined - { - get { return !ReferenceEquals(m_descriptionMesg, null); } - } - - /// - /// Gets the Field Number associated with the Developer Field - /// - public byte FieldNum { get; private set; } - - /// - /// Gets the Number of bytes associated with the Developer Field - /// - public byte Size { get; private set; } - - /// - /// Gets the developer index of the Developer Field - /// - public byte DeveloperDataIndex { get; private set; } - - /// - /// Gets the current description message for the field - /// - internal FieldDescriptionMesg DescriptionMesg - { - get { return m_descriptionMesg; } - } - - /// - /// Gets the Associated Developer Id for the message - /// - internal DeveloperDataIdMesg DeveloperIdMesg - { - get { return m_developerIdMesg; } - } - - public DeveloperFieldDefinition(byte fieldNum, byte size, byte developerDataIndex) - { - m_descriptionMesg = null; - FieldNum = fieldNum; - Size = size; - DeveloperDataIndex = developerDataIndex; - } - - /// - /// - /// - /// - /// - /// - /// - /// If description parameter is invalid - /// - public DeveloperFieldDefinition(FieldDescriptionMesg desc, DeveloperDataIdMesg devId, byte size) - { - byte? fieldDefinitionNumber = desc.GetFieldDefinitionNumber(); - byte? developerDataIndex = desc.GetDeveloperDataIndex(); - if ((developerDataIndex != null) && - (fieldDefinitionNumber != null)) - { - m_descriptionMesg = desc; - m_developerIdMesg = devId; - Size = size; - FieldNum = (byte)fieldDefinitionNumber; - DeveloperDataIndex = (byte)developerDataIndex; - } - else - { - throw new FitException("Description Message must have a valid developer data index and field definition number"); - } - } - } -} diff --git a/src/Garmin/FitSdk/Dynastream/Fit/DeveloperFieldDescription.cs b/src/Garmin/FitSdk/Dynastream/Fit/DeveloperFieldDescription.cs deleted file mode 100644 index d1a539a30..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/DeveloperFieldDescription.cs +++ /dev/null @@ -1,94 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - - - -#endregion - -using System; -using System.Globalization; -using System.IO; - -namespace Dynastream.Fit -{ - public class DeveloperFieldDescription - { - private readonly DeveloperDataIdMesg m_developerDataId; - private readonly FieldDescriptionMesg m_fieldDescription; - - /// - /// Gets the Value of the Application Version for the Field Description - /// - public uint ApplicationVersion - { - get { return m_developerDataId.GetApplicationVersion() ?? uint.MaxValue; } - } - - /// - /// Gets the Value of the Application Id for the Field Description - /// - public Guid ApplicationId - { - get - { - // If the Application Id is not exactly 16 bytes - // (see size of UUID) return Empty - if (m_developerDataId.GetNumApplicationId() != 16) - return Guid.Empty; - - // Read the App Id - byte[] appId = new byte[m_developerDataId.GetNumApplicationId()]; - for (int i = 0; i < appId.Length; i++) - { - appId[i] = m_developerDataId.GetApplicationId(i) ?? 0xFF; - } - - // The SDK Treats these UUIDs in Java format so we need to convert to - // a CLS Compliant Array where the array is in the form - // u32, u16, u16, u8, u8, u8, u8, u8, u8, u8, u8 and flipping from big endian to - // little endian - byte[] net = new byte[appId.Length]; - for (int i = 8; i < 16; i++) - { - net[i] = appId[i]; - } - - // Flip The endianness of the u32 and u16 values - net[3] = appId[0]; - net[2] = appId[1]; - net[1] = appId[2]; - net[0] = appId[3]; - net[5] = appId[4]; - net[4] = appId[5]; - net[7] = appId[6]; - net[6] = appId[7]; - return new Guid(net); - } - } - - /// - /// Gets the Value of the Field Definition Number for thbe Field Description - /// - public byte FieldDefinitionNumber - { - get { return m_fieldDescription.GetFieldDefinitionNumber() ?? byte.MaxValue; } - } - - internal DeveloperFieldDescription( - DeveloperDataIdMesg developerDataId, - FieldDescriptionMesg fieldDescription) - { - m_developerDataId = developerDataId; - m_fieldDescription = fieldDescription; - } - } -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Encode.cs b/src/Garmin/FitSdk/Dynastream/Fit/Encode.cs deleted file mode 100644 index f032efb54..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Encode.cs +++ /dev/null @@ -1,169 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - /// - /// Supports generating binary .FIT files. Header, Message Definition and Message - /// data may be written. - /// - public class Encode - { - #region Fields - private MesgDefinition[] lastMesgDef = new MesgDefinition[Fit.MaxLocalMesgs]; - private bool open = false; - private Stream fitDest; - - private readonly IValidator validator; - - /// - /// If default ctor is used Header object may be manipulated if desired before Open is called. - /// - public Header header; - #endregion // Fields - - #region Properties - - #endregion // Properties - - #region Constructors - - - [Obsolete("Encode supports multiple Protocol Versions. Use constructor that selects correct version")] - public Encode() - : this(null, ProtocolVersion.V10) - { - } - - [Obsolete("Encode supports multiple Protocol Versions. Use constructor that selects correct version")] - public Encode(Stream fitDest) - : this(fitDest, ProtocolVersion.V10) - { - } - - public Encode(ProtocolVersion version) - : this(null, version) - { - } - - public Encode(Stream fitDest, ProtocolVersion version) - { - header = new Header(version); - validator = new ProtocolValidator(version); - - if (fitDest != null) - { - Open(fitDest); - } - } - #endregion // Constructors - - #region Methods - - public void Open(Stream fitDest) - { - this.fitDest = fitDest; - open = true; - - // Write header so we are ready to append messages - header.Write(this.fitDest); - } - - public void OnMesgDefinition(MesgDefinition newMesgDefinition) - { - Write(newMesgDefinition); - } - - public void OnMesg(Mesg newMesg) - { - Write(newMesg); - } - - public void Write(MesgDefinition mesgDefinition) - { - if (open == false) - { - throw new FitException("Encode:Write - Encode not opened yet, must call Encode:Open()"); - } - - if (!validator.ValidateMesgDefn(mesgDefinition)) - { - throw new FitException("Encode:Write - mesgDefinition contains incompatible protocol Features"); - } - - mesgDefinition.Write(fitDest); - lastMesgDef[mesgDefinition.LocalMesgNum] = mesgDefinition; - } - - public void Write(Mesg mesg) - { - if (open == false) - { - throw new FitException("Encode:Write - Encode not opened yet, must call Encode:Open()"); - } - - if (!validator.ValidateMesg(mesg)) - { - throw new FitException("Encode:Write - mesg contains incompatible protocol Features"); - } - - // Fit file must always contain a defn message before data messages - if ((lastMesgDef[mesg.LocalNum] == null) || !lastMesgDef[mesg.LocalNum].Supports(mesg)) - { - Write(new MesgDefinition(mesg)); - } - mesg.Write(fitDest, lastMesgDef[mesg.LocalNum]); - } - - public void Write(IEnumerable mesgs) - { - foreach (Mesg mesg in mesgs) - { - Write(mesg); - } - } - - /// - /// Updates the data size and CRC in the file header - /// Updates file CRC - /// - public void Close() - { - if (open == false) - { - throw new FitException("Encode:Close - Encode not opened yet, must call Encode:Open()"); - } - - // Rewrites the header now that the datasize is known - header.DataSize = (uint)(fitDest.Length - header.Size); - header.UpdateCRC(); - header.Write(fitDest); - - // Compute and write the file CRC to the end of the file - byte[] data = new byte[fitDest.Length]; - fitDest.Position = 0; - fitDest.Read(data, 0, data.Length); - ushort fileCrc = CRC.Calc16(data, data.Length); - byte[] buffer = BitConverter.GetBytes(fileCrc); - fitDest.Write(buffer, 0, 2); - } - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Field.cs b/src/Garmin/FitSdk/Dynastream/Fit/Field.cs deleted file mode 100644 index 4714a15c5..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Field.cs +++ /dev/null @@ -1,181 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System.Collections.Generic; -using System.Linq; - -namespace Dynastream.Fit -{ - public class Field - : FieldBase - { - #region Fields - private string name; - private byte type; - private double scale; - private double offset; - private string units; - private bool isAccumulated; - private Profile.Type profileType; - - internal List subfields = new List(); - internal List components = new List(); - #endregion - - #region Properties - public override string Name - { - get - { - return name; - } - } - - public byte Num { get; set; } - - public override byte Type - { - get - { - return type; - } - } - - public override double Scale - { - get - { - return scale; - } - } - - public override double Offset - { - get - { - return offset; - } - } - - public override string Units - { - get - { - return units; - } - } - - public bool IsAccumulated - { - get - { - return isAccumulated; - } - } - - public Profile.Type ProfileType - { - get - { - return profileType; - } - } - - public bool IsExpandedField { get; set; } - #endregion - - #region Constructors - public Field(Field other) - : base(other) - { - if (other == null) - { - this.name = "unknown"; - this.Num = Fit.FieldNumInvalid; - this.type = 0; - this.scale = 1f; - this.offset = 0f; - this.units = ""; - this.isAccumulated = false; - this.profileType = Profile.Type.Enum; - this.IsExpandedField = false; - return; - } - - this.name = other.Name; - this.Num = other.Num; - this.type = other.Type; - this.scale = other.Scale; - this.offset = other.Offset; - this.units = other.units; - this.isAccumulated = other.isAccumulated; - this.profileType = other.profileType; - this.IsExpandedField = other.IsExpandedField; - - foreach (Subfield subfield in other.subfields) - { - this.subfields.Add(new Subfield(subfield)); - } - foreach (FieldComponent component in other.components) - { - this.components.Add(new FieldComponent(component)); - } - } - - internal Field(string name, byte num, byte type, double scale, double offset, string units, bool accumulated, Profile.Type profileType) - { - this.name = name; - this.Num = num; - this.type = type; - this.scale = scale; - this.offset = offset; - this.units = units; - this.isAccumulated = accumulated; - this.profileType = profileType; - this.IsExpandedField = false; - } - - internal Field(byte num, byte type) - : this("unknown", num, type, 1.0d, 0.0d, "", false, Profile.Type.NumTypes) - { - } - #endregion - - #region Methods - - internal void SetType(byte value) - { - type = value; - } - - internal override Subfield GetSubfield(string subfieldName) - { - return subfields.FirstOrDefault(subfield => subfield.Name == subfieldName); - } - - internal override Subfield GetSubfield(int subfieldIndex) - { - // SubfieldIndexActiveSubfield and SubfieldIndexMainField - // will be out of this range - if (subfieldIndex >= 0 && subfieldIndex < subfields.Count) - { - return subfields[subfieldIndex]; - } - - return null; - - } - #endregion - } -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/FieldBase.cs b/src/Garmin/FitSdk/Dynastream/Fit/FieldBase.cs deleted file mode 100644 index e690327e8..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/FieldBase.cs +++ /dev/null @@ -1,803 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; - -namespace Dynastream.Fit -{ - public abstract class FieldBase - { - #region Fields - private readonly List values; - #endregion - - #region Properties - public abstract string Name { get; } - public abstract byte Type { get; } - public abstract double Scale { get; } - public abstract double Offset { get; } - public abstract string Units { get; } - #endregion - - #region Constructors - - protected FieldBase(FieldBase other) - : this() - { - if (other != null) - { - foreach (object obj in other.values) - { - values.Add(obj); - } - } - } - - protected FieldBase() - { - values = new List(); - } - #endregion - - #region Methods - - internal abstract Subfield GetSubfield(string subfieldName); - internal abstract Subfield GetSubfield(int subfieldIndex); - - public string GetName() - { - return GetName((Subfield)null); - } - - public string GetName(byte subfieldIndex) - { - return GetName(GetSubfield(subfieldIndex)); - } - - public string GetName(string subFieldName) - { - return GetName(GetSubfield(subFieldName)); - } - - private string GetName(Subfield subfield) - { - return subfield == null ? Name : subfield.Name; - } - - public new byte GetType() - { - return GetType((Subfield)null); - } - - public byte GetType(byte subfieldIndex) - { - return GetType(GetSubfield(subfieldIndex)); - } - - public byte GetType(string subFieldName) - { - return GetType(GetSubfield(subFieldName)); - } - - private byte GetType(Subfield subfield) - { - return subfield == null ? Type : subfield.Type; - } - - public string GetUnits() - { - return GetUnits((Subfield)null); - } - - public string GetUnits(byte subfieldIndex) - { - return GetUnits(GetSubfield(subfieldIndex)); - } - - public string GetUnits(string subFieldName) - { - return GetUnits(GetSubfield(subFieldName)); - } - - private string GetUnits(Subfield subfield) - { - return subfield == null ? Units : subfield.Units; - } - - public byte GetSize() - { - byte size = 0; - - switch (Type & Fit.BaseTypeNumMask) - { - case Fit.Enum: - case Fit.SInt8: - case Fit.UInt8: - case Fit.SInt16: - case Fit.UInt16: - case Fit.SInt32: - case Fit.UInt32: - case Fit.Float32: - case Fit.Float64: - case Fit.UInt8z: - case Fit.UInt16z: - case Fit.UInt32z: - case Fit.SInt64: - case Fit.UInt64: - case Fit.UInt64z: - case Fit.Byte: - size = (byte)(GetNumValues() * Fit.BaseType[Type & Fit.BaseTypeNumMask].size); - break; - - case Fit.String: - // Each string may be of differing length - // The fit binary must also include a null terminator - foreach (byte[] element in values) - { - size += (byte)(element.Length); - } - break; - - default: - break; - } - return size; - } - - internal bool IsSigned() - { - return IsSigned((Subfield)null); - } - - internal bool IsSigned(int subfieldIndex) - { - return IsSigned(GetSubfield(subfieldIndex)); - } - - internal bool IsSigned(string subfieldName) - { - return IsSigned(GetSubfield(subfieldName)); - } - - internal bool IsSigned(Subfield subfield) - { - byte type = subfield == null ? Type : subfield.Type; - type &= Fit.BaseTypeNumMask; - return Fit.BaseType[type].isSigned; - } - - public void AddValue(Object value) - { - values.Add(value); - } - - public int GetNumValues() - { - return values.Count; - } - - public long? GetBitsValue(int offset, int bits, byte componentType) - { - long? value = 0; - long data = 0; - long mask; - int index = 0; - int bitsInValue = 0; - int bitsInData; - - // Ensure the destination type can hold the desired number of bits. - // We don't support arrays in the destination at this time. - if ((Fit.BaseType[componentType & Fit.BaseTypeNumMask].size * 8) < bits) - { - bits = Fit.BaseType[componentType & Fit.BaseTypeNumMask].size * 8; - } - - if (values.Count == 0) - return null; - - while (bitsInValue < bits) - { - // If we run out of bits it likely is because our profile is newer and defines - // additional components not present in the field - if (index == values.Count) - return null; - - data = Convert.ToInt64(this.values[index++]); - - // Shift data to reach desired bits starting at 'offset' - // If offset is larger than the containing types size, - // we must grab additional elements - data >>= offset; - bitsInData = Fit.BaseType[Type & Fit.BaseTypeNumMask].size * 8 - offset; - offset -= Fit.BaseType[Type & Fit.BaseTypeNumMask].size * 8; - - if (bitsInData > 0) - { - // We have reached desired data, pull off bits until we - // get enough - offset = 0; - // If there are more bits available in data than we need - // just capture those we need - if (bitsInData > (bits - bitsInValue)) - { - bitsInData = bits - bitsInValue; - } - mask = (1L << bitsInData) - 1; - value |= ((data & mask) << bitsInValue); - bitsInValue += bitsInData; - } - } - - // Sign extend if needed - if (Fit.BaseType[componentType & Fit.BaseTypeNumMask].isSigned == true && - Fit.BaseType[componentType & Fit.BaseTypeNumMask].isInteger == true) - { - long signBit = (1L << (bits - 1)); - - if ((value & signBit) != 0) - { - value = -signBit + (value & (signBit - 1)); - } - } - return value; - } - - public object GetValue() - { - return GetValue(0, (Subfield)null); - } - - public object GetValue(int index) - { - return GetValue(index, (Subfield)null); - } - - public object GetValue(int index, int subfieldIndex) - { - return GetValue(index, GetSubfield(subfieldIndex)); - } - - public object GetValue(int index, string subfieldName) - { - return GetValue(index, GetSubfield(subfieldName)); - } - - public object GetValue(int index, Subfield subfield) - { - double scale, offset; - - if (index >= values.Count || index < 0) - { - return null; - } - - if (subfield == null) - { - scale = Scale; - offset = Offset; - } - else - { - scale = subfield.Scale; - offset = subfield.Offset; - } - - object value; - bool castToFloat = false; - - switch (Type & Fit.BaseTypeNumMask) - { - case Fit.Enum: - case Fit.Byte: - case Fit.UInt8: - case Fit.UInt8z: - value = Convert.ToByte(values[index]); - if (((byte)value == (byte)Fit.BaseType[Type & Fit.BaseTypeNumMask].invalidValue) && - (scale != 1.0)) - castToFloat = true; - break; - - case Fit.SInt8: - value = Convert.ToSByte(values[index]); - if (((sbyte)value == (sbyte)Fit.BaseType[Type & Fit.BaseTypeNumMask].invalidValue) && - (scale != 1.0)) - castToFloat = true; - break; - - case Fit.SInt16: - value = Convert.ToInt16(values[index]); - if (((short)value == (short)Fit.BaseType[Type & Fit.BaseTypeNumMask].invalidValue) && - (scale != 1.0)) - castToFloat = true; - break; - - case Fit.UInt16: - case Fit.UInt16z: - value = Convert.ToUInt16(values[index]); - if (((ushort)value == (ushort)Fit.BaseType[Type & Fit.BaseTypeNumMask].invalidValue) && - (scale != 1.0)) - castToFloat = true; - break; - - case Fit.SInt32: - value = Convert.ToInt32(values[index]); - if (((int)value == (int)Fit.BaseType[Type & Fit.BaseTypeNumMask].invalidValue) && - (scale != 1.0)) - castToFloat = true; - break; - - case Fit.UInt32: - case Fit.UInt32z: - value = Convert.ToUInt32(values[index]); - if (((uint)value == (uint)Fit.BaseType[Type & Fit.BaseTypeNumMask].invalidValue) && - (scale != 1.0)) - castToFloat = true; - break; - - case Fit.SInt64: - value = Convert.ToInt64(values[index]); - if (((long)value == (long)Fit.BaseType[Type & Fit.BaseTypeNumMask].invalidValue) && - (scale != 1.0)) - castToFloat = true; - break; - - case Fit.UInt64: - case Fit.UInt64z: - value = Convert.ToUInt64(values[index]); - if (((ulong)value == (ulong)Fit.BaseType[Type & Fit.BaseTypeNumMask].invalidValue) && - (scale != 1.0)) - castToFloat = true; - break; - - case Fit.Float32: - value = Convert.ToSingle(values[index]); - if (float.IsNaN((float)value) && - (scale != 1.0)) - castToFloat = true; - break; - - case Fit.Float64: - value = Convert.ToDouble(values[index]); - if (double.IsNaN((double)value) && - (scale != 1.0)) - castToFloat = true; - break; - - case Fit.String: - value = values[index]; - break; - - default: - value = null; - break; - } - - if (castToFloat == true) - { - //Cast to Single Precision (float) since its expecting a float value if scale > 1 - value = Convert.ToSingle(value); - return value; - } - - if (IsNumeric()) - { - if (scale != 1.0 || Offset != 0.0) - { - value = (float)((Convert.ToSingle(value) / scale) - offset); - } - } - return value; - } - - public void SetValue(object value) - { - SetValue(0, value, (Subfield)null); - } - - public void SetValue(object value, int subfieldIndex) - { - SetValue(0, value, GetSubfield(subfieldIndex)); - } - - public void SetValue(object value, string subfieldName) - { - SetValue(0, value, GetSubfield(subfieldName)); - } - - public void SetValue(int index, object value) - { - SetValue(index, value, (Subfield)null); - } - - public void SetValue(int index, object value, int subfieldIndex) - { - SetValue(index, value, GetSubfield(subfieldIndex)); - } - - public void SetValue(int index, object value, string subfieldName) - { - SetValue(index, value, GetSubfield(subfieldName)); - } - - public void SetValue(int index, object value, Subfield subfield) - { - double scale, offset; - - while (index >= GetNumValues()) - { - // Add placeholders of the correct type so GetSize() will - // still compute correctly - switch (Type & Fit.BaseTypeNumMask) - { - case Fit.Enum: - case Fit.Byte: - case Fit.UInt8: - case Fit.UInt8z: - values.Add(new byte()); - break; - - case Fit.SInt8: - values.Add(new sbyte()); - break; - - case Fit.SInt16: - values.Add(new short()); - break; - - case Fit.UInt16: - case Fit.UInt16z: - values.Add(new ushort()); - break; - - case Fit.SInt32: - values.Add(new int()); - break; - - case Fit.UInt32: - case Fit.UInt32z: - values.Add(new uint()); - break; - - case Fit.SInt64: - values.Add(new long()); - break; - - case Fit.UInt64: - case Fit.UInt64z: - values.Add(new ulong()); - break; - - case Fit.Float32: - values.Add(new float()); - break; - - case Fit.Float64: - values.Add(new double()); - break; - - case Fit.String: - values.Add(new byte[0]); - break; - - default: - break; - } - } - - if (subfield == null) - { - scale = Scale; - offset = Offset; - } - else - { - scale = subfield.Scale; - offset = Offset; - } - - // Cast to long as scale and offset only apply to integer based types - // and we want to make sure we have maximum precision. - long invalidValue = 0; - long castedValue = 0; - - if (IsNumeric()) - { - // Cast to long as scale and offset only apply to integer based types - // and we want to make sure we have maximum precision. - invalidValue = (long)Convert.ToDouble(Fit.BaseType[Type & Fit.BaseTypeNumMask].invalidValue); - castedValue = (long)Convert.ToDouble(value); - - // If the field is numeric, check if the value is less than the base - // type's invalid value. For "z" base types where 0 is invalid, check - // that the value is > 0. Apply scale and offset if valid. - if ( ( castedValue < invalidValue ) || - ( ( invalidValue == 0 ) && ( castedValue > 0 ) ) ) - { - if (scale != 1.0 || Offset != 0.0) - { - value = Convert.ToSingle(value); - value = ((float)value + offset) * scale; - } - } - } - - // Must convert value back to the base type, if there was a scale or offset it will - // have been converted to float. Caller also may have passed in an unexpected type. - bool success = false; - - switch (Type & Fit.BaseTypeNumMask) - { - case Fit.Enum: - case Fit.Byte: - case Fit.UInt8: - case Fit.UInt8z: - if ( ( Convert.ToDouble(value) >= byte.MinValue ) && ( Convert.ToDouble(value) <= byte.MaxValue ) ) - { - value = Convert.ToByte(value); - success = true; - } - break; - - case Fit.SInt8: - if ( ( Convert.ToDouble(value) >= sbyte.MinValue ) && ( Convert.ToDouble(value) <= sbyte.MaxValue ) ) - { - value = Convert.ToSByte(value); - success = true; - } - break; - - case Fit.SInt16: - if ( ( Convert.ToDouble(value) >= short.MinValue) && ( Convert.ToDouble(value) <= short.MaxValue ) ) - { - value = Convert.ToInt16(value); - success = true; - } - break; - - case Fit.UInt16: - case Fit.UInt16z: - if ( ( Convert.ToDouble(value) >= ushort.MinValue ) && ( Convert.ToDouble(value) <= ushort.MaxValue ) ) - { - value = Convert.ToUInt16(value); - success = true; - } - break; - - case Fit.SInt32: - if ( ( Convert.ToDouble(value) >= int.MinValue ) && ( Convert.ToDouble(value) <= int.MaxValue ) ) - { - value = Convert.ToInt32(value); - success = true; - } - break; - - case Fit.UInt32: - case Fit.UInt32z: - if ( ( Convert.ToDouble(value) >= uint.MinValue ) && ( Convert.ToDouble(value) <= uint.MaxValue ) ) - { - value = Convert.ToUInt32(value); - success = true; - } - break; - - case Fit.SInt64: - value = Convert.ToInt64(value); - success = true; - break; - - case Fit.UInt64: - case Fit.UInt64z: - value = Convert.ToUInt64(value); - success = true; - break; - - case Fit.Float32: - if ( ( Convert.ToDouble(value) >= float.MinValue ) && ( Convert.ToDouble(value) <= float.MaxValue ) ) - { - value = Convert.ToSingle(value); - success = true; - } - break; - - case Fit.Float64: - if ( ( (double)value >= double.MinValue ) && ( (double)value <= double.MaxValue ) ) - { - value = Convert.ToDouble(value); - success = true; - } - break; - - case Fit.String: - success = true; - break; - - default: - break; - } - - // If the conversion failed, set the value to invalid - if (success == false) - { - value = Fit.BaseType[Type & Fit.BaseTypeNumMask].invalidValue; - } - values[index] = value; - } - - public void SetRawValue(int index, object value) - { - while (index >= GetNumValues()) - { - // Add placeholders of the correct type so GetSize() will - // still compute correctly - switch (Type & Fit.BaseTypeNumMask) - { - case Fit.Enum: - case Fit.Byte: - case Fit.UInt8: - case Fit.UInt8z: - values.Add(new byte()); - break; - - case Fit.SInt8: - values.Add(new sbyte()); - break; - - case Fit.SInt16: - values.Add(new short()); - break; - - case Fit.UInt16: - case Fit.UInt16z: - values.Add(new ushort()); - break; - - case Fit.SInt32: - values.Add(new int()); - break; - - case Fit.UInt32: - case Fit.UInt32z: - values.Add(new uint()); - break; - - case Fit.SInt64: - values.Add(new long()); - break; - - case Fit.UInt64: - case Fit.UInt64z: - values.Add(new ulong()); - break; - - case Fit.Float32: - values.Add(new float()); - break; - - case Fit.Float64: - values.Add(new double()); - break; - - case Fit.String: - values.Add(new byte[0]); - break; - - default: - break; - } - } - // Must convert value back to the base type, caller may have passed in an unexpected type. - switch (Type & Fit.BaseTypeNumMask) - { - case Fit.Enum: - case Fit.Byte: - case Fit.UInt8: - case Fit.UInt8z: - value = Convert.ToByte(value); - break; - - case Fit.SInt8: - value = Convert.ToSByte(value); - break; - - case Fit.SInt16: - value = Convert.ToInt16(value); - break; - - case Fit.UInt16: - case Fit.UInt16z: - value = Convert.ToUInt16(value); - break; - - case Fit.SInt32: - value = Convert.ToInt32(value); - break; - - case Fit.UInt32: - case Fit.UInt32z: - value = Convert.ToUInt32(value); - break; - - case Fit.SInt64: - value = Convert.ToInt64(value); - break; - - case Fit.UInt64: - case Fit.UInt64z: - value = Convert.ToUInt64(value); - break; - - case Fit.Float32: - value = Convert.ToSingle(value); - break; - - case Fit.Float64: - value = Convert.ToDouble(value); - break; - - default: - break; - - } - values[index] = value; - } - - public object GetRawValue(int index) - { - if (index >= values.Count || index < 0) - { - return null; - } - object value = values[index]; - return value; - } - - public bool IsNumeric() - { - bool isNumeric; - switch (Type & Fit.BaseTypeNumMask) - { - case Fit.Enum: - case Fit.String: - isNumeric = false; - break; - - case Fit.SInt8: - case Fit.UInt8: - case Fit.SInt16: - case Fit.UInt16: - case Fit.SInt32: - case Fit.UInt32: - case Fit.Float32: - case Fit.Float64: - case Fit.UInt8z: - case Fit.UInt16z: - case Fit.UInt32z: - case Fit.Byte: - case Fit.SInt64: - case Fit.UInt64: - case Fit.UInt64z: - isNumeric = true; - break; - - default: - throw new FitException("Field:IsNumeric - Unexpected Fit Type" + this.Type); - - } - return isNumeric; - } - #endregion - - } -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/FieldComponent.cs b/src/Garmin/FitSdk/Dynastream/Fit/FieldComponent.cs deleted file mode 100644 index e9db859c1..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/FieldComponent.cs +++ /dev/null @@ -1,76 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - /// - /// - /// - internal class FieldComponent - { - #region Fields - internal byte fieldNum; - internal bool accumulate; - internal int bits; - internal double scale; - internal double offset; - - internal long accumulatedValue = 0; - internal long lastValue = 0; - #endregion // Fields - - #region Properties - #endregion // Properties - - #region Constructors - internal FieldComponent(byte fieldNum, bool accumulate, int bits, double scale, double offset) - { - this.fieldNum = fieldNum; - this.accumulate = accumulate; - this.bits = bits; - this.scale = scale; - this.offset = offset; - } - - internal FieldComponent(FieldComponent component) - { - this.fieldNum = component.fieldNum; - this.accumulate = component.accumulate; - this.bits = component.bits; - this.scale = component.scale; - this.offset = component.offset; - this.accumulatedValue = component.accumulatedValue; - this.lastValue = component.lastValue; - } - #endregion // Constructors - - #region Methods - public long Accumulate(long value) - { - long mask = (1L << bits) - 1; - - accumulatedValue += (value - lastValue) & mask; - lastValue = value; - - return accumulatedValue; - } - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/FieldDefinition.cs b/src/Garmin/FitSdk/Dynastream/Fit/FieldDefinition.cs deleted file mode 100644 index b24d5b0c7..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/FieldDefinition.cs +++ /dev/null @@ -1,65 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// - /// - public class FieldDefinition - { - #region Fields - - #endregion - - #region Properties - // Opt for the simpler form until we need a backing field - public byte Num { get; private set; } - public byte Size { get; private set; } - public byte Type { get; private set; } - #endregion - - #region Constructors - public FieldDefinition() - { - - } - - public FieldDefinition(Field field) - { - Num = field.Num; - Size = field.GetSize(); - Type = field.Type; - } - - public FieldDefinition(byte newNum, byte newSize, byte newType) - { - Num = newNum; - Size = newSize; - Type = newType; - } - - public FieldDefinition(FieldDefinition fieldDef) - { - Num = fieldDef.Num; - Size = fieldDef.Size; - Type = fieldDef.Type; - } - #endregion - - #region Methods - - #endregion - } -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/FitException.cs b/src/Garmin/FitSdk/Dynastream/Fit/FitException.cs deleted file mode 100644 index baf58555a..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/FitException.cs +++ /dev/null @@ -1,45 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - /// - /// Extends System.Exception to provide application specific exceptions. - /// - public class FitException : Exception - { - #region Constructors - public FitException() - : base() - { - } - - public FitException(string message) - : base(message) - { - } - - public FitException(string str, Exception e) - : base(str, e) - { - } - #endregion - } -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Header.cs b/src/Garmin/FitSdk/Dynastream/Fit/Header.cs deleted file mode 100644 index 7035fc87e..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Header.cs +++ /dev/null @@ -1,174 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - /// - /// Implements .FIT header encode/decode. - /// - public class Header - { - #region Fields - private char[] dataType; - private byte size; - #endregion - - #region Properties - public byte Size - { - get - { - return size; - } - set - { - if (value == Fit.HeaderWithCRCSize || value == Fit.HeaderWithoutCRCSize) - { - size = value; - } - else - { - throw new FitException("Tried to set Header Size to " + value); - } - } - } - public byte ProtocolVersion { get; set; } - public ushort ProfileVersion { get; set; } - public uint DataSize { get; set; } - public ushort Crc { get; set; } - #endregion - - #region Constructors - /// - /// Build a standard header with CRC. The CRC will be - /// precomputed and it is assumed no data is present yet. - /// - [Obsolete("Headers now support multiple Protocol versions.")] - public Header() - : this(Dynastream.Fit.ProtocolVersion.V10) - { - } - - /// - /// Build a standard header with CRC. The CRC will be - /// precomputed and it is assumed no data is present yet. - /// - public Header(ProtocolVersion version) - { - Size = Fit.HeaderWithCRCSize; - ProtocolVersion = version.GetVersionByte(); - ProfileVersion = Fit.ProfileVersion; - DataSize = 0; - dataType = new char[] { '.', 'F', 'I', 'T' }; - - UpdateCRC(); - } - - /// - /// Build header by decoding callers stream. - /// - /// - public Header(Stream fitStream) - { - Read(fitStream); - } - #endregion - - #region Methods - /// - /// Verify Header format is valid. - /// - /// - public bool IsValid() - { - if (new string(dataType) == ".FIT") - { - // Don't enforce header CRC anymore - return true; - } - return false; - } - - /// - /// Populate header object by decoding callers stream - /// - /// Readable stream - public void Read(Stream fitStream) - { - BinaryReader binReader = new BinaryReader(fitStream); - try - { - Size = binReader.ReadByte(); - ProtocolVersion = binReader.ReadByte(); - ProfileVersion = binReader.ReadUInt16(); - DataSize = binReader.ReadUInt32(); - dataType = binReader.ReadChars(4); - if (Size == Fit.HeaderWithCRCSize) - { - Crc = binReader.ReadUInt16(); - } - else - { - Crc = 0x0000; - } - } - catch (EndOfStreamException e) - { - throw new FitException("Header:Read() Failed at byte " + fitStream.Position + " - ", e); - } - } - - /// - /// Output header object to beginning of callers writeable stream. Crc should - /// be recalculated before calling. - /// - /// Writeable, Seekable stream. Position set to end of header - public void Write(Stream fitStream) - { - BinaryWriter bw = new BinaryWriter(fitStream); - - bw.BaseStream.Position = 0; - - bw.Write(Size); - bw.Write(ProtocolVersion); - bw.Write(ProfileVersion); - bw.Write(DataSize); - bw.Write(dataType); - if (Size == Fit.HeaderWithCRCSize) - { - bw.Write(Crc); - } - } - - /// - /// Recompute the header CRC based on the current contents of the header object - /// - public void UpdateCRC() - { - using (MemoryStream ms = new MemoryStream()) - { - Write(ms); - byte[] headerBuffer = ms.ToArray(); - Crc = CRC.Calc16(headerBuffer, headerBuffer.Length - 2); - } - } - #endregion // methods - } // class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/IMesgBroadcastPlugin.cs b/src/Garmin/FitSdk/Dynastream/Fit/IMesgBroadcastPlugin.cs deleted file mode 100644 index 7e6d91ece..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/IMesgBroadcastPlugin.cs +++ /dev/null @@ -1,27 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - public interface IMesgBroadcastPlugin - { - void OnBroadcast(object sender, MesgBroadcastEventArgs e); - void OnIncomingMesg(object sender, IncomingMesgEventArgs e); - } -} \ No newline at end of file diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Mesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Mesg.cs deleted file mode 100644 index 2659d08d5..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Mesg.cs +++ /dev/null @@ -1,1144 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using Dynastream.Utility; - -namespace Dynastream.Fit -{ - /// - /// - /// - public class Mesg - { - #region Fields - protected byte localNum = 0; - protected uint systemTimeOffset = 0; - private List fields = new List(); - private readonly Dictionary developerFields - = new Dictionary(); - #endregion - - #region Properties - public string Name { get; set; } - public ushort Num { get; set; } - public byte LocalNum - { - get - { - return localNum; - } - set - { - if (value > Fit.LocalMesgNumMask) - { - throw new FitException("Mesg:LocalNum - Invalid Local message number " + value + ". Local message number must be < " + Fit.LocalMesgNumMask); - } - else - { - localNum = value; - } - } - } - - public IEnumerable Fields - { - get { return fields; } - } - - internal IList FieldsList - { - get { return fields; } - } - - public IEnumerable DeveloperFields - { - get { return developerFields.Values; } - } - #endregion - - #region Constructors - public Mesg(Mesg mesg) - { - if (mesg == null) - { - this.Name = "unknown"; - this.Num = (ushort)MesgNum.Invalid; - return; - } - this.Name = mesg.Name; - this.Num = mesg.Num; - this.LocalNum = mesg.LocalNum; - this.systemTimeOffset = mesg.systemTimeOffset; - foreach (Field field in mesg.FieldsList) - { - if (field.GetNumValues() > 0) - { - this.FieldsList.Add(new Field(field)); - } - } - - foreach (var fld in mesg.DeveloperFields) - { - if (fld.GetNumValues() > 0) - { - var key = new DeveloperDataKey(fld.DeveloperDataIndex, fld.Num); - developerFields[key] = new DeveloperField(fld); - } - } - } - - public Mesg(string name, ushort num) - { - this.Name = name; - this.Num = num; - } - - internal Mesg(ushort mesgNum) - : this(Profile.GetMesg(mesgNum)) - { - } - - public Mesg(Stream fitStream, MesgDefinition defnMesg) - : this(defnMesg.GlobalMesgNum) - { - Read(fitStream, defnMesg); - } - #endregion - - #region Methods - public void Read(Stream inStream, MesgDefinition defnMesg) - { - inStream.Position = 1; - EndianBinaryReader mesgReader = new EndianBinaryReader(inStream, defnMesg.IsBigEndian); - - LocalNum = defnMesg.LocalMesgNum; - - foreach (FieldDefinition fieldDef in defnMesg.GetFields()) - { - bool read = true; - - // It's possible the field type found in the field definition may - // not agree with the type defined in the profile. The profile - // type will be preferred for decode. - Field field = GetField(fieldDef.Num); - if (field == null) - { - // We normally won't have fields attached to our skeleton message, - // as we add values we need to add the fields too based on the mesg,field - // combo in the profile. Must derive from the profile so the scale etc - // is correct - field = new Field(Profile.GetMesg(this.Num).GetField(fieldDef.Num)); - if (field.Num == Fit.FieldNumInvalid) - { - // If there was no info in the profile the FieldNum will get set to invalid - // so preserve the unknown fields info while we know it - field.Num = fieldDef.Num; - field.SetType(fieldDef.Type); - } - SetField(field); - } - - if (field.Type != fieldDef.Type) - { - int fieldSize = Fit.BaseType[field.Type & Fit.BaseTypeNumMask].size; - int defSize = Fit.BaseType[fieldDef.Type & Fit.BaseTypeNumMask].size; - - if (defSize < fieldSize) - { - field.SetType(fieldDef.Type); - } - else if(defSize != fieldSize) - { - // Demotion is hard. Don't read the field if the - // sizes are different. Use the profile type if the - // signedness of the field has changed. - read = false; - } - } - - if (read) - { - ReadFieldValue(field, fieldDef.Size, mesgReader); - } - else - { - // Skip the bytes for the field if we aren't going to bother reading them - mesgReader.ReadBytes(fieldDef.Size); - } - } - - foreach (DeveloperFieldDefinition fldDef in defnMesg.DeveloperFieldDefinitions) - { - DeveloperField fld = GetDeveloperField(fldDef.FieldNum, fldDef.DeveloperDataIndex); - if (ReferenceEquals(fld, null)) - { - fld = new DeveloperField(fldDef); - SetDeveloperField(fld); - } - - ReadFieldValue(fld, fldDef.Size, mesgReader); - } - } - - private static void ReadFieldValue( - FieldBase field, - byte size, - EndianBinaryReader mesgReader) - { - byte baseType = (byte)(field.Type & Fit.BaseTypeNumMask); - // strings may be an array and are of variable length - if (baseType == Fit.String) - { - byte[] bytes = mesgReader.ReadBytes(size); - List utf8Bytes = new List(); - - if (!Array.Exists(bytes, x => x != 0)) - { - // Array has no non zero values, don't add any strings - return; - } - - for (int i = 0; i < size; i++) - { - byte b = bytes[i]; - utf8Bytes.Add(b); - - if (b == 0x00) - { - field.AddValue(utf8Bytes.ToArray()); - utf8Bytes.Clear(); - } - } - - if (utf8Bytes.Count != 0) - { - // Add a Null Terminator - utf8Bytes.Add(0); - field.AddValue(utf8Bytes.ToArray()); - utf8Bytes.Clear(); - } - } - else - { - int numElements = size / Fit.BaseType[baseType].size; - for (int i = 0; i < numElements; i++) - { - object value; - bool invalid = TryReadValue( - out value, - field.Type, - mesgReader, - size); - - if (!invalid || numElements > 1) - { - field.SetRawValue(i, value); - } - } - } - } - - private static bool TryReadValue( - out object value, - byte type, - EndianBinaryReader mesgReader, - byte size) - { - bool invalid = true; - byte baseTypeNum = (byte)(type & Fit.BaseTypeNumMask); - switch (baseTypeNum) - { - case Fit.Enum: - case Fit.Byte: - case Fit.UInt8: - case Fit.UInt8z: - value = mesgReader.ReadByte(); - if ((byte) value != (byte) Fit.BaseType[baseTypeNum].invalidValue) - { - invalid = false; - } - break; - - case Fit.SInt8: - value = mesgReader.ReadSByte(); - if ((sbyte) value != (sbyte) Fit.BaseType[baseTypeNum].invalidValue) - { - invalid = false; - } - break; - - case Fit.SInt16: - value = mesgReader.ReadInt16(); - if ((short) value != (short) Fit.BaseType[baseTypeNum].invalidValue) - { - invalid = false; - } - break; - - case Fit.UInt16: - case Fit.UInt16z: - value = mesgReader.ReadUInt16(); - if ((ushort) value != - (ushort) Fit.BaseType[baseTypeNum].invalidValue) - { - invalid = false; - } - break; - - case Fit.SInt32: - value = mesgReader.ReadInt32(); - if ((int) value != (int) Fit.BaseType[baseTypeNum].invalidValue) - { - invalid = false; - } - break; - - case Fit.UInt32: - case Fit.UInt32z: - value = mesgReader.ReadUInt32(); - if ((uint) value != (uint) Fit.BaseType[baseTypeNum].invalidValue) - { - invalid = false; - } - break; - - case Fit.SInt64: - value = mesgReader.ReadInt64(); - if ((long) value != (long) Fit.BaseType[baseTypeNum].invalidValue) - { - invalid = false; - } - break; - - case Fit.UInt64: - case Fit.UInt64z: - value = mesgReader.ReadUInt64(); - if ((ulong) value != (ulong) Fit.BaseType[baseTypeNum].invalidValue) - { - invalid = false; - } - break; - - case Fit.Float32: - value = mesgReader.ReadSingle(); - if (!float.IsNaN((float)value)) - { - invalid = false; - } - break; - - case Fit.Float64: - value = mesgReader.ReadDouble(); - if (!double.IsNaN((double)value)) - { - invalid = false; - } - break; - - default: - value = mesgReader.ReadBytes(size); - break; - } - - return invalid; - } - - public void Write(Stream outStream) - { - Write(outStream, null); - } - - public void Write(Stream outStream, MesgDefinition mesgDef) - { - if (mesgDef == null) - { - mesgDef = new MesgDefinition(this); - } - - EndianBinaryWriter bw = new EndianBinaryWriter(outStream, mesgDef.IsBigEndian); - bw.Write(LocalNum); - - foreach (FieldDefinition fieldDef in mesgDef.GetFields()) - { - Field field = GetField(fieldDef.Num); - if (null == field) - { - field = Profile.GetField(this.Num, fieldDef.Num); - if( null != field ) - { - FieldsList.Add(field); - } - else - { - field = new Field(fieldDef.Num, fieldDef.Type); - } - } - - WriteField(field, fieldDef.Size, bw); - } - - foreach (DeveloperFieldDefinition fieldDef in mesgDef.DeveloperFieldDefinitions) - { - DeveloperField field = GetDeveloperField(fieldDef.FieldNum, fieldDef.DeveloperDataIndex); - - if (field == null) - { - field = new DeveloperField(fieldDef); - SetDeveloperField(field); - } - - WriteField(field, fieldDef.Size, bw); - } - } - - private static void WriteField(FieldBase field, byte size, BinaryWriter bw) - { - byte baseType = (byte)(field.Type & Fit.BaseTypeNumMask); - - // The field could be blank, correctly formed or partially filled - while (field.GetSize() < size) - { - if (baseType == Fit.String) - { - // Figure out how much we have to pad - byte padAmount = (byte)(size - field.GetSize()); - //Has to be a string. - try - { - // Get the Last Value of the field - byte[] value = (byte[]) field.GetValue( field.GetNumValues() - 1 ); - List temp = new List(); - - if (value != null) - { - temp.AddRange(value); - } - - for(byte i = 0; i < padAmount; i++) - { - temp.Add( - Convert.ToByte( - Fit.BaseType[baseType].invalidValue)); - } - - field.SetValue(temp.ToArray()); - } - catch (Exception) - { - throw new FitException( - "Exception occurred while resizing field to match definition."); - } - } - else - { - field.AddValue(Fit.BaseType[baseType].invalidValue); - } - } - - for (int i = 0; i < field.GetNumValues(); i++) - { - object value = field.GetRawValue(i); - if (value == null) - { - value = Fit.BaseType[baseType].invalidValue; - } - - switch (baseType) - { - case Fit.Enum: - case Fit.Byte: - case Fit.UInt8: - case Fit.UInt8z: - bw.Write((byte) value); - break; - - case Fit.SInt8: - bw.Write((sbyte) value); - break; - - case Fit.SInt16: - bw.Write((short) value); - break; - - case Fit.UInt16: - case Fit.UInt16z: - bw.Write((ushort) value); - break; - - case Fit.SInt32: - bw.Write((int) value); - break; - - case Fit.UInt32: - case Fit.UInt32z: - bw.Write((uint) value); - break; - - case Fit.SInt64: - bw.Write((long) value); - break; - - case Fit.UInt64: - case Fit.UInt64z: - bw.Write((ulong) value); - break; - - case Fit.Float32: - bw.Write((float) value); - break; - - case Fit.Float64: - bw.Write((double) value); - break; - - case Fit.String: - bw.Write((byte[]) value); - break; - - default: - break; - } - } - } - - #region FieldList Manipulation Functions - public bool HasField(byte fieldNum) - { - foreach (Field field in FieldsList) - { - if (field.Num == fieldNum) - { - return true; - } - } - return false; - } - - public void SetDeveloperField(DeveloperField field) - { - var devKey = new DeveloperDataKey(field.DeveloperDataIndex, field.Num); - developerFields[devKey] = field; - } - - /// - /// Replace an existing field, otherwise add a reference to fields list - /// - /// Caller allocated field - public void SetField(Field field) - { - for (int i = 0; i < FieldsList.Count; i++) - { - if (FieldsList[i].Num == field.Num) - { - FieldsList[i] = field; - return; - } - } - FieldsList.Add(field); - } - - /// - /// Insert a field at the desired index. If the field already exists in the mesg it is first removed. - /// - /// Index to insert the field, if index is out of range, the field is added to the end of the list - /// Caller allocated field - public void InsertField(int index, Field field) - { - // if message already contains this field, remove it - for (int i = 0; i < FieldsList.Count; i++) - { - if (FieldsList[i].Num == field.Num) - { - FieldsList.RemoveAt(i); - } - } - // if the index is out of range, add to the end - if (index < 0 || index > FieldsList.Count) - { - FieldsList.Add(field); - } - // insert the new field at desired index - else - { - FieldsList.Insert(index, field); - } - } - - public void SetFields(Mesg mesg) - { - if (mesg.Num != Num) - { - return; - } - foreach (Field field in mesg.FieldsList) - { - SetField(new Field(field)); - } - } - - public int GetNumFields() - { - return FieldsList.Count; - } - - private DeveloperField GetDeveloperField(byte fieldNum, byte developerIndex) - { - var devKey = new DeveloperDataKey(developerIndex, fieldNum); - return developerFields.ContainsKey(devKey) ? developerFields[devKey] : null; - } - - public IEnumerable GetOverrideField(byte fieldNum) - { - LinkedList localFields = new LinkedList(); - - Field nativeField = GetField(fieldNum); - if (null != nativeField) - { - localFields.AddLast(nativeField); - } - - foreach(DeveloperField field in DeveloperFields.Where(x => x.NativeOverride == fieldNum)) - { - localFields.AddLast(field); - } - - return localFields; - } - - public Field GetField(byte fieldNum) - { - foreach (Field field in FieldsList) - { - if (field.Num == fieldNum) - { - return field; - } - } - - return null; - } - - public Field GetField(string fieldName) - { - return GetField(fieldName, true); - } - - public Field GetField(string fieldName, bool checkMesgSupportForSubFields) - { - foreach (Field field in FieldsList) - { - if (field.Name == fieldName) - { - return field; - } - - foreach (Subfield subfield in field.subfields) - { - if ((subfield.Name == fieldName) && (!checkMesgSupportForSubFields || (subfield.CanMesgSupport(this)))) - { - return field; - } - } - } - return null; - } - - public ushort GetActiveSubFieldIndex(byte fieldNum) - { - Field testField = new Field(this.GetField(fieldNum)); - - for (ushort i = 0; i < testField.subfields.Count; i++) - { - if (testField.subfields[i].CanMesgSupport(this)) - { - return i; - } - } - return Fit.SubfieldIndexMainField; - } - - public string GetActiveSubFieldName(byte fieldNum) - { - Field testField = new Field(this.GetField(fieldNum)); - - foreach (Subfield subfield in testField.subfields) - { - if (subfield.CanMesgSupport(this)) - { - return subfield.Name; - } - } - return Fit.SubfieldNameMainField; - } - - /// - /// Removes the specified field from this message. - /// - /// The Field to be removed from this message. - public void RemoveField(Field field) - { - FieldsList.Remove(field); - } - #endregion - - public int GetNumFieldValues(byte fieldNum) - { - Field field = GetField(fieldNum); - - if (field != null) - { - return field.GetNumValues(); - } - return 0; - } - - public int GetNumFieldValues(String fieldName) - { - Field field = GetField(fieldName); - - if (field != null) - { - return field.GetNumValues(); - } - return 0; - } - - public int GetNumFieldValues(byte fieldNum, ushort subfieldIndex) - { - Field field = GetField(fieldNum); - - if (field == null) - { - return 0; - } - - if (subfieldIndex == Fit.SubfieldIndexActiveSubfield) - { - return field.GetNumValues(); - } - - Subfield subfield = field.GetSubfield(subfieldIndex); - if ((subfield == null) || (subfield.CanMesgSupport(this))) - { - return field.GetNumValues(); - } - else - { - return 0; - } - } - - public int GetNumFieldValues(byte fieldNum, string subfieldName) - { - Field field = GetField(fieldNum); - - if (field == null) - { - return 0; - } - - Subfield subfield = field.GetSubfield(subfieldName); - if ((subfield == null) || (subfield.CanMesgSupport(this))) - { - return field.GetNumValues(); - } - else - { - return 0; - } - } - - public object GetFieldValue(byte fieldNum) - { - return GetFieldValue(fieldNum, 0, Fit.SubfieldIndexActiveSubfield); - } - - public object GetFieldValue(byte fieldNum, int fieldArrayIndex) - { - return GetFieldValue(fieldNum, fieldArrayIndex, Fit.SubfieldIndexActiveSubfield); - } - - public object GetFieldValue(byte fieldNum, int fieldArrayIndex, ushort subFieldIndex) - { - Field field = GetField(fieldNum); - - if (field == null) - { - return null; - } - - if (subFieldIndex == Fit.SubfieldIndexActiveSubfield) - { - return field.GetValue(fieldArrayIndex, GetActiveSubFieldIndex(fieldNum)); - } - else - { - Subfield subfield = field.GetSubfield(subFieldIndex); - - if ((subfield == null) || (subfield.CanMesgSupport(this))) - { - return field.GetValue(fieldArrayIndex, subFieldIndex); - } - else - { - return null; - } - } - } - - public object GetFieldValue(byte fieldNum, int fieldArrayIndex, string subfieldName) - { - Field field = GetField(fieldNum); - - if (field == null) - { - return null; - } - - Subfield subfield = field.GetSubfield(subfieldName); - - if ((subfield == null) || (subfield.CanMesgSupport(this))) - { - return field.GetValue(fieldArrayIndex, subfieldName); - } - else - { - return null; - } - } - - public object GetFieldValue(string name) - { - return GetFieldValue(name, 0); - } - - public object GetFieldValue(string name, int fieldArrayIndex) - { - Field field = GetField(name, false); - - if (field == null) - { - return null; - } - - Subfield subfield = field.GetSubfield(name); - - if ((subfield == null) || (subfield.CanMesgSupport(this))) - { - return field.GetValue(fieldArrayIndex, name); - } - else - { - return null; - } - } - - public bool GetIsFieldAccumulated(byte num) - { - Field field = GetField(num); - if (field != null) - { - return field.IsAccumulated; - } - return false; - } - - public void SetFieldValue(byte fieldNum, Object value) - { - SetFieldValue(fieldNum, 0, value, Fit.SubfieldIndexActiveSubfield); - } - - public void SetFieldValue(byte fieldNum, int fieldArrayIndex, Object value) - { - SetFieldValue(fieldNum, fieldArrayIndex, value, Fit.SubfieldIndexActiveSubfield); - } - - public void SetFieldValue(byte fieldNum, int fieldArrayIndex, Object value, ushort subfieldIndex) - { - if (subfieldIndex == Fit.SubfieldIndexActiveSubfield) - { - subfieldIndex = GetActiveSubFieldIndex(fieldNum); - } - else - { - Field testField = new Field(this.GetField(fieldNum)); - Subfield subfield = testField.GetSubfield(subfieldIndex); - - if ((subfield != null) && !(subfield.CanMesgSupport(this))) - { - return; - } - } - - Field field = GetField(fieldNum); - - if (field == null) - { - // We normally won't have fields attached to our skeleton message, - // as we add values we need to add the fields too based on the mesg,field - // combo in the profile. - field = new Field(Profile.GetMesg(this.Num).GetField(fieldNum)); - if (field.Num == Fit.FieldNumInvalid) - { - // If there was no info in the profile our FieldNum will get set to invalid, - // at least preserve FieldNum while we know it - field.Num = fieldNum; - } - SetField(field); - } - field.SetValue(fieldArrayIndex, value, subfieldIndex); - } - - public void SetFieldValue(byte fieldNum, int fieldArrayIndex, Object value, String subfieldName) - { - Field testField = new Field(this.GetField(fieldNum)); - Subfield subfield = testField.GetSubfield(subfieldName); - - if ((subfield != null) && !(subfield.CanMesgSupport(this))) - { - return; - } - - Field field = GetField(fieldNum); - - if (field == null) - { - // We normally won't have fields attached to our skeleton message, - // as we add values we need to add the fields too based on the mesg,field - // combo in the profile. - field = new Field(Profile.GetMesg(this.Num).GetField(fieldNum)); - if (field.Num == Fit.FieldNumInvalid) - { - // If there was no info in the profile our FieldNum will get set to invalid, - // at least preserve FieldNum while we know it - field.Num = fieldNum; - } - SetField(field); - } - field.SetValue(fieldArrayIndex, value, subfieldName); - } - - public void SetFieldValue(String name, Object value) - { - SetFieldValue(name, 0, value); - } - - public void SetFieldValue(String name, int fieldArrayIndex, Object value) - { - Field testField = new Field(this.GetField(name)); - Subfield subfield = testField.GetSubfield(name); - - if ((subfield != null) && !(subfield.CanMesgSupport(this))) - { - return; - } - - Field field = GetField(name, false); - - if (field == null) - { - field = new Field(Profile.GetMesg(this.Num).GetField(name)); - SetField(field); - } - - field.SetValue(fieldArrayIndex, value, name); - } - - public DateTime TimestampToDateTime(uint timestamp) - { - DateTime dateTime = new DateTime(timestamp); - dateTime.ConvertSystemTimeToUTC(systemTimeOffset); - - return dateTime; - } - - public DateTime TimestampToDateTime(uint? timestamp) - { - DateTime dateTime = null; - if (timestamp != null) - { - dateTime = new DateTime(timestamp ?? 0); - dateTime.ConvertSystemTimeToUTC(systemTimeOffset); - } - - return dateTime; - } - - /// - /// Removes all fields from this message that have been generated through - /// component expansion while decoding the source .FIT file. - /// - public void RemoveExpandedFields() - { - fields.RemoveAll(x => x.IsExpandedField); - } - - private IEnumerable ExpandComponentsInList(List componentList, Field currentField, int offset, Accumulator accumulator) - { - // When components.Count > 0 a field will be created and appended to the field list - if ((componentList != null) && (componentList.Count > 0)) - { - foreach (FieldComponent fC in componentList) - { - if (fC.fieldNum != Fit.FieldNumInvalid) - { - //Create a new field to expand into - Field newField = new Field(Profile.GetMesg(this.Num).GetField(fC.fieldNum)); - - // Mark that this field has been generated through expansion - newField.IsExpandedField = true; - - //cache a field that we use to set properties on - Field f = this.GetField(newField.Num); - - // GetBitsValue will not return more bits than the componentField type can hold. - // This means strings are built one letter at a time when using components - // which is a bad idea to start with) - long? bitsValue = currentField.GetBitsValue(offset, fC.bits, newField.Type); - if (bitsValue == null) - { - break; - } - - if (true == fC.accumulate) - { - bitsValue = accumulator.Accumulate(this.Num, fC.fieldNum, bitsValue.Value, fC.bits); - } - - if (newField.IsNumeric()) - { - // If the field is invalid, set the raw value so that - // the invalid value is not scaled or offset. - if (FitBaseType.IsNumericInvalid((long)bitsValue, newField.GetType())) - { - if (this.HasField(newField.Num)) - { - f.SetRawValue(f.GetNumValues(), bitsValue); - } - else - { - newField.SetRawValue(0, bitsValue); - } - } - else - { - double fbitsValue = Convert.ToDouble(bitsValue); - - fbitsValue = ((double)fbitsValue / fC.scale) - fC.offset; - - if (this.HasField(newField.Num)) - { - f.SetValue(f.GetNumValues(), fbitsValue); - } - else - { - newField.SetValue(fbitsValue); - } - } - } - // Shouldn't apply scale/offset to string or enum - else - { - object nonNumericBitsValue; - // Ensure strings are added as byte[] - if ((newField.Type & Fit.BaseTypeNumMask) == Fit.String) - { - nonNumericBitsValue = new byte[] { (byte)bitsValue }; - } - else - { - nonNumericBitsValue = bitsValue; - } - if (HasField(newField.Num)) - { - f.SetValue(f.GetNumValues(), nonNumericBitsValue); - } - else - { - newField.SetValue(nonNumericBitsValue); - } - } - offset += fC.bits; - - //Return each field as we iterate - yield return new FieldComponentExpansion(newField, offset); - } - } - } - } - - public void ExpandComponents() - { - ExpandComponents(null); - } - - public void ExpandComponents(Accumulator accumulator) - { - // Traverse the field list - // Change to for loop so we can add items as we iterate - for (int i = 0; i < FieldsList.Count; ++i) - { - List componentList = null; - // Determine the active subfield - ushort activeSubfield = GetActiveSubFieldIndex(FieldsList[i].Num); - - if (activeSubfield == Fit.SubfieldIndexMainField) - { - componentList = FieldsList[i].components; - } - else - { - componentList = FieldsList[i].GetSubfield(activeSubfield).Components; - } - - // Traverse the component list - int offset = 0; - foreach (FieldComponentExpansion f in ExpandComponentsInList(componentList, FieldsList[i], offset, accumulator)) - { - //Add the new field - FieldsList.Add(f.GetField()); - //update offset - offset = f.GetOffset(); - } - } - } - #endregion - } - - internal class FieldComponentExpansion - { - private int offset; - private Field field; - - public FieldComponentExpansion(Field f, int offset) - { - field = f; - this.offset = offset; - } - - public int GetOffset() - { - return offset; - } - - public Field GetField() - { - return field; - } - } -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/MesgBroadcaster.cs b/src/Garmin/FitSdk/Dynastream/Fit/MesgBroadcaster.cs deleted file mode 100644 index 1333ca806..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/MesgBroadcaster.cs +++ /dev/null @@ -1,1223 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - // Define our necessary event types (EventArgs and the delegate) - public delegate void MesgEventHandler(object sender, MesgEventArgs e); - public delegate void MesgDefinitionEventHandler(object sender, MesgDefinitionEventArgs e); - - public class MesgEventArgs : EventArgs - { - public Mesg mesg = null; - - public MesgEventArgs() - { - } - - public MesgEventArgs(Mesg newMesg) - { - mesg = new Mesg(newMesg); - } - } - - public class MesgDefinitionEventArgs : EventArgs - { - public MesgDefinition mesgDef = null; - - public MesgDefinitionEventArgs() - { - } - - public MesgDefinitionEventArgs(MesgDefinition newDefn) - { - mesgDef = new MesgDefinition(newDefn); - } - } - - /// - /// The MesgBroadcaster manages Mesg and MesgDefinition events. Its - /// handlers should be connected to the source of Mesg and MesgDef events - /// (such as a file decoder). - /// Clients may subscribe to the Broadcasters events (Mesg, Mesg Def - /// or specofic Profile Mesg) - /// - public class MesgBroadcaster - { - #region Methods & Events - public event MesgDefinitionEventHandler MesgDefinitionEvent; - public event MesgEventHandler MesgEvent; - // One event for every Profile Mesg - - - public event MesgEventHandler FileIdMesgEvent; - - public event MesgEventHandler FileCreatorMesgEvent; - - public event MesgEventHandler TimestampCorrelationMesgEvent; - - public event MesgEventHandler SoftwareMesgEvent; - - public event MesgEventHandler SlaveDeviceMesgEvent; - - public event MesgEventHandler CapabilitiesMesgEvent; - - public event MesgEventHandler FileCapabilitiesMesgEvent; - - public event MesgEventHandler MesgCapabilitiesMesgEvent; - - public event MesgEventHandler FieldCapabilitiesMesgEvent; - - public event MesgEventHandler DeviceSettingsMesgEvent; - - public event MesgEventHandler UserProfileMesgEvent; - - public event MesgEventHandler HrmProfileMesgEvent; - - public event MesgEventHandler SdmProfileMesgEvent; - - public event MesgEventHandler BikeProfileMesgEvent; - - public event MesgEventHandler ConnectivityMesgEvent; - - public event MesgEventHandler WatchfaceSettingsMesgEvent; - - public event MesgEventHandler OhrSettingsMesgEvent; - - public event MesgEventHandler TimeInZoneMesgEvent; - - public event MesgEventHandler ZonesTargetMesgEvent; - - public event MesgEventHandler SportMesgEvent; - - public event MesgEventHandler HrZoneMesgEvent; - - public event MesgEventHandler SpeedZoneMesgEvent; - - public event MesgEventHandler CadenceZoneMesgEvent; - - public event MesgEventHandler PowerZoneMesgEvent; - - public event MesgEventHandler MetZoneMesgEvent; - - public event MesgEventHandler DiveSettingsMesgEvent; - - public event MesgEventHandler DiveAlarmMesgEvent; - - public event MesgEventHandler DiveApneaAlarmMesgEvent; - - public event MesgEventHandler DiveGasMesgEvent; - - public event MesgEventHandler GoalMesgEvent; - - public event MesgEventHandler ActivityMesgEvent; - - public event MesgEventHandler SessionMesgEvent; - - public event MesgEventHandler LapMesgEvent; - - public event MesgEventHandler LengthMesgEvent; - - public event MesgEventHandler RecordMesgEvent; - - public event MesgEventHandler EventMesgEvent; - - public event MesgEventHandler DeviceInfoMesgEvent; - - public event MesgEventHandler DeviceAuxBatteryInfoMesgEvent; - - public event MesgEventHandler TrainingFileMesgEvent; - - public event MesgEventHandler WeatherConditionsMesgEvent; - - public event MesgEventHandler WeatherAlertMesgEvent; - - public event MesgEventHandler GpsMetadataMesgEvent; - - public event MesgEventHandler CameraEventMesgEvent; - - public event MesgEventHandler GyroscopeDataMesgEvent; - - public event MesgEventHandler AccelerometerDataMesgEvent; - - public event MesgEventHandler MagnetometerDataMesgEvent; - - public event MesgEventHandler BarometerDataMesgEvent; - - public event MesgEventHandler ThreeDSensorCalibrationMesgEvent; - - public event MesgEventHandler OneDSensorCalibrationMesgEvent; - - public event MesgEventHandler VideoFrameMesgEvent; - - public event MesgEventHandler ObdiiDataMesgEvent; - - public event MesgEventHandler NmeaSentenceMesgEvent; - - public event MesgEventHandler AviationAttitudeMesgEvent; - - public event MesgEventHandler VideoMesgEvent; - - public event MesgEventHandler VideoTitleMesgEvent; - - public event MesgEventHandler VideoDescriptionMesgEvent; - - public event MesgEventHandler VideoClipMesgEvent; - - public event MesgEventHandler SetMesgEvent; - - public event MesgEventHandler JumpMesgEvent; - - public event MesgEventHandler SplitMesgEvent; - - public event MesgEventHandler ClimbProMesgEvent; - - public event MesgEventHandler FieldDescriptionMesgEvent; - - public event MesgEventHandler DeveloperDataIdMesgEvent; - - public event MesgEventHandler CourseMesgEvent; - - public event MesgEventHandler CoursePointMesgEvent; - - public event MesgEventHandler SegmentIdMesgEvent; - - public event MesgEventHandler SegmentLeaderboardEntryMesgEvent; - - public event MesgEventHandler SegmentPointMesgEvent; - - public event MesgEventHandler SegmentLapMesgEvent; - - public event MesgEventHandler SegmentFileMesgEvent; - - public event MesgEventHandler WorkoutMesgEvent; - - public event MesgEventHandler WorkoutSessionMesgEvent; - - public event MesgEventHandler WorkoutStepMesgEvent; - - public event MesgEventHandler ExerciseTitleMesgEvent; - - public event MesgEventHandler ScheduleMesgEvent; - - public event MesgEventHandler TotalsMesgEvent; - - public event MesgEventHandler WeightScaleMesgEvent; - - public event MesgEventHandler BloodPressureMesgEvent; - - public event MesgEventHandler MonitoringInfoMesgEvent; - - public event MesgEventHandler MonitoringMesgEvent; - - public event MesgEventHandler HrMesgEvent; - - public event MesgEventHandler StressLevelMesgEvent; - - public event MesgEventHandler MemoGlobMesgEvent; - - public event MesgEventHandler AntChannelIdMesgEvent; - - public event MesgEventHandler AntRxMesgEvent; - - public event MesgEventHandler AntTxMesgEvent; - - public event MesgEventHandler ExdScreenConfigurationMesgEvent; - - public event MesgEventHandler ExdDataFieldConfigurationMesgEvent; - - public event MesgEventHandler ExdDataConceptConfigurationMesgEvent; - - public event MesgEventHandler DiveSummaryMesgEvent; - - public event MesgEventHandler HrvMesgEvent; - - public event MesgEventHandler TankUpdateMesgEvent; - - public event MesgEventHandler TankSummaryMesgEvent; - - public event MesgEventHandler PadMesgEvent; - - - public void OnMesg(object sender, MesgEventArgs e) - { - // Notify any subscribers of either our general mesg event or specific profile mesg event - if (MesgEvent != null) - { - MesgEvent(sender, e); - } - - switch (e.mesg.Num) - { - - case (ushort)MesgNum.FileId: - if (FileIdMesgEvent != null) - { - FileIdMesg fileIdMesg = new FileIdMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = fileIdMesg; - FileIdMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.FileCreator: - if (FileCreatorMesgEvent != null) - { - FileCreatorMesg fileCreatorMesg = new FileCreatorMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = fileCreatorMesg; - FileCreatorMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.TimestampCorrelation: - if (TimestampCorrelationMesgEvent != null) - { - TimestampCorrelationMesg timestampCorrelationMesg = new TimestampCorrelationMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = timestampCorrelationMesg; - TimestampCorrelationMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Software: - if (SoftwareMesgEvent != null) - { - SoftwareMesg softwareMesg = new SoftwareMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = softwareMesg; - SoftwareMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.SlaveDevice: - if (SlaveDeviceMesgEvent != null) - { - SlaveDeviceMesg slaveDeviceMesg = new SlaveDeviceMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = slaveDeviceMesg; - SlaveDeviceMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Capabilities: - if (CapabilitiesMesgEvent != null) - { - CapabilitiesMesg capabilitiesMesg = new CapabilitiesMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = capabilitiesMesg; - CapabilitiesMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.FileCapabilities: - if (FileCapabilitiesMesgEvent != null) - { - FileCapabilitiesMesg fileCapabilitiesMesg = new FileCapabilitiesMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = fileCapabilitiesMesg; - FileCapabilitiesMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.MesgCapabilities: - if (MesgCapabilitiesMesgEvent != null) - { - MesgCapabilitiesMesg mesgCapabilitiesMesg = new MesgCapabilitiesMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = mesgCapabilitiesMesg; - MesgCapabilitiesMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.FieldCapabilities: - if (FieldCapabilitiesMesgEvent != null) - { - FieldCapabilitiesMesg fieldCapabilitiesMesg = new FieldCapabilitiesMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = fieldCapabilitiesMesg; - FieldCapabilitiesMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.DeviceSettings: - if (DeviceSettingsMesgEvent != null) - { - DeviceSettingsMesg deviceSettingsMesg = new DeviceSettingsMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = deviceSettingsMesg; - DeviceSettingsMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.UserProfile: - if (UserProfileMesgEvent != null) - { - UserProfileMesg userProfileMesg = new UserProfileMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = userProfileMesg; - UserProfileMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.HrmProfile: - if (HrmProfileMesgEvent != null) - { - HrmProfileMesg hrmProfileMesg = new HrmProfileMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = hrmProfileMesg; - HrmProfileMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.SdmProfile: - if (SdmProfileMesgEvent != null) - { - SdmProfileMesg sdmProfileMesg = new SdmProfileMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = sdmProfileMesg; - SdmProfileMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.BikeProfile: - if (BikeProfileMesgEvent != null) - { - BikeProfileMesg bikeProfileMesg = new BikeProfileMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = bikeProfileMesg; - BikeProfileMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Connectivity: - if (ConnectivityMesgEvent != null) - { - ConnectivityMesg connectivityMesg = new ConnectivityMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = connectivityMesg; - ConnectivityMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.WatchfaceSettings: - if (WatchfaceSettingsMesgEvent != null) - { - WatchfaceSettingsMesg watchfaceSettingsMesg = new WatchfaceSettingsMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = watchfaceSettingsMesg; - WatchfaceSettingsMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.OhrSettings: - if (OhrSettingsMesgEvent != null) - { - OhrSettingsMesg ohrSettingsMesg = new OhrSettingsMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = ohrSettingsMesg; - OhrSettingsMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.TimeInZone: - if (TimeInZoneMesgEvent != null) - { - TimeInZoneMesg timeInZoneMesg = new TimeInZoneMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = timeInZoneMesg; - TimeInZoneMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.ZonesTarget: - if (ZonesTargetMesgEvent != null) - { - ZonesTargetMesg zonesTargetMesg = new ZonesTargetMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = zonesTargetMesg; - ZonesTargetMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Sport: - if (SportMesgEvent != null) - { - SportMesg sportMesg = new SportMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = sportMesg; - SportMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.HrZone: - if (HrZoneMesgEvent != null) - { - HrZoneMesg hrZoneMesg = new HrZoneMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = hrZoneMesg; - HrZoneMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.SpeedZone: - if (SpeedZoneMesgEvent != null) - { - SpeedZoneMesg speedZoneMesg = new SpeedZoneMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = speedZoneMesg; - SpeedZoneMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.CadenceZone: - if (CadenceZoneMesgEvent != null) - { - CadenceZoneMesg cadenceZoneMesg = new CadenceZoneMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = cadenceZoneMesg; - CadenceZoneMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.PowerZone: - if (PowerZoneMesgEvent != null) - { - PowerZoneMesg powerZoneMesg = new PowerZoneMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = powerZoneMesg; - PowerZoneMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.MetZone: - if (MetZoneMesgEvent != null) - { - MetZoneMesg metZoneMesg = new MetZoneMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = metZoneMesg; - MetZoneMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.DiveSettings: - if (DiveSettingsMesgEvent != null) - { - DiveSettingsMesg diveSettingsMesg = new DiveSettingsMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = diveSettingsMesg; - DiveSettingsMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.DiveAlarm: - if (DiveAlarmMesgEvent != null) - { - DiveAlarmMesg diveAlarmMesg = new DiveAlarmMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = diveAlarmMesg; - DiveAlarmMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.DiveApneaAlarm: - if (DiveApneaAlarmMesgEvent != null) - { - DiveApneaAlarmMesg diveApneaAlarmMesg = new DiveApneaAlarmMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = diveApneaAlarmMesg; - DiveApneaAlarmMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.DiveGas: - if (DiveGasMesgEvent != null) - { - DiveGasMesg diveGasMesg = new DiveGasMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = diveGasMesg; - DiveGasMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Goal: - if (GoalMesgEvent != null) - { - GoalMesg goalMesg = new GoalMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = goalMesg; - GoalMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Activity: - if (ActivityMesgEvent != null) - { - ActivityMesg activityMesg = new ActivityMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = activityMesg; - ActivityMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Session: - if (SessionMesgEvent != null) - { - SessionMesg sessionMesg = new SessionMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = sessionMesg; - SessionMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Lap: - if (LapMesgEvent != null) - { - LapMesg lapMesg = new LapMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = lapMesg; - LapMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Length: - if (LengthMesgEvent != null) - { - LengthMesg lengthMesg = new LengthMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = lengthMesg; - LengthMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Record: - if (RecordMesgEvent != null) - { - RecordMesg recordMesg = new RecordMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = recordMesg; - RecordMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Event: - if (EventMesgEvent != null) - { - EventMesg eventMesg = new EventMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = eventMesg; - EventMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.DeviceInfo: - if (DeviceInfoMesgEvent != null) - { - DeviceInfoMesg deviceInfoMesg = new DeviceInfoMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = deviceInfoMesg; - DeviceInfoMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.DeviceAuxBatteryInfo: - if (DeviceAuxBatteryInfoMesgEvent != null) - { - DeviceAuxBatteryInfoMesg deviceAuxBatteryInfoMesg = new DeviceAuxBatteryInfoMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = deviceAuxBatteryInfoMesg; - DeviceAuxBatteryInfoMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.TrainingFile: - if (TrainingFileMesgEvent != null) - { - TrainingFileMesg trainingFileMesg = new TrainingFileMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = trainingFileMesg; - TrainingFileMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.WeatherConditions: - if (WeatherConditionsMesgEvent != null) - { - WeatherConditionsMesg weatherConditionsMesg = new WeatherConditionsMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = weatherConditionsMesg; - WeatherConditionsMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.WeatherAlert: - if (WeatherAlertMesgEvent != null) - { - WeatherAlertMesg weatherAlertMesg = new WeatherAlertMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = weatherAlertMesg; - WeatherAlertMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.GpsMetadata: - if (GpsMetadataMesgEvent != null) - { - GpsMetadataMesg gpsMetadataMesg = new GpsMetadataMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = gpsMetadataMesg; - GpsMetadataMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.CameraEvent: - if (CameraEventMesgEvent != null) - { - CameraEventMesg cameraEventMesg = new CameraEventMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = cameraEventMesg; - CameraEventMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.GyroscopeData: - if (GyroscopeDataMesgEvent != null) - { - GyroscopeDataMesg gyroscopeDataMesg = new GyroscopeDataMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = gyroscopeDataMesg; - GyroscopeDataMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.AccelerometerData: - if (AccelerometerDataMesgEvent != null) - { - AccelerometerDataMesg accelerometerDataMesg = new AccelerometerDataMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = accelerometerDataMesg; - AccelerometerDataMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.MagnetometerData: - if (MagnetometerDataMesgEvent != null) - { - MagnetometerDataMesg magnetometerDataMesg = new MagnetometerDataMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = magnetometerDataMesg; - MagnetometerDataMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.BarometerData: - if (BarometerDataMesgEvent != null) - { - BarometerDataMesg barometerDataMesg = new BarometerDataMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = barometerDataMesg; - BarometerDataMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.ThreeDSensorCalibration: - if (ThreeDSensorCalibrationMesgEvent != null) - { - ThreeDSensorCalibrationMesg threeDSensorCalibrationMesg = new ThreeDSensorCalibrationMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = threeDSensorCalibrationMesg; - ThreeDSensorCalibrationMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.OneDSensorCalibration: - if (OneDSensorCalibrationMesgEvent != null) - { - OneDSensorCalibrationMesg oneDSensorCalibrationMesg = new OneDSensorCalibrationMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = oneDSensorCalibrationMesg; - OneDSensorCalibrationMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.VideoFrame: - if (VideoFrameMesgEvent != null) - { - VideoFrameMesg videoFrameMesg = new VideoFrameMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = videoFrameMesg; - VideoFrameMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.ObdiiData: - if (ObdiiDataMesgEvent != null) - { - ObdiiDataMesg obdiiDataMesg = new ObdiiDataMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = obdiiDataMesg; - ObdiiDataMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.NmeaSentence: - if (NmeaSentenceMesgEvent != null) - { - NmeaSentenceMesg nmeaSentenceMesg = new NmeaSentenceMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = nmeaSentenceMesg; - NmeaSentenceMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.AviationAttitude: - if (AviationAttitudeMesgEvent != null) - { - AviationAttitudeMesg aviationAttitudeMesg = new AviationAttitudeMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = aviationAttitudeMesg; - AviationAttitudeMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Video: - if (VideoMesgEvent != null) - { - VideoMesg videoMesg = new VideoMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = videoMesg; - VideoMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.VideoTitle: - if (VideoTitleMesgEvent != null) - { - VideoTitleMesg videoTitleMesg = new VideoTitleMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = videoTitleMesg; - VideoTitleMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.VideoDescription: - if (VideoDescriptionMesgEvent != null) - { - VideoDescriptionMesg videoDescriptionMesg = new VideoDescriptionMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = videoDescriptionMesg; - VideoDescriptionMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.VideoClip: - if (VideoClipMesgEvent != null) - { - VideoClipMesg videoClipMesg = new VideoClipMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = videoClipMesg; - VideoClipMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Set: - if (SetMesgEvent != null) - { - SetMesg setMesg = new SetMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = setMesg; - SetMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Jump: - if (JumpMesgEvent != null) - { - JumpMesg jumpMesg = new JumpMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = jumpMesg; - JumpMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Split: - if (SplitMesgEvent != null) - { - SplitMesg splitMesg = new SplitMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = splitMesg; - SplitMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.ClimbPro: - if (ClimbProMesgEvent != null) - { - ClimbProMesg climbProMesg = new ClimbProMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = climbProMesg; - ClimbProMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.FieldDescription: - if (FieldDescriptionMesgEvent != null) - { - FieldDescriptionMesg fieldDescriptionMesg = new FieldDescriptionMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = fieldDescriptionMesg; - FieldDescriptionMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.DeveloperDataId: - if (DeveloperDataIdMesgEvent != null) - { - DeveloperDataIdMesg developerDataIdMesg = new DeveloperDataIdMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = developerDataIdMesg; - DeveloperDataIdMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Course: - if (CourseMesgEvent != null) - { - CourseMesg courseMesg = new CourseMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = courseMesg; - CourseMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.CoursePoint: - if (CoursePointMesgEvent != null) - { - CoursePointMesg coursePointMesg = new CoursePointMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = coursePointMesg; - CoursePointMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.SegmentId: - if (SegmentIdMesgEvent != null) - { - SegmentIdMesg segmentIdMesg = new SegmentIdMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = segmentIdMesg; - SegmentIdMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.SegmentLeaderboardEntry: - if (SegmentLeaderboardEntryMesgEvent != null) - { - SegmentLeaderboardEntryMesg segmentLeaderboardEntryMesg = new SegmentLeaderboardEntryMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = segmentLeaderboardEntryMesg; - SegmentLeaderboardEntryMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.SegmentPoint: - if (SegmentPointMesgEvent != null) - { - SegmentPointMesg segmentPointMesg = new SegmentPointMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = segmentPointMesg; - SegmentPointMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.SegmentLap: - if (SegmentLapMesgEvent != null) - { - SegmentLapMesg segmentLapMesg = new SegmentLapMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = segmentLapMesg; - SegmentLapMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.SegmentFile: - if (SegmentFileMesgEvent != null) - { - SegmentFileMesg segmentFileMesg = new SegmentFileMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = segmentFileMesg; - SegmentFileMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Workout: - if (WorkoutMesgEvent != null) - { - WorkoutMesg workoutMesg = new WorkoutMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = workoutMesg; - WorkoutMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.WorkoutSession: - if (WorkoutSessionMesgEvent != null) - { - WorkoutSessionMesg workoutSessionMesg = new WorkoutSessionMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = workoutSessionMesg; - WorkoutSessionMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.WorkoutStep: - if (WorkoutStepMesgEvent != null) - { - WorkoutStepMesg workoutStepMesg = new WorkoutStepMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = workoutStepMesg; - WorkoutStepMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.ExerciseTitle: - if (ExerciseTitleMesgEvent != null) - { - ExerciseTitleMesg exerciseTitleMesg = new ExerciseTitleMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = exerciseTitleMesg; - ExerciseTitleMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Schedule: - if (ScheduleMesgEvent != null) - { - ScheduleMesg scheduleMesg = new ScheduleMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = scheduleMesg; - ScheduleMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Totals: - if (TotalsMesgEvent != null) - { - TotalsMesg totalsMesg = new TotalsMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = totalsMesg; - TotalsMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.WeightScale: - if (WeightScaleMesgEvent != null) - { - WeightScaleMesg weightScaleMesg = new WeightScaleMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = weightScaleMesg; - WeightScaleMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.BloodPressure: - if (BloodPressureMesgEvent != null) - { - BloodPressureMesg bloodPressureMesg = new BloodPressureMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = bloodPressureMesg; - BloodPressureMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.MonitoringInfo: - if (MonitoringInfoMesgEvent != null) - { - MonitoringInfoMesg monitoringInfoMesg = new MonitoringInfoMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = monitoringInfoMesg; - MonitoringInfoMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Monitoring: - if (MonitoringMesgEvent != null) - { - MonitoringMesg monitoringMesg = new MonitoringMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = monitoringMesg; - MonitoringMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Hr: - if (HrMesgEvent != null) - { - HrMesg hrMesg = new HrMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = hrMesg; - HrMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.StressLevel: - if (StressLevelMesgEvent != null) - { - StressLevelMesg stressLevelMesg = new StressLevelMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = stressLevelMesg; - StressLevelMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.MemoGlob: - if (MemoGlobMesgEvent != null) - { - MemoGlobMesg memoGlobMesg = new MemoGlobMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = memoGlobMesg; - MemoGlobMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.AntChannelId: - if (AntChannelIdMesgEvent != null) - { - AntChannelIdMesg antChannelIdMesg = new AntChannelIdMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = antChannelIdMesg; - AntChannelIdMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.AntRx: - if (AntRxMesgEvent != null) - { - AntRxMesg antRxMesg = new AntRxMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = antRxMesg; - AntRxMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.AntTx: - if (AntTxMesgEvent != null) - { - AntTxMesg antTxMesg = new AntTxMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = antTxMesg; - AntTxMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.ExdScreenConfiguration: - if (ExdScreenConfigurationMesgEvent != null) - { - ExdScreenConfigurationMesg exdScreenConfigurationMesg = new ExdScreenConfigurationMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = exdScreenConfigurationMesg; - ExdScreenConfigurationMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.ExdDataFieldConfiguration: - if (ExdDataFieldConfigurationMesgEvent != null) - { - ExdDataFieldConfigurationMesg exdDataFieldConfigurationMesg = new ExdDataFieldConfigurationMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = exdDataFieldConfigurationMesg; - ExdDataFieldConfigurationMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.ExdDataConceptConfiguration: - if (ExdDataConceptConfigurationMesgEvent != null) - { - ExdDataConceptConfigurationMesg exdDataConceptConfigurationMesg = new ExdDataConceptConfigurationMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = exdDataConceptConfigurationMesg; - ExdDataConceptConfigurationMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.DiveSummary: - if (DiveSummaryMesgEvent != null) - { - DiveSummaryMesg diveSummaryMesg = new DiveSummaryMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = diveSummaryMesg; - DiveSummaryMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Hrv: - if (HrvMesgEvent != null) - { - HrvMesg hrvMesg = new HrvMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = hrvMesg; - HrvMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.TankUpdate: - if (TankUpdateMesgEvent != null) - { - TankUpdateMesg tankUpdateMesg = new TankUpdateMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = tankUpdateMesg; - TankUpdateMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.TankSummary: - if (TankSummaryMesgEvent != null) - { - TankSummaryMesg tankSummaryMesg = new TankSummaryMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = tankSummaryMesg; - TankSummaryMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Pad: - if (PadMesgEvent != null) - { - PadMesg padMesg = new PadMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = padMesg; - PadMesgEvent(sender, mesgEventArgs); - } - break; - - } - } - - public void OnMesgDefinition(object sender, MesgDefinitionEventArgs e) - { - // Notify any subscribers - if (MesgDefinitionEvent != null) - { - MesgDefinitionEvent(sender, e); - } - } - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/MesgDefinition.cs b/src/Garmin/FitSdk/Dynastream/Fit/MesgDefinition.cs deleted file mode 100644 index 00a27a7e0..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/MesgDefinition.cs +++ /dev/null @@ -1,345 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; -using Dynastream.Utility; - -namespace Dynastream.Fit -{ - /// - /// Architecture defaults to Little Endian (unless decoded from an binary defn as Big Endian) - /// This could be exposed in the future to programatically create BE streams. - /// - public class MesgDefinition - { - #region Fields - private byte architecture; - private byte localMesgNum; - private List fieldDefs = new List(); - private readonly List m_devFieldDefs = - new List(); - private byte header; - #endregion - - #region Properties - public ushort GlobalMesgNum { get; set; } - public byte LocalMesgNum - { - get - { - return localMesgNum; - } - set - { - if (value > Fit.LocalMesgNumMask) - { - throw new FitException("MesgDefinition:LocalMesgNum - Invalid Local message number " + value + ". Local message number must be < " + Fit.LocalMesgNumMask); - } - else - { - localMesgNum = value; - } - } - } - - public byte NumDevFields - { - get { return (byte)m_devFieldDefs.Count; } - } - - public byte NumFields { get; set; } - - public bool IsBigEndian - { - get - { - return architecture == Fit.BigEndian; - } - } - - private bool ContainsDevData - { - get { return (header & Fit.DevDataMask) == Fit.DevDataMask; } - } - - internal IEnumerable DeveloperFieldDefinitions - { - get - { - return m_devFieldDefs; - } - } - - #endregion - - #region Constructors - internal MesgDefinition() - { - LocalMesgNum = 0; - GlobalMesgNum = (ushort)MesgNum.Invalid; - architecture = Fit.LittleEndian; - } - - internal MesgDefinition( - Stream fitSource, - DeveloperDataLookup lookup) - { - Read(fitSource, lookup); - } - - public MesgDefinition(Stream fitSource) - : this(fitSource, null) - { - } - - public MesgDefinition(Mesg mesg) - { - LocalMesgNum = mesg.LocalNum; - GlobalMesgNum = mesg.Num; - architecture = Fit.LittleEndian; - NumFields = (byte)mesg.FieldsList.Count; - - foreach (Field field in mesg.FieldsList) - { - fieldDefs.Add(new FieldDefinition(field)); - } - - foreach (DeveloperField field in mesg.DeveloperFields) - { - m_devFieldDefs.Add(new DeveloperFieldDefinition( - field.Num, - field.GetSize(), - field.DeveloperDataIndex)); - } - } - - public MesgDefinition(MesgDefinition mesgDef) - { - LocalMesgNum = mesgDef.LocalMesgNum; - GlobalMesgNum = mesgDef.GlobalMesgNum; - architecture = mesgDef.IsBigEndian ? Fit.BigEndian : Fit.LittleEndian; - NumFields = mesgDef.NumFields; - - foreach (FieldDefinition fieldDef in mesgDef.fieldDefs) - { - fieldDefs.Add(new FieldDefinition(fieldDef)); - } - - m_devFieldDefs.AddRange(mesgDef.m_devFieldDefs); - } - #endregion - - #region Methods - - internal void Read(Stream fitSource, DeveloperDataLookup lookup) - { - fitSource.Position = 0; - EndianBinaryReader br = new EndianBinaryReader(fitSource, false); - - header = br.ReadByte(); - LocalMesgNum = (byte)(header & Fit.LocalMesgNumMask); - - byte reserved = br.ReadByte(); - architecture = br.ReadByte(); - br.IsBigEndian = this.IsBigEndian; - GlobalMesgNum = br.ReadUInt16(); - NumFields = br.ReadByte(); - for (int i = 0; i < NumFields; i++) - { - byte num = br.ReadByte(); - byte size = br.ReadByte(); - byte type = br.ReadByte(); - - FieldDefinition newField = new FieldDefinition(num, size, type); - fieldDefs.Add(newField); - } - - if (ContainsDevData) - { - byte devFldCount = br.ReadByte(); - for (int i = 0; i < devFldCount; i++) - { - // Seek to the Size - byte num = br.ReadByte(); - byte size = br.ReadByte(); - byte devIdx = br.ReadByte(); - DeveloperFieldDefinition defn; - var key = new DeveloperDataKey(devIdx, num); - Tuple tuple = lookup.GetMesgs(key); - - if (tuple != null) - { - defn = new DeveloperFieldDefinition(tuple.Item2, tuple.Item1, size); - } - else - { - defn = new DeveloperFieldDefinition(num, size, devIdx); - } - - m_devFieldDefs.Add(defn); - } - } - } - - public void Write(Stream fitDest) - { - BinaryWriter bw = new BinaryWriter(fitDest); - byte header = LocalMesgNum; - header |= Fit.MesgDefinitionMask; - header |= NumDevFields > 0 ? Fit.DevDataMask : (byte)0x00; - - bw.Write(header); - bw.Write(Fit.MesgDefinitionReserved); - bw.Write(Fit.LittleEndian); - bw.Write(GlobalMesgNum); - bw.Write(NumFields); - - if (NumFields != fieldDefs.Count) - { - throw new FitException("MesgDefinition:Write - Field Count Internal Error"); - } - - foreach (FieldDefinition def in fieldDefs) - { - bw.Write(def.Num); - bw.Write(def.Size); - bw.Write(def.Type); - } - - if (NumDevFields > 0) - { - bw.Write(NumDevFields); - } - - foreach (DeveloperFieldDefinition def in m_devFieldDefs) - { - bw.Write(def.FieldNum); - bw.Write(def.Size); - bw.Write(def.DeveloperDataIndex); - } - } - - public int GetMesgSize() - { - int mesgSize = 1; // header - - mesgSize += fieldDefs.Sum(x => x.Size); - mesgSize += m_devFieldDefs.Sum(x => x.Size); - - return mesgSize; - } - - public void AddField(FieldDefinition field) - { - fieldDefs.Add(field); - } - - public void ClearFields() - { - fieldDefs.Clear(); - } - - public int GetNumFields() - { - return fieldDefs.Count; - } - - public List GetFields() - { - // This is a reference to the real list - return fieldDefs; - } - - public FieldDefinition GetField(byte num) - { - foreach (FieldDefinition fieldDef in fieldDefs) - { - if (fieldDef.Num == num) - { - return fieldDef; - } - } - return null; - } - - internal DeveloperFieldDefinition GetDeveloperFieldDefinition(byte num, byte developerIndex) - { - return - m_devFieldDefs.FirstOrDefault( - def => (def.FieldNum == num) && (def.DeveloperDataIndex == developerIndex)); - } - - public bool Supports(Mesg mesg) - { - return Supports(new MesgDefinition(mesg)); - } - - public bool Supports(MesgDefinition mesgDef) - { - if (mesgDef == null) - { - return false; - } - - if (GlobalMesgNum != mesgDef.GlobalMesgNum) - { - return false; - } - - if (LocalMesgNum != mesgDef.LocalMesgNum) - { - return false; - } - - foreach (FieldDefinition fieldDef in mesgDef.GetFields()) - { - FieldDefinition supportedFieldDef = GetField(fieldDef.Num); - - if (supportedFieldDef == null) - { - return false; - } - - if (fieldDef.Size > supportedFieldDef.Size) - { - return false; - } - } - - foreach (DeveloperFieldDefinition fieldDef in mesgDef.DeveloperFieldDefinitions) - { - var supportedFieldDef = - GetDeveloperFieldDefinition(fieldDef.FieldNum, fieldDef.DeveloperDataIndex); - - if (supportedFieldDef == null) - { - return false; - } - - if (fieldDef.Size > supportedFieldDef.Size) - { - return false; - } - } - - return true; - } - #endregion - } -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile.cs deleted file mode 100644 index 8ed5440ff..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile.cs +++ /dev/null @@ -1,4417 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - /// - /// Represents the Fit Profile including message, field and type definition. - /// - public static class Profile - { - #region Nested Types - - public enum Type - { - Enum, - Sint8, - Uint8, - Sint16, - Uint16, - Sint32, - Uint32, - String, - Float32, - Float64, - Uint8z, - Uint16z, - Uint32z, - Byte, - Sint64, - Uint64, - Uint64z, - Bool, - File, - MesgNum, - Checksum, - FileFlags, - MesgCount, - DateTime, - LocalDateTime, - MessageIndex, - DeviceIndex, - Gender, - Language, - LanguageBits0, - LanguageBits1, - LanguageBits2, - LanguageBits3, - LanguageBits4, - TimeZone, - DisplayMeasure, - DisplayHeart, - DisplayPower, - DisplayPosition, - Switch, - Sport, - SportBits0, - SportBits1, - SportBits2, - SportBits3, - SportBits4, - SportBits5, - SportBits6, - SubSport, - SportEvent, - Activity, - Intensity, - SessionTrigger, - AutolapTrigger, - LapTrigger, - TimeMode, - BacklightMode, - DateMode, - BacklightTimeout, - Event, - EventType, - TimerTrigger, - FitnessEquipmentState, - Tone, - Autoscroll, - ActivityClass, - HrZoneCalc, - PwrZoneCalc, - WktStepDuration, - WktStepTarget, - Goal, - GoalRecurrence, - GoalSource, - Schedule, - CoursePoint, - Manufacturer, - GarminProduct, - AntplusDeviceType, - AntNetwork, - WorkoutCapabilities, - BatteryStatus, - HrType, - CourseCapabilities, - Weight, - WorkoutHr, - WorkoutPower, - BpStatus, - UserLocalId, - SwimStroke, - ActivityType, - ActivitySubtype, - ActivityLevel, - Side, - LeftRightBalance, - LeftRightBalance100, - LengthType, - DayOfWeek, - ConnectivityCapabilities, - WeatherReport, - WeatherStatus, - WeatherSeverity, - WeatherSevereType, - TimeIntoDay, - LocaltimeIntoDay, - StrokeType, - BodyLocation, - SegmentLapStatus, - SegmentLeaderboardType, - SegmentDeleteStatus, - SegmentSelectionType, - SourceType, - LocalDeviceType, - BleDeviceType, - AntChannelId, - DisplayOrientation, - WorkoutEquipment, - WatchfaceMode, - DigitalWatchfaceLayout, - AnalogWatchfaceLayout, - RiderPositionType, - PowerPhaseType, - CameraEventType, - SensorType, - BikeLightNetworkConfigType, - CommTimeoutType, - CameraOrientationType, - AttitudeStage, - AttitudeValidity, - AutoSyncFrequency, - ExdLayout, - ExdDisplayType, - ExdDataUnits, - ExdQualifiers, - ExdDescriptors, - AutoActivityDetect, - SupportedExdScreenLayouts, - FitBaseType, - TurnType, - BikeLightBeamAngleMode, - FitBaseUnit, - SetType, - ExerciseCategory, - BenchPressExerciseName, - CalfRaiseExerciseName, - CardioExerciseName, - CarryExerciseName, - ChopExerciseName, - CoreExerciseName, - CrunchExerciseName, - CurlExerciseName, - DeadliftExerciseName, - FlyeExerciseName, - HipRaiseExerciseName, - HipStabilityExerciseName, - HipSwingExerciseName, - HyperextensionExerciseName, - LateralRaiseExerciseName, - LegCurlExerciseName, - LegRaiseExerciseName, - LungeExerciseName, - OlympicLiftExerciseName, - PlankExerciseName, - PlyoExerciseName, - PullUpExerciseName, - PushUpExerciseName, - RowExerciseName, - ShoulderPressExerciseName, - ShoulderStabilityExerciseName, - ShrugExerciseName, - SitUpExerciseName, - SquatExerciseName, - TotalBodyExerciseName, - TricepsExtensionExerciseName, - WarmUpExerciseName, - RunExerciseName, - WaterType, - TissueModelType, - DiveGasStatus, - DiveAlert, - DiveAlarmType, - DiveBacklightMode, - CcrSetpointSwitchMode, - DiveGasMode, - FaveroProduct, - SplitType, - ClimbProEvent, - GasConsumptionRateType, - TapSensitivity, - RadarThreatLevelType, - NoFlyTimeMode, - - NumTypes - } - - #endregion - - #region Fields - - private static readonly Dictionary m_mesgLookup = new Dictionary(); - - #endregion // Fields - - #region Properties - - #endregion - - #region Constructors - - #endregion - - #region Methods - public static Mesg GetMesg(ushort globalMesgNum) - { - Mesg mesg = LookupMesg(globalMesgNum); - - if(null != mesg) - { - return mesg; - } - - return new Mesg("unknown", globalMesgNum); - } - - public static Field GetField(ushort globalMesgNum, byte fieldNum) - { - Mesg mesg = LookupMesg(globalMesgNum); - - if(null != mesg) - { - return mesg.GetField(fieldNum); - } - - return new Field("unknown", fieldNum, 0, 1, 0, "", false, Type.Enum); - } - - public static Field GetField(ushort globalMesgNum, string fieldName) - { - Mesg mesg = LookupMesg(globalMesgNum); - - if(null != mesg) - { - return mesg.GetField(fieldName); - } - - return null; - } - - private static Mesg LookupMesg(ushort globalMesgNum) - { - Mesg rv = null; - if(!m_mesgLookup.ContainsKey(globalMesgNum)) - { - // Maybe it isnt in the lookup because we haven't initialized it - // yet - InitMesg(globalMesgNum); - } - - return m_mesgLookup.TryGetValue(globalMesgNum, out rv) ? rv : null; - } - - private static void InitMesg(ushort num) - { - Mesg newMesg = null; - if(m_mesgLookup.ContainsKey(num)) - { - // Message has already been initialized - return; - } - - switch(num) - { - case MesgNum.FileId: - newMesg = CreateFileIdMesg(); - break; - - case MesgNum.FileCreator: - newMesg = CreateFileCreatorMesg(); - break; - - case MesgNum.TimestampCorrelation: - newMesg = CreateTimestampCorrelationMesg(); - break; - - case MesgNum.Software: - newMesg = CreateSoftwareMesg(); - break; - - case MesgNum.SlaveDevice: - newMesg = CreateSlaveDeviceMesg(); - break; - - case MesgNum.Capabilities: - newMesg = CreateCapabilitiesMesg(); - break; - - case MesgNum.FileCapabilities: - newMesg = CreateFileCapabilitiesMesg(); - break; - - case MesgNum.MesgCapabilities: - newMesg = CreateMesgCapabilitiesMesg(); - break; - - case MesgNum.FieldCapabilities: - newMesg = CreateFieldCapabilitiesMesg(); - break; - - case MesgNum.DeviceSettings: - newMesg = CreateDeviceSettingsMesg(); - break; - - case MesgNum.UserProfile: - newMesg = CreateUserProfileMesg(); - break; - - case MesgNum.HrmProfile: - newMesg = CreateHrmProfileMesg(); - break; - - case MesgNum.SdmProfile: - newMesg = CreateSdmProfileMesg(); - break; - - case MesgNum.BikeProfile: - newMesg = CreateBikeProfileMesg(); - break; - - case MesgNum.Connectivity: - newMesg = CreateConnectivityMesg(); - break; - - case MesgNum.WatchfaceSettings: - newMesg = CreateWatchfaceSettingsMesg(); - break; - - case MesgNum.OhrSettings: - newMesg = CreateOhrSettingsMesg(); - break; - - case MesgNum.TimeInZone: - newMesg = CreateTimeInZoneMesg(); - break; - - case MesgNum.ZonesTarget: - newMesg = CreateZonesTargetMesg(); - break; - - case MesgNum.Sport: - newMesg = CreateSportMesg(); - break; - - case MesgNum.HrZone: - newMesg = CreateHrZoneMesg(); - break; - - case MesgNum.SpeedZone: - newMesg = CreateSpeedZoneMesg(); - break; - - case MesgNum.CadenceZone: - newMesg = CreateCadenceZoneMesg(); - break; - - case MesgNum.PowerZone: - newMesg = CreatePowerZoneMesg(); - break; - - case MesgNum.MetZone: - newMesg = CreateMetZoneMesg(); - break; - - case MesgNum.DiveSettings: - newMesg = CreateDiveSettingsMesg(); - break; - - case MesgNum.DiveAlarm: - newMesg = CreateDiveAlarmMesg(); - break; - - case MesgNum.DiveApneaAlarm: - newMesg = CreateDiveApneaAlarmMesg(); - break; - - case MesgNum.DiveGas: - newMesg = CreateDiveGasMesg(); - break; - - case MesgNum.Goal: - newMesg = CreateGoalMesg(); - break; - - case MesgNum.Activity: - newMesg = CreateActivityMesg(); - break; - - case MesgNum.Session: - newMesg = CreateSessionMesg(); - break; - - case MesgNum.Lap: - newMesg = CreateLapMesg(); - break; - - case MesgNum.Length: - newMesg = CreateLengthMesg(); - break; - - case MesgNum.Record: - newMesg = CreateRecordMesg(); - break; - - case MesgNum.Event: - newMesg = CreateEventMesg(); - break; - - case MesgNum.DeviceInfo: - newMesg = CreateDeviceInfoMesg(); - break; - - case MesgNum.DeviceAuxBatteryInfo: - newMesg = CreateDeviceAuxBatteryInfoMesg(); - break; - - case MesgNum.TrainingFile: - newMesg = CreateTrainingFileMesg(); - break; - - case MesgNum.WeatherConditions: - newMesg = CreateWeatherConditionsMesg(); - break; - - case MesgNum.WeatherAlert: - newMesg = CreateWeatherAlertMesg(); - break; - - case MesgNum.GpsMetadata: - newMesg = CreateGpsMetadataMesg(); - break; - - case MesgNum.CameraEvent: - newMesg = CreateCameraEventMesg(); - break; - - case MesgNum.GyroscopeData: - newMesg = CreateGyroscopeDataMesg(); - break; - - case MesgNum.AccelerometerData: - newMesg = CreateAccelerometerDataMesg(); - break; - - case MesgNum.MagnetometerData: - newMesg = CreateMagnetometerDataMesg(); - break; - - case MesgNum.BarometerData: - newMesg = CreateBarometerDataMesg(); - break; - - case MesgNum.ThreeDSensorCalibration: - newMesg = CreateThreeDSensorCalibrationMesg(); - break; - - case MesgNum.OneDSensorCalibration: - newMesg = CreateOneDSensorCalibrationMesg(); - break; - - case MesgNum.VideoFrame: - newMesg = CreateVideoFrameMesg(); - break; - - case MesgNum.ObdiiData: - newMesg = CreateObdiiDataMesg(); - break; - - case MesgNum.NmeaSentence: - newMesg = CreateNmeaSentenceMesg(); - break; - - case MesgNum.AviationAttitude: - newMesg = CreateAviationAttitudeMesg(); - break; - - case MesgNum.Video: - newMesg = CreateVideoMesg(); - break; - - case MesgNum.VideoTitle: - newMesg = CreateVideoTitleMesg(); - break; - - case MesgNum.VideoDescription: - newMesg = CreateVideoDescriptionMesg(); - break; - - case MesgNum.VideoClip: - newMesg = CreateVideoClipMesg(); - break; - - case MesgNum.Set: - newMesg = CreateSetMesg(); - break; - - case MesgNum.Jump: - newMesg = CreateJumpMesg(); - break; - - case MesgNum.Split: - newMesg = CreateSplitMesg(); - break; - - case MesgNum.ClimbPro: - newMesg = CreateClimbProMesg(); - break; - - case MesgNum.FieldDescription: - newMesg = CreateFieldDescriptionMesg(); - break; - - case MesgNum.DeveloperDataId: - newMesg = CreateDeveloperDataIdMesg(); - break; - - case MesgNum.Course: - newMesg = CreateCourseMesg(); - break; - - case MesgNum.CoursePoint: - newMesg = CreateCoursePointMesg(); - break; - - case MesgNum.SegmentId: - newMesg = CreateSegmentIdMesg(); - break; - - case MesgNum.SegmentLeaderboardEntry: - newMesg = CreateSegmentLeaderboardEntryMesg(); - break; - - case MesgNum.SegmentPoint: - newMesg = CreateSegmentPointMesg(); - break; - - case MesgNum.SegmentLap: - newMesg = CreateSegmentLapMesg(); - break; - - case MesgNum.SegmentFile: - newMesg = CreateSegmentFileMesg(); - break; - - case MesgNum.Workout: - newMesg = CreateWorkoutMesg(); - break; - - case MesgNum.WorkoutSession: - newMesg = CreateWorkoutSessionMesg(); - break; - - case MesgNum.WorkoutStep: - newMesg = CreateWorkoutStepMesg(); - break; - - case MesgNum.ExerciseTitle: - newMesg = CreateExerciseTitleMesg(); - break; - - case MesgNum.Schedule: - newMesg = CreateScheduleMesg(); - break; - - case MesgNum.Totals: - newMesg = CreateTotalsMesg(); - break; - - case MesgNum.WeightScale: - newMesg = CreateWeightScaleMesg(); - break; - - case MesgNum.BloodPressure: - newMesg = CreateBloodPressureMesg(); - break; - - case MesgNum.MonitoringInfo: - newMesg = CreateMonitoringInfoMesg(); - break; - - case MesgNum.Monitoring: - newMesg = CreateMonitoringMesg(); - break; - - case MesgNum.Hr: - newMesg = CreateHrMesg(); - break; - - case MesgNum.StressLevel: - newMesg = CreateStressLevelMesg(); - break; - - case MesgNum.MemoGlob: - newMesg = CreateMemoGlobMesg(); - break; - - case MesgNum.AntChannelId: - newMesg = CreateAntChannelIdMesg(); - break; - - case MesgNum.AntRx: - newMesg = CreateAntRxMesg(); - break; - - case MesgNum.AntTx: - newMesg = CreateAntTxMesg(); - break; - - case MesgNum.ExdScreenConfiguration: - newMesg = CreateExdScreenConfigurationMesg(); - break; - - case MesgNum.ExdDataFieldConfiguration: - newMesg = CreateExdDataFieldConfigurationMesg(); - break; - - case MesgNum.ExdDataConceptConfiguration: - newMesg = CreateExdDataConceptConfigurationMesg(); - break; - - case MesgNum.DiveSummary: - newMesg = CreateDiveSummaryMesg(); - break; - - case MesgNum.Hrv: - newMesg = CreateHrvMesg(); - break; - - case MesgNum.TankUpdate: - newMesg = CreateTankUpdateMesg(); - break; - - case MesgNum.TankSummary: - newMesg = CreateTankSummaryMesg(); - break; - - case MesgNum.Pad: - newMesg = CreatePadMesg(); - break; - - default: - break; - } - - if(null != newMesg) - { - lock(m_mesgLookup) - { - // Make Sure another thread didn't get here first - if(!m_mesgLookup.ContainsKey(num)) - { - m_mesgLookup.Add(num, newMesg); - } - } - } - } - - #pragma warning disable 0168 - #pragma warning disable 0219 - private static Mesg CreateFileIdMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("FileId", MesgNum.FileId); - fieldIndex = 0; - newMesg.SetField(new Field("Type", 0, 0, 1, 0, "", false, Type.File)); - fieldIndex++; - newMesg.SetField(new Field("Manufacturer", 1, 132, 1, 0, "", false, Type.Manufacturer)); - fieldIndex++; - newMesg.SetField(new Field("Product", 2, 132, 1, 0, "", false, Type.Uint16)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("FaveroProduct", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 263); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("GarminProduct", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 1); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 15); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 13); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 89); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("SerialNumber", 3, 140, 1, 0, "", false, Type.Uint32z)); - fieldIndex++; - newMesg.SetField(new Field("TimeCreated", 4, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Number", 5, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ProductName", 8, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateFileCreatorMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("FileCreator", MesgNum.FileCreator); - fieldIndex = 0; - newMesg.SetField(new Field("SoftwareVersion", 0, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("HardwareVersion", 1, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateTimestampCorrelationMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("TimestampCorrelation", MesgNum.TimestampCorrelation); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("FractionalTimestamp", 0, 132, 32768, 0, "s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SystemTimestamp", 1, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("FractionalSystemTimestamp", 2, 132, 32768, 0, "s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("LocalTimestamp", 3, 134, 1, 0, "s", false, Type.LocalDateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimestampMs", 4, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SystemTimestampMs", 5, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSoftwareMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Software", MesgNum.Software); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Version", 3, 132, 100, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("PartNumber", 5, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSlaveDeviceMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("SlaveDevice", MesgNum.SlaveDevice); - fieldIndex = 0; - newMesg.SetField(new Field("Manufacturer", 0, 132, 1, 0, "", false, Type.Manufacturer)); - fieldIndex++; - newMesg.SetField(new Field("Product", 1, 132, 1, 0, "", false, Type.Uint16)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("FaveroProduct", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 263); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("GarminProduct", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 1); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 15); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 13); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 89); - subfieldIndex++; - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateCapabilitiesMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Capabilities", MesgNum.Capabilities); - fieldIndex = 0; - newMesg.SetField(new Field("Languages", 0, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("Sports", 1, 10, 1, 0, "", false, Type.SportBits0)); - fieldIndex++; - newMesg.SetField(new Field("WorkoutsSupported", 21, 140, 1, 0, "", false, Type.WorkoutCapabilities)); - fieldIndex++; - newMesg.SetField(new Field("ConnectivitySupported", 23, 140, 1, 0, "", false, Type.ConnectivityCapabilities)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateFileCapabilitiesMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("FileCapabilities", MesgNum.FileCapabilities); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Type", 0, 0, 1, 0, "", false, Type.File)); - fieldIndex++; - newMesg.SetField(new Field("Flags", 1, 10, 1, 0, "", false, Type.FileFlags)); - fieldIndex++; - newMesg.SetField(new Field("Directory", 2, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("MaxCount", 3, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxSize", 4, 134, 1, 0, "bytes", false, Type.Uint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateMesgCapabilitiesMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("MesgCapabilities", MesgNum.MesgCapabilities); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("File", 0, 0, 1, 0, "", false, Type.File)); - fieldIndex++; - newMesg.SetField(new Field("MesgNum", 1, 132, 1, 0, "", false, Type.MesgNum)); - fieldIndex++; - newMesg.SetField(new Field("CountType", 2, 0, 1, 0, "", false, Type.MesgCount)); - fieldIndex++; - newMesg.SetField(new Field("Count", 3, 132, 1, 0, "", false, Type.Uint16)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("NumPerFile", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(2, 0); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("MaxPerFile", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(2, 1); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("MaxPerFileType", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(2, 2); - subfieldIndex++; - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateFieldCapabilitiesMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("FieldCapabilities", MesgNum.FieldCapabilities); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("File", 0, 0, 1, 0, "", false, Type.File)); - fieldIndex++; - newMesg.SetField(new Field("MesgNum", 1, 132, 1, 0, "", false, Type.MesgNum)); - fieldIndex++; - newMesg.SetField(new Field("FieldNum", 2, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Count", 3, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateDeviceSettingsMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("DeviceSettings", MesgNum.DeviceSettings); - fieldIndex = 0; - newMesg.SetField(new Field("ActiveTimeZone", 0, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("UtcOffset", 1, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeOffset", 2, 134, 1, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeMode", 4, 0, 1, 0, "", false, Type.TimeMode)); - fieldIndex++; - newMesg.SetField(new Field("TimeZoneOffset", 5, 1, 4, 0, "hr", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("BacklightMode", 12, 0, 1, 0, "", false, Type.BacklightMode)); - fieldIndex++; - newMesg.SetField(new Field("ActivityTrackerEnabled", 36, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("ClockTime", 39, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("PagesEnabled", 40, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MoveAlertEnabled", 46, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("DateMode", 47, 0, 1, 0, "", false, Type.DateMode)); - fieldIndex++; - newMesg.SetField(new Field("DisplayOrientation", 55, 0, 1, 0, "", false, Type.DisplayOrientation)); - fieldIndex++; - newMesg.SetField(new Field("MountingSide", 56, 0, 1, 0, "", false, Type.Side)); - fieldIndex++; - newMesg.SetField(new Field("DefaultPage", 57, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AutosyncMinSteps", 58, 132, 1, 0, "steps", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AutosyncMinTime", 59, 132, 1, 0, "minutes", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("LactateThresholdAutodetectEnabled", 80, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("BleAutoUploadEnabled", 86, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("AutoSyncFrequency", 89, 0, 1, 0, "", false, Type.AutoSyncFrequency)); - fieldIndex++; - newMesg.SetField(new Field("AutoActivityDetect", 90, 134, 1, 0, "", false, Type.AutoActivityDetect)); - fieldIndex++; - newMesg.SetField(new Field("NumberOfScreens", 94, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("SmartNotificationDisplayOrientation", 95, 0, 1, 0, "", false, Type.DisplayOrientation)); - fieldIndex++; - newMesg.SetField(new Field("TapInterface", 134, 0, 1, 0, "", false, Type.Switch)); - fieldIndex++; - newMesg.SetField(new Field("TapSensitivity", 174, 0, 1, 0, "", false, Type.TapSensitivity)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateUserProfileMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("UserProfile", MesgNum.UserProfile); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("FriendlyName", 0, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Gender", 1, 0, 1, 0, "", false, Type.Gender)); - fieldIndex++; - newMesg.SetField(new Field("Age", 2, 2, 1, 0, "years", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Height", 3, 2, 100, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Weight", 4, 132, 10, 0, "kg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Language", 5, 0, 1, 0, "", false, Type.Language)); - fieldIndex++; - newMesg.SetField(new Field("ElevSetting", 6, 0, 1, 0, "", false, Type.DisplayMeasure)); - fieldIndex++; - newMesg.SetField(new Field("WeightSetting", 7, 0, 1, 0, "", false, Type.DisplayMeasure)); - fieldIndex++; - newMesg.SetField(new Field("RestingHeartRate", 8, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("DefaultMaxRunningHeartRate", 9, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("DefaultMaxBikingHeartRate", 10, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("DefaultMaxHeartRate", 11, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("HrSetting", 12, 0, 1, 0, "", false, Type.DisplayHeart)); - fieldIndex++; - newMesg.SetField(new Field("SpeedSetting", 13, 0, 1, 0, "", false, Type.DisplayMeasure)); - fieldIndex++; - newMesg.SetField(new Field("DistSetting", 14, 0, 1, 0, "", false, Type.DisplayMeasure)); - fieldIndex++; - newMesg.SetField(new Field("PowerSetting", 16, 0, 1, 0, "", false, Type.DisplayPower)); - fieldIndex++; - newMesg.SetField(new Field("ActivityClass", 17, 0, 1, 0, "", false, Type.ActivityClass)); - fieldIndex++; - newMesg.SetField(new Field("PositionSetting", 18, 0, 1, 0, "", false, Type.DisplayPosition)); - fieldIndex++; - newMesg.SetField(new Field("TemperatureSetting", 21, 0, 1, 0, "", false, Type.DisplayMeasure)); - fieldIndex++; - newMesg.SetField(new Field("LocalId", 22, 132, 1, 0, "", false, Type.UserLocalId)); - fieldIndex++; - newMesg.SetField(new Field("GlobalId", 23, 13, 1, 0, "", false, Type.Byte)); - fieldIndex++; - newMesg.SetField(new Field("WakeTime", 28, 134, 1, 0, "", false, Type.LocaltimeIntoDay)); - fieldIndex++; - newMesg.SetField(new Field("SleepTime", 29, 134, 1, 0, "", false, Type.LocaltimeIntoDay)); - fieldIndex++; - newMesg.SetField(new Field("HeightSetting", 30, 0, 1, 0, "", false, Type.DisplayMeasure)); - fieldIndex++; - newMesg.SetField(new Field("UserRunningStepLength", 31, 132, 1000, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("UserWalkingStepLength", 32, 132, 1000, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("DepthSetting", 47, 0, 1, 0, "", false, Type.DisplayMeasure)); - fieldIndex++; - newMesg.SetField(new Field("DiveCount", 49, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateHrmProfileMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("HrmProfile", MesgNum.HrmProfile); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Enabled", 0, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("HrmAntId", 1, 139, 1, 0, "", false, Type.Uint16z)); - fieldIndex++; - newMesg.SetField(new Field("LogHrv", 2, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("HrmAntIdTransType", 3, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSdmProfileMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("SdmProfile", MesgNum.SdmProfile); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Enabled", 0, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("SdmAntId", 1, 139, 1, 0, "", false, Type.Uint16z)); - fieldIndex++; - newMesg.SetField(new Field("SdmCalFactor", 2, 132, 10, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Odometer", 3, 134, 100, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("SpeedSource", 4, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("SdmAntIdTransType", 5, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("OdometerRollover", 7, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateBikeProfileMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("BikeProfile", MesgNum.BikeProfile); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Name", 0, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Sport", 1, 0, 1, 0, "", false, Type.Sport)); - fieldIndex++; - newMesg.SetField(new Field("SubSport", 2, 0, 1, 0, "", false, Type.SubSport)); - fieldIndex++; - newMesg.SetField(new Field("Odometer", 3, 134, 100, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("BikeSpdAntId", 4, 139, 1, 0, "", false, Type.Uint16z)); - fieldIndex++; - newMesg.SetField(new Field("BikeCadAntId", 5, 139, 1, 0, "", false, Type.Uint16z)); - fieldIndex++; - newMesg.SetField(new Field("BikeSpdcadAntId", 6, 139, 1, 0, "", false, Type.Uint16z)); - fieldIndex++; - newMesg.SetField(new Field("BikePowerAntId", 7, 139, 1, 0, "", false, Type.Uint16z)); - fieldIndex++; - newMesg.SetField(new Field("CustomWheelsize", 8, 132, 1000, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AutoWheelsize", 9, 132, 1000, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("BikeWeight", 10, 132, 10, 0, "kg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("PowerCalFactor", 11, 132, 10, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AutoWheelCal", 12, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("AutoPowerZero", 13, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("Id", 14, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("SpdEnabled", 15, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("CadEnabled", 16, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("SpdcadEnabled", 17, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("PowerEnabled", 18, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("CrankLength", 19, 2, 2, -110, "mm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Enabled", 20, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("BikeSpdAntIdTransType", 21, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("BikeCadAntIdTransType", 22, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("BikeSpdcadAntIdTransType", 23, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("BikePowerAntIdTransType", 24, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("OdometerRollover", 37, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("FrontGearNum", 38, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("FrontGear", 39, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("RearGearNum", 40, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("RearGear", 41, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("ShimanoDi2Enabled", 44, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateConnectivityMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Connectivity", MesgNum.Connectivity); - fieldIndex = 0; - newMesg.SetField(new Field("BluetoothEnabled", 0, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("BluetoothLeEnabled", 1, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("AntEnabled", 2, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("Name", 3, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("LiveTrackingEnabled", 4, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("WeatherConditionsEnabled", 5, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("WeatherAlertsEnabled", 6, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("AutoActivityUploadEnabled", 7, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("CourseDownloadEnabled", 8, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("WorkoutDownloadEnabled", 9, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("GpsEphemerisDownloadEnabled", 10, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("IncidentDetectionEnabled", 11, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("GrouptrackEnabled", 12, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateWatchfaceSettingsMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("WatchfaceSettings", MesgNum.WatchfaceSettings); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Mode", 0, 0, 1, 0, "", false, Type.WatchfaceMode)); - fieldIndex++; - newMesg.SetField(new Field("Layout", 1, 13, 1, 0, "", false, Type.Byte)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("DigitalLayout", 0, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 0); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("AnalogLayout", 0, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 1); - subfieldIndex++; - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateOhrSettingsMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("OhrSettings", MesgNum.OhrSettings); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Enabled", 0, 0, 1, 0, "", false, Type.Switch)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateTimeInZoneMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("TimeInZone", MesgNum.TimeInZone); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("ReferenceMesg", 0, 132, 1, 0, "", false, Type.MesgNum)); - fieldIndex++; - newMesg.SetField(new Field("ReferenceIndex", 1, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("TimeInHrZone", 2, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInSpeedZone", 3, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInCadenceZone", 4, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInPowerZone", 5, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("HrZoneHighBoundary", 6, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("SpeedZoneHighBoundary", 7, 132, 1000, 0, "m/s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("CadenceZoneHighBondary", 8, 2, 1, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("PowerZoneHighBoundary", 9, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("HrCalcType", 10, 0, 1, 0, "", false, Type.HrZoneCalc)); - fieldIndex++; - newMesg.SetField(new Field("MaxHeartRate", 11, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("RestingHeartRate", 12, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("ThresholdHeartRate", 13, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("PwrCalcType", 14, 0, 1, 0, "", false, Type.PwrZoneCalc)); - fieldIndex++; - newMesg.SetField(new Field("FunctionalThresholdPower", 15, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateZonesTargetMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("ZonesTarget", MesgNum.ZonesTarget); - fieldIndex = 0; - newMesg.SetField(new Field("MaxHeartRate", 1, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("ThresholdHeartRate", 2, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("FunctionalThresholdPower", 3, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("HrCalcType", 5, 0, 1, 0, "", false, Type.HrZoneCalc)); - fieldIndex++; - newMesg.SetField(new Field("PwrCalcType", 7, 0, 1, 0, "", false, Type.PwrZoneCalc)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSportMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Sport", MesgNum.Sport); - fieldIndex = 0; - newMesg.SetField(new Field("Sport", 0, 0, 1, 0, "", false, Type.Sport)); - fieldIndex++; - newMesg.SetField(new Field("SubSport", 1, 0, 1, 0, "", false, Type.SubSport)); - fieldIndex++; - newMesg.SetField(new Field("Name", 3, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateHrZoneMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("HrZone", MesgNum.HrZone); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("HighBpm", 1, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Name", 2, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSpeedZoneMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("SpeedZone", MesgNum.SpeedZone); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("HighValue", 0, 132, 1000, 0, "m/s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Name", 1, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateCadenceZoneMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("CadenceZone", MesgNum.CadenceZone); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("HighValue", 0, 2, 1, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Name", 1, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreatePowerZoneMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("PowerZone", MesgNum.PowerZone); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("HighValue", 1, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Name", 2, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateMetZoneMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("MetZone", MesgNum.MetZone); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("HighBpm", 1, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Calories", 2, 132, 10, 0, "kcal / min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("FatCalories", 3, 2, 10, 0, "kcal / min", false, Type.Uint8)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateDiveSettingsMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("DiveSettings", MesgNum.DiveSettings); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Name", 0, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Model", 1, 0, 1, 0, "", false, Type.TissueModelType)); - fieldIndex++; - newMesg.SetField(new Field("GfLow", 2, 2, 1, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("GfHigh", 3, 2, 1, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("WaterType", 4, 0, 1, 0, "", false, Type.WaterType)); - fieldIndex++; - newMesg.SetField(new Field("WaterDensity", 5, 136, 1, 0, "kg/m^3", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("Po2Warn", 6, 2, 100, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Po2Critical", 7, 2, 100, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Po2Deco", 8, 2, 100, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("SafetyStopEnabled", 9, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("BottomDepth", 10, 136, 1, 0, "", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("BottomTime", 11, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("ApneaCountdownEnabled", 12, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("ApneaCountdownTime", 13, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("BacklightMode", 14, 0, 1, 0, "", false, Type.DiveBacklightMode)); - fieldIndex++; - newMesg.SetField(new Field("BacklightBrightness", 15, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("BacklightTimeout", 16, 2, 1, 0, "", false, Type.BacklightTimeout)); - fieldIndex++; - newMesg.SetField(new Field("RepeatDiveInterval", 17, 132, 1, 0, "s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SafetyStopTime", 18, 132, 1, 0, "s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("HeartRateSourceType", 19, 0, 1, 0, "", false, Type.SourceType)); - fieldIndex++; - newMesg.SetField(new Field("HeartRateSource", 20, 2, 1, 0, "", false, Type.Uint8)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("HeartRateAntplusDeviceType", 2, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 1); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("HeartRateLocalDeviceType", 2, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 5); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("TravelGas", 21, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("CcrLowSetpointSwitchMode", 22, 0, 1, 0, "", false, Type.CcrSetpointSwitchMode)); - fieldIndex++; - newMesg.SetField(new Field("CcrLowSetpoint", 23, 2, 100, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("CcrLowSetpointDepth", 24, 134, 1000, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("CcrHighSetpointSwitchMode", 25, 0, 1, 0, "", false, Type.CcrSetpointSwitchMode)); - fieldIndex++; - newMesg.SetField(new Field("CcrHighSetpoint", 26, 2, 100, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("CcrHighSetpointDepth", 27, 134, 1000, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("GasConsumptionDisplay", 29, 0, 1, 0, "", false, Type.GasConsumptionRateType)); - fieldIndex++; - newMesg.SetField(new Field("UpKeyEnabled", 30, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("DiveSounds", 35, 0, 1, 0, "", false, Type.Tone)); - fieldIndex++; - newMesg.SetField(new Field("LastStopMultiple", 36, 2, 10, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("NoFlyTimeMode", 37, 0, 1, 0, "", false, Type.NoFlyTimeMode)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateDiveAlarmMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("DiveAlarm", MesgNum.DiveAlarm); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Depth", 0, 134, 1000, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Time", 1, 133, 1, 0, "s", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("Enabled", 2, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("AlarmType", 3, 0, 1, 0, "", false, Type.DiveAlarmType)); - fieldIndex++; - newMesg.SetField(new Field("Sound", 4, 0, 1, 0, "", false, Type.Tone)); - fieldIndex++; - newMesg.SetField(new Field("DiveTypes", 5, 0, 1, 0, "", false, Type.SubSport)); - fieldIndex++; - newMesg.SetField(new Field("Id", 6, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("PopupEnabled", 7, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("TriggerOnDescent", 8, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("TriggerOnAscent", 9, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("Repeating", 10, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("Speed", 11, 133, 1000, 0, "mps", false, Type.Sint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateDiveApneaAlarmMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("DiveApneaAlarm", MesgNum.DiveApneaAlarm); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Depth", 0, 134, 1000, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Time", 1, 133, 1, 0, "s", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("Enabled", 2, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("AlarmType", 3, 0, 1, 0, "", false, Type.DiveAlarmType)); - fieldIndex++; - newMesg.SetField(new Field("Sound", 4, 0, 1, 0, "", false, Type.Tone)); - fieldIndex++; - newMesg.SetField(new Field("DiveTypes", 5, 0, 1, 0, "", false, Type.SubSport)); - fieldIndex++; - newMesg.SetField(new Field("Id", 6, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("PopupEnabled", 7, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("TriggerOnDescent", 8, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("TriggerOnAscent", 9, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("Repeating", 10, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("Speed", 11, 133, 1000, 0, "mps", false, Type.Sint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateDiveGasMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("DiveGas", MesgNum.DiveGas); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("HeliumContent", 0, 2, 1, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("OxygenContent", 1, 2, 1, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Status", 2, 0, 1, 0, "", false, Type.DiveGasStatus)); - fieldIndex++; - newMesg.SetField(new Field("Mode", 3, 0, 1, 0, "", false, Type.DiveGasMode)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateGoalMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Goal", MesgNum.Goal); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Sport", 0, 0, 1, 0, "", false, Type.Sport)); - fieldIndex++; - newMesg.SetField(new Field("SubSport", 1, 0, 1, 0, "", false, Type.SubSport)); - fieldIndex++; - newMesg.SetField(new Field("StartDate", 2, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("EndDate", 3, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Type", 4, 0, 1, 0, "", false, Type.Goal)); - fieldIndex++; - newMesg.SetField(new Field("Value", 5, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Repeat", 6, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("TargetValue", 7, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Recurrence", 8, 0, 1, 0, "", false, Type.GoalRecurrence)); - fieldIndex++; - newMesg.SetField(new Field("RecurrenceValue", 9, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Enabled", 10, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("Source", 11, 0, 1, 0, "", false, Type.GoalSource)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateActivityMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Activity", MesgNum.Activity); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TotalTimerTime", 0, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("NumSessions", 1, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Type", 2, 0, 1, 0, "", false, Type.Activity)); - fieldIndex++; - newMesg.SetField(new Field("Event", 3, 0, 1, 0, "", false, Type.Event)); - fieldIndex++; - newMesg.SetField(new Field("EventType", 4, 0, 1, 0, "", false, Type.EventType)); - fieldIndex++; - newMesg.SetField(new Field("LocalTimestamp", 5, 134, 1, 0, "", false, Type.LocalDateTime)); - fieldIndex++; - newMesg.SetField(new Field("EventGroup", 6, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSessionMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Session", MesgNum.Session); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Event", 0, 0, 1, 0, "", false, Type.Event)); - fieldIndex++; - newMesg.SetField(new Field("EventType", 1, 0, 1, 0, "", false, Type.EventType)); - fieldIndex++; - newMesg.SetField(new Field("StartTime", 2, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("StartPositionLat", 3, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("StartPositionLong", 4, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("Sport", 5, 0, 1, 0, "", false, Type.Sport)); - fieldIndex++; - newMesg.SetField(new Field("SubSport", 6, 0, 1, 0, "", false, Type.SubSport)); - fieldIndex++; - newMesg.SetField(new Field("TotalElapsedTime", 7, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalTimerTime", 8, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalDistance", 9, 134, 100, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalCycles", 10, 134, 1, 0, "cycles", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TotalStrides", 134, 1, 0, "strides")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 1); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 11); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TotalStrokes", 134, 1, 0, "strokes")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 2); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 5); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 15); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 37); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("TotalCalories", 11, 132, 1, 0, "kcal", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalFatCalories", 13, 132, 1, 0, "kcal", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgSpeed", 14, 132, 1000, 0, "m/s", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(124, false, 16, 1000, 0)); // enhanced_avg_speed - fieldIndex++; - newMesg.SetField(new Field("MaxSpeed", 15, 132, 1000, 0, "m/s", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(125, false, 16, 1000, 0)); // enhanced_max_speed - fieldIndex++; - newMesg.SetField(new Field("AvgHeartRate", 16, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxHeartRate", 17, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgCadence", 18, 2, 1, 0, "rpm", false, Type.Uint8)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("AvgRunningCadence", 2, 1, 0, "strides/min")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 1); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("MaxCadence", 19, 2, 1, 0, "rpm", false, Type.Uint8)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("MaxRunningCadence", 2, 1, 0, "strides/min")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 1); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("AvgPower", 20, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPower", 21, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalAscent", 22, 132, 1, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalDescent", 23, 132, 1, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalTrainingEffect", 24, 2, 10, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("FirstLapIndex", 25, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("NumLaps", 26, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("EventGroup", 27, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Trigger", 28, 0, 1, 0, "", false, Type.SessionTrigger)); - fieldIndex++; - newMesg.SetField(new Field("NecLat", 29, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("NecLong", 30, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("SwcLat", 31, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("SwcLong", 32, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("NumLengths", 33, 132, 1, 0, "lengths", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("NormalizedPower", 34, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TrainingStressScore", 35, 132, 10, 0, "tss", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("IntensityFactor", 36, 132, 1000, 0, "if", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("LeftRightBalance", 37, 132, 1, 0, "", false, Type.LeftRightBalance100)); - fieldIndex++; - newMesg.SetField(new Field("AvgStrokeCount", 41, 134, 10, 0, "strokes/lap", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgStrokeDistance", 42, 132, 100, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SwimStroke", 43, 0, 1, 0, "swim_stroke", false, Type.SwimStroke)); - fieldIndex++; - newMesg.SetField(new Field("PoolLength", 44, 132, 100, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ThresholdPower", 45, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("PoolLengthUnit", 46, 0, 1, 0, "", false, Type.DisplayMeasure)); - fieldIndex++; - newMesg.SetField(new Field("NumActiveLengths", 47, 132, 1, 0, "lengths", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalWork", 48, 134, 1, 0, "J", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgAltitude", 49, 132, 5, 500, "m", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(126, false, 16, 5, 500)); // enhanced_avg_altitude - fieldIndex++; - newMesg.SetField(new Field("MaxAltitude", 50, 132, 5, 500, "m", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(128, false, 16, 5, 500)); // enhanced_max_altitude - fieldIndex++; - newMesg.SetField(new Field("GpsAccuracy", 51, 2, 1, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgGrade", 52, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgPosGrade", 53, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgNegGrade", 54, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPosGrade", 55, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxNegGrade", 56, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgTemperature", 57, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxTemperature", 58, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("TotalMovingTime", 59, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgPosVerticalSpeed", 60, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgNegVerticalSpeed", 61, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPosVerticalSpeed", 62, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxNegVerticalSpeed", 63, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MinHeartRate", 64, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TimeInHrZone", 65, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInSpeedZone", 66, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInCadenceZone", 67, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInPowerZone", 68, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgLapTime", 69, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("BestLapIndex", 70, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MinAltitude", 71, 132, 5, 500, "m", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(127, false, 16, 5, 500)); // enhanced_min_altitude - fieldIndex++; - newMesg.SetField(new Field("PlayerScore", 82, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("OpponentScore", 83, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("OpponentName", 84, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("StrokeCount", 85, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ZoneCount", 86, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxBallSpeed", 87, 132, 100, 0, "m/s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgBallSpeed", 88, 132, 100, 0, "m/s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgVerticalOscillation", 89, 132, 10, 0, "mm", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgStanceTimePercent", 90, 132, 100, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgStanceTime", 91, 132, 10, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgFractionalCadence", 92, 2, 128, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxFractionalCadence", 93, 2, 128, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TotalFractionalCycles", 94, 2, 128, 0, "cycles", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgTotalHemoglobinConc", 95, 132, 100, 0, "g/dL", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MinTotalHemoglobinConc", 96, 132, 100, 0, "g/dL", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxTotalHemoglobinConc", 97, 132, 100, 0, "g/dL", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgSaturatedHemoglobinPercent", 98, 132, 10, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MinSaturatedHemoglobinPercent", 99, 132, 10, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxSaturatedHemoglobinPercent", 100, 132, 10, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftTorqueEffectiveness", 101, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightTorqueEffectiveness", 102, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPedalSmoothness", 103, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPedalSmoothness", 104, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgCombinedPedalSmoothness", 105, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("SportIndex", 111, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TimeStanding", 112, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("StandCount", 113, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPco", 114, 1, 1, 0, "mm", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPco", 115, 1, 1, 0, "mm", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPowerPhase", 116, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPowerPhasePeak", 117, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPowerPhase", 118, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPowerPhasePeak", 119, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgPowerPosition", 120, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPowerPosition", 121, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgCadencePosition", 122, 2, 1, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxCadencePosition", 123, 2, 1, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedAvgSpeed", 124, 134, 1000, 0, "m/s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMaxSpeed", 125, 134, 1000, 0, "m/s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedAvgAltitude", 126, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMinAltitude", 127, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMaxAltitude", 128, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgLevMotorPower", 129, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxLevMotorPower", 130, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("LevBatteryConsumption", 131, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgVerticalRatio", 132, 132, 100, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgStanceTimeBalance", 133, 132, 100, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgStepLength", 134, 132, 10, 0, "mm", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalAnaerobicTrainingEffect", 137, 2, 10, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgVam", 139, 132, 1000, 0, "m/s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgDepth", 140, 134, 1000, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("MaxDepth", 141, 134, 1000, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("SurfaceInterval", 142, 134, 1, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("StartCns", 143, 2, 1, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("EndCns", 144, 2, 1, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("StartN2", 145, 132, 1, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("EndN2", 146, 132, 1, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgRespirationRate", 147, 2, 1, 0, "", false, Type.Uint8)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(169, false, 8, 1, 0)); // enhanced_avg_respiration_rate - fieldIndex++; - newMesg.SetField(new Field("MaxRespirationRate", 148, 2, 1, 0, "", false, Type.Uint8)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(170, false, 8, 1, 0)); // enhanced_max_respiration_rate - fieldIndex++; - newMesg.SetField(new Field("MinRespirationRate", 149, 2, 1, 0, "", false, Type.Uint8)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(180, false, 8, 1, 0)); // enhanced_min_respiration_rate - fieldIndex++; - newMesg.SetField(new Field("MinTemperature", 150, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("O2Toxicity", 155, 132, 1, 0, "OTUs", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("DiveNumber", 156, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TrainingLoadPeak", 168, 133, 65536, 0, "", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedAvgRespirationRate", 169, 132, 100, 0, "Breaths/min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMaxRespirationRate", 170, 132, 100, 0, "Breaths/min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMinRespirationRate", 180, 132, 100, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalGrit", 181, 136, 1, 0, "kGrit", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("TotalFlow", 182, 136, 1, 0, "Flow", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("JumpCount", 183, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgGrit", 186, 136, 1, 0, "kGrit", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("AvgFlow", 187, 136, 1, 0, "Flow", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("TotalFractionalAscent", 199, 2, 100, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TotalFractionalDescent", 200, 2, 100, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgCoreTemperature", 208, 132, 100, 0, "C", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MinCoreTemperature", 209, 132, 100, 0, "C", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxCoreTemperature", 210, 132, 100, 0, "C", false, Type.Uint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateLapMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Lap", MesgNum.Lap); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Event", 0, 0, 1, 0, "", false, Type.Event)); - fieldIndex++; - newMesg.SetField(new Field("EventType", 1, 0, 1, 0, "", false, Type.EventType)); - fieldIndex++; - newMesg.SetField(new Field("StartTime", 2, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("StartPositionLat", 3, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("StartPositionLong", 4, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("EndPositionLat", 5, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("EndPositionLong", 6, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalElapsedTime", 7, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalTimerTime", 8, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalDistance", 9, 134, 100, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalCycles", 10, 134, 1, 0, "cycles", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TotalStrides", 134, 1, 0, "strides")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 1); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 11); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TotalStrokes", 134, 1, 0, "strokes")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 2); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 5); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 15); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 37); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("TotalCalories", 11, 132, 1, 0, "kcal", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalFatCalories", 12, 132, 1, 0, "kcal", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgSpeed", 13, 132, 1000, 0, "m/s", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(110, false, 16, 1000, 0)); // enhanced_avg_speed - fieldIndex++; - newMesg.SetField(new Field("MaxSpeed", 14, 132, 1000, 0, "m/s", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(111, false, 16, 1000, 0)); // enhanced_max_speed - fieldIndex++; - newMesg.SetField(new Field("AvgHeartRate", 15, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxHeartRate", 16, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgCadence", 17, 2, 1, 0, "rpm", false, Type.Uint8)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("AvgRunningCadence", 2, 1, 0, "strides/min")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 1); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("MaxCadence", 18, 2, 1, 0, "rpm", false, Type.Uint8)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("MaxRunningCadence", 2, 1, 0, "strides/min")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 1); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("AvgPower", 19, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPower", 20, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalAscent", 21, 132, 1, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalDescent", 22, 132, 1, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Intensity", 23, 0, 1, 0, "", false, Type.Intensity)); - fieldIndex++; - newMesg.SetField(new Field("LapTrigger", 24, 0, 1, 0, "", false, Type.LapTrigger)); - fieldIndex++; - newMesg.SetField(new Field("Sport", 25, 0, 1, 0, "", false, Type.Sport)); - fieldIndex++; - newMesg.SetField(new Field("EventGroup", 26, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("NumLengths", 32, 132, 1, 0, "lengths", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("NormalizedPower", 33, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("LeftRightBalance", 34, 132, 1, 0, "", false, Type.LeftRightBalance100)); - fieldIndex++; - newMesg.SetField(new Field("FirstLengthIndex", 35, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgStrokeDistance", 37, 132, 100, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SwimStroke", 38, 0, 1, 0, "", false, Type.SwimStroke)); - fieldIndex++; - newMesg.SetField(new Field("SubSport", 39, 0, 1, 0, "", false, Type.SubSport)); - fieldIndex++; - newMesg.SetField(new Field("NumActiveLengths", 40, 132, 1, 0, "lengths", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalWork", 41, 134, 1, 0, "J", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgAltitude", 42, 132, 5, 500, "m", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(112, false, 16, 5, 500)); // enhanced_avg_altitude - fieldIndex++; - newMesg.SetField(new Field("MaxAltitude", 43, 132, 5, 500, "m", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(114, false, 16, 5, 500)); // enhanced_max_altitude - fieldIndex++; - newMesg.SetField(new Field("GpsAccuracy", 44, 2, 1, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgGrade", 45, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgPosGrade", 46, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgNegGrade", 47, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPosGrade", 48, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxNegGrade", 49, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgTemperature", 50, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxTemperature", 51, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("TotalMovingTime", 52, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgPosVerticalSpeed", 53, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgNegVerticalSpeed", 54, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPosVerticalSpeed", 55, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxNegVerticalSpeed", 56, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("TimeInHrZone", 57, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInSpeedZone", 58, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInCadenceZone", 59, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInPowerZone", 60, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("RepetitionNum", 61, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MinAltitude", 62, 132, 5, 500, "m", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(113, false, 16, 5, 500)); // enhanced_min_altitude - fieldIndex++; - newMesg.SetField(new Field("MinHeartRate", 63, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("WktStepIndex", 71, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("OpponentScore", 74, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("StrokeCount", 75, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ZoneCount", 76, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgVerticalOscillation", 77, 132, 10, 0, "mm", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgStanceTimePercent", 78, 132, 100, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgStanceTime", 79, 132, 10, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgFractionalCadence", 80, 2, 128, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxFractionalCadence", 81, 2, 128, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TotalFractionalCycles", 82, 2, 128, 0, "cycles", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("PlayerScore", 83, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgTotalHemoglobinConc", 84, 132, 100, 0, "g/dL", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MinTotalHemoglobinConc", 85, 132, 100, 0, "g/dL", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxTotalHemoglobinConc", 86, 132, 100, 0, "g/dL", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgSaturatedHemoglobinPercent", 87, 132, 10, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MinSaturatedHemoglobinPercent", 88, 132, 10, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxSaturatedHemoglobinPercent", 89, 132, 10, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftTorqueEffectiveness", 91, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightTorqueEffectiveness", 92, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPedalSmoothness", 93, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPedalSmoothness", 94, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgCombinedPedalSmoothness", 95, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TimeStanding", 98, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("StandCount", 99, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPco", 100, 1, 1, 0, "mm", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPco", 101, 1, 1, 0, "mm", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPowerPhase", 102, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPowerPhasePeak", 103, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPowerPhase", 104, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPowerPhasePeak", 105, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgPowerPosition", 106, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPowerPosition", 107, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgCadencePosition", 108, 2, 1, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxCadencePosition", 109, 2, 1, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedAvgSpeed", 110, 134, 1000, 0, "m/s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMaxSpeed", 111, 134, 1000, 0, "m/s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedAvgAltitude", 112, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMinAltitude", 113, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMaxAltitude", 114, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgLevMotorPower", 115, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxLevMotorPower", 116, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("LevBatteryConsumption", 117, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgVerticalRatio", 118, 132, 100, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgStanceTimeBalance", 119, 132, 100, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgStepLength", 120, 132, 10, 0, "mm", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgVam", 121, 132, 1000, 0, "m/s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgDepth", 122, 134, 1000, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("MaxDepth", 123, 134, 1000, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("MinTemperature", 124, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedAvgRespirationRate", 136, 132, 100, 0, "Breaths/min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMaxRespirationRate", 137, 132, 100, 0, "Breaths/min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgRespirationRate", 147, 2, 1, 0, "", false, Type.Uint8)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(136, false, 8, 1, 0)); // enhanced_avg_respiration_rate - fieldIndex++; - newMesg.SetField(new Field("MaxRespirationRate", 148, 2, 1, 0, "", false, Type.Uint8)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(137, false, 8, 1, 0)); // enhanced_max_respiration_rate - fieldIndex++; - newMesg.SetField(new Field("TotalGrit", 149, 136, 1, 0, "kGrit", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("TotalFlow", 150, 136, 1, 0, "Flow", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("JumpCount", 151, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgGrit", 153, 136, 1, 0, "kGrit", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("AvgFlow", 154, 136, 1, 0, "Flow", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("TotalFractionalAscent", 156, 2, 100, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TotalFractionalDescent", 157, 2, 100, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgCoreTemperature", 158, 132, 100, 0, "C", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MinCoreTemperature", 159, 132, 100, 0, "C", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxCoreTemperature", 160, 132, 100, 0, "C", false, Type.Uint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateLengthMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Length", MesgNum.Length); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Event", 0, 0, 1, 0, "", false, Type.Event)); - fieldIndex++; - newMesg.SetField(new Field("EventType", 1, 0, 1, 0, "", false, Type.EventType)); - fieldIndex++; - newMesg.SetField(new Field("StartTime", 2, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TotalElapsedTime", 3, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalTimerTime", 4, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalStrokes", 5, 132, 1, 0, "strokes", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgSpeed", 6, 132, 1000, 0, "m/s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SwimStroke", 7, 0, 1, 0, "swim_stroke", false, Type.SwimStroke)); - fieldIndex++; - newMesg.SetField(new Field("AvgSwimmingCadence", 9, 2, 1, 0, "strokes/min", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("EventGroup", 10, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TotalCalories", 11, 132, 1, 0, "kcal", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("LengthType", 12, 0, 1, 0, "", false, Type.LengthType)); - fieldIndex++; - newMesg.SetField(new Field("PlayerScore", 18, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("OpponentScore", 19, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("StrokeCount", 20, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ZoneCount", 21, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedAvgRespirationRate", 22, 132, 100, 0, "Breaths/min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMaxRespirationRate", 23, 132, 100, 0, "Breaths/min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgRespirationRate", 24, 2, 1, 0, "", false, Type.Uint8)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(22, false, 8, 1, 0)); // enhanced_avg_respiration_rate - fieldIndex++; - newMesg.SetField(new Field("MaxRespirationRate", 25, 2, 1, 0, "", false, Type.Uint8)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(23, false, 8, 1, 0)); // enhanced_max_respiration_rate - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateRecordMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Record", MesgNum.Record); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("PositionLat", 0, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("PositionLong", 1, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("Altitude", 2, 132, 5, 500, "m", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(78, false, 16, 5, 500)); // enhanced_altitude - fieldIndex++; - newMesg.SetField(new Field("HeartRate", 3, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Cadence", 4, 2, 1, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Distance", 5, 134, 100, 0, "m", true, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Speed", 6, 132, 1000, 0, "m/s", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(73, false, 16, 1000, 0)); // enhanced_speed - fieldIndex++; - newMesg.SetField(new Field("Power", 7, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("CompressedSpeedDistance", 8, 13, 1, 0, "", false, Type.Byte)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(6, false, 12, 100, 0)); // speed - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(5, true, 12, 16, 0)); // distance - fieldIndex++; - newMesg.SetField(new Field("Grade", 9, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("Resistance", 10, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TimeFromCourse", 11, 133, 1000, 0, "s", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("CycleLength", 12, 2, 100, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Temperature", 13, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("Speed1s", 17, 2, 16, 0, "m/s", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Cycles", 18, 2, 1, 0, "cycles", false, Type.Uint8)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(19, true, 8, 1, 0)); // total_cycles - fieldIndex++; - newMesg.SetField(new Field("TotalCycles", 19, 134, 1, 0, "cycles", true, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("CompressedAccumulatedPower", 28, 132, 1, 0, "watts", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(29, true, 16, 1, 0)); // accumulated_power - fieldIndex++; - newMesg.SetField(new Field("AccumulatedPower", 29, 134, 1, 0, "watts", true, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("LeftRightBalance", 30, 2, 1, 0, "", false, Type.LeftRightBalance)); - fieldIndex++; - newMesg.SetField(new Field("GpsAccuracy", 31, 2, 1, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("VerticalSpeed", 32, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("Calories", 33, 132, 1, 0, "kcal", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("VerticalOscillation", 39, 132, 10, 0, "mm", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("StanceTimePercent", 40, 132, 100, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("StanceTime", 41, 132, 10, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ActivityType", 42, 0, 1, 0, "", false, Type.ActivityType)); - fieldIndex++; - newMesg.SetField(new Field("LeftTorqueEffectiveness", 43, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("RightTorqueEffectiveness", 44, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("LeftPedalSmoothness", 45, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("RightPedalSmoothness", 46, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("CombinedPedalSmoothness", 47, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Time128", 48, 2, 128, 0, "s", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("StrokeType", 49, 0, 1, 0, "", false, Type.StrokeType)); - fieldIndex++; - newMesg.SetField(new Field("Zone", 50, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("BallSpeed", 51, 132, 100, 0, "m/s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Cadence256", 52, 132, 256, 0, "rpm", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("FractionalCadence", 53, 2, 128, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TotalHemoglobinConc", 54, 132, 100, 0, "g/dL", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalHemoglobinConcMin", 55, 132, 100, 0, "g/dL", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalHemoglobinConcMax", 56, 132, 100, 0, "g/dL", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SaturatedHemoglobinPercent", 57, 132, 10, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SaturatedHemoglobinPercentMin", 58, 132, 10, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SaturatedHemoglobinPercentMax", 59, 132, 10, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("DeviceIndex", 62, 2, 1, 0, "", false, Type.DeviceIndex)); - fieldIndex++; - newMesg.SetField(new Field("LeftPco", 67, 1, 1, 0, "mm", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("RightPco", 68, 1, 1, 0, "mm", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("LeftPowerPhase", 69, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("LeftPowerPhasePeak", 70, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("RightPowerPhase", 71, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("RightPowerPhasePeak", 72, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedSpeed", 73, 134, 1000, 0, "m/s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedAltitude", 78, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("BatterySoc", 81, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("MotorPower", 82, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("VerticalRatio", 83, 132, 100, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("StanceTimeBalance", 84, 132, 100, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("StepLength", 85, 132, 10, 0, "mm", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AbsolutePressure", 91, 134, 1, 0, "Pa", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Depth", 92, 134, 1000, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("NextStopDepth", 93, 134, 1000, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("NextStopTime", 94, 134, 1, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeToSurface", 95, 134, 1, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("NdlTime", 96, 134, 1, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("CnsLoad", 97, 2, 1, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("N2Load", 98, 132, 1, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("RespirationRate", 99, 2, 1, 0, "s", false, Type.Uint8)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(108, false, 8, 1, 0)); // enhanced_respiration_rate - fieldIndex++; - newMesg.SetField(new Field("EnhancedRespirationRate", 108, 132, 100, 0, "Breaths/min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Grit", 114, 136, 1, 0, "", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("Flow", 115, 136, 1, 0, "", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("EbikeTravelRange", 117, 132, 1, 0, "km", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("EbikeBatteryLevel", 118, 2, 1, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("EbikeAssistMode", 119, 2, 1, 0, "depends on sensor", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("EbikeAssistLevelPercent", 120, 2, 1, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AirTimeRemaining", 123, 134, 1, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("PressureSac", 124, 132, 100, 0, "bar/min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("VolumeSac", 125, 132, 100, 0, "L/min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Rmv", 126, 132, 100, 0, "L/min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AscentRate", 127, 133, 1000, 0, "m/s", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("Po2", 129, 2, 100, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("CoreTemperature", 139, 132, 100, 0, "C", false, Type.Uint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateEventMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Event", MesgNum.Event); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Event", 0, 0, 1, 0, "", false, Type.Event)); - fieldIndex++; - newMesg.SetField(new Field("EventType", 1, 0, 1, 0, "", false, Type.EventType)); - fieldIndex++; - newMesg.SetField(new Field("Data16", 2, 132, 1, 0, "", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(3, false, 16, 1, 0)); // data - fieldIndex++; - newMesg.SetField(new Field("Data", 3, 134, 1, 0, "", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TimerTrigger", 0, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 0); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CoursePointIndex", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 10); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("BatteryLevel", 132, 1000, 0, "V")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 11); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("VirtualPartnerSpeed", 132, 1000, 0, "m/s")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 12); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("HrHighAlert", 2, 1, 0, "bpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 13); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("HrLowAlert", 2, 1, 0, "bpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 14); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SpeedHighAlert", 134, 1000, 0, "m/s")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 15); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SpeedLowAlert", 134, 1000, 0, "m/s")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 16); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CadHighAlert", 132, 1, 0, "rpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 17); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CadLowAlert", 132, 1, 0, "rpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 18); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("PowerHighAlert", 132, 1, 0, "watts")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 19); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("PowerLowAlert", 132, 1, 0, "watts")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 20); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TimeDurationAlert", 134, 1000, 0, "s")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 23); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("DistanceDurationAlert", 134, 100, 0, "m")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 24); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CalorieDurationAlert", 134, 1, 0, "calories")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 25); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("FitnessEquipmentState", 0, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 27); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SportPoint", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 33); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(7, false, 16, 1, 0)); // score - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(8, false, 16, 1, 0)); // opponent_score - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("GearChangeData", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 42); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 43); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(11, false, 8, 1, 0)); // rear_gear_num - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(12, false, 8, 1, 0)); // rear_gear - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(9, false, 8, 1, 0)); // front_gear_num - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(10, false, 8, 1, 0)); // front_gear - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("RiderPosition", 0, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 44); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CommTimeout", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 47); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("DiveAlert", 0, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 56); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("RadarThreatAlert", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 75); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(21, false, 8, 1, 0)); // radar_threat_level_max - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(22, false, 8, 1, 0)); // radar_threat_count - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(23, false, 8, 10, 0)); // radar_threat_avg_approach_speed - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(24, false, 8, 10, 0)); // radar_threat_max_approach_speed - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("EventGroup", 4, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Score", 7, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("OpponentScore", 8, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("FrontGearNum", 9, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("FrontGear", 10, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("RearGearNum", 11, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("RearGear", 12, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("DeviceIndex", 13, 2, 1, 0, "", false, Type.DeviceIndex)); - fieldIndex++; - newMesg.SetField(new Field("RadarThreatLevelMax", 21, 0, 1, 0, "", false, Type.RadarThreatLevelType)); - fieldIndex++; - newMesg.SetField(new Field("RadarThreatCount", 22, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("RadarThreatAvgApproachSpeed", 23, 2, 10, 0, "m/s", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("RadarThreatMaxApproachSpeed", 24, 2, 10, 0, "m/s", false, Type.Uint8)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateDeviceInfoMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("DeviceInfo", MesgNum.DeviceInfo); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("DeviceIndex", 0, 2, 1, 0, "", false, Type.DeviceIndex)); - fieldIndex++; - newMesg.SetField(new Field("DeviceType", 1, 2, 1, 0, "", false, Type.Uint8)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("BleDeviceType", 2, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 3); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("AntplusDeviceType", 2, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 1); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("AntDeviceType", 2, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 0); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("LocalDeviceType", 2, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 5); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("Manufacturer", 2, 132, 1, 0, "", false, Type.Manufacturer)); - fieldIndex++; - newMesg.SetField(new Field("SerialNumber", 3, 140, 1, 0, "", false, Type.Uint32z)); - fieldIndex++; - newMesg.SetField(new Field("Product", 4, 132, 1, 0, "", false, Type.Uint16)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("FaveroProduct", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(2, 263); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("GarminProduct", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(2, 1); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(2, 15); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(2, 13); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(2, 89); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("SoftwareVersion", 5, 132, 100, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("HardwareVersion", 6, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("CumOperatingTime", 7, 134, 1, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("BatteryVoltage", 10, 132, 256, 0, "V", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("BatteryStatus", 11, 2, 1, 0, "", false, Type.BatteryStatus)); - fieldIndex++; - newMesg.SetField(new Field("SensorPosition", 18, 0, 1, 0, "", false, Type.BodyLocation)); - fieldIndex++; - newMesg.SetField(new Field("Descriptor", 19, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("AntTransmissionType", 20, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("AntDeviceNumber", 21, 139, 1, 0, "", false, Type.Uint16z)); - fieldIndex++; - newMesg.SetField(new Field("AntNetwork", 22, 0, 1, 0, "", false, Type.AntNetwork)); - fieldIndex++; - newMesg.SetField(new Field("SourceType", 25, 0, 1, 0, "", false, Type.SourceType)); - fieldIndex++; - newMesg.SetField(new Field("ProductName", 27, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("BatteryLevel", 32, 2, 1, 0, "%", false, Type.Uint8)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateDeviceAuxBatteryInfoMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("DeviceAuxBatteryInfo", MesgNum.DeviceAuxBatteryInfo); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("DeviceIndex", 0, 2, 1, 0, "", false, Type.DeviceIndex)); - fieldIndex++; - newMesg.SetField(new Field("BatteryVoltage", 1, 132, 256, 0, "V", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("BatteryStatus", 2, 2, 1, 0, "", false, Type.BatteryStatus)); - fieldIndex++; - newMesg.SetField(new Field("BatteryIdentifier", 3, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateTrainingFileMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("TrainingFile", MesgNum.TrainingFile); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Type", 0, 0, 1, 0, "", false, Type.File)); - fieldIndex++; - newMesg.SetField(new Field("Manufacturer", 1, 132, 1, 0, "", false, Type.Manufacturer)); - fieldIndex++; - newMesg.SetField(new Field("Product", 2, 132, 1, 0, "", false, Type.Uint16)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("FaveroProduct", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 263); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("GarminProduct", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 1); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 15); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 13); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 89); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("SerialNumber", 3, 140, 1, 0, "", false, Type.Uint32z)); - fieldIndex++; - newMesg.SetField(new Field("TimeCreated", 4, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateWeatherConditionsMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("WeatherConditions", MesgNum.WeatherConditions); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("WeatherReport", 0, 0, 1, 0, "", false, Type.WeatherReport)); - fieldIndex++; - newMesg.SetField(new Field("Temperature", 1, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("Condition", 2, 0, 1, 0, "", false, Type.WeatherStatus)); - fieldIndex++; - newMesg.SetField(new Field("WindDirection", 3, 132, 1, 0, "degrees", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("WindSpeed", 4, 132, 1000, 0, "m/s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("PrecipitationProbability", 5, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TemperatureFeelsLike", 6, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("RelativeHumidity", 7, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Location", 8, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("ObservedAtTime", 9, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("ObservedLocationLat", 10, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("ObservedLocationLong", 11, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("DayOfWeek", 12, 0, 1, 0, "", false, Type.DayOfWeek)); - fieldIndex++; - newMesg.SetField(new Field("HighTemperature", 13, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("LowTemperature", 14, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateWeatherAlertMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("WeatherAlert", MesgNum.WeatherAlert); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("ReportId", 0, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("IssueTime", 1, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("ExpireTime", 2, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Severity", 3, 0, 1, 0, "", false, Type.WeatherSeverity)); - fieldIndex++; - newMesg.SetField(new Field("Type", 4, 0, 1, 0, "", false, Type.WeatherSevereType)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateGpsMetadataMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("GpsMetadata", MesgNum.GpsMetadata); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("PositionLat", 1, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("PositionLong", 2, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedAltitude", 3, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedSpeed", 4, 134, 1000, 0, "m/s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Heading", 5, 132, 100, 0, "degrees", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("UtcTimestamp", 6, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Velocity", 7, 131, 100, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateCameraEventMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("CameraEvent", MesgNum.CameraEvent); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("CameraEventType", 1, 0, 1, 0, "", false, Type.CameraEventType)); - fieldIndex++; - newMesg.SetField(new Field("CameraFileUuid", 2, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("CameraOrientation", 3, 0, 1, 0, "", false, Type.CameraOrientationType)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateGyroscopeDataMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("GyroscopeData", MesgNum.GyroscopeData); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SampleTimeOffset", 1, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("GyroX", 2, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("GyroY", 3, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("GyroZ", 4, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("CalibratedGyroX", 5, 136, 1, 0, "deg/s", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("CalibratedGyroY", 6, 136, 1, 0, "deg/s", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("CalibratedGyroZ", 7, 136, 1, 0, "deg/s", false, Type.Float32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateAccelerometerDataMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("AccelerometerData", MesgNum.AccelerometerData); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SampleTimeOffset", 1, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AccelX", 2, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AccelY", 3, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AccelZ", 4, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("CalibratedAccelX", 5, 136, 1, 0, "g", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("CalibratedAccelY", 6, 136, 1, 0, "g", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("CalibratedAccelZ", 7, 136, 1, 0, "g", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("CompressedCalibratedAccelX", 8, 131, 1, 0, "mG", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("CompressedCalibratedAccelY", 9, 131, 1, 0, "mG", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("CompressedCalibratedAccelZ", 10, 131, 1, 0, "mG", false, Type.Sint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateMagnetometerDataMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("MagnetometerData", MesgNum.MagnetometerData); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SampleTimeOffset", 1, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MagX", 2, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MagY", 3, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MagZ", 4, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("CalibratedMagX", 5, 136, 1, 0, "G", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("CalibratedMagY", 6, 136, 1, 0, "G", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("CalibratedMagZ", 7, 136, 1, 0, "G", false, Type.Float32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateBarometerDataMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("BarometerData", MesgNum.BarometerData); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SampleTimeOffset", 1, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("BaroPres", 2, 134, 1, 0, "Pa", false, Type.Uint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateThreeDSensorCalibrationMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("ThreeDSensorCalibration", MesgNum.ThreeDSensorCalibration); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("SensorType", 0, 0, 1, 0, "", false, Type.SensorType)); - fieldIndex++; - newMesg.SetField(new Field("CalibrationFactor", 1, 134, 1, 0, "", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("AccelCalFactor", 134, 1, 0, "g")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 0); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("GyroCalFactor", 134, 1, 0, "deg/s")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 1); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("CalibrationDivisor", 2, 134, 1, 0, "counts", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("LevelShift", 3, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("OffsetCal", 4, 133, 1, 0, "", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("OrientationMatrix", 5, 133, 65535, 0, "", false, Type.Sint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateOneDSensorCalibrationMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("OneDSensorCalibration", MesgNum.OneDSensorCalibration); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("SensorType", 0, 0, 1, 0, "", false, Type.SensorType)); - fieldIndex++; - newMesg.SetField(new Field("CalibrationFactor", 1, 134, 1, 0, "", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("BaroCalFactor", 134, 1, 0, "Pa")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 3); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("CalibrationDivisor", 2, 134, 1, 0, "counts", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("LevelShift", 3, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("OffsetCal", 4, 133, 1, 0, "", false, Type.Sint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateVideoFrameMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("VideoFrame", MesgNum.VideoFrame); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("FrameNumber", 1, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateObdiiDataMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("ObdiiData", MesgNum.ObdiiData); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TimeOffset", 1, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Pid", 2, 13, 1, 0, "", false, Type.Byte)); - fieldIndex++; - newMesg.SetField(new Field("RawData", 3, 13, 1, 0, "", false, Type.Byte)); - fieldIndex++; - newMesg.SetField(new Field("PidDataSize", 4, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("SystemTime", 5, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("StartTimestamp", 6, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("StartTimestampMs", 7, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateNmeaSentenceMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("NmeaSentence", MesgNum.NmeaSentence); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Sentence", 1, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateAviationAttitudeMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("AviationAttitude", MesgNum.AviationAttitude); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SystemTime", 1, 134, 1, 0, "ms", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Pitch", 2, 131, 10430.38, 0, "radians", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("Roll", 3, 131, 10430.38, 0, "radians", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AccelLateral", 4, 131, 100, 0, "m/s^2", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AccelNormal", 5, 131, 100, 0, "m/s^2", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("TurnRate", 6, 131, 1024, 0, "radians/second", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("Stage", 7, 0, 1, 0, "", false, Type.AttitudeStage)); - fieldIndex++; - newMesg.SetField(new Field("AttitudeStageComplete", 8, 2, 1, 0, "%", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Track", 9, 132, 10430.38, 0, "radians", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Validity", 10, 132, 1, 0, "", false, Type.AttitudeValidity)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateVideoMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Video", MesgNum.Video); - fieldIndex = 0; - newMesg.SetField(new Field("Url", 0, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("HostingProvider", 1, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Duration", 2, 134, 1, 0, "ms", false, Type.Uint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateVideoTitleMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("VideoTitle", MesgNum.VideoTitle); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("MessageCount", 0, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Text", 1, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateVideoDescriptionMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("VideoDescription", MesgNum.VideoDescription); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("MessageCount", 0, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Text", 1, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateVideoClipMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("VideoClip", MesgNum.VideoClip); - fieldIndex = 0; - newMesg.SetField(new Field("ClipNumber", 0, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("StartTimestamp", 1, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("StartTimestampMs", 2, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("EndTimestamp", 3, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("EndTimestampMs", 4, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ClipStart", 6, 134, 1, 0, "ms", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("ClipEnd", 7, 134, 1, 0, "ms", false, Type.Uint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSetMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Set", MesgNum.Set); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 254, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Duration", 0, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Repetitions", 3, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Weight", 4, 132, 16, 0, "kg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SetType", 5, 2, 1, 0, "", false, Type.SetType)); - fieldIndex++; - newMesg.SetField(new Field("StartTime", 6, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Category", 7, 132, 1, 0, "", false, Type.ExerciseCategory)); - fieldIndex++; - newMesg.SetField(new Field("CategorySubtype", 8, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("WeightDisplayUnit", 9, 132, 1, 0, "", false, Type.FitBaseUnit)); - fieldIndex++; - newMesg.SetField(new Field("MessageIndex", 10, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("WktStepIndex", 11, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateJumpMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Jump", MesgNum.Jump); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Distance", 0, 136, 1, 0, "m", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("Height", 1, 136, 1, 0, "m", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("Rotations", 2, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("HangTime", 3, 136, 1, 0, "s", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("Score", 4, 136, 1, 0, "", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("PositionLat", 5, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("PositionLong", 6, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("Speed", 7, 132, 1000, 0, "m/s", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(8, false, 16, 1000, 0)); // enhanced_speed - fieldIndex++; - newMesg.SetField(new Field("EnhancedSpeed", 8, 134, 1000, 0, "m/s", false, Type.Uint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSplitMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Split", MesgNum.Split); - fieldIndex = 0; - newMesg.SetField(new Field("SplitType", 0, 0, 1, 0, "", false, Type.SplitType)); - fieldIndex++; - newMesg.SetField(new Field("TotalElapsedTime", 1, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalTimerTime", 2, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalDistance", 3, 134, 100, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("StartTime", 9, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateClimbProMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("ClimbPro", MesgNum.ClimbPro); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("PositionLat", 0, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("PositionLong", 1, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("ClimbProEvent", 2, 0, 1, 0, "", false, Type.ClimbProEvent)); - fieldIndex++; - newMesg.SetField(new Field("ClimbNumber", 3, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ClimbCategory", 4, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("CurrentDist", 5, 136, 1, 0, "m", false, Type.Float32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateFieldDescriptionMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("FieldDescription", MesgNum.FieldDescription); - fieldIndex = 0; - newMesg.SetField(new Field("DeveloperDataIndex", 0, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("FieldDefinitionNumber", 1, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("FitBaseTypeId", 2, 2, 1, 0, "", false, Type.FitBaseType)); - fieldIndex++; - newMesg.SetField(new Field("FieldName", 3, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Array", 4, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Components", 5, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Scale", 6, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Offset", 7, 1, 1, 0, "", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("Units", 8, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Bits", 9, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Accumulate", 10, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("FitBaseUnitId", 13, 132, 1, 0, "", false, Type.FitBaseUnit)); - fieldIndex++; - newMesg.SetField(new Field("NativeMesgNum", 14, 132, 1, 0, "", false, Type.MesgNum)); - fieldIndex++; - newMesg.SetField(new Field("NativeFieldNum", 15, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateDeveloperDataIdMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("DeveloperDataId", MesgNum.DeveloperDataId); - fieldIndex = 0; - newMesg.SetField(new Field("DeveloperId", 0, 13, 1, 0, "", false, Type.Byte)); - fieldIndex++; - newMesg.SetField(new Field("ApplicationId", 1, 13, 1, 0, "", false, Type.Byte)); - fieldIndex++; - newMesg.SetField(new Field("ManufacturerId", 2, 132, 1, 0, "", false, Type.Manufacturer)); - fieldIndex++; - newMesg.SetField(new Field("DeveloperDataIndex", 3, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("ApplicationVersion", 4, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateCourseMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Course", MesgNum.Course); - fieldIndex = 0; - newMesg.SetField(new Field("Sport", 4, 0, 1, 0, "", false, Type.Sport)); - fieldIndex++; - newMesg.SetField(new Field("Name", 5, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Capabilities", 6, 140, 1, 0, "", false, Type.CourseCapabilities)); - fieldIndex++; - newMesg.SetField(new Field("SubSport", 7, 0, 1, 0, "", false, Type.SubSport)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateCoursePointMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("CoursePoint", MesgNum.CoursePoint); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Timestamp", 1, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("PositionLat", 2, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("PositionLong", 3, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("Distance", 4, 134, 100, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Type", 5, 0, 1, 0, "", false, Type.CoursePoint)); - fieldIndex++; - newMesg.SetField(new Field("Name", 6, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Favorite", 8, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSegmentIdMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("SegmentId", MesgNum.SegmentId); - fieldIndex = 0; - newMesg.SetField(new Field("Name", 0, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Uuid", 1, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Sport", 2, 0, 1, 0, "", false, Type.Sport)); - fieldIndex++; - newMesg.SetField(new Field("Enabled", 3, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("UserProfilePrimaryKey", 4, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("DeviceId", 5, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("DefaultRaceLeader", 6, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("DeleteStatus", 7, 0, 1, 0, "", false, Type.SegmentDeleteStatus)); - fieldIndex++; - newMesg.SetField(new Field("SelectionType", 8, 0, 1, 0, "", false, Type.SegmentSelectionType)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSegmentLeaderboardEntryMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("SegmentLeaderboardEntry", MesgNum.SegmentLeaderboardEntry); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Name", 0, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Type", 1, 0, 1, 0, "", false, Type.SegmentLeaderboardType)); - fieldIndex++; - newMesg.SetField(new Field("GroupPrimaryKey", 2, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("ActivityId", 3, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("SegmentTime", 4, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("ActivityIdString", 5, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSegmentPointMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("SegmentPoint", MesgNum.SegmentPoint); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("PositionLat", 1, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("PositionLong", 2, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("Distance", 3, 134, 100, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Altitude", 4, 132, 5, 500, "m", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(6, false, 16, 5, 500)); // enhanced_altitude - fieldIndex++; - newMesg.SetField(new Field("LeaderTime", 5, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedAltitude", 6, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSegmentLapMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("SegmentLap", MesgNum.SegmentLap); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Event", 0, 0, 1, 0, "", false, Type.Event)); - fieldIndex++; - newMesg.SetField(new Field("EventType", 1, 0, 1, 0, "", false, Type.EventType)); - fieldIndex++; - newMesg.SetField(new Field("StartTime", 2, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("StartPositionLat", 3, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("StartPositionLong", 4, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("EndPositionLat", 5, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("EndPositionLong", 6, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalElapsedTime", 7, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalTimerTime", 8, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalDistance", 9, 134, 100, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalCycles", 10, 134, 1, 0, "cycles", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TotalStrokes", 134, 1, 0, "strokes")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(23, 2); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("TotalCalories", 11, 132, 1, 0, "kcal", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalFatCalories", 12, 132, 1, 0, "kcal", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgSpeed", 13, 132, 1000, 0, "m/s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxSpeed", 14, 132, 1000, 0, "m/s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgHeartRate", 15, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxHeartRate", 16, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgCadence", 17, 2, 1, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxCadence", 18, 2, 1, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgPower", 19, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPower", 20, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalAscent", 21, 132, 1, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalDescent", 22, 132, 1, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Sport", 23, 0, 1, 0, "", false, Type.Sport)); - fieldIndex++; - newMesg.SetField(new Field("EventGroup", 24, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("NecLat", 25, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("NecLong", 26, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("SwcLat", 27, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("SwcLong", 28, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("Name", 29, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("NormalizedPower", 30, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("LeftRightBalance", 31, 132, 1, 0, "", false, Type.LeftRightBalance100)); - fieldIndex++; - newMesg.SetField(new Field("SubSport", 32, 0, 1, 0, "", false, Type.SubSport)); - fieldIndex++; - newMesg.SetField(new Field("TotalWork", 33, 134, 1, 0, "J", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgAltitude", 34, 132, 5, 500, "m", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(91, false, 16, 5, 500)); // enhanced_avg_altitude - fieldIndex++; - newMesg.SetField(new Field("MaxAltitude", 35, 132, 5, 500, "m", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(92, false, 16, 5, 500)); // enhanced_max_altitude - fieldIndex++; - newMesg.SetField(new Field("GpsAccuracy", 36, 2, 1, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgGrade", 37, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgPosGrade", 38, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgNegGrade", 39, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPosGrade", 40, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxNegGrade", 41, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgTemperature", 42, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxTemperature", 43, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("TotalMovingTime", 44, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgPosVerticalSpeed", 45, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgNegVerticalSpeed", 46, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPosVerticalSpeed", 47, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxNegVerticalSpeed", 48, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("TimeInHrZone", 49, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInSpeedZone", 50, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInCadenceZone", 51, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInPowerZone", 52, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("RepetitionNum", 53, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MinAltitude", 54, 132, 5, 500, "m", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(93, false, 16, 5, 500)); // enhanced_min_altitude - fieldIndex++; - newMesg.SetField(new Field("MinHeartRate", 55, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("ActiveTime", 56, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("WktStepIndex", 57, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("SportEvent", 58, 0, 1, 0, "", false, Type.SportEvent)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftTorqueEffectiveness", 59, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightTorqueEffectiveness", 60, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPedalSmoothness", 61, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPedalSmoothness", 62, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgCombinedPedalSmoothness", 63, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Status", 64, 0, 1, 0, "", false, Type.SegmentLapStatus)); - fieldIndex++; - newMesg.SetField(new Field("Uuid", 65, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("AvgFractionalCadence", 66, 2, 128, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxFractionalCadence", 67, 2, 128, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TotalFractionalCycles", 68, 2, 128, 0, "cycles", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("FrontGearShiftCount", 69, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("RearGearShiftCount", 70, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TimeStanding", 71, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("StandCount", 72, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPco", 73, 1, 1, 0, "mm", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPco", 74, 1, 1, 0, "mm", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPowerPhase", 75, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPowerPhasePeak", 76, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPowerPhase", 77, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPowerPhasePeak", 78, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgPowerPosition", 79, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPowerPosition", 80, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgCadencePosition", 81, 2, 1, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxCadencePosition", 82, 2, 1, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Manufacturer", 83, 132, 1, 0, "", false, Type.Manufacturer)); - fieldIndex++; - newMesg.SetField(new Field("TotalGrit", 84, 136, 1, 0, "kGrit", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("TotalFlow", 85, 136, 1, 0, "Flow", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("AvgGrit", 86, 136, 1, 0, "kGrit", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("AvgFlow", 87, 136, 1, 0, "Flow", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("TotalFractionalAscent", 89, 2, 100, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TotalFractionalDescent", 90, 2, 100, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedAvgAltitude", 91, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMaxAltitude", 92, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMinAltitude", 93, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSegmentFileMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("SegmentFile", MesgNum.SegmentFile); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("FileUuid", 1, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Enabled", 3, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("UserProfilePrimaryKey", 4, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("LeaderType", 7, 0, 1, 0, "", false, Type.SegmentLeaderboardType)); - fieldIndex++; - newMesg.SetField(new Field("LeaderGroupPrimaryKey", 8, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("LeaderActivityId", 9, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("LeaderActivityIdString", 10, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("DefaultRaceLeader", 11, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateWorkoutMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Workout", MesgNum.Workout); - fieldIndex = 0; - newMesg.SetField(new Field("Sport", 4, 0, 1, 0, "", false, Type.Sport)); - fieldIndex++; - newMesg.SetField(new Field("Capabilities", 5, 140, 1, 0, "", false, Type.WorkoutCapabilities)); - fieldIndex++; - newMesg.SetField(new Field("NumValidSteps", 6, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("WktName", 8, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("SubSport", 11, 0, 1, 0, "", false, Type.SubSport)); - fieldIndex++; - newMesg.SetField(new Field("PoolLength", 14, 132, 100, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("PoolLengthUnit", 15, 0, 1, 0, "", false, Type.DisplayMeasure)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateWorkoutSessionMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("WorkoutSession", MesgNum.WorkoutSession); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Sport", 0, 0, 1, 0, "", false, Type.Sport)); - fieldIndex++; - newMesg.SetField(new Field("SubSport", 1, 0, 1, 0, "", false, Type.SubSport)); - fieldIndex++; - newMesg.SetField(new Field("NumValidSteps", 2, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("FirstStepIndex", 3, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("PoolLength", 4, 132, 100, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("PoolLengthUnit", 5, 0, 1, 0, "", false, Type.DisplayMeasure)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateWorkoutStepMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("WorkoutStep", MesgNum.WorkoutStep); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("WktStepName", 0, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("DurationType", 1, 0, 1, 0, "", false, Type.WktStepDuration)); - fieldIndex++; - newMesg.SetField(new Field("DurationValue", 2, 134, 1, 0, "", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("DurationTime", 134, 1000, 0, "s")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 0); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 28); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("DurationDistance", 134, 100, 0, "m")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 1); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("DurationHr", 134, 1, 0, "% or bpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 2); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 3); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("DurationCalories", 134, 1, 0, "calories")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 4); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("DurationStep", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 6); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 7); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 8); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 9); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 10); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 11); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 12); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 13); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("DurationPower", 134, 1, 0, "% or watts")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 14); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 15); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("DurationReps", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 29); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("TargetType", 3, 0, 1, 0, "", false, Type.WktStepTarget)); - fieldIndex++; - newMesg.SetField(new Field("TargetValue", 4, 134, 1, 0, "", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TargetSpeedZone", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 0); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TargetHrZone", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 1); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TargetCadenceZone", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 3); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TargetPowerZone", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 4); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("RepeatSteps", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 6); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("RepeatTime", 134, 1000, 0, "s")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 7); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("RepeatDistance", 134, 100, 0, "m")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 8); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("RepeatCalories", 134, 1, 0, "calories")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 9); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("RepeatHr", 134, 1, 0, "% or bpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 10); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 11); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("RepeatPower", 134, 1, 0, "% or watts")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 12); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 13); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TargetStrokeType", 0, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 11); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("CustomTargetValueLow", 5, 134, 1, 0, "", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CustomTargetSpeedLow", 134, 1000, 0, "m/s")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 0); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CustomTargetHeartRateLow", 134, 1, 0, "% or bpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 1); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CustomTargetCadenceLow", 134, 1, 0, "rpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 3); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CustomTargetPowerLow", 134, 1, 0, "% or watts")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 4); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("CustomTargetValueHigh", 6, 134, 1, 0, "", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CustomTargetSpeedHigh", 134, 1000, 0, "m/s")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 0); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CustomTargetHeartRateHigh", 134, 1, 0, "% or bpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 1); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CustomTargetCadenceHigh", 134, 1, 0, "rpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 3); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CustomTargetPowerHigh", 134, 1, 0, "% or watts")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 4); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("Intensity", 7, 0, 1, 0, "", false, Type.Intensity)); - fieldIndex++; - newMesg.SetField(new Field("Notes", 8, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Equipment", 9, 0, 1, 0, "", false, Type.WorkoutEquipment)); - fieldIndex++; - newMesg.SetField(new Field("ExerciseCategory", 10, 132, 1, 0, "", false, Type.ExerciseCategory)); - fieldIndex++; - newMesg.SetField(new Field("ExerciseName", 11, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ExerciseWeight", 12, 132, 100, 0, "kg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("WeightDisplayUnit", 13, 132, 1, 0, "", false, Type.FitBaseUnit)); - fieldIndex++; - newMesg.SetField(new Field("SecondaryTargetType", 19, 0, 1, 0, "", false, Type.WktStepTarget)); - fieldIndex++; - newMesg.SetField(new Field("SecondaryTargetValue", 20, 134, 1, 0, "", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryTargetSpeedZone", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 0); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryTargetHrZone", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 1); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryTargetCadenceZone", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 3); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryTargetPowerZone", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 4); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryTargetStrokeType", 0, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 11); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("SecondaryCustomTargetValueLow", 21, 134, 1, 0, "", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryCustomTargetSpeedLow", 134, 1000, 0, "m/s")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 0); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryCustomTargetHeartRateLow", 134, 1, 0, "% or bpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 1); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryCustomTargetCadenceLow", 134, 1, 0, "rpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 3); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryCustomTargetPowerLow", 134, 1, 0, "% or watts")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 4); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("SecondaryCustomTargetValueHigh", 22, 134, 1, 0, "", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryCustomTargetSpeedHigh", 134, 1000, 0, "m/s")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 0); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryCustomTargetHeartRateHigh", 134, 1, 0, "% or bpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 1); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryCustomTargetCadenceHigh", 134, 1, 0, "rpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 3); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryCustomTargetPowerHigh", 134, 1, 0, "% or watts")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 4); - subfieldIndex++; - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateExerciseTitleMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("ExerciseTitle", MesgNum.ExerciseTitle); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("ExerciseCategory", 0, 132, 1, 0, "", false, Type.ExerciseCategory)); - fieldIndex++; - newMesg.SetField(new Field("ExerciseName", 1, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("WktStepName", 2, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateScheduleMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Schedule", MesgNum.Schedule); - fieldIndex = 0; - newMesg.SetField(new Field("Manufacturer", 0, 132, 1, 0, "", false, Type.Manufacturer)); - fieldIndex++; - newMesg.SetField(new Field("Product", 1, 132, 1, 0, "", false, Type.Uint16)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("FaveroProduct", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 263); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("GarminProduct", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 1); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 15); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 13); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 89); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("SerialNumber", 2, 140, 1, 0, "", false, Type.Uint32z)); - fieldIndex++; - newMesg.SetField(new Field("TimeCreated", 3, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Completed", 4, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("Type", 5, 0, 1, 0, "", false, Type.Schedule)); - fieldIndex++; - newMesg.SetField(new Field("ScheduledTime", 6, 134, 1, 0, "", false, Type.LocalDateTime)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateTotalsMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Totals", MesgNum.Totals); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimerTime", 0, 134, 1, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Distance", 1, 134, 1, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Calories", 2, 134, 1, 0, "kcal", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Sport", 3, 0, 1, 0, "", false, Type.Sport)); - fieldIndex++; - newMesg.SetField(new Field("ElapsedTime", 4, 134, 1, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Sessions", 5, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ActiveTime", 6, 134, 1, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("SportIndex", 9, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateWeightScaleMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("WeightScale", MesgNum.WeightScale); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Weight", 0, 132, 100, 0, "kg", false, Type.Weight)); - fieldIndex++; - newMesg.SetField(new Field("PercentFat", 1, 132, 100, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("PercentHydration", 2, 132, 100, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("VisceralFatMass", 3, 132, 100, 0, "kg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("BoneMass", 4, 132, 100, 0, "kg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MuscleMass", 5, 132, 100, 0, "kg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("BasalMet", 7, 132, 4, 0, "kcal/day", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("PhysiqueRating", 8, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("ActiveMet", 9, 132, 4, 0, "kcal/day", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MetabolicAge", 10, 2, 1, 0, "years", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("VisceralFatRating", 11, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("UserProfileIndex", 12, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateBloodPressureMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("BloodPressure", MesgNum.BloodPressure); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("SystolicPressure", 0, 132, 1, 0, "mmHg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("DiastolicPressure", 1, 132, 1, 0, "mmHg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MeanArterialPressure", 2, 132, 1, 0, "mmHg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Map3SampleMean", 3, 132, 1, 0, "mmHg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MapMorningValues", 4, 132, 1, 0, "mmHg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MapEveningValues", 5, 132, 1, 0, "mmHg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("HeartRate", 6, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("HeartRateType", 7, 0, 1, 0, "", false, Type.HrType)); - fieldIndex++; - newMesg.SetField(new Field("Status", 8, 0, 1, 0, "", false, Type.BpStatus)); - fieldIndex++; - newMesg.SetField(new Field("UserProfileIndex", 9, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateMonitoringInfoMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("MonitoringInfo", MesgNum.MonitoringInfo); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("LocalTimestamp", 0, 134, 1, 0, "s", false, Type.LocalDateTime)); - fieldIndex++; - newMesg.SetField(new Field("ActivityType", 1, 0, 1, 0, "", false, Type.ActivityType)); - fieldIndex++; - newMesg.SetField(new Field("CyclesToDistance", 3, 132, 5000, 0, "m/cycle", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("CyclesToCalories", 4, 132, 5000, 0, "kcal/cycle", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("RestingMetabolicRate", 5, 132, 1, 0, "kcal / day", false, Type.Uint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateMonitoringMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Monitoring", MesgNum.Monitoring); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("DeviceIndex", 0, 2, 1, 0, "", false, Type.DeviceIndex)); - fieldIndex++; - newMesg.SetField(new Field("Calories", 1, 132, 1, 0, "kcal", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Distance", 2, 134, 100, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Cycles", 3, 134, 2, 0, "cycles", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("Steps", 134, 1, 0, "steps")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 6); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 1); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("Strokes", 134, 2, 0, "strokes")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 2); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 5); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("ActiveTime", 4, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("ActivityType", 5, 0, 1, 0, "", false, Type.ActivityType)); - fieldIndex++; - newMesg.SetField(new Field("ActivitySubtype", 6, 0, 1, 0, "", false, Type.ActivitySubtype)); - fieldIndex++; - newMesg.SetField(new Field("ActivityLevel", 7, 0, 1, 0, "", false, Type.ActivityLevel)); - fieldIndex++; - newMesg.SetField(new Field("Distance16", 8, 132, 1, 0, "100 * m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Cycles16", 9, 132, 1, 0, "2 * cycles (steps)", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ActiveTime16", 10, 132, 1, 0, "s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("LocalTimestamp", 11, 134, 1, 0, "", false, Type.LocalDateTime)); - fieldIndex++; - newMesg.SetField(new Field("Temperature", 12, 131, 100, 0, "C", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("TemperatureMin", 14, 131, 100, 0, "C", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("TemperatureMax", 15, 131, 100, 0, "C", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("ActivityTime", 16, 132, 1, 0, "minutes", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ActiveCalories", 19, 132, 1, 0, "kcal", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("CurrentActivityTypeIntensity", 24, 13, 1, 0, "", false, Type.Byte)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(5, false, 5, 1, 0)); // activity_type - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(28, false, 3, 1, 0)); // intensity - fieldIndex++; - newMesg.SetField(new Field("TimestampMin8", 25, 2, 1, 0, "min", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Timestamp16", 26, 132, 1, 0, "s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("HeartRate", 27, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Intensity", 28, 2, 10, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("DurationMin", 29, 132, 1, 0, "min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Duration", 30, 134, 1, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Ascent", 31, 134, 1000, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Descent", 32, 134, 1000, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("ModerateActivityMinutes", 33, 132, 1, 0, "minutes", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("VigorousActivityMinutes", 34, 132, 1, 0, "minutes", false, Type.Uint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateHrMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Hr", MesgNum.Hr); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("FractionalTimestamp", 0, 132, 32768, 0, "s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Time256", 1, 2, 256, 0, "s", false, Type.Uint8)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(0, false, 8, 256, 0)); // fractional_timestamp - fieldIndex++; - newMesg.SetField(new Field("FilteredBpm", 6, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("EventTimestamp", 9, 134, 1024, 0, "s", true, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EventTimestamp12", 10, 13, 1, 0, "", false, Type.Byte)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateStressLevelMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("StressLevel", MesgNum.StressLevel); - fieldIndex = 0; - newMesg.SetField(new Field("StressLevelValue", 0, 131, 1, 0, "", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("StressLevelTime", 1, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateMemoGlobMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("MemoGlob", MesgNum.MemoGlob); - fieldIndex = 0; - newMesg.SetField(new Field("PartIndex", 250, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Memo", 0, 13, 1, 0, "", false, Type.Byte)); - fieldIndex++; - newMesg.SetField(new Field("MesgNum", 1, 132, 1, 0, "", false, Type.MesgNum)); - fieldIndex++; - newMesg.SetField(new Field("ParentIndex", 2, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("FieldNum", 3, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Data", 4, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateAntChannelIdMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("AntChannelId", MesgNum.AntChannelId); - fieldIndex = 0; - newMesg.SetField(new Field("ChannelNumber", 0, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("DeviceType", 1, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("DeviceNumber", 2, 139, 1, 0, "", false, Type.Uint16z)); - fieldIndex++; - newMesg.SetField(new Field("TransmissionType", 3, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("DeviceIndex", 4, 2, 1, 0, "", false, Type.DeviceIndex)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateAntRxMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("AntRx", MesgNum.AntRx); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("FractionalTimestamp", 0, 132, 32768, 0, "s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MesgId", 1, 13, 1, 0, "", false, Type.Byte)); - fieldIndex++; - newMesg.SetField(new Field("MesgData", 2, 13, 1, 0, "", false, Type.Byte)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(3, false, 8, 1, 0)); // channel_number - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - fieldIndex++; - newMesg.SetField(new Field("ChannelNumber", 3, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Data", 4, 13, 1, 0, "", false, Type.Byte)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateAntTxMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("AntTx", MesgNum.AntTx); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("FractionalTimestamp", 0, 132, 32768, 0, "s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MesgId", 1, 13, 1, 0, "", false, Type.Byte)); - fieldIndex++; - newMesg.SetField(new Field("MesgData", 2, 13, 1, 0, "", false, Type.Byte)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(3, false, 8, 1, 0)); // channel_number - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - fieldIndex++; - newMesg.SetField(new Field("ChannelNumber", 3, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Data", 4, 13, 1, 0, "", false, Type.Byte)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateExdScreenConfigurationMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("ExdScreenConfiguration", MesgNum.ExdScreenConfiguration); - fieldIndex = 0; - newMesg.SetField(new Field("ScreenIndex", 0, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("FieldCount", 1, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Layout", 2, 0, 1, 0, "", false, Type.ExdLayout)); - fieldIndex++; - newMesg.SetField(new Field("ScreenEnabled", 3, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateExdDataFieldConfigurationMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("ExdDataFieldConfiguration", MesgNum.ExdDataFieldConfiguration); - fieldIndex = 0; - newMesg.SetField(new Field("ScreenIndex", 0, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("ConceptField", 1, 13, 1, 0, "", false, Type.Byte)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(2, false, 4, 1, 0)); // field_id - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(3, false, 4, 1, 0)); // concept_count - fieldIndex++; - newMesg.SetField(new Field("FieldId", 2, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("ConceptCount", 3, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("DisplayType", 4, 0, 1, 0, "", false, Type.ExdDisplayType)); - fieldIndex++; - newMesg.SetField(new Field("Title", 5, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateExdDataConceptConfigurationMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("ExdDataConceptConfiguration", MesgNum.ExdDataConceptConfiguration); - fieldIndex = 0; - newMesg.SetField(new Field("ScreenIndex", 0, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("ConceptField", 1, 13, 1, 0, "", false, Type.Byte)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(2, false, 4, 1, 0)); // field_id - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(3, false, 4, 1, 0)); // concept_index - fieldIndex++; - newMesg.SetField(new Field("FieldId", 2, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("ConceptIndex", 3, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("DataPage", 4, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("ConceptKey", 5, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Scaling", 6, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("DataUnits", 8, 0, 1, 0, "", false, Type.ExdDataUnits)); - fieldIndex++; - newMesg.SetField(new Field("Qualifier", 9, 0, 1, 0, "", false, Type.ExdQualifiers)); - fieldIndex++; - newMesg.SetField(new Field("Descriptor", 10, 0, 1, 0, "", false, Type.ExdDescriptors)); - fieldIndex++; - newMesg.SetField(new Field("IsSigned", 11, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateDiveSummaryMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("DiveSummary", MesgNum.DiveSummary); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("ReferenceMesg", 0, 132, 1, 0, "", false, Type.MesgNum)); - fieldIndex++; - newMesg.SetField(new Field("ReferenceIndex", 1, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("AvgDepth", 2, 134, 1000, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("MaxDepth", 3, 134, 1000, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("SurfaceInterval", 4, 134, 1, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("StartCns", 5, 2, 1, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("EndCns", 6, 2, 1, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("StartN2", 7, 132, 1, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("EndN2", 8, 132, 1, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("O2Toxicity", 9, 132, 1, 0, "OTUs", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("DiveNumber", 10, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("BottomTime", 11, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgPressureSac", 12, 132, 100, 0, "bar/min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgVolumeSac", 13, 132, 100, 0, "L/min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgRmv", 14, 132, 100, 0, "L/min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("DescentTime", 15, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AscentTime", 16, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgAscentRate", 17, 133, 1000, 0, "m/s", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgDescentRate", 22, 134, 1000, 0, "m/s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("MaxAscentRate", 23, 134, 1000, 0, "m/s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("MaxDescentRate", 24, 134, 1000, 0, "m/s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("HangTime", 25, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateHrvMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Hrv", MesgNum.Hrv); - fieldIndex = 0; - newMesg.SetField(new Field("Time", 0, 132, 1000, 0, "s", false, Type.Uint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateTankUpdateMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("TankUpdate", MesgNum.TankUpdate); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Sensor", 0, 140, 1, 0, "", false, Type.AntChannelId)); - fieldIndex++; - newMesg.SetField(new Field("Pressure", 1, 132, 100, 0, "bar", false, Type.Uint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateTankSummaryMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("TankSummary", MesgNum.TankSummary); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Sensor", 0, 140, 1, 0, "", false, Type.AntChannelId)); - fieldIndex++; - newMesg.SetField(new Field("StartPressure", 1, 132, 100, 0, "bar", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("EndPressure", 2, 132, 100, 0, "bar", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("VolumeUsed", 3, 134, 100, 0, "L", false, Type.Uint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreatePadMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Pad", MesgNum.Pad); - fieldIndex = 0; - - return newMesg; - } - - #pragma warning restore 0168 - #pragma warning restore 0219 - - #endregion - } // class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/AccelerometerDataMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/AccelerometerDataMesg.cs deleted file mode 100644 index 959a7dd8f..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/AccelerometerDataMesg.cs +++ /dev/null @@ -1,509 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the AccelerometerData profile message. - /// - public class AccelerometerDataMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte TimestampMs = 0; - public const byte SampleTimeOffset = 1; - public const byte AccelX = 2; - public const byte AccelY = 3; - public const byte AccelZ = 4; - public const byte CalibratedAccelX = 5; - public const byte CalibratedAccelY = 6; - public const byte CalibratedAccelZ = 7; - public const byte CompressedCalibratedAccelX = 8; - public const byte CompressedCalibratedAccelY = 9; - public const byte CompressedCalibratedAccelZ = 10; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public AccelerometerDataMesg() : base(Profile.GetMesg(MesgNum.AccelerometerData)) - { - } - - public AccelerometerDataMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Returns nullable ushort representing the TimestampMs field - public ushort? GetTimestampMs() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Nullable field value to be set - public void SetTimestampMs(ushort? timestampMs_) - { - SetFieldValue(0, 0, timestampMs_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field SampleTimeOffset - public int GetNumSampleTimeOffset() - { - return GetNumFieldValues(1, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SampleTimeOffset field - /// Units: ms - /// Comment: Each time in the array describes the time at which the accelerometer sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in accel_x and accel_y and accel_z - /// 0 based index of SampleTimeOffset element to retrieve - /// Returns nullable ushort representing the SampleTimeOffset field - public ushort? GetSampleTimeOffset(int index) - { - Object val = GetFieldValue(1, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set SampleTimeOffset field - /// Units: ms - /// Comment: Each time in the array describes the time at which the accelerometer sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in accel_x and accel_y and accel_z - /// 0 based index of sample_time_offset - /// Nullable field value to be set - public void SetSampleTimeOffset(int index, ushort? sampleTimeOffset_) - { - SetFieldValue(1, index, sampleTimeOffset_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AccelX - public int GetNumAccelX() - { - return GetNumFieldValues(2, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AccelX field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of AccelX element to retrieve - /// Returns nullable ushort representing the AccelX field - public ushort? GetAccelX(int index) - { - Object val = GetFieldValue(2, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AccelX field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of accel_x - /// Nullable field value to be set - public void SetAccelX(int index, ushort? accelX_) - { - SetFieldValue(2, index, accelX_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AccelY - public int GetNumAccelY() - { - return GetNumFieldValues(3, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AccelY field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of AccelY element to retrieve - /// Returns nullable ushort representing the AccelY field - public ushort? GetAccelY(int index) - { - Object val = GetFieldValue(3, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AccelY field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of accel_y - /// Nullable field value to be set - public void SetAccelY(int index, ushort? accelY_) - { - SetFieldValue(3, index, accelY_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AccelZ - public int GetNumAccelZ() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AccelZ field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of AccelZ element to retrieve - /// Returns nullable ushort representing the AccelZ field - public ushort? GetAccelZ(int index) - { - Object val = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AccelZ field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of accel_z - /// Nullable field value to be set - public void SetAccelZ(int index, ushort? accelZ_) - { - SetFieldValue(4, index, accelZ_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CalibratedAccelX - public int GetNumCalibratedAccelX() - { - return GetNumFieldValues(5, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CalibratedAccelX field - /// Units: g - /// Comment: Calibrated accel reading - /// 0 based index of CalibratedAccelX element to retrieve - /// Returns nullable float representing the CalibratedAccelX field - public float? GetCalibratedAccelX(int index) - { - Object val = GetFieldValue(5, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CalibratedAccelX field - /// Units: g - /// Comment: Calibrated accel reading - /// 0 based index of calibrated_accel_x - /// Nullable field value to be set - public void SetCalibratedAccelX(int index, float? calibratedAccelX_) - { - SetFieldValue(5, index, calibratedAccelX_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CalibratedAccelY - public int GetNumCalibratedAccelY() - { - return GetNumFieldValues(6, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CalibratedAccelY field - /// Units: g - /// Comment: Calibrated accel reading - /// 0 based index of CalibratedAccelY element to retrieve - /// Returns nullable float representing the CalibratedAccelY field - public float? GetCalibratedAccelY(int index) - { - Object val = GetFieldValue(6, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CalibratedAccelY field - /// Units: g - /// Comment: Calibrated accel reading - /// 0 based index of calibrated_accel_y - /// Nullable field value to be set - public void SetCalibratedAccelY(int index, float? calibratedAccelY_) - { - SetFieldValue(6, index, calibratedAccelY_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CalibratedAccelZ - public int GetNumCalibratedAccelZ() - { - return GetNumFieldValues(7, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CalibratedAccelZ field - /// Units: g - /// Comment: Calibrated accel reading - /// 0 based index of CalibratedAccelZ element to retrieve - /// Returns nullable float representing the CalibratedAccelZ field - public float? GetCalibratedAccelZ(int index) - { - Object val = GetFieldValue(7, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CalibratedAccelZ field - /// Units: g - /// Comment: Calibrated accel reading - /// 0 based index of calibrated_accel_z - /// Nullable field value to be set - public void SetCalibratedAccelZ(int index, float? calibratedAccelZ_) - { - SetFieldValue(7, index, calibratedAccelZ_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CompressedCalibratedAccelX - public int GetNumCompressedCalibratedAccelX() - { - return GetNumFieldValues(8, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CompressedCalibratedAccelX field - /// Units: mG - /// Comment: Calibrated accel reading - /// 0 based index of CompressedCalibratedAccelX element to retrieve - /// Returns nullable short representing the CompressedCalibratedAccelX field - public short? GetCompressedCalibratedAccelX(int index) - { - Object val = GetFieldValue(8, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt16(val)); - - } - - /// - /// Set CompressedCalibratedAccelX field - /// Units: mG - /// Comment: Calibrated accel reading - /// 0 based index of compressed_calibrated_accel_x - /// Nullable field value to be set - public void SetCompressedCalibratedAccelX(int index, short? compressedCalibratedAccelX_) - { - SetFieldValue(8, index, compressedCalibratedAccelX_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CompressedCalibratedAccelY - public int GetNumCompressedCalibratedAccelY() - { - return GetNumFieldValues(9, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CompressedCalibratedAccelY field - /// Units: mG - /// Comment: Calibrated accel reading - /// 0 based index of CompressedCalibratedAccelY element to retrieve - /// Returns nullable short representing the CompressedCalibratedAccelY field - public short? GetCompressedCalibratedAccelY(int index) - { - Object val = GetFieldValue(9, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt16(val)); - - } - - /// - /// Set CompressedCalibratedAccelY field - /// Units: mG - /// Comment: Calibrated accel reading - /// 0 based index of compressed_calibrated_accel_y - /// Nullable field value to be set - public void SetCompressedCalibratedAccelY(int index, short? compressedCalibratedAccelY_) - { - SetFieldValue(9, index, compressedCalibratedAccelY_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CompressedCalibratedAccelZ - public int GetNumCompressedCalibratedAccelZ() - { - return GetNumFieldValues(10, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CompressedCalibratedAccelZ field - /// Units: mG - /// Comment: Calibrated accel reading - /// 0 based index of CompressedCalibratedAccelZ element to retrieve - /// Returns nullable short representing the CompressedCalibratedAccelZ field - public short? GetCompressedCalibratedAccelZ(int index) - { - Object val = GetFieldValue(10, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt16(val)); - - } - - /// - /// Set CompressedCalibratedAccelZ field - /// Units: mG - /// Comment: Calibrated accel reading - /// 0 based index of compressed_calibrated_accel_z - /// Nullable field value to be set - public void SetCompressedCalibratedAccelZ(int index, short? compressedCalibratedAccelZ_) - { - SetFieldValue(10, index, compressedCalibratedAccelZ_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ActivityMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ActivityMesg.cs deleted file mode 100644 index d5cdf8fc2..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ActivityMesg.cs +++ /dev/null @@ -1,236 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Activity profile message. - /// - public class ActivityMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte TotalTimerTime = 0; - public const byte NumSessions = 1; - public const byte Type = 2; - public const byte Event = 3; - public const byte EventType = 4; - public const byte LocalTimestamp = 5; - public const byte EventGroup = 6; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public ActivityMesg() : base(Profile.GetMesg(MesgNum.Activity)) - { - } - - public ActivityMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalTimerTime field - /// Units: s - /// Comment: Exclude pauses - /// Returns nullable float representing the TotalTimerTime field - public float? GetTotalTimerTime() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalTimerTime field - /// Units: s - /// Comment: Exclude pauses - /// Nullable field value to be set - public void SetTotalTimerTime(float? totalTimerTime_) - { - SetFieldValue(0, 0, totalTimerTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NumSessions field - /// Returns nullable ushort representing the NumSessions field - public ushort? GetNumSessions() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NumSessions field - /// Nullable field value to be set - public void SetNumSessions(ushort? numSessions_) - { - SetFieldValue(1, 0, numSessions_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Type field - /// Returns nullable Activity enum representing the Type field - new public Activity? GetType() - { - object obj = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - Activity? value = obj == null ? (Activity?)null : (Activity)obj; - return value; - } - - /// - /// Set Type field - /// Nullable field value to be set - public void SetType(Activity? type_) - { - SetFieldValue(2, 0, type_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Event field - /// Returns nullable Event enum representing the Event field - public Event? GetEvent() - { - object obj = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - Event? value = obj == null ? (Event?)null : (Event)obj; - return value; - } - - /// - /// Set Event field - /// Nullable field value to be set - public void SetEvent(Event? event_) - { - SetFieldValue(3, 0, event_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventType field - /// Returns nullable EventType enum representing the EventType field - public EventType? GetEventType() - { - object obj = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - EventType? value = obj == null ? (EventType?)null : (EventType)obj; - return value; - } - - /// - /// Set EventType field - /// Nullable field value to be set - public void SetEventType(EventType? eventType_) - { - SetFieldValue(4, 0, eventType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LocalTimestamp field - /// Comment: timestamp epoch expressed in local time, used to convert activity timestamps to local time - /// Returns nullable uint representing the LocalTimestamp field - public uint? GetLocalTimestamp() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set LocalTimestamp field - /// Comment: timestamp epoch expressed in local time, used to convert activity timestamps to local time - /// Nullable field value to be set - public void SetLocalTimestamp(uint? localTimestamp_) - { - SetFieldValue(5, 0, localTimestamp_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventGroup field - /// Returns nullable byte representing the EventGroup field - public byte? GetEventGroup() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set EventGroup field - /// Nullable field value to be set - public void SetEventGroup(byte? eventGroup_) - { - SetFieldValue(6, 0, eventGroup_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/AntChannelIdMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/AntChannelIdMesg.cs deleted file mode 100644 index 42f0a7f53..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/AntChannelIdMesg.cs +++ /dev/null @@ -1,173 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the AntChannelId profile message. - /// - public class AntChannelIdMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte ChannelNumber = 0; - public const byte DeviceType = 1; - public const byte DeviceNumber = 2; - public const byte TransmissionType = 3; - public const byte DeviceIndex = 4; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public AntChannelIdMesg() : base(Profile.GetMesg(MesgNum.AntChannelId)) - { - } - - public AntChannelIdMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the ChannelNumber field - /// Returns nullable byte representing the ChannelNumber field - public byte? GetChannelNumber() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ChannelNumber field - /// Nullable field value to be set - public void SetChannelNumber(byte? channelNumber_) - { - SetFieldValue(0, 0, channelNumber_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeviceType field - /// Returns nullable byte representing the DeviceType field - public byte? GetDeviceType() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DeviceType field - /// Nullable field value to be set - public void SetDeviceType(byte? deviceType_) - { - SetFieldValue(1, 0, deviceType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeviceNumber field - /// Returns nullable ushort representing the DeviceNumber field - public ushort? GetDeviceNumber() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set DeviceNumber field - /// Nullable field value to be set - public void SetDeviceNumber(ushort? deviceNumber_) - { - SetFieldValue(2, 0, deviceNumber_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TransmissionType field - /// Returns nullable byte representing the TransmissionType field - public byte? GetTransmissionType() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set TransmissionType field - /// Nullable field value to be set - public void SetTransmissionType(byte? transmissionType_) - { - SetFieldValue(3, 0, transmissionType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeviceIndex field - /// Returns nullable byte representing the DeviceIndex field - public byte? GetDeviceIndex() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DeviceIndex field - /// Nullable field value to be set - public void SetDeviceIndex(byte? deviceIndex_) - { - SetFieldValue(4, 0, deviceIndex_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/AntRxMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/AntRxMesg.cs deleted file mode 100644 index cd3d26e59..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/AntRxMesg.cs +++ /dev/null @@ -1,225 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the AntRx profile message. - /// - public class AntRxMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte FractionalTimestamp = 0; - public const byte MesgId = 1; - public const byte MesgData = 2; - public const byte ChannelNumber = 3; - public const byte Data = 4; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public AntRxMesg() : base(Profile.GetMesg(MesgNum.AntRx)) - { - } - - public AntRxMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FractionalTimestamp field - /// Units: s - /// Returns nullable float representing the FractionalTimestamp field - public float? GetFractionalTimestamp() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set FractionalTimestamp field - /// Units: s - /// Nullable field value to be set - public void SetFractionalTimestamp(float? fractionalTimestamp_) - { - SetFieldValue(0, 0, fractionalTimestamp_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MesgId field - /// Returns nullable byte representing the MesgId field - public byte? GetMesgId() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MesgId field - /// Nullable field value to be set - public void SetMesgId(byte? mesgId_) - { - SetFieldValue(1, 0, mesgId_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MesgData - public int GetNumMesgData() - { - return GetNumFieldValues(2, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MesgData field - /// 0 based index of MesgData element to retrieve - /// Returns nullable byte representing the MesgData field - public byte? GetMesgData(int index) - { - Object val = GetFieldValue(2, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MesgData field - /// 0 based index of mesg_data - /// Nullable field value to be set - public void SetMesgData(int index, byte? mesgData_) - { - SetFieldValue(2, index, mesgData_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ChannelNumber field - /// Returns nullable byte representing the ChannelNumber field - public byte? GetChannelNumber() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ChannelNumber field - /// Nullable field value to be set - public void SetChannelNumber(byte? channelNumber_) - { - SetFieldValue(3, 0, channelNumber_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Data - public int GetNumData() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Data field - /// 0 based index of Data element to retrieve - /// Returns nullable byte representing the Data field - public byte? GetData(int index) - { - Object val = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Data field - /// 0 based index of data - /// Nullable field value to be set - public void SetData(int index, byte? data_) - { - SetFieldValue(4, index, data_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/AntTxMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/AntTxMesg.cs deleted file mode 100644 index d48559714..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/AntTxMesg.cs +++ /dev/null @@ -1,225 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the AntTx profile message. - /// - public class AntTxMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte FractionalTimestamp = 0; - public const byte MesgId = 1; - public const byte MesgData = 2; - public const byte ChannelNumber = 3; - public const byte Data = 4; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public AntTxMesg() : base(Profile.GetMesg(MesgNum.AntTx)) - { - } - - public AntTxMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FractionalTimestamp field - /// Units: s - /// Returns nullable float representing the FractionalTimestamp field - public float? GetFractionalTimestamp() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set FractionalTimestamp field - /// Units: s - /// Nullable field value to be set - public void SetFractionalTimestamp(float? fractionalTimestamp_) - { - SetFieldValue(0, 0, fractionalTimestamp_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MesgId field - /// Returns nullable byte representing the MesgId field - public byte? GetMesgId() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MesgId field - /// Nullable field value to be set - public void SetMesgId(byte? mesgId_) - { - SetFieldValue(1, 0, mesgId_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MesgData - public int GetNumMesgData() - { - return GetNumFieldValues(2, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MesgData field - /// 0 based index of MesgData element to retrieve - /// Returns nullable byte representing the MesgData field - public byte? GetMesgData(int index) - { - Object val = GetFieldValue(2, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MesgData field - /// 0 based index of mesg_data - /// Nullable field value to be set - public void SetMesgData(int index, byte? mesgData_) - { - SetFieldValue(2, index, mesgData_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ChannelNumber field - /// Returns nullable byte representing the ChannelNumber field - public byte? GetChannelNumber() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ChannelNumber field - /// Nullable field value to be set - public void SetChannelNumber(byte? channelNumber_) - { - SetFieldValue(3, 0, channelNumber_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Data - public int GetNumData() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Data field - /// 0 based index of Data element to retrieve - /// Returns nullable byte representing the Data field - public byte? GetData(int index) - { - Object val = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Data field - /// 0 based index of data - /// Nullable field value to be set - public void SetData(int index, byte? data_) - { - SetFieldValue(4, index, data_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/AviationAttitudeMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/AviationAttitudeMesg.cs deleted file mode 100644 index 8388fc8dc..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/AviationAttitudeMesg.cs +++ /dev/null @@ -1,496 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the AviationAttitude profile message. - /// - public class AviationAttitudeMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte TimestampMs = 0; - public const byte SystemTime = 1; - public const byte Pitch = 2; - public const byte Roll = 3; - public const byte AccelLateral = 4; - public const byte AccelNormal = 5; - public const byte TurnRate = 6; - public const byte Stage = 7; - public const byte AttitudeStageComplete = 8; - public const byte Track = 9; - public const byte Validity = 10; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public AviationAttitudeMesg() : base(Profile.GetMesg(MesgNum.AviationAttitude)) - { - } - - public AviationAttitudeMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Timestamp message was output - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Timestamp message was output - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMs field - /// Units: ms - /// Comment: Fractional part of timestamp, added to timestamp - /// Returns nullable ushort representing the TimestampMs field - public ushort? GetTimestampMs() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimestampMs field - /// Units: ms - /// Comment: Fractional part of timestamp, added to timestamp - /// Nullable field value to be set - public void SetTimestampMs(ushort? timestampMs_) - { - SetFieldValue(0, 0, timestampMs_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field SystemTime - public int GetNumSystemTime() - { - return GetNumFieldValues(1, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SystemTime field - /// Units: ms - /// Comment: System time associated with sample expressed in ms. - /// 0 based index of SystemTime element to retrieve - /// Returns nullable uint representing the SystemTime field - public uint? GetSystemTime(int index) - { - Object val = GetFieldValue(1, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set SystemTime field - /// Units: ms - /// Comment: System time associated with sample expressed in ms. - /// 0 based index of system_time - /// Nullable field value to be set - public void SetSystemTime(int index, uint? systemTime_) - { - SetFieldValue(1, index, systemTime_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Pitch - public int GetNumPitch() - { - return GetNumFieldValues(2, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Pitch field - /// Units: radians - /// Comment: Range -PI/2 to +PI/2 - /// 0 based index of Pitch element to retrieve - /// Returns nullable float representing the Pitch field - public float? GetPitch(int index) - { - Object val = GetFieldValue(2, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Pitch field - /// Units: radians - /// Comment: Range -PI/2 to +PI/2 - /// 0 based index of pitch - /// Nullable field value to be set - public void SetPitch(int index, float? pitch_) - { - SetFieldValue(2, index, pitch_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Roll - public int GetNumRoll() - { - return GetNumFieldValues(3, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Roll field - /// Units: radians - /// Comment: Range -PI to +PI - /// 0 based index of Roll element to retrieve - /// Returns nullable float representing the Roll field - public float? GetRoll(int index) - { - Object val = GetFieldValue(3, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Roll field - /// Units: radians - /// Comment: Range -PI to +PI - /// 0 based index of roll - /// Nullable field value to be set - public void SetRoll(int index, float? roll_) - { - SetFieldValue(3, index, roll_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AccelLateral - public int GetNumAccelLateral() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AccelLateral field - /// Units: m/s^2 - /// Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - /// 0 based index of AccelLateral element to retrieve - /// Returns nullable float representing the AccelLateral field - public float? GetAccelLateral(int index) - { - Object val = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AccelLateral field - /// Units: m/s^2 - /// Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - /// 0 based index of accel_lateral - /// Nullable field value to be set - public void SetAccelLateral(int index, float? accelLateral_) - { - SetFieldValue(4, index, accelLateral_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AccelNormal - public int GetNumAccelNormal() - { - return GetNumFieldValues(5, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AccelNormal field - /// Units: m/s^2 - /// Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - /// 0 based index of AccelNormal element to retrieve - /// Returns nullable float representing the AccelNormal field - public float? GetAccelNormal(int index) - { - Object val = GetFieldValue(5, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AccelNormal field - /// Units: m/s^2 - /// Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - /// 0 based index of accel_normal - /// Nullable field value to be set - public void SetAccelNormal(int index, float? accelNormal_) - { - SetFieldValue(5, index, accelNormal_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TurnRate - public int GetNumTurnRate() - { - return GetNumFieldValues(6, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TurnRate field - /// Units: radians/second - /// Comment: Range -8.727 to +8.727 (-500 degs/sec to +500 degs/sec) - /// 0 based index of TurnRate element to retrieve - /// Returns nullable float representing the TurnRate field - public float? GetTurnRate(int index) - { - Object val = GetFieldValue(6, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TurnRate field - /// Units: radians/second - /// Comment: Range -8.727 to +8.727 (-500 degs/sec to +500 degs/sec) - /// 0 based index of turn_rate - /// Nullable field value to be set - public void SetTurnRate(int index, float? turnRate_) - { - SetFieldValue(6, index, turnRate_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Stage - public int GetNumStage() - { - return GetNumFieldValues(7, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Stage field - /// 0 based index of Stage element to retrieve - /// Returns nullable AttitudeStage enum representing the Stage field - public AttitudeStage? GetStage(int index) - { - object obj = GetFieldValue(7, index, Fit.SubfieldIndexMainField); - AttitudeStage? value = obj == null ? (AttitudeStage?)null : (AttitudeStage)obj; - return value; - } - - /// - /// Set Stage field - /// 0 based index of stage - /// Nullable field value to be set - public void SetStage(int index, AttitudeStage? stage_) - { - SetFieldValue(7, index, stage_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AttitudeStageComplete - public int GetNumAttitudeStageComplete() - { - return GetNumFieldValues(8, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AttitudeStageComplete field - /// Units: % - /// Comment: The percent complete of the current attitude stage. Set to 0 for attitude stages 0, 1 and 2 and to 100 for attitude stage 3 by AHRS modules that do not support it. Range - 100 - /// 0 based index of AttitudeStageComplete element to retrieve - /// Returns nullable byte representing the AttitudeStageComplete field - public byte? GetAttitudeStageComplete(int index) - { - Object val = GetFieldValue(8, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AttitudeStageComplete field - /// Units: % - /// Comment: The percent complete of the current attitude stage. Set to 0 for attitude stages 0, 1 and 2 and to 100 for attitude stage 3 by AHRS modules that do not support it. Range - 100 - /// 0 based index of attitude_stage_complete - /// Nullable field value to be set - public void SetAttitudeStageComplete(int index, byte? attitudeStageComplete_) - { - SetFieldValue(8, index, attitudeStageComplete_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Track - public int GetNumTrack() - { - return GetNumFieldValues(9, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Track field - /// Units: radians - /// Comment: Track Angle/Heading Range 0 - 2pi - /// 0 based index of Track element to retrieve - /// Returns nullable float representing the Track field - public float? GetTrack(int index) - { - Object val = GetFieldValue(9, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Track field - /// Units: radians - /// Comment: Track Angle/Heading Range 0 - 2pi - /// 0 based index of track - /// Nullable field value to be set - public void SetTrack(int index, float? track_) - { - SetFieldValue(9, index, track_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Validity - public int GetNumValidity() - { - return GetNumFieldValues(10, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Validity field - /// 0 based index of Validity element to retrieve - /// Returns nullable ushort representing the Validity field - public ushort? GetValidity(int index) - { - Object val = GetFieldValue(10, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Validity field - /// 0 based index of validity - /// Nullable field value to be set - public void SetValidity(int index, ushort? validity_) - { - SetFieldValue(10, index, validity_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/BarometerDataMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/BarometerDataMesg.cs deleted file mode 100644 index cc92c6c13..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/BarometerDataMesg.cs +++ /dev/null @@ -1,189 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the BarometerData profile message. - /// - public class BarometerDataMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte TimestampMs = 0; - public const byte SampleTimeOffset = 1; - public const byte BaroPres = 2; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public BarometerDataMesg() : base(Profile.GetMesg(MesgNum.BarometerData)) - { - } - - public BarometerDataMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Returns nullable ushort representing the TimestampMs field - public ushort? GetTimestampMs() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Nullable field value to be set - public void SetTimestampMs(ushort? timestampMs_) - { - SetFieldValue(0, 0, timestampMs_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field SampleTimeOffset - public int GetNumSampleTimeOffset() - { - return GetNumFieldValues(1, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SampleTimeOffset field - /// Units: ms - /// Comment: Each time in the array describes the time at which the barometer sample with the corrosponding index was taken. The samples may span across seconds. Array size must match the number of samples in baro_cal - /// 0 based index of SampleTimeOffset element to retrieve - /// Returns nullable ushort representing the SampleTimeOffset field - public ushort? GetSampleTimeOffset(int index) - { - Object val = GetFieldValue(1, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set SampleTimeOffset field - /// Units: ms - /// Comment: Each time in the array describes the time at which the barometer sample with the corrosponding index was taken. The samples may span across seconds. Array size must match the number of samples in baro_cal - /// 0 based index of sample_time_offset - /// Nullable field value to be set - public void SetSampleTimeOffset(int index, ushort? sampleTimeOffset_) - { - SetFieldValue(1, index, sampleTimeOffset_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field BaroPres - public int GetNumBaroPres() - { - return GetNumFieldValues(2, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BaroPres field - /// Units: Pa - /// Comment: These are the raw ADC reading. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of BaroPres element to retrieve - /// Returns nullable uint representing the BaroPres field - public uint? GetBaroPres(int index) - { - Object val = GetFieldValue(2, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set BaroPres field - /// Units: Pa - /// Comment: These are the raw ADC reading. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of baro_pres - /// Nullable field value to be set - public void SetBaroPres(int index, uint? baroPres_) - { - SetFieldValue(2, index, baroPres_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/BikeProfileMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/BikeProfileMesg.cs deleted file mode 100644 index 629c66e65..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/BikeProfileMesg.cs +++ /dev/null @@ -1,832 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the BikeProfile profile message. - /// - public class BikeProfileMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Name = 0; - public const byte Sport = 1; - public const byte SubSport = 2; - public const byte Odometer = 3; - public const byte BikeSpdAntId = 4; - public const byte BikeCadAntId = 5; - public const byte BikeSpdcadAntId = 6; - public const byte BikePowerAntId = 7; - public const byte CustomWheelsize = 8; - public const byte AutoWheelsize = 9; - public const byte BikeWeight = 10; - public const byte PowerCalFactor = 11; - public const byte AutoWheelCal = 12; - public const byte AutoPowerZero = 13; - public const byte Id = 14; - public const byte SpdEnabled = 15; - public const byte CadEnabled = 16; - public const byte SpdcadEnabled = 17; - public const byte PowerEnabled = 18; - public const byte CrankLength = 19; - public const byte Enabled = 20; - public const byte BikeSpdAntIdTransType = 21; - public const byte BikeCadAntIdTransType = 22; - public const byte BikeSpdcadAntIdTransType = 23; - public const byte BikePowerAntIdTransType = 24; - public const byte OdometerRollover = 37; - public const byte FrontGearNum = 38; - public const byte FrontGear = 39; - public const byte RearGearNum = 40; - public const byte RearGear = 41; - public const byte ShimanoDi2Enabled = 44; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public BikeProfileMesg() : base(Profile.GetMesg(MesgNum.BikeProfile)) - { - } - - public BikeProfileMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(0, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(0, 0, name_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sport field - /// Returns nullable Sport enum representing the Sport field - public Sport? GetSport() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - Sport? value = obj == null ? (Sport?)null : (Sport)obj; - return value; - } - - /// - /// Set Sport field - /// Nullable field value to be set - public void SetSport(Sport? sport_) - { - SetFieldValue(1, 0, sport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SubSport field - /// Returns nullable SubSport enum representing the SubSport field - public SubSport? GetSubSport() - { - object obj = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - SubSport? value = obj == null ? (SubSport?)null : (SubSport)obj; - return value; - } - - /// - /// Set SubSport field - /// Nullable field value to be set - public void SetSubSport(SubSport? subSport_) - { - SetFieldValue(2, 0, subSport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Odometer field - /// Units: m - /// Returns nullable float representing the Odometer field - public float? GetOdometer() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Odometer field - /// Units: m - /// Nullable field value to be set - public void SetOdometer(float? odometer_) - { - SetFieldValue(3, 0, odometer_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BikeSpdAntId field - /// Returns nullable ushort representing the BikeSpdAntId field - public ushort? GetBikeSpdAntId() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set BikeSpdAntId field - /// Nullable field value to be set - public void SetBikeSpdAntId(ushort? bikeSpdAntId_) - { - SetFieldValue(4, 0, bikeSpdAntId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BikeCadAntId field - /// Returns nullable ushort representing the BikeCadAntId field - public ushort? GetBikeCadAntId() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set BikeCadAntId field - /// Nullable field value to be set - public void SetBikeCadAntId(ushort? bikeCadAntId_) - { - SetFieldValue(5, 0, bikeCadAntId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BikeSpdcadAntId field - /// Returns nullable ushort representing the BikeSpdcadAntId field - public ushort? GetBikeSpdcadAntId() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set BikeSpdcadAntId field - /// Nullable field value to be set - public void SetBikeSpdcadAntId(ushort? bikeSpdcadAntId_) - { - SetFieldValue(6, 0, bikeSpdcadAntId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BikePowerAntId field - /// Returns nullable ushort representing the BikePowerAntId field - public ushort? GetBikePowerAntId() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set BikePowerAntId field - /// Nullable field value to be set - public void SetBikePowerAntId(ushort? bikePowerAntId_) - { - SetFieldValue(7, 0, bikePowerAntId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CustomWheelsize field - /// Units: m - /// Returns nullable float representing the CustomWheelsize field - public float? GetCustomWheelsize() - { - Object val = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CustomWheelsize field - /// Units: m - /// Nullable field value to be set - public void SetCustomWheelsize(float? customWheelsize_) - { - SetFieldValue(8, 0, customWheelsize_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AutoWheelsize field - /// Units: m - /// Returns nullable float representing the AutoWheelsize field - public float? GetAutoWheelsize() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AutoWheelsize field - /// Units: m - /// Nullable field value to be set - public void SetAutoWheelsize(float? autoWheelsize_) - { - SetFieldValue(9, 0, autoWheelsize_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BikeWeight field - /// Units: kg - /// Returns nullable float representing the BikeWeight field - public float? GetBikeWeight() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set BikeWeight field - /// Units: kg - /// Nullable field value to be set - public void SetBikeWeight(float? bikeWeight_) - { - SetFieldValue(10, 0, bikeWeight_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PowerCalFactor field - /// Units: % - /// Returns nullable float representing the PowerCalFactor field - public float? GetPowerCalFactor() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set PowerCalFactor field - /// Units: % - /// Nullable field value to be set - public void SetPowerCalFactor(float? powerCalFactor_) - { - SetFieldValue(11, 0, powerCalFactor_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AutoWheelCal field - /// Returns nullable Bool enum representing the AutoWheelCal field - public Bool? GetAutoWheelCal() - { - object obj = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set AutoWheelCal field - /// Nullable field value to be set - public void SetAutoWheelCal(Bool? autoWheelCal_) - { - SetFieldValue(12, 0, autoWheelCal_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AutoPowerZero field - /// Returns nullable Bool enum representing the AutoPowerZero field - public Bool? GetAutoPowerZero() - { - object obj = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set AutoPowerZero field - /// Nullable field value to be set - public void SetAutoPowerZero(Bool? autoPowerZero_) - { - SetFieldValue(13, 0, autoPowerZero_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Id field - /// Returns nullable byte representing the Id field - public byte? GetId() - { - Object val = GetFieldValue(14, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Id field - /// Nullable field value to be set - public void SetId(byte? id_) - { - SetFieldValue(14, 0, id_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SpdEnabled field - /// Returns nullable Bool enum representing the SpdEnabled field - public Bool? GetSpdEnabled() - { - object obj = GetFieldValue(15, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set SpdEnabled field - /// Nullable field value to be set - public void SetSpdEnabled(Bool? spdEnabled_) - { - SetFieldValue(15, 0, spdEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CadEnabled field - /// Returns nullable Bool enum representing the CadEnabled field - public Bool? GetCadEnabled() - { - object obj = GetFieldValue(16, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set CadEnabled field - /// Nullable field value to be set - public void SetCadEnabled(Bool? cadEnabled_) - { - SetFieldValue(16, 0, cadEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SpdcadEnabled field - /// Returns nullable Bool enum representing the SpdcadEnabled field - public Bool? GetSpdcadEnabled() - { - object obj = GetFieldValue(17, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set SpdcadEnabled field - /// Nullable field value to be set - public void SetSpdcadEnabled(Bool? spdcadEnabled_) - { - SetFieldValue(17, 0, spdcadEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PowerEnabled field - /// Returns nullable Bool enum representing the PowerEnabled field - public Bool? GetPowerEnabled() - { - object obj = GetFieldValue(18, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set PowerEnabled field - /// Nullable field value to be set - public void SetPowerEnabled(Bool? powerEnabled_) - { - SetFieldValue(18, 0, powerEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CrankLength field - /// Units: mm - /// Returns nullable float representing the CrankLength field - public float? GetCrankLength() - { - Object val = GetFieldValue(19, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CrankLength field - /// Units: mm - /// Nullable field value to be set - public void SetCrankLength(float? crankLength_) - { - SetFieldValue(19, 0, crankLength_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Enabled field - /// Returns nullable Bool enum representing the Enabled field - public Bool? GetEnabled() - { - object obj = GetFieldValue(20, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set Enabled field - /// Nullable field value to be set - public void SetEnabled(Bool? enabled_) - { - SetFieldValue(20, 0, enabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BikeSpdAntIdTransType field - /// Returns nullable byte representing the BikeSpdAntIdTransType field - public byte? GetBikeSpdAntIdTransType() - { - Object val = GetFieldValue(21, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set BikeSpdAntIdTransType field - /// Nullable field value to be set - public void SetBikeSpdAntIdTransType(byte? bikeSpdAntIdTransType_) - { - SetFieldValue(21, 0, bikeSpdAntIdTransType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BikeCadAntIdTransType field - /// Returns nullable byte representing the BikeCadAntIdTransType field - public byte? GetBikeCadAntIdTransType() - { - Object val = GetFieldValue(22, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set BikeCadAntIdTransType field - /// Nullable field value to be set - public void SetBikeCadAntIdTransType(byte? bikeCadAntIdTransType_) - { - SetFieldValue(22, 0, bikeCadAntIdTransType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BikeSpdcadAntIdTransType field - /// Returns nullable byte representing the BikeSpdcadAntIdTransType field - public byte? GetBikeSpdcadAntIdTransType() - { - Object val = GetFieldValue(23, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set BikeSpdcadAntIdTransType field - /// Nullable field value to be set - public void SetBikeSpdcadAntIdTransType(byte? bikeSpdcadAntIdTransType_) - { - SetFieldValue(23, 0, bikeSpdcadAntIdTransType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BikePowerAntIdTransType field - /// Returns nullable byte representing the BikePowerAntIdTransType field - public byte? GetBikePowerAntIdTransType() - { - Object val = GetFieldValue(24, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set BikePowerAntIdTransType field - /// Nullable field value to be set - public void SetBikePowerAntIdTransType(byte? bikePowerAntIdTransType_) - { - SetFieldValue(24, 0, bikePowerAntIdTransType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the OdometerRollover field - /// Comment: Rollover counter that can be used to extend the odometer - /// Returns nullable byte representing the OdometerRollover field - public byte? GetOdometerRollover() - { - Object val = GetFieldValue(37, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set OdometerRollover field - /// Comment: Rollover counter that can be used to extend the odometer - /// Nullable field value to be set - public void SetOdometerRollover(byte? odometerRollover_) - { - SetFieldValue(37, 0, odometerRollover_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FrontGearNum field - /// Comment: Number of front gears - /// Returns nullable byte representing the FrontGearNum field - public byte? GetFrontGearNum() - { - Object val = GetFieldValue(38, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FrontGearNum field - /// Comment: Number of front gears - /// Nullable field value to be set - public void SetFrontGearNum(byte? frontGearNum_) - { - SetFieldValue(38, 0, frontGearNum_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field FrontGear - public int GetNumFrontGear() - { - return GetNumFieldValues(39, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FrontGear field - /// Comment: Number of teeth on each gear 0 is innermost - /// 0 based index of FrontGear element to retrieve - /// Returns nullable byte representing the FrontGear field - public byte? GetFrontGear(int index) - { - Object val = GetFieldValue(39, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FrontGear field - /// Comment: Number of teeth on each gear 0 is innermost - /// 0 based index of front_gear - /// Nullable field value to be set - public void SetFrontGear(int index, byte? frontGear_) - { - SetFieldValue(39, index, frontGear_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RearGearNum field - /// Comment: Number of rear gears - /// Returns nullable byte representing the RearGearNum field - public byte? GetRearGearNum() - { - Object val = GetFieldValue(40, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set RearGearNum field - /// Comment: Number of rear gears - /// Nullable field value to be set - public void SetRearGearNum(byte? rearGearNum_) - { - SetFieldValue(40, 0, rearGearNum_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field RearGear - public int GetNumRearGear() - { - return GetNumFieldValues(41, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RearGear field - /// Comment: Number of teeth on each gear 0 is innermost - /// 0 based index of RearGear element to retrieve - /// Returns nullable byte representing the RearGear field - public byte? GetRearGear(int index) - { - Object val = GetFieldValue(41, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set RearGear field - /// Comment: Number of teeth on each gear 0 is innermost - /// 0 based index of rear_gear - /// Nullable field value to be set - public void SetRearGear(int index, byte? rearGear_) - { - SetFieldValue(41, index, rearGear_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ShimanoDi2Enabled field - /// Returns nullable Bool enum representing the ShimanoDi2Enabled field - public Bool? GetShimanoDi2Enabled() - { - object obj = GetFieldValue(44, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set ShimanoDi2Enabled field - /// Nullable field value to be set - public void SetShimanoDi2Enabled(Bool? shimanoDi2Enabled_) - { - SetFieldValue(44, 0, shimanoDi2Enabled_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/BloodPressureMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/BloodPressureMesg.cs deleted file mode 100644 index edfb65e03..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/BloodPressureMesg.cs +++ /dev/null @@ -1,325 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the BloodPressure profile message. - /// - public class BloodPressureMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte SystolicPressure = 0; - public const byte DiastolicPressure = 1; - public const byte MeanArterialPressure = 2; - public const byte Map3SampleMean = 3; - public const byte MapMorningValues = 4; - public const byte MapEveningValues = 5; - public const byte HeartRate = 6; - public const byte HeartRateType = 7; - public const byte Status = 8; - public const byte UserProfileIndex = 9; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public BloodPressureMesg() : base(Profile.GetMesg(MesgNum.BloodPressure)) - { - } - - public BloodPressureMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SystolicPressure field - /// Units: mmHg - /// Returns nullable ushort representing the SystolicPressure field - public ushort? GetSystolicPressure() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set SystolicPressure field - /// Units: mmHg - /// Nullable field value to be set - public void SetSystolicPressure(ushort? systolicPressure_) - { - SetFieldValue(0, 0, systolicPressure_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DiastolicPressure field - /// Units: mmHg - /// Returns nullable ushort representing the DiastolicPressure field - public ushort? GetDiastolicPressure() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set DiastolicPressure field - /// Units: mmHg - /// Nullable field value to be set - public void SetDiastolicPressure(ushort? diastolicPressure_) - { - SetFieldValue(1, 0, diastolicPressure_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MeanArterialPressure field - /// Units: mmHg - /// Returns nullable ushort representing the MeanArterialPressure field - public ushort? GetMeanArterialPressure() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MeanArterialPressure field - /// Units: mmHg - /// Nullable field value to be set - public void SetMeanArterialPressure(ushort? meanArterialPressure_) - { - SetFieldValue(2, 0, meanArterialPressure_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Map3SampleMean field - /// Units: mmHg - /// Returns nullable ushort representing the Map3SampleMean field - public ushort? GetMap3SampleMean() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Map3SampleMean field - /// Units: mmHg - /// Nullable field value to be set - public void SetMap3SampleMean(ushort? map3SampleMean_) - { - SetFieldValue(3, 0, map3SampleMean_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MapMorningValues field - /// Units: mmHg - /// Returns nullable ushort representing the MapMorningValues field - public ushort? GetMapMorningValues() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MapMorningValues field - /// Units: mmHg - /// Nullable field value to be set - public void SetMapMorningValues(ushort? mapMorningValues_) - { - SetFieldValue(4, 0, mapMorningValues_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MapEveningValues field - /// Units: mmHg - /// Returns nullable ushort representing the MapEveningValues field - public ushort? GetMapEveningValues() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MapEveningValues field - /// Units: mmHg - /// Nullable field value to be set - public void SetMapEveningValues(ushort? mapEveningValues_) - { - SetFieldValue(5, 0, mapEveningValues_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HeartRate field - /// Units: bpm - /// Returns nullable byte representing the HeartRate field - public byte? GetHeartRate() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetHeartRate(byte? heartRate_) - { - SetFieldValue(6, 0, heartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HeartRateType field - /// Returns nullable HrType enum representing the HeartRateType field - public HrType? GetHeartRateType() - { - object obj = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - HrType? value = obj == null ? (HrType?)null : (HrType)obj; - return value; - } - - /// - /// Set HeartRateType field - /// Nullable field value to be set - public void SetHeartRateType(HrType? heartRateType_) - { - SetFieldValue(7, 0, heartRateType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Status field - /// Returns nullable BpStatus enum representing the Status field - public BpStatus? GetStatus() - { - object obj = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - BpStatus? value = obj == null ? (BpStatus?)null : (BpStatus)obj; - return value; - } - - /// - /// Set Status field - /// Nullable field value to be set - public void SetStatus(BpStatus? status_) - { - SetFieldValue(8, 0, status_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the UserProfileIndex field - /// Comment: Associates this blood pressure message to a user. This corresponds to the index of the user profile message in the blood pressure file. - /// Returns nullable ushort representing the UserProfileIndex field - public ushort? GetUserProfileIndex() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set UserProfileIndex field - /// Comment: Associates this blood pressure message to a user. This corresponds to the index of the user profile message in the blood pressure file. - /// Nullable field value to be set - public void SetUserProfileIndex(ushort? userProfileIndex_) - { - SetFieldValue(9, 0, userProfileIndex_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/CadenceZoneMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/CadenceZoneMesg.cs deleted file mode 100644 index ded931451..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/CadenceZoneMesg.cs +++ /dev/null @@ -1,142 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the CadenceZone profile message. - /// - public class CadenceZoneMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte HighValue = 0; - public const byte Name = 1; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public CadenceZoneMesg() : base(Profile.GetMesg(MesgNum.CadenceZone)) - { - } - - public CadenceZoneMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HighValue field - /// Units: rpm - /// Returns nullable byte representing the HighValue field - public byte? GetHighValue() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HighValue field - /// Units: rpm - /// Nullable field value to be set - public void SetHighValue(byte? highValue_) - { - SetFieldValue(0, 0, highValue_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(1, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(1, 0, name_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/CameraEventMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/CameraEventMesg.cs deleted file mode 100644 index e54bb98f6..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/CameraEventMesg.cs +++ /dev/null @@ -1,186 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the CameraEvent profile message. - /// - public class CameraEventMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte TimestampMs = 0; - public const byte CameraEventType = 1; - public const byte CameraFileUuid = 2; - public const byte CameraOrientation = 3; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public CameraEventMesg() : base(Profile.GetMesg(MesgNum.CameraEvent)) - { - } - - public CameraEventMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp. - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp. - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Returns nullable ushort representing the TimestampMs field - public ushort? GetTimestampMs() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Nullable field value to be set - public void SetTimestampMs(ushort? timestampMs_) - { - SetFieldValue(0, 0, timestampMs_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CameraEventType field - /// Returns nullable CameraEventType enum representing the CameraEventType field - public CameraEventType? GetCameraEventType() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - CameraEventType? value = obj == null ? (CameraEventType?)null : (CameraEventType)obj; - return value; - } - - /// - /// Set CameraEventType field - /// Nullable field value to be set - public void SetCameraEventType(CameraEventType? cameraEventType_) - { - SetFieldValue(1, 0, cameraEventType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CameraFileUuid field - /// Returns byte[] representing the CameraFileUuid field - public byte[] GetCameraFileUuid() - { - byte[] data = (byte[])GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the CameraFileUuid field - /// Returns String representing the CameraFileUuid field - public String GetCameraFileUuidAsString() - { - byte[] data = (byte[])GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set CameraFileUuid field - /// field value to be set - public void SetCameraFileUuid(String cameraFileUuid_) - { - byte[] data = Encoding.UTF8.GetBytes(cameraFileUuid_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(2, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set CameraFileUuid field - /// field value to be set - public void SetCameraFileUuid(byte[] cameraFileUuid_) - { - SetFieldValue(2, 0, cameraFileUuid_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CameraOrientation field - /// Returns nullable CameraOrientationType enum representing the CameraOrientation field - public CameraOrientationType? GetCameraOrientation() - { - object obj = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - CameraOrientationType? value = obj == null ? (CameraOrientationType?)null : (CameraOrientationType)obj; - return value; - } - - /// - /// Set CameraOrientation field - /// Nullable field value to be set - public void SetCameraOrientation(CameraOrientationType? cameraOrientation_) - { - SetFieldValue(3, 0, cameraOrientation_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/CapabilitiesMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/CapabilitiesMesg.cs deleted file mode 100644 index e030fb770..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/CapabilitiesMesg.cs +++ /dev/null @@ -1,177 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Capabilities profile message. - /// - public class CapabilitiesMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Languages = 0; - public const byte Sports = 1; - public const byte WorkoutsSupported = 21; - public const byte ConnectivitySupported = 23; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public CapabilitiesMesg() : base(Profile.GetMesg(MesgNum.Capabilities)) - { - } - - public CapabilitiesMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - - /// - /// - /// - /// returns number of elements in field Languages - public int GetNumLanguages() - { - return GetNumFieldValues(0, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Languages field - /// Comment: Use language_bits_x types where x is index of array. - /// 0 based index of Languages element to retrieve - /// Returns nullable byte representing the Languages field - public byte? GetLanguages(int index) - { - Object val = GetFieldValue(0, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Languages field - /// Comment: Use language_bits_x types where x is index of array. - /// 0 based index of languages - /// Nullable field value to be set - public void SetLanguages(int index, byte? languages_) - { - SetFieldValue(0, index, languages_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Sports - public int GetNumSports() - { - return GetNumFieldValues(1, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sports field - /// Comment: Use sport_bits_x types where x is index of array. - /// 0 based index of Sports element to retrieve - /// Returns nullable byte representing the Sports field - public byte? GetSports(int index) - { - Object val = GetFieldValue(1, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Sports field - /// Comment: Use sport_bits_x types where x is index of array. - /// 0 based index of sports - /// Nullable field value to be set - public void SetSports(int index, byte? sports_) - { - SetFieldValue(1, index, sports_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WorkoutsSupported field - /// Returns nullable uint representing the WorkoutsSupported field - public uint? GetWorkoutsSupported() - { - Object val = GetFieldValue(21, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set WorkoutsSupported field - /// Nullable field value to be set - public void SetWorkoutsSupported(uint? workoutsSupported_) - { - SetFieldValue(21, 0, workoutsSupported_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ConnectivitySupported field - /// Returns nullable uint representing the ConnectivitySupported field - public uint? GetConnectivitySupported() - { - Object val = GetFieldValue(23, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set ConnectivitySupported field - /// Nullable field value to be set - public void SetConnectivitySupported(uint? connectivitySupported_) - { - SetFieldValue(23, 0, connectivitySupported_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ClimbProMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ClimbProMesg.cs deleted file mode 100644 index 9d35fea83..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ClimbProMesg.cs +++ /dev/null @@ -1,224 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the ClimbPro profile message. - /// - public class ClimbProMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte PositionLat = 0; - public const byte PositionLong = 1; - public const byte ClimbProEvent = 2; - public const byte ClimbNumber = 3; - public const byte ClimbCategory = 4; - public const byte CurrentDist = 5; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public ClimbProMesg() : base(Profile.GetMesg(MesgNum.ClimbPro)) - { - } - - public ClimbProMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLat field - /// Units: semicircles - /// Returns nullable int representing the PositionLat field - public int? GetPositionLat() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLat(int? positionLat_) - { - SetFieldValue(0, 0, positionLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLong field - /// Units: semicircles - /// Returns nullable int representing the PositionLong field - public int? GetPositionLong() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLong(int? positionLong_) - { - SetFieldValue(1, 0, positionLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ClimbProEvent field - /// Returns nullable ClimbProEvent enum representing the ClimbProEvent field - public ClimbProEvent? GetClimbProEvent() - { - object obj = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - ClimbProEvent? value = obj == null ? (ClimbProEvent?)null : (ClimbProEvent)obj; - return value; - } - - /// - /// Set ClimbProEvent field - /// Nullable field value to be set - public void SetClimbProEvent(ClimbProEvent? climbProEvent_) - { - SetFieldValue(2, 0, climbProEvent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ClimbNumber field - /// Returns nullable ushort representing the ClimbNumber field - public ushort? GetClimbNumber() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ClimbNumber field - /// Nullable field value to be set - public void SetClimbNumber(ushort? climbNumber_) - { - SetFieldValue(3, 0, climbNumber_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ClimbCategory field - /// Returns nullable byte representing the ClimbCategory field - public byte? GetClimbCategory() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ClimbCategory field - /// Nullable field value to be set - public void SetClimbCategory(byte? climbCategory_) - { - SetFieldValue(4, 0, climbCategory_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CurrentDist field - /// Units: m - /// Returns nullable float representing the CurrentDist field - public float? GetCurrentDist() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CurrentDist field - /// Units: m - /// Nullable field value to be set - public void SetCurrentDist(float? currentDist_) - { - SetFieldValue(5, 0, currentDist_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ConnectivityMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ConnectivityMesg.cs deleted file mode 100644 index 57ee0f4ed..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ConnectivityMesg.cs +++ /dev/null @@ -1,326 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Connectivity profile message. - /// - public class ConnectivityMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte BluetoothEnabled = 0; - public const byte BluetoothLeEnabled = 1; - public const byte AntEnabled = 2; - public const byte Name = 3; - public const byte LiveTrackingEnabled = 4; - public const byte WeatherConditionsEnabled = 5; - public const byte WeatherAlertsEnabled = 6; - public const byte AutoActivityUploadEnabled = 7; - public const byte CourseDownloadEnabled = 8; - public const byte WorkoutDownloadEnabled = 9; - public const byte GpsEphemerisDownloadEnabled = 10; - public const byte IncidentDetectionEnabled = 11; - public const byte GrouptrackEnabled = 12; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public ConnectivityMesg() : base(Profile.GetMesg(MesgNum.Connectivity)) - { - } - - public ConnectivityMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the BluetoothEnabled field - /// Comment: Use Bluetooth for connectivity features - /// Returns nullable Bool enum representing the BluetoothEnabled field - public Bool? GetBluetoothEnabled() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set BluetoothEnabled field - /// Comment: Use Bluetooth for connectivity features - /// Nullable field value to be set - public void SetBluetoothEnabled(Bool? bluetoothEnabled_) - { - SetFieldValue(0, 0, bluetoothEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BluetoothLeEnabled field - /// Comment: Use Bluetooth Low Energy for connectivity features - /// Returns nullable Bool enum representing the BluetoothLeEnabled field - public Bool? GetBluetoothLeEnabled() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set BluetoothLeEnabled field - /// Comment: Use Bluetooth Low Energy for connectivity features - /// Nullable field value to be set - public void SetBluetoothLeEnabled(Bool? bluetoothLeEnabled_) - { - SetFieldValue(1, 0, bluetoothLeEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AntEnabled field - /// Comment: Use ANT for connectivity features - /// Returns nullable Bool enum representing the AntEnabled field - public Bool? GetAntEnabled() - { - object obj = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set AntEnabled field - /// Comment: Use ANT for connectivity features - /// Nullable field value to be set - public void SetAntEnabled(Bool? antEnabled_) - { - SetFieldValue(2, 0, antEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(3, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(3, 0, name_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LiveTrackingEnabled field - /// Returns nullable Bool enum representing the LiveTrackingEnabled field - public Bool? GetLiveTrackingEnabled() - { - object obj = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set LiveTrackingEnabled field - /// Nullable field value to be set - public void SetLiveTrackingEnabled(Bool? liveTrackingEnabled_) - { - SetFieldValue(4, 0, liveTrackingEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WeatherConditionsEnabled field - /// Returns nullable Bool enum representing the WeatherConditionsEnabled field - public Bool? GetWeatherConditionsEnabled() - { - object obj = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set WeatherConditionsEnabled field - /// Nullable field value to be set - public void SetWeatherConditionsEnabled(Bool? weatherConditionsEnabled_) - { - SetFieldValue(5, 0, weatherConditionsEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WeatherAlertsEnabled field - /// Returns nullable Bool enum representing the WeatherAlertsEnabled field - public Bool? GetWeatherAlertsEnabled() - { - object obj = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set WeatherAlertsEnabled field - /// Nullable field value to be set - public void SetWeatherAlertsEnabled(Bool? weatherAlertsEnabled_) - { - SetFieldValue(6, 0, weatherAlertsEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AutoActivityUploadEnabled field - /// Returns nullable Bool enum representing the AutoActivityUploadEnabled field - public Bool? GetAutoActivityUploadEnabled() - { - object obj = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set AutoActivityUploadEnabled field - /// Nullable field value to be set - public void SetAutoActivityUploadEnabled(Bool? autoActivityUploadEnabled_) - { - SetFieldValue(7, 0, autoActivityUploadEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CourseDownloadEnabled field - /// Returns nullable Bool enum representing the CourseDownloadEnabled field - public Bool? GetCourseDownloadEnabled() - { - object obj = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set CourseDownloadEnabled field - /// Nullable field value to be set - public void SetCourseDownloadEnabled(Bool? courseDownloadEnabled_) - { - SetFieldValue(8, 0, courseDownloadEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WorkoutDownloadEnabled field - /// Returns nullable Bool enum representing the WorkoutDownloadEnabled field - public Bool? GetWorkoutDownloadEnabled() - { - object obj = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set WorkoutDownloadEnabled field - /// Nullable field value to be set - public void SetWorkoutDownloadEnabled(Bool? workoutDownloadEnabled_) - { - SetFieldValue(9, 0, workoutDownloadEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GpsEphemerisDownloadEnabled field - /// Returns nullable Bool enum representing the GpsEphemerisDownloadEnabled field - public Bool? GetGpsEphemerisDownloadEnabled() - { - object obj = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set GpsEphemerisDownloadEnabled field - /// Nullable field value to be set - public void SetGpsEphemerisDownloadEnabled(Bool? gpsEphemerisDownloadEnabled_) - { - SetFieldValue(10, 0, gpsEphemerisDownloadEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the IncidentDetectionEnabled field - /// Returns nullable Bool enum representing the IncidentDetectionEnabled field - public Bool? GetIncidentDetectionEnabled() - { - object obj = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set IncidentDetectionEnabled field - /// Nullable field value to be set - public void SetIncidentDetectionEnabled(Bool? incidentDetectionEnabled_) - { - SetFieldValue(11, 0, incidentDetectionEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GrouptrackEnabled field - /// Returns nullable Bool enum representing the GrouptrackEnabled field - public Bool? GetGrouptrackEnabled() - { - object obj = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set GrouptrackEnabled field - /// Nullable field value to be set - public void SetGrouptrackEnabled(Bool? grouptrackEnabled_) - { - SetFieldValue(12, 0, grouptrackEnabled_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/CourseMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/CourseMesg.cs deleted file mode 100644 index adc4bc791..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/CourseMesg.cs +++ /dev/null @@ -1,154 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Course profile message. - /// - public class CourseMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Sport = 4; - public const byte Name = 5; - public const byte Capabilities = 6; - public const byte SubSport = 7; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public CourseMesg() : base(Profile.GetMesg(MesgNum.Course)) - { - } - - public CourseMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Sport field - /// Returns nullable Sport enum representing the Sport field - public Sport? GetSport() - { - object obj = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - Sport? value = obj == null ? (Sport?)null : (Sport)obj; - return value; - } - - /// - /// Set Sport field - /// Nullable field value to be set - public void SetSport(Sport? sport_) - { - SetFieldValue(4, 0, sport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(5, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(5, 0, name_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Capabilities field - /// Returns nullable uint representing the Capabilities field - public uint? GetCapabilities() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set Capabilities field - /// Nullable field value to be set - public void SetCapabilities(uint? capabilities_) - { - SetFieldValue(6, 0, capabilities_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SubSport field - /// Returns nullable SubSport enum representing the SubSport field - public SubSport? GetSubSport() - { - object obj = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - SubSport? value = obj == null ? (SubSport?)null : (SubSport)obj; - return value; - } - - /// - /// Set SubSport field - /// Nullable field value to be set - public void SetSubSport(SubSport? subSport_) - { - SetFieldValue(7, 0, subSport_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/CoursePointMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/CoursePointMesg.cs deleted file mode 100644 index bc353af82..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/CoursePointMesg.cs +++ /dev/null @@ -1,256 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the CoursePoint profile message. - /// - public class CoursePointMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Timestamp = 1; - public const byte PositionLat = 2; - public const byte PositionLong = 3; - public const byte Distance = 4; - public const byte Type = 5; - public const byte Name = 6; - public const byte Favorite = 8; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public CoursePointMesg() : base(Profile.GetMesg(MesgNum.CoursePoint)) - { - } - - public CoursePointMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Timestamp field - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(1, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLat field - /// Units: semicircles - /// Returns nullable int representing the PositionLat field - public int? GetPositionLat() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLat(int? positionLat_) - { - SetFieldValue(2, 0, positionLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLong field - /// Units: semicircles - /// Returns nullable int representing the PositionLong field - public int? GetPositionLong() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLong(int? positionLong_) - { - SetFieldValue(3, 0, positionLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Distance field - /// Units: m - /// Returns nullable float representing the Distance field - public float? GetDistance() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Distance field - /// Units: m - /// Nullable field value to be set - public void SetDistance(float? distance_) - { - SetFieldValue(4, 0, distance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Type field - /// Returns nullable CoursePoint enum representing the Type field - new public CoursePoint? GetType() - { - object obj = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - CoursePoint? value = obj == null ? (CoursePoint?)null : (CoursePoint)obj; - return value; - } - - /// - /// Set Type field - /// Nullable field value to be set - public void SetType(CoursePoint? type_) - { - SetFieldValue(5, 0, type_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(6, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(6, 0, name_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Favorite field - /// Returns nullable Bool enum representing the Favorite field - public Bool? GetFavorite() - { - object obj = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set Favorite field - /// Nullable field value to be set - public void SetFavorite(Bool? favorite_) - { - SetFieldValue(8, 0, favorite_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DeveloperDataIdMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DeveloperDataIdMesg.cs deleted file mode 100644 index ffb9ea9ab..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DeveloperDataIdMesg.cs +++ /dev/null @@ -1,197 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the DeveloperDataId profile message. - /// - public class DeveloperDataIdMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte DeveloperId = 0; - public const byte ApplicationId = 1; - public const byte ManufacturerId = 2; - public const byte DeveloperDataIndex = 3; - public const byte ApplicationVersion = 4; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public DeveloperDataIdMesg() : base(Profile.GetMesg(MesgNum.DeveloperDataId)) - { - } - - public DeveloperDataIdMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - - /// - /// - /// - /// returns number of elements in field DeveloperId - public int GetNumDeveloperId() - { - return GetNumFieldValues(0, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeveloperId field - /// 0 based index of DeveloperId element to retrieve - /// Returns nullable byte representing the DeveloperId field - public byte? GetDeveloperId(int index) - { - Object val = GetFieldValue(0, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DeveloperId field - /// 0 based index of developer_id - /// Nullable field value to be set - public void SetDeveloperId(int index, byte? developerId_) - { - SetFieldValue(0, index, developerId_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field ApplicationId - public int GetNumApplicationId() - { - return GetNumFieldValues(1, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ApplicationId field - /// 0 based index of ApplicationId element to retrieve - /// Returns nullable byte representing the ApplicationId field - public byte? GetApplicationId(int index) - { - Object val = GetFieldValue(1, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ApplicationId field - /// 0 based index of application_id - /// Nullable field value to be set - public void SetApplicationId(int index, byte? applicationId_) - { - SetFieldValue(1, index, applicationId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ManufacturerId field - /// Returns nullable ushort representing the ManufacturerId field - public ushort? GetManufacturerId() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ManufacturerId field - /// Nullable field value to be set - public void SetManufacturerId(ushort? manufacturerId_) - { - SetFieldValue(2, 0, manufacturerId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeveloperDataIndex field - /// Returns nullable byte representing the DeveloperDataIndex field - public byte? GetDeveloperDataIndex() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DeveloperDataIndex field - /// Nullable field value to be set - public void SetDeveloperDataIndex(byte? developerDataIndex_) - { - SetFieldValue(3, 0, developerDataIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ApplicationVersion field - /// Returns nullable uint representing the ApplicationVersion field - public uint? GetApplicationVersion() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set ApplicationVersion field - /// Nullable field value to be set - public void SetApplicationVersion(uint? applicationVersion_) - { - SetFieldValue(4, 0, applicationVersion_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DeviceAuxBatteryInfoMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DeviceAuxBatteryInfoMesg.cs deleted file mode 100644 index 471f5a491..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DeviceAuxBatteryInfoMesg.cs +++ /dev/null @@ -1,175 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the DeviceAuxBatteryInfo profile message. - /// - public class DeviceAuxBatteryInfoMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte DeviceIndex = 0; - public const byte BatteryVoltage = 1; - public const byte BatteryStatus = 2; - public const byte BatteryIdentifier = 3; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public DeviceAuxBatteryInfoMesg() : base(Profile.GetMesg(MesgNum.DeviceAuxBatteryInfo)) - { - } - - public DeviceAuxBatteryInfoMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeviceIndex field - /// Returns nullable byte representing the DeviceIndex field - public byte? GetDeviceIndex() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DeviceIndex field - /// Nullable field value to be set - public void SetDeviceIndex(byte? deviceIndex_) - { - SetFieldValue(0, 0, deviceIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BatteryVoltage field - /// Units: V - /// Returns nullable float representing the BatteryVoltage field - public float? GetBatteryVoltage() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set BatteryVoltage field - /// Units: V - /// Nullable field value to be set - public void SetBatteryVoltage(float? batteryVoltage_) - { - SetFieldValue(1, 0, batteryVoltage_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BatteryStatus field - /// Returns nullable byte representing the BatteryStatus field - public byte? GetBatteryStatus() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set BatteryStatus field - /// Nullable field value to be set - public void SetBatteryStatus(byte? batteryStatus_) - { - SetFieldValue(2, 0, batteryStatus_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BatteryIdentifier field - /// Returns nullable byte representing the BatteryIdentifier field - public byte? GetBatteryIdentifier() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set BatteryIdentifier field - /// Nullable field value to be set - public void SetBatteryIdentifier(byte? batteryIdentifier_) - { - SetFieldValue(3, 0, batteryIdentifier_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DeviceInfoMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DeviceInfoMesg.cs deleted file mode 100644 index cb65bc053..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DeviceInfoMesg.cs +++ /dev/null @@ -1,706 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the DeviceInfo profile message. - /// - public class DeviceInfoMesg : Mesg - { - #region Fields - static class DeviceTypeSubfield - { - public static ushort BleDeviceType = 0; - public static ushort AntplusDeviceType = 1; - public static ushort AntDeviceType = 2; - public static ushort LocalDeviceType = 3; - public static ushort Subfields = 4; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - static class ProductSubfield - { - public static ushort FaveroProduct = 0; - public static ushort GarminProduct = 1; - public static ushort Subfields = 2; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte DeviceIndex = 0; - public const byte DeviceType = 1; - public const byte Manufacturer = 2; - public const byte SerialNumber = 3; - public const byte Product = 4; - public const byte SoftwareVersion = 5; - public const byte HardwareVersion = 6; - public const byte CumOperatingTime = 7; - public const byte BatteryVoltage = 10; - public const byte BatteryStatus = 11; - public const byte SensorPosition = 18; - public const byte Descriptor = 19; - public const byte AntTransmissionType = 20; - public const byte AntDeviceNumber = 21; - public const byte AntNetwork = 22; - public const byte SourceType = 25; - public const byte ProductName = 27; - public const byte BatteryLevel = 32; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public DeviceInfoMesg() : base(Profile.GetMesg(MesgNum.DeviceInfo)) - { - } - - public DeviceInfoMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeviceIndex field - /// Returns nullable byte representing the DeviceIndex field - public byte? GetDeviceIndex() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DeviceIndex field - /// Nullable field value to be set - public void SetDeviceIndex(byte? deviceIndex_) - { - SetFieldValue(0, 0, deviceIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeviceType field - /// Returns nullable byte representing the DeviceType field - public byte? GetDeviceType() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DeviceType field - /// Nullable field value to be set - public void SetDeviceType(byte? deviceType_) - { - SetFieldValue(1, 0, deviceType_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the BleDeviceType subfield - /// Nullable byte representing the BleDeviceType subfield - public byte? GetBleDeviceType() - { - Object val = GetFieldValue(1, 0, DeviceTypeSubfield.BleDeviceType); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set BleDeviceType subfield - /// Subfield value to be set - public void SetBleDeviceType(byte? bleDeviceType) - { - SetFieldValue(1, 0, bleDeviceType, DeviceTypeSubfield.BleDeviceType); - } - - /// - /// Retrieves the AntplusDeviceType subfield - /// Nullable byte representing the AntplusDeviceType subfield - public byte? GetAntplusDeviceType() - { - Object val = GetFieldValue(1, 0, DeviceTypeSubfield.AntplusDeviceType); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set AntplusDeviceType subfield - /// Subfield value to be set - public void SetAntplusDeviceType(byte? antplusDeviceType) - { - SetFieldValue(1, 0, antplusDeviceType, DeviceTypeSubfield.AntplusDeviceType); - } - - /// - /// Retrieves the AntDeviceType subfield - /// Nullable byte representing the AntDeviceType subfield - public byte? GetAntDeviceType() - { - Object val = GetFieldValue(1, 0, DeviceTypeSubfield.AntDeviceType); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set AntDeviceType subfield - /// Subfield value to be set - public void SetAntDeviceType(byte? antDeviceType) - { - SetFieldValue(1, 0, antDeviceType, DeviceTypeSubfield.AntDeviceType); - } - - /// - /// Retrieves the LocalDeviceType subfield - /// Nullable byte representing the LocalDeviceType subfield - public byte? GetLocalDeviceType() - { - Object val = GetFieldValue(1, 0, DeviceTypeSubfield.LocalDeviceType); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set LocalDeviceType subfield - /// Subfield value to be set - public void SetLocalDeviceType(byte? localDeviceType) - { - SetFieldValue(1, 0, localDeviceType, DeviceTypeSubfield.LocalDeviceType); - } - /// - /// Retrieves the Manufacturer field - /// Returns nullable ushort representing the Manufacturer field - public ushort? GetManufacturer() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Manufacturer field - /// Nullable field value to be set - public void SetManufacturer(ushort? manufacturer_) - { - SetFieldValue(2, 0, manufacturer_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SerialNumber field - /// Returns nullable uint representing the SerialNumber field - public uint? GetSerialNumber() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set SerialNumber field - /// Nullable field value to be set - public void SetSerialNumber(uint? serialNumber_) - { - SetFieldValue(3, 0, serialNumber_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Product field - /// Returns nullable ushort representing the Product field - public ushort? GetProduct() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Product field - /// Nullable field value to be set - public void SetProduct(ushort? product_) - { - SetFieldValue(4, 0, product_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the FaveroProduct subfield - /// Nullable ushort representing the FaveroProduct subfield - public ushort? GetFaveroProduct() - { - Object val = GetFieldValue(4, 0, ProductSubfield.FaveroProduct); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set FaveroProduct subfield - /// Subfield value to be set - public void SetFaveroProduct(ushort? faveroProduct) - { - SetFieldValue(4, 0, faveroProduct, ProductSubfield.FaveroProduct); - } - - /// - /// Retrieves the GarminProduct subfield - /// Nullable ushort representing the GarminProduct subfield - public ushort? GetGarminProduct() - { - Object val = GetFieldValue(4, 0, ProductSubfield.GarminProduct); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set GarminProduct subfield - /// Subfield value to be set - public void SetGarminProduct(ushort? garminProduct) - { - SetFieldValue(4, 0, garminProduct, ProductSubfield.GarminProduct); - } - /// - /// Retrieves the SoftwareVersion field - /// Returns nullable float representing the SoftwareVersion field - public float? GetSoftwareVersion() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set SoftwareVersion field - /// Nullable field value to be set - public void SetSoftwareVersion(float? softwareVersion_) - { - SetFieldValue(5, 0, softwareVersion_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HardwareVersion field - /// Returns nullable byte representing the HardwareVersion field - public byte? GetHardwareVersion() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HardwareVersion field - /// Nullable field value to be set - public void SetHardwareVersion(byte? hardwareVersion_) - { - SetFieldValue(6, 0, hardwareVersion_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CumOperatingTime field - /// Units: s - /// Comment: Reset by new battery or charge. - /// Returns nullable uint representing the CumOperatingTime field - public uint? GetCumOperatingTime() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set CumOperatingTime field - /// Units: s - /// Comment: Reset by new battery or charge. - /// Nullable field value to be set - public void SetCumOperatingTime(uint? cumOperatingTime_) - { - SetFieldValue(7, 0, cumOperatingTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BatteryVoltage field - /// Units: V - /// Returns nullable float representing the BatteryVoltage field - public float? GetBatteryVoltage() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set BatteryVoltage field - /// Units: V - /// Nullable field value to be set - public void SetBatteryVoltage(float? batteryVoltage_) - { - SetFieldValue(10, 0, batteryVoltage_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BatteryStatus field - /// Returns nullable byte representing the BatteryStatus field - public byte? GetBatteryStatus() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set BatteryStatus field - /// Nullable field value to be set - public void SetBatteryStatus(byte? batteryStatus_) - { - SetFieldValue(11, 0, batteryStatus_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SensorPosition field - /// Comment: Indicates the location of the sensor - /// Returns nullable BodyLocation enum representing the SensorPosition field - public BodyLocation? GetSensorPosition() - { - object obj = GetFieldValue(18, 0, Fit.SubfieldIndexMainField); - BodyLocation? value = obj == null ? (BodyLocation?)null : (BodyLocation)obj; - return value; - } - - /// - /// Set SensorPosition field - /// Comment: Indicates the location of the sensor - /// Nullable field value to be set - public void SetSensorPosition(BodyLocation? sensorPosition_) - { - SetFieldValue(18, 0, sensorPosition_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Descriptor field - /// Comment: Used to describe the sensor or location - /// Returns byte[] representing the Descriptor field - public byte[] GetDescriptor() - { - byte[] data = (byte[])GetFieldValue(19, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Descriptor field - /// Comment: Used to describe the sensor or location - /// Returns String representing the Descriptor field - public String GetDescriptorAsString() - { - byte[] data = (byte[])GetFieldValue(19, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Descriptor field - /// Comment: Used to describe the sensor or location - /// field value to be set - public void SetDescriptor(String descriptor_) - { - byte[] data = Encoding.UTF8.GetBytes(descriptor_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(19, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Descriptor field - /// Comment: Used to describe the sensor or location - /// field value to be set - public void SetDescriptor(byte[] descriptor_) - { - SetFieldValue(19, 0, descriptor_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AntTransmissionType field - /// Returns nullable byte representing the AntTransmissionType field - public byte? GetAntTransmissionType() - { - Object val = GetFieldValue(20, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AntTransmissionType field - /// Nullable field value to be set - public void SetAntTransmissionType(byte? antTransmissionType_) - { - SetFieldValue(20, 0, antTransmissionType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AntDeviceNumber field - /// Returns nullable ushort representing the AntDeviceNumber field - public ushort? GetAntDeviceNumber() - { - Object val = GetFieldValue(21, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AntDeviceNumber field - /// Nullable field value to be set - public void SetAntDeviceNumber(ushort? antDeviceNumber_) - { - SetFieldValue(21, 0, antDeviceNumber_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AntNetwork field - /// Returns nullable AntNetwork enum representing the AntNetwork field - public AntNetwork? GetAntNetwork() - { - object obj = GetFieldValue(22, 0, Fit.SubfieldIndexMainField); - AntNetwork? value = obj == null ? (AntNetwork?)null : (AntNetwork)obj; - return value; - } - - /// - /// Set AntNetwork field - /// Nullable field value to be set - public void SetAntNetwork(AntNetwork? antNetwork_) - { - SetFieldValue(22, 0, antNetwork_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SourceType field - /// Returns nullable SourceType enum representing the SourceType field - public SourceType? GetSourceType() - { - object obj = GetFieldValue(25, 0, Fit.SubfieldIndexMainField); - SourceType? value = obj == null ? (SourceType?)null : (SourceType)obj; - return value; - } - - /// - /// Set SourceType field - /// Nullable field value to be set - public void SetSourceType(SourceType? sourceType_) - { - SetFieldValue(25, 0, sourceType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ProductName field - /// Comment: Optional free form string to indicate the devices name or model - /// Returns byte[] representing the ProductName field - public byte[] GetProductName() - { - byte[] data = (byte[])GetFieldValue(27, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the ProductName field - /// Comment: Optional free form string to indicate the devices name or model - /// Returns String representing the ProductName field - public String GetProductNameAsString() - { - byte[] data = (byte[])GetFieldValue(27, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set ProductName field - /// Comment: Optional free form string to indicate the devices name or model - /// field value to be set - public void SetProductName(String productName_) - { - byte[] data = Encoding.UTF8.GetBytes(productName_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(27, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set ProductName field - /// Comment: Optional free form string to indicate the devices name or model - /// field value to be set - public void SetProductName(byte[] productName_) - { - SetFieldValue(27, 0, productName_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BatteryLevel field - /// Units: % - /// Returns nullable byte representing the BatteryLevel field - public byte? GetBatteryLevel() - { - Object val = GetFieldValue(32, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set BatteryLevel field - /// Units: % - /// Nullable field value to be set - public void SetBatteryLevel(byte? batteryLevel_) - { - SetFieldValue(32, 0, batteryLevel_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DeviceSettingsMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DeviceSettingsMesg.cs deleted file mode 100644 index b21b2158c..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DeviceSettingsMesg.cs +++ /dev/null @@ -1,674 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the DeviceSettings profile message. - /// - public class DeviceSettingsMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte ActiveTimeZone = 0; - public const byte UtcOffset = 1; - public const byte TimeOffset = 2; - public const byte TimeMode = 4; - public const byte TimeZoneOffset = 5; - public const byte BacklightMode = 12; - public const byte ActivityTrackerEnabled = 36; - public const byte ClockTime = 39; - public const byte PagesEnabled = 40; - public const byte MoveAlertEnabled = 46; - public const byte DateMode = 47; - public const byte DisplayOrientation = 55; - public const byte MountingSide = 56; - public const byte DefaultPage = 57; - public const byte AutosyncMinSteps = 58; - public const byte AutosyncMinTime = 59; - public const byte LactateThresholdAutodetectEnabled = 80; - public const byte BleAutoUploadEnabled = 86; - public const byte AutoSyncFrequency = 89; - public const byte AutoActivityDetect = 90; - public const byte NumberOfScreens = 94; - public const byte SmartNotificationDisplayOrientation = 95; - public const byte TapInterface = 134; - public const byte TapSensitivity = 174; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public DeviceSettingsMesg() : base(Profile.GetMesg(MesgNum.DeviceSettings)) - { - } - - public DeviceSettingsMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the ActiveTimeZone field - /// Comment: Index into time zone arrays. - /// Returns nullable byte representing the ActiveTimeZone field - public byte? GetActiveTimeZone() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ActiveTimeZone field - /// Comment: Index into time zone arrays. - /// Nullable field value to be set - public void SetActiveTimeZone(byte? activeTimeZone_) - { - SetFieldValue(0, 0, activeTimeZone_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the UtcOffset field - /// Comment: Offset from system time. Required to convert timestamp from system time to UTC. - /// Returns nullable uint representing the UtcOffset field - public uint? GetUtcOffset() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set UtcOffset field - /// Comment: Offset from system time. Required to convert timestamp from system time to UTC. - /// Nullable field value to be set - public void SetUtcOffset(uint? utcOffset_) - { - SetFieldValue(1, 0, utcOffset_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeOffset - public int GetNumTimeOffset() - { - return GetNumFieldValues(2, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeOffset field - /// Units: s - /// Comment: Offset from system time. - /// 0 based index of TimeOffset element to retrieve - /// Returns nullable uint representing the TimeOffset field - public uint? GetTimeOffset(int index) - { - Object val = GetFieldValue(2, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TimeOffset field - /// Units: s - /// Comment: Offset from system time. - /// 0 based index of time_offset - /// Nullable field value to be set - public void SetTimeOffset(int index, uint? timeOffset_) - { - SetFieldValue(2, index, timeOffset_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeMode - public int GetNumTimeMode() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeMode field - /// Comment: Display mode for the time - /// 0 based index of TimeMode element to retrieve - /// Returns nullable TimeMode enum representing the TimeMode field - public TimeMode? GetTimeMode(int index) - { - object obj = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - TimeMode? value = obj == null ? (TimeMode?)null : (TimeMode)obj; - return value; - } - - /// - /// Set TimeMode field - /// Comment: Display mode for the time - /// 0 based index of time_mode - /// Nullable field value to be set - public void SetTimeMode(int index, TimeMode? timeMode_) - { - SetFieldValue(4, index, timeMode_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeZoneOffset - public int GetNumTimeZoneOffset() - { - return GetNumFieldValues(5, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeZoneOffset field - /// Units: hr - /// Comment: timezone offset in 1/4 hour increments - /// 0 based index of TimeZoneOffset element to retrieve - /// Returns nullable float representing the TimeZoneOffset field - public float? GetTimeZoneOffset(int index) - { - Object val = GetFieldValue(5, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeZoneOffset field - /// Units: hr - /// Comment: timezone offset in 1/4 hour increments - /// 0 based index of time_zone_offset - /// Nullable field value to be set - public void SetTimeZoneOffset(int index, float? timeZoneOffset_) - { - SetFieldValue(5, index, timeZoneOffset_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BacklightMode field - /// Comment: Mode for backlight - /// Returns nullable BacklightMode enum representing the BacklightMode field - public BacklightMode? GetBacklightMode() - { - object obj = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - BacklightMode? value = obj == null ? (BacklightMode?)null : (BacklightMode)obj; - return value; - } - - /// - /// Set BacklightMode field - /// Comment: Mode for backlight - /// Nullable field value to be set - public void SetBacklightMode(BacklightMode? backlightMode_) - { - SetFieldValue(12, 0, backlightMode_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActivityTrackerEnabled field - /// Comment: Enabled state of the activity tracker functionality - /// Returns nullable Bool enum representing the ActivityTrackerEnabled field - public Bool? GetActivityTrackerEnabled() - { - object obj = GetFieldValue(36, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set ActivityTrackerEnabled field - /// Comment: Enabled state of the activity tracker functionality - /// Nullable field value to be set - public void SetActivityTrackerEnabled(Bool? activityTrackerEnabled_) - { - SetFieldValue(36, 0, activityTrackerEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ClockTime field - /// Comment: UTC timestamp used to set the devices clock and date - /// Returns DateTime representing the ClockTime field - public DateTime GetClockTime() - { - Object val = GetFieldValue(39, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set ClockTime field - /// Comment: UTC timestamp used to set the devices clock and date - /// Nullable field value to be set - public void SetClockTime(DateTime clockTime_) - { - SetFieldValue(39, 0, clockTime_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field PagesEnabled - public int GetNumPagesEnabled() - { - return GetNumFieldValues(40, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PagesEnabled field - /// Comment: Bitfield to configure enabled screens for each supported loop - /// 0 based index of PagesEnabled element to retrieve - /// Returns nullable ushort representing the PagesEnabled field - public ushort? GetPagesEnabled(int index) - { - Object val = GetFieldValue(40, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set PagesEnabled field - /// Comment: Bitfield to configure enabled screens for each supported loop - /// 0 based index of pages_enabled - /// Nullable field value to be set - public void SetPagesEnabled(int index, ushort? pagesEnabled_) - { - SetFieldValue(40, index, pagesEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MoveAlertEnabled field - /// Comment: Enabled state of the move alert - /// Returns nullable Bool enum representing the MoveAlertEnabled field - public Bool? GetMoveAlertEnabled() - { - object obj = GetFieldValue(46, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set MoveAlertEnabled field - /// Comment: Enabled state of the move alert - /// Nullable field value to be set - public void SetMoveAlertEnabled(Bool? moveAlertEnabled_) - { - SetFieldValue(46, 0, moveAlertEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DateMode field - /// Comment: Display mode for the date - /// Returns nullable DateMode enum representing the DateMode field - public DateMode? GetDateMode() - { - object obj = GetFieldValue(47, 0, Fit.SubfieldIndexMainField); - DateMode? value = obj == null ? (DateMode?)null : (DateMode)obj; - return value; - } - - /// - /// Set DateMode field - /// Comment: Display mode for the date - /// Nullable field value to be set - public void SetDateMode(DateMode? dateMode_) - { - SetFieldValue(47, 0, dateMode_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DisplayOrientation field - /// Returns nullable DisplayOrientation enum representing the DisplayOrientation field - public DisplayOrientation? GetDisplayOrientation() - { - object obj = GetFieldValue(55, 0, Fit.SubfieldIndexMainField); - DisplayOrientation? value = obj == null ? (DisplayOrientation?)null : (DisplayOrientation)obj; - return value; - } - - /// - /// Set DisplayOrientation field - /// Nullable field value to be set - public void SetDisplayOrientation(DisplayOrientation? displayOrientation_) - { - SetFieldValue(55, 0, displayOrientation_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MountingSide field - /// Returns nullable Side enum representing the MountingSide field - public Side? GetMountingSide() - { - object obj = GetFieldValue(56, 0, Fit.SubfieldIndexMainField); - Side? value = obj == null ? (Side?)null : (Side)obj; - return value; - } - - /// - /// Set MountingSide field - /// Nullable field value to be set - public void SetMountingSide(Side? mountingSide_) - { - SetFieldValue(56, 0, mountingSide_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field DefaultPage - public int GetNumDefaultPage() - { - return GetNumFieldValues(57, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DefaultPage field - /// Comment: Bitfield to indicate one page as default for each supported loop - /// 0 based index of DefaultPage element to retrieve - /// Returns nullable ushort representing the DefaultPage field - public ushort? GetDefaultPage(int index) - { - Object val = GetFieldValue(57, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set DefaultPage field - /// Comment: Bitfield to indicate one page as default for each supported loop - /// 0 based index of default_page - /// Nullable field value to be set - public void SetDefaultPage(int index, ushort? defaultPage_) - { - SetFieldValue(57, index, defaultPage_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AutosyncMinSteps field - /// Units: steps - /// Comment: Minimum steps before an autosync can occur - /// Returns nullable ushort representing the AutosyncMinSteps field - public ushort? GetAutosyncMinSteps() - { - Object val = GetFieldValue(58, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AutosyncMinSteps field - /// Units: steps - /// Comment: Minimum steps before an autosync can occur - /// Nullable field value to be set - public void SetAutosyncMinSteps(ushort? autosyncMinSteps_) - { - SetFieldValue(58, 0, autosyncMinSteps_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AutosyncMinTime field - /// Units: minutes - /// Comment: Minimum minutes before an autosync can occur - /// Returns nullable ushort representing the AutosyncMinTime field - public ushort? GetAutosyncMinTime() - { - Object val = GetFieldValue(59, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AutosyncMinTime field - /// Units: minutes - /// Comment: Minimum minutes before an autosync can occur - /// Nullable field value to be set - public void SetAutosyncMinTime(ushort? autosyncMinTime_) - { - SetFieldValue(59, 0, autosyncMinTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LactateThresholdAutodetectEnabled field - /// Comment: Enable auto-detect setting for the lactate threshold feature. - /// Returns nullable Bool enum representing the LactateThresholdAutodetectEnabled field - public Bool? GetLactateThresholdAutodetectEnabled() - { - object obj = GetFieldValue(80, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set LactateThresholdAutodetectEnabled field - /// Comment: Enable auto-detect setting for the lactate threshold feature. - /// Nullable field value to be set - public void SetLactateThresholdAutodetectEnabled(Bool? lactateThresholdAutodetectEnabled_) - { - SetFieldValue(80, 0, lactateThresholdAutodetectEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BleAutoUploadEnabled field - /// Comment: Automatically upload using BLE - /// Returns nullable Bool enum representing the BleAutoUploadEnabled field - public Bool? GetBleAutoUploadEnabled() - { - object obj = GetFieldValue(86, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set BleAutoUploadEnabled field - /// Comment: Automatically upload using BLE - /// Nullable field value to be set - public void SetBleAutoUploadEnabled(Bool? bleAutoUploadEnabled_) - { - SetFieldValue(86, 0, bleAutoUploadEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AutoSyncFrequency field - /// Comment: Helps to conserve battery by changing modes - /// Returns nullable AutoSyncFrequency enum representing the AutoSyncFrequency field - public AutoSyncFrequency? GetAutoSyncFrequency() - { - object obj = GetFieldValue(89, 0, Fit.SubfieldIndexMainField); - AutoSyncFrequency? value = obj == null ? (AutoSyncFrequency?)null : (AutoSyncFrequency)obj; - return value; - } - - /// - /// Set AutoSyncFrequency field - /// Comment: Helps to conserve battery by changing modes - /// Nullable field value to be set - public void SetAutoSyncFrequency(AutoSyncFrequency? autoSyncFrequency_) - { - SetFieldValue(89, 0, autoSyncFrequency_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AutoActivityDetect field - /// Comment: Allows setting specific activities auto-activity detect enabled/disabled settings - /// Returns nullable uint representing the AutoActivityDetect field - public uint? GetAutoActivityDetect() - { - Object val = GetFieldValue(90, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set AutoActivityDetect field - /// Comment: Allows setting specific activities auto-activity detect enabled/disabled settings - /// Nullable field value to be set - public void SetAutoActivityDetect(uint? autoActivityDetect_) - { - SetFieldValue(90, 0, autoActivityDetect_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NumberOfScreens field - /// Comment: Number of screens configured to display - /// Returns nullable byte representing the NumberOfScreens field - public byte? GetNumberOfScreens() - { - Object val = GetFieldValue(94, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set NumberOfScreens field - /// Comment: Number of screens configured to display - /// Nullable field value to be set - public void SetNumberOfScreens(byte? numberOfScreens_) - { - SetFieldValue(94, 0, numberOfScreens_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SmartNotificationDisplayOrientation field - /// Comment: Smart Notification display orientation - /// Returns nullable DisplayOrientation enum representing the SmartNotificationDisplayOrientation field - public DisplayOrientation? GetSmartNotificationDisplayOrientation() - { - object obj = GetFieldValue(95, 0, Fit.SubfieldIndexMainField); - DisplayOrientation? value = obj == null ? (DisplayOrientation?)null : (DisplayOrientation)obj; - return value; - } - - /// - /// Set SmartNotificationDisplayOrientation field - /// Comment: Smart Notification display orientation - /// Nullable field value to be set - public void SetSmartNotificationDisplayOrientation(DisplayOrientation? smartNotificationDisplayOrientation_) - { - SetFieldValue(95, 0, smartNotificationDisplayOrientation_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TapInterface field - /// Returns nullable Switch enum representing the TapInterface field - public Switch? GetTapInterface() - { - object obj = GetFieldValue(134, 0, Fit.SubfieldIndexMainField); - Switch? value = obj == null ? (Switch?)null : (Switch)obj; - return value; - } - - /// - /// Set TapInterface field - /// Nullable field value to be set - public void SetTapInterface(Switch? tapInterface_) - { - SetFieldValue(134, 0, tapInterface_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TapSensitivity field - /// Comment: Used to hold the tap threshold setting - /// Returns nullable TapSensitivity enum representing the TapSensitivity field - public TapSensitivity? GetTapSensitivity() - { - object obj = GetFieldValue(174, 0, Fit.SubfieldIndexMainField); - TapSensitivity? value = obj == null ? (TapSensitivity?)null : (TapSensitivity)obj; - return value; - } - - /// - /// Set TapSensitivity field - /// Comment: Used to hold the tap threshold setting - /// Nullable field value to be set - public void SetTapSensitivity(TapSensitivity? tapSensitivity_) - { - SetFieldValue(174, 0, tapSensitivity_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DiveAlarmMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DiveAlarmMesg.cs deleted file mode 100644 index 0510cdcaf..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DiveAlarmMesg.cs +++ /dev/null @@ -1,369 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the DiveAlarm profile message. - /// - public class DiveAlarmMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Depth = 0; - public const byte Time = 1; - public const byte Enabled = 2; - public const byte AlarmType = 3; - public const byte Sound = 4; - public const byte DiveTypes = 5; - public const byte Id = 6; - public const byte PopupEnabled = 7; - public const byte TriggerOnDescent = 8; - public const byte TriggerOnAscent = 9; - public const byte Repeating = 10; - public const byte Speed = 11; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public DiveAlarmMesg() : base(Profile.GetMesg(MesgNum.DiveAlarm)) - { - } - - public DiveAlarmMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Comment: Index of the alarm - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Comment: Index of the alarm - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Depth field - /// Units: m - /// Comment: Depth setting (m) for depth type alarms - /// Returns nullable float representing the Depth field - public float? GetDepth() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Depth field - /// Units: m - /// Comment: Depth setting (m) for depth type alarms - /// Nullable field value to be set - public void SetDepth(float? depth_) - { - SetFieldValue(0, 0, depth_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Time field - /// Units: s - /// Comment: Time setting (s) for time type alarms - /// Returns nullable int representing the Time field - public int? GetTime() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set Time field - /// Units: s - /// Comment: Time setting (s) for time type alarms - /// Nullable field value to be set - public void SetTime(int? time_) - { - SetFieldValue(1, 0, time_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Enabled field - /// Comment: Enablement flag - /// Returns nullable Bool enum representing the Enabled field - public Bool? GetEnabled() - { - object obj = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set Enabled field - /// Comment: Enablement flag - /// Nullable field value to be set - public void SetEnabled(Bool? enabled_) - { - SetFieldValue(2, 0, enabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AlarmType field - /// Comment: Alarm type setting - /// Returns nullable DiveAlarmType enum representing the AlarmType field - public DiveAlarmType? GetAlarmType() - { - object obj = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - DiveAlarmType? value = obj == null ? (DiveAlarmType?)null : (DiveAlarmType)obj; - return value; - } - - /// - /// Set AlarmType field - /// Comment: Alarm type setting - /// Nullable field value to be set - public void SetAlarmType(DiveAlarmType? alarmType_) - { - SetFieldValue(3, 0, alarmType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sound field - /// Comment: Tone and Vibe setting for the alarm - /// Returns nullable Tone enum representing the Sound field - public Tone? GetSound() - { - object obj = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - Tone? value = obj == null ? (Tone?)null : (Tone)obj; - return value; - } - - /// - /// Set Sound field - /// Comment: Tone and Vibe setting for the alarm - /// Nullable field value to be set - public void SetSound(Tone? sound_) - { - SetFieldValue(4, 0, sound_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field DiveTypes - public int GetNumDiveTypes() - { - return GetNumFieldValues(5, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DiveTypes field - /// Comment: Dive types the alarm will trigger on - /// 0 based index of DiveTypes element to retrieve - /// Returns nullable SubSport enum representing the DiveTypes field - public SubSport? GetDiveTypes(int index) - { - object obj = GetFieldValue(5, index, Fit.SubfieldIndexMainField); - SubSport? value = obj == null ? (SubSport?)null : (SubSport)obj; - return value; - } - - /// - /// Set DiveTypes field - /// Comment: Dive types the alarm will trigger on - /// 0 based index of dive_types - /// Nullable field value to be set - public void SetDiveTypes(int index, SubSport? diveTypes_) - { - SetFieldValue(5, index, diveTypes_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Id field - /// Comment: Alarm ID - /// Returns nullable uint representing the Id field - public uint? GetId() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set Id field - /// Comment: Alarm ID - /// Nullable field value to be set - public void SetId(uint? id_) - { - SetFieldValue(6, 0, id_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PopupEnabled field - /// Comment: Show a visible pop-up for this alarm - /// Returns nullable Bool enum representing the PopupEnabled field - public Bool? GetPopupEnabled() - { - object obj = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set PopupEnabled field - /// Comment: Show a visible pop-up for this alarm - /// Nullable field value to be set - public void SetPopupEnabled(Bool? popupEnabled_) - { - SetFieldValue(7, 0, popupEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TriggerOnDescent field - /// Comment: Trigger the alarm on descent - /// Returns nullable Bool enum representing the TriggerOnDescent field - public Bool? GetTriggerOnDescent() - { - object obj = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set TriggerOnDescent field - /// Comment: Trigger the alarm on descent - /// Nullable field value to be set - public void SetTriggerOnDescent(Bool? triggerOnDescent_) - { - SetFieldValue(8, 0, triggerOnDescent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TriggerOnAscent field - /// Comment: Trigger the alarm on ascent - /// Returns nullable Bool enum representing the TriggerOnAscent field - public Bool? GetTriggerOnAscent() - { - object obj = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set TriggerOnAscent field - /// Comment: Trigger the alarm on ascent - /// Nullable field value to be set - public void SetTriggerOnAscent(Bool? triggerOnAscent_) - { - SetFieldValue(9, 0, triggerOnAscent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Repeating field - /// Comment: Repeat alarm each time threshold is crossed? - /// Returns nullable Bool enum representing the Repeating field - public Bool? GetRepeating() - { - object obj = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set Repeating field - /// Comment: Repeat alarm each time threshold is crossed? - /// Nullable field value to be set - public void SetRepeating(Bool? repeating_) - { - SetFieldValue(10, 0, repeating_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Speed field - /// Units: mps - /// Comment: Ascent/descent rate (mps) setting for speed type alarms - /// Returns nullable float representing the Speed field - public float? GetSpeed() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Speed field - /// Units: mps - /// Comment: Ascent/descent rate (mps) setting for speed type alarms - /// Nullable field value to be set - public void SetSpeed(float? speed_) - { - SetFieldValue(11, 0, speed_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DiveApneaAlarmMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DiveApneaAlarmMesg.cs deleted file mode 100644 index 4f123e696..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DiveApneaAlarmMesg.cs +++ /dev/null @@ -1,369 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the DiveApneaAlarm profile message. - /// - public class DiveApneaAlarmMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Depth = 0; - public const byte Time = 1; - public const byte Enabled = 2; - public const byte AlarmType = 3; - public const byte Sound = 4; - public const byte DiveTypes = 5; - public const byte Id = 6; - public const byte PopupEnabled = 7; - public const byte TriggerOnDescent = 8; - public const byte TriggerOnAscent = 9; - public const byte Repeating = 10; - public const byte Speed = 11; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public DiveApneaAlarmMesg() : base(Profile.GetMesg(MesgNum.DiveApneaAlarm)) - { - } - - public DiveApneaAlarmMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Comment: Index of the alarm - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Comment: Index of the alarm - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Depth field - /// Units: m - /// Comment: Depth setting (m) for depth type alarms - /// Returns nullable float representing the Depth field - public float? GetDepth() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Depth field - /// Units: m - /// Comment: Depth setting (m) for depth type alarms - /// Nullable field value to be set - public void SetDepth(float? depth_) - { - SetFieldValue(0, 0, depth_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Time field - /// Units: s - /// Comment: Time setting (s) for time type alarms - /// Returns nullable int representing the Time field - public int? GetTime() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set Time field - /// Units: s - /// Comment: Time setting (s) for time type alarms - /// Nullable field value to be set - public void SetTime(int? time_) - { - SetFieldValue(1, 0, time_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Enabled field - /// Comment: Enablement flag - /// Returns nullable Bool enum representing the Enabled field - public Bool? GetEnabled() - { - object obj = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set Enabled field - /// Comment: Enablement flag - /// Nullable field value to be set - public void SetEnabled(Bool? enabled_) - { - SetFieldValue(2, 0, enabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AlarmType field - /// Comment: Alarm type setting - /// Returns nullable DiveAlarmType enum representing the AlarmType field - public DiveAlarmType? GetAlarmType() - { - object obj = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - DiveAlarmType? value = obj == null ? (DiveAlarmType?)null : (DiveAlarmType)obj; - return value; - } - - /// - /// Set AlarmType field - /// Comment: Alarm type setting - /// Nullable field value to be set - public void SetAlarmType(DiveAlarmType? alarmType_) - { - SetFieldValue(3, 0, alarmType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sound field - /// Comment: Tone and Vibe setting for the alarm. - /// Returns nullable Tone enum representing the Sound field - public Tone? GetSound() - { - object obj = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - Tone? value = obj == null ? (Tone?)null : (Tone)obj; - return value; - } - - /// - /// Set Sound field - /// Comment: Tone and Vibe setting for the alarm. - /// Nullable field value to be set - public void SetSound(Tone? sound_) - { - SetFieldValue(4, 0, sound_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field DiveTypes - public int GetNumDiveTypes() - { - return GetNumFieldValues(5, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DiveTypes field - /// Comment: Dive types the alarm will trigger on - /// 0 based index of DiveTypes element to retrieve - /// Returns nullable SubSport enum representing the DiveTypes field - public SubSport? GetDiveTypes(int index) - { - object obj = GetFieldValue(5, index, Fit.SubfieldIndexMainField); - SubSport? value = obj == null ? (SubSport?)null : (SubSport)obj; - return value; - } - - /// - /// Set DiveTypes field - /// Comment: Dive types the alarm will trigger on - /// 0 based index of dive_types - /// Nullable field value to be set - public void SetDiveTypes(int index, SubSport? diveTypes_) - { - SetFieldValue(5, index, diveTypes_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Id field - /// Comment: Alarm ID - /// Returns nullable uint representing the Id field - public uint? GetId() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set Id field - /// Comment: Alarm ID - /// Nullable field value to be set - public void SetId(uint? id_) - { - SetFieldValue(6, 0, id_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PopupEnabled field - /// Comment: Show a visible pop-up for this alarm - /// Returns nullable Bool enum representing the PopupEnabled field - public Bool? GetPopupEnabled() - { - object obj = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set PopupEnabled field - /// Comment: Show a visible pop-up for this alarm - /// Nullable field value to be set - public void SetPopupEnabled(Bool? popupEnabled_) - { - SetFieldValue(7, 0, popupEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TriggerOnDescent field - /// Comment: Trigger the alarm on descent - /// Returns nullable Bool enum representing the TriggerOnDescent field - public Bool? GetTriggerOnDescent() - { - object obj = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set TriggerOnDescent field - /// Comment: Trigger the alarm on descent - /// Nullable field value to be set - public void SetTriggerOnDescent(Bool? triggerOnDescent_) - { - SetFieldValue(8, 0, triggerOnDescent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TriggerOnAscent field - /// Comment: Trigger the alarm on ascent - /// Returns nullable Bool enum representing the TriggerOnAscent field - public Bool? GetTriggerOnAscent() - { - object obj = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set TriggerOnAscent field - /// Comment: Trigger the alarm on ascent - /// Nullable field value to be set - public void SetTriggerOnAscent(Bool? triggerOnAscent_) - { - SetFieldValue(9, 0, triggerOnAscent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Repeating field - /// Comment: Repeat alarm each time threshold is crossed? - /// Returns nullable Bool enum representing the Repeating field - public Bool? GetRepeating() - { - object obj = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set Repeating field - /// Comment: Repeat alarm each time threshold is crossed? - /// Nullable field value to be set - public void SetRepeating(Bool? repeating_) - { - SetFieldValue(10, 0, repeating_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Speed field - /// Units: mps - /// Comment: Ascent/descent rate (mps) setting for speed type alarms - /// Returns nullable float representing the Speed field - public float? GetSpeed() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Speed field - /// Units: mps - /// Comment: Ascent/descent rate (mps) setting for speed type alarms - /// Nullable field value to be set - public void SetSpeed(float? speed_) - { - SetFieldValue(11, 0, speed_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DiveGasMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DiveGasMesg.cs deleted file mode 100644 index 6b55ce8d6..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DiveGasMesg.cs +++ /dev/null @@ -1,167 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the DiveGas profile message. - /// - public class DiveGasMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte HeliumContent = 0; - public const byte OxygenContent = 1; - public const byte Status = 2; - public const byte Mode = 3; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public DiveGasMesg() : base(Profile.GetMesg(MesgNum.DiveGas)) - { - } - - public DiveGasMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HeliumContent field - /// Units: percent - /// Returns nullable byte representing the HeliumContent field - public byte? GetHeliumContent() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HeliumContent field - /// Units: percent - /// Nullable field value to be set - public void SetHeliumContent(byte? heliumContent_) - { - SetFieldValue(0, 0, heliumContent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the OxygenContent field - /// Units: percent - /// Returns nullable byte representing the OxygenContent field - public byte? GetOxygenContent() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set OxygenContent field - /// Units: percent - /// Nullable field value to be set - public void SetOxygenContent(byte? oxygenContent_) - { - SetFieldValue(1, 0, oxygenContent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Status field - /// Returns nullable DiveGasStatus enum representing the Status field - public DiveGasStatus? GetStatus() - { - object obj = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - DiveGasStatus? value = obj == null ? (DiveGasStatus?)null : (DiveGasStatus)obj; - return value; - } - - /// - /// Set Status field - /// Nullable field value to be set - public void SetStatus(DiveGasStatus? status_) - { - SetFieldValue(2, 0, status_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Mode field - /// Returns nullable DiveGasMode enum representing the Mode field - public DiveGasMode? GetMode() - { - object obj = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - DiveGasMode? value = obj == null ? (DiveGasMode?)null : (DiveGasMode)obj; - return value; - } - - /// - /// Set Mode field - /// Nullable field value to be set - public void SetMode(DiveGasMode? mode_) - { - SetFieldValue(3, 0, mode_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DiveSettingsMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DiveSettingsMesg.cs deleted file mode 100644 index 2abdbb5e7..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DiveSettingsMesg.cs +++ /dev/null @@ -1,962 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the DiveSettings profile message. - /// - public class DiveSettingsMesg : Mesg - { - #region Fields - static class HeartRateSourceSubfield - { - public static ushort HeartRateAntplusDeviceType = 0; - public static ushort HeartRateLocalDeviceType = 1; - public static ushort Subfields = 2; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte MessageIndex = 254; - public const byte Name = 0; - public const byte Model = 1; - public const byte GfLow = 2; - public const byte GfHigh = 3; - public const byte WaterType = 4; - public const byte WaterDensity = 5; - public const byte Po2Warn = 6; - public const byte Po2Critical = 7; - public const byte Po2Deco = 8; - public const byte SafetyStopEnabled = 9; - public const byte BottomDepth = 10; - public const byte BottomTime = 11; - public const byte ApneaCountdownEnabled = 12; - public const byte ApneaCountdownTime = 13; - public const byte BacklightMode = 14; - public const byte BacklightBrightness = 15; - public const byte BacklightTimeout = 16; - public const byte RepeatDiveInterval = 17; - public const byte SafetyStopTime = 18; - public const byte HeartRateSourceType = 19; - public const byte HeartRateSource = 20; - public const byte TravelGas = 21; - public const byte CcrLowSetpointSwitchMode = 22; - public const byte CcrLowSetpoint = 23; - public const byte CcrLowSetpointDepth = 24; - public const byte CcrHighSetpointSwitchMode = 25; - public const byte CcrHighSetpoint = 26; - public const byte CcrHighSetpointDepth = 27; - public const byte GasConsumptionDisplay = 29; - public const byte UpKeyEnabled = 30; - public const byte DiveSounds = 35; - public const byte LastStopMultiple = 36; - public const byte NoFlyTimeMode = 37; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public DiveSettingsMesg() : base(Profile.GetMesg(MesgNum.DiveSettings)) - { - } - - public DiveSettingsMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(0, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(0, 0, name_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Model field - /// Returns nullable TissueModelType enum representing the Model field - public TissueModelType? GetModel() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - TissueModelType? value = obj == null ? (TissueModelType?)null : (TissueModelType)obj; - return value; - } - - /// - /// Set Model field - /// Nullable field value to be set - public void SetModel(TissueModelType? model_) - { - SetFieldValue(1, 0, model_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GfLow field - /// Units: percent - /// Returns nullable byte representing the GfLow field - public byte? GetGfLow() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set GfLow field - /// Units: percent - /// Nullable field value to be set - public void SetGfLow(byte? gfLow_) - { - SetFieldValue(2, 0, gfLow_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GfHigh field - /// Units: percent - /// Returns nullable byte representing the GfHigh field - public byte? GetGfHigh() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set GfHigh field - /// Units: percent - /// Nullable field value to be set - public void SetGfHigh(byte? gfHigh_) - { - SetFieldValue(3, 0, gfHigh_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WaterType field - /// Returns nullable WaterType enum representing the WaterType field - public WaterType? GetWaterType() - { - object obj = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - WaterType? value = obj == null ? (WaterType?)null : (WaterType)obj; - return value; - } - - /// - /// Set WaterType field - /// Nullable field value to be set - public void SetWaterType(WaterType? waterType_) - { - SetFieldValue(4, 0, waterType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WaterDensity field - /// Units: kg/m^3 - /// Comment: Fresh water is usually 1000; salt water is usually 1025 - /// Returns nullable float representing the WaterDensity field - public float? GetWaterDensity() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set WaterDensity field - /// Units: kg/m^3 - /// Comment: Fresh water is usually 1000; salt water is usually 1025 - /// Nullable field value to be set - public void SetWaterDensity(float? waterDensity_) - { - SetFieldValue(5, 0, waterDensity_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Po2Warn field - /// Units: percent - /// Comment: Typically 1.40 - /// Returns nullable float representing the Po2Warn field - public float? GetPo2Warn() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Po2Warn field - /// Units: percent - /// Comment: Typically 1.40 - /// Nullable field value to be set - public void SetPo2Warn(float? po2Warn_) - { - SetFieldValue(6, 0, po2Warn_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Po2Critical field - /// Units: percent - /// Comment: Typically 1.60 - /// Returns nullable float representing the Po2Critical field - public float? GetPo2Critical() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Po2Critical field - /// Units: percent - /// Comment: Typically 1.60 - /// Nullable field value to be set - public void SetPo2Critical(float? po2Critical_) - { - SetFieldValue(7, 0, po2Critical_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Po2Deco field - /// Units: percent - /// Returns nullable float representing the Po2Deco field - public float? GetPo2Deco() - { - Object val = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Po2Deco field - /// Units: percent - /// Nullable field value to be set - public void SetPo2Deco(float? po2Deco_) - { - SetFieldValue(8, 0, po2Deco_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SafetyStopEnabled field - /// Returns nullable Bool enum representing the SafetyStopEnabled field - public Bool? GetSafetyStopEnabled() - { - object obj = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set SafetyStopEnabled field - /// Nullable field value to be set - public void SetSafetyStopEnabled(Bool? safetyStopEnabled_) - { - SetFieldValue(9, 0, safetyStopEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BottomDepth field - /// Returns nullable float representing the BottomDepth field - public float? GetBottomDepth() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set BottomDepth field - /// Nullable field value to be set - public void SetBottomDepth(float? bottomDepth_) - { - SetFieldValue(10, 0, bottomDepth_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BottomTime field - /// Returns nullable uint representing the BottomTime field - public uint? GetBottomTime() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set BottomTime field - /// Nullable field value to be set - public void SetBottomTime(uint? bottomTime_) - { - SetFieldValue(11, 0, bottomTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ApneaCountdownEnabled field - /// Returns nullable Bool enum representing the ApneaCountdownEnabled field - public Bool? GetApneaCountdownEnabled() - { - object obj = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set ApneaCountdownEnabled field - /// Nullable field value to be set - public void SetApneaCountdownEnabled(Bool? apneaCountdownEnabled_) - { - SetFieldValue(12, 0, apneaCountdownEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ApneaCountdownTime field - /// Returns nullable uint representing the ApneaCountdownTime field - public uint? GetApneaCountdownTime() - { - Object val = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set ApneaCountdownTime field - /// Nullable field value to be set - public void SetApneaCountdownTime(uint? apneaCountdownTime_) - { - SetFieldValue(13, 0, apneaCountdownTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BacklightMode field - /// Returns nullable DiveBacklightMode enum representing the BacklightMode field - public DiveBacklightMode? GetBacklightMode() - { - object obj = GetFieldValue(14, 0, Fit.SubfieldIndexMainField); - DiveBacklightMode? value = obj == null ? (DiveBacklightMode?)null : (DiveBacklightMode)obj; - return value; - } - - /// - /// Set BacklightMode field - /// Nullable field value to be set - public void SetBacklightMode(DiveBacklightMode? backlightMode_) - { - SetFieldValue(14, 0, backlightMode_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BacklightBrightness field - /// Returns nullable byte representing the BacklightBrightness field - public byte? GetBacklightBrightness() - { - Object val = GetFieldValue(15, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set BacklightBrightness field - /// Nullable field value to be set - public void SetBacklightBrightness(byte? backlightBrightness_) - { - SetFieldValue(15, 0, backlightBrightness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BacklightTimeout field - /// Returns nullable byte representing the BacklightTimeout field - public byte? GetBacklightTimeout() - { - Object val = GetFieldValue(16, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set BacklightTimeout field - /// Nullable field value to be set - public void SetBacklightTimeout(byte? backlightTimeout_) - { - SetFieldValue(16, 0, backlightTimeout_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RepeatDiveInterval field - /// Units: s - /// Comment: Time between surfacing and ending the activity - /// Returns nullable ushort representing the RepeatDiveInterval field - public ushort? GetRepeatDiveInterval() - { - Object val = GetFieldValue(17, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set RepeatDiveInterval field - /// Units: s - /// Comment: Time between surfacing and ending the activity - /// Nullable field value to be set - public void SetRepeatDiveInterval(ushort? repeatDiveInterval_) - { - SetFieldValue(17, 0, repeatDiveInterval_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SafetyStopTime field - /// Units: s - /// Comment: Time at safety stop (if enabled) - /// Returns nullable ushort representing the SafetyStopTime field - public ushort? GetSafetyStopTime() - { - Object val = GetFieldValue(18, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set SafetyStopTime field - /// Units: s - /// Comment: Time at safety stop (if enabled) - /// Nullable field value to be set - public void SetSafetyStopTime(ushort? safetyStopTime_) - { - SetFieldValue(18, 0, safetyStopTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HeartRateSourceType field - /// Returns nullable SourceType enum representing the HeartRateSourceType field - public SourceType? GetHeartRateSourceType() - { - object obj = GetFieldValue(19, 0, Fit.SubfieldIndexMainField); - SourceType? value = obj == null ? (SourceType?)null : (SourceType)obj; - return value; - } - - /// - /// Set HeartRateSourceType field - /// Nullable field value to be set - public void SetHeartRateSourceType(SourceType? heartRateSourceType_) - { - SetFieldValue(19, 0, heartRateSourceType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HeartRateSource field - /// Returns nullable byte representing the HeartRateSource field - public byte? GetHeartRateSource() - { - Object val = GetFieldValue(20, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HeartRateSource field - /// Nullable field value to be set - public void SetHeartRateSource(byte? heartRateSource_) - { - SetFieldValue(20, 0, heartRateSource_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the HeartRateAntplusDeviceType subfield - /// Nullable byte representing the HeartRateAntplusDeviceType subfield - public byte? GetHeartRateAntplusDeviceType() - { - Object val = GetFieldValue(20, 0, HeartRateSourceSubfield.HeartRateAntplusDeviceType); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set HeartRateAntplusDeviceType subfield - /// Subfield value to be set - public void SetHeartRateAntplusDeviceType(byte? heartRateAntplusDeviceType) - { - SetFieldValue(20, 0, heartRateAntplusDeviceType, HeartRateSourceSubfield.HeartRateAntplusDeviceType); - } - - /// - /// Retrieves the HeartRateLocalDeviceType subfield - /// Nullable byte representing the HeartRateLocalDeviceType subfield - public byte? GetHeartRateLocalDeviceType() - { - Object val = GetFieldValue(20, 0, HeartRateSourceSubfield.HeartRateLocalDeviceType); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set HeartRateLocalDeviceType subfield - /// Subfield value to be set - public void SetHeartRateLocalDeviceType(byte? heartRateLocalDeviceType) - { - SetFieldValue(20, 0, heartRateLocalDeviceType, HeartRateSourceSubfield.HeartRateLocalDeviceType); - } - /// - /// Retrieves the TravelGas field - /// Comment: Index of travel dive_gas message - /// Returns nullable ushort representing the TravelGas field - public ushort? GetTravelGas() - { - Object val = GetFieldValue(21, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TravelGas field - /// Comment: Index of travel dive_gas message - /// Nullable field value to be set - public void SetTravelGas(ushort? travelGas_) - { - SetFieldValue(21, 0, travelGas_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CcrLowSetpointSwitchMode field - /// Comment: If low PO2 should be switched to automatically - /// Returns nullable CcrSetpointSwitchMode enum representing the CcrLowSetpointSwitchMode field - public CcrSetpointSwitchMode? GetCcrLowSetpointSwitchMode() - { - object obj = GetFieldValue(22, 0, Fit.SubfieldIndexMainField); - CcrSetpointSwitchMode? value = obj == null ? (CcrSetpointSwitchMode?)null : (CcrSetpointSwitchMode)obj; - return value; - } - - /// - /// Set CcrLowSetpointSwitchMode field - /// Comment: If low PO2 should be switched to automatically - /// Nullable field value to be set - public void SetCcrLowSetpointSwitchMode(CcrSetpointSwitchMode? ccrLowSetpointSwitchMode_) - { - SetFieldValue(22, 0, ccrLowSetpointSwitchMode_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CcrLowSetpoint field - /// Units: percent - /// Comment: Target PO2 when using low setpoint - /// Returns nullable float representing the CcrLowSetpoint field - public float? GetCcrLowSetpoint() - { - Object val = GetFieldValue(23, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CcrLowSetpoint field - /// Units: percent - /// Comment: Target PO2 when using low setpoint - /// Nullable field value to be set - public void SetCcrLowSetpoint(float? ccrLowSetpoint_) - { - SetFieldValue(23, 0, ccrLowSetpoint_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CcrLowSetpointDepth field - /// Units: m - /// Comment: Depth to switch to low setpoint in automatic mode - /// Returns nullable float representing the CcrLowSetpointDepth field - public float? GetCcrLowSetpointDepth() - { - Object val = GetFieldValue(24, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CcrLowSetpointDepth field - /// Units: m - /// Comment: Depth to switch to low setpoint in automatic mode - /// Nullable field value to be set - public void SetCcrLowSetpointDepth(float? ccrLowSetpointDepth_) - { - SetFieldValue(24, 0, ccrLowSetpointDepth_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CcrHighSetpointSwitchMode field - /// Comment: If high PO2 should be switched to automatically - /// Returns nullable CcrSetpointSwitchMode enum representing the CcrHighSetpointSwitchMode field - public CcrSetpointSwitchMode? GetCcrHighSetpointSwitchMode() - { - object obj = GetFieldValue(25, 0, Fit.SubfieldIndexMainField); - CcrSetpointSwitchMode? value = obj == null ? (CcrSetpointSwitchMode?)null : (CcrSetpointSwitchMode)obj; - return value; - } - - /// - /// Set CcrHighSetpointSwitchMode field - /// Comment: If high PO2 should be switched to automatically - /// Nullable field value to be set - public void SetCcrHighSetpointSwitchMode(CcrSetpointSwitchMode? ccrHighSetpointSwitchMode_) - { - SetFieldValue(25, 0, ccrHighSetpointSwitchMode_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CcrHighSetpoint field - /// Units: percent - /// Comment: Target PO2 when using high setpoint - /// Returns nullable float representing the CcrHighSetpoint field - public float? GetCcrHighSetpoint() - { - Object val = GetFieldValue(26, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CcrHighSetpoint field - /// Units: percent - /// Comment: Target PO2 when using high setpoint - /// Nullable field value to be set - public void SetCcrHighSetpoint(float? ccrHighSetpoint_) - { - SetFieldValue(26, 0, ccrHighSetpoint_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CcrHighSetpointDepth field - /// Units: m - /// Comment: Depth to switch to high setpoint in automatic mode - /// Returns nullable float representing the CcrHighSetpointDepth field - public float? GetCcrHighSetpointDepth() - { - Object val = GetFieldValue(27, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CcrHighSetpointDepth field - /// Units: m - /// Comment: Depth to switch to high setpoint in automatic mode - /// Nullable field value to be set - public void SetCcrHighSetpointDepth(float? ccrHighSetpointDepth_) - { - SetFieldValue(27, 0, ccrHighSetpointDepth_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GasConsumptionDisplay field - /// Comment: Type of gas consumption rate to display. Some values are only valid if tank volume is known. - /// Returns nullable GasConsumptionRateType enum representing the GasConsumptionDisplay field - public GasConsumptionRateType? GetGasConsumptionDisplay() - { - object obj = GetFieldValue(29, 0, Fit.SubfieldIndexMainField); - GasConsumptionRateType? value = obj == null ? (GasConsumptionRateType?)null : (GasConsumptionRateType)obj; - return value; - } - - /// - /// Set GasConsumptionDisplay field - /// Comment: Type of gas consumption rate to display. Some values are only valid if tank volume is known. - /// Nullable field value to be set - public void SetGasConsumptionDisplay(GasConsumptionRateType? gasConsumptionDisplay_) - { - SetFieldValue(29, 0, gasConsumptionDisplay_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the UpKeyEnabled field - /// Comment: Indicates whether the up key is enabled during dives - /// Returns nullable Bool enum representing the UpKeyEnabled field - public Bool? GetUpKeyEnabled() - { - object obj = GetFieldValue(30, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set UpKeyEnabled field - /// Comment: Indicates whether the up key is enabled during dives - /// Nullable field value to be set - public void SetUpKeyEnabled(Bool? upKeyEnabled_) - { - SetFieldValue(30, 0, upKeyEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DiveSounds field - /// Comment: Sounds and vibration enabled or disabled in-dive - /// Returns nullable Tone enum representing the DiveSounds field - public Tone? GetDiveSounds() - { - object obj = GetFieldValue(35, 0, Fit.SubfieldIndexMainField); - Tone? value = obj == null ? (Tone?)null : (Tone)obj; - return value; - } - - /// - /// Set DiveSounds field - /// Comment: Sounds and vibration enabled or disabled in-dive - /// Nullable field value to be set - public void SetDiveSounds(Tone? diveSounds_) - { - SetFieldValue(35, 0, diveSounds_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LastStopMultiple field - /// Comment: Usually 1.0/1.5/2.0 representing 3/4.5/6m or 10/15/20ft - /// Returns nullable float representing the LastStopMultiple field - public float? GetLastStopMultiple() - { - Object val = GetFieldValue(36, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set LastStopMultiple field - /// Comment: Usually 1.0/1.5/2.0 representing 3/4.5/6m or 10/15/20ft - /// Nullable field value to be set - public void SetLastStopMultiple(float? lastStopMultiple_) - { - SetFieldValue(36, 0, lastStopMultiple_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NoFlyTimeMode field - /// Comment: Indicates which guidelines to use for no-fly surface interval. - /// Returns nullable NoFlyTimeMode enum representing the NoFlyTimeMode field - public NoFlyTimeMode? GetNoFlyTimeMode() - { - object obj = GetFieldValue(37, 0, Fit.SubfieldIndexMainField); - NoFlyTimeMode? value = obj == null ? (NoFlyTimeMode?)null : (NoFlyTimeMode)obj; - return value; - } - - /// - /// Set NoFlyTimeMode field - /// Comment: Indicates which guidelines to use for no-fly surface interval. - /// Nullable field value to be set - public void SetNoFlyTimeMode(NoFlyTimeMode? noFlyTimeMode_) - { - SetFieldValue(37, 0, noFlyTimeMode_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DiveSummaryMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DiveSummaryMesg.cs deleted file mode 100644 index d030253f2..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/DiveSummaryMesg.cs +++ /dev/null @@ -1,671 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the DiveSummary profile message. - /// - public class DiveSummaryMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte ReferenceMesg = 0; - public const byte ReferenceIndex = 1; - public const byte AvgDepth = 2; - public const byte MaxDepth = 3; - public const byte SurfaceInterval = 4; - public const byte StartCns = 5; - public const byte EndCns = 6; - public const byte StartN2 = 7; - public const byte EndN2 = 8; - public const byte O2Toxicity = 9; - public const byte DiveNumber = 10; - public const byte BottomTime = 11; - public const byte AvgPressureSac = 12; - public const byte AvgVolumeSac = 13; - public const byte AvgRmv = 14; - public const byte DescentTime = 15; - public const byte AscentTime = 16; - public const byte AvgAscentRate = 17; - public const byte AvgDescentRate = 22; - public const byte MaxAscentRate = 23; - public const byte MaxDescentRate = 24; - public const byte HangTime = 25; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public DiveSummaryMesg() : base(Profile.GetMesg(MesgNum.DiveSummary)) - { - } - - public DiveSummaryMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ReferenceMesg field - /// Returns nullable ushort representing the ReferenceMesg field - public ushort? GetReferenceMesg() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ReferenceMesg field - /// Nullable field value to be set - public void SetReferenceMesg(ushort? referenceMesg_) - { - SetFieldValue(0, 0, referenceMesg_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ReferenceIndex field - /// Returns nullable ushort representing the ReferenceIndex field - public ushort? GetReferenceIndex() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ReferenceIndex field - /// Nullable field value to be set - public void SetReferenceIndex(ushort? referenceIndex_) - { - SetFieldValue(1, 0, referenceIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgDepth field - /// Units: m - /// Comment: 0 if above water - /// Returns nullable float representing the AvgDepth field - public float? GetAvgDepth() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgDepth field - /// Units: m - /// Comment: 0 if above water - /// Nullable field value to be set - public void SetAvgDepth(float? avgDepth_) - { - SetFieldValue(2, 0, avgDepth_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxDepth field - /// Units: m - /// Comment: 0 if above water - /// Returns nullable float representing the MaxDepth field - public float? GetMaxDepth() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxDepth field - /// Units: m - /// Comment: 0 if above water - /// Nullable field value to be set - public void SetMaxDepth(float? maxDepth_) - { - SetFieldValue(3, 0, maxDepth_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SurfaceInterval field - /// Units: s - /// Comment: Time since end of last dive - /// Returns nullable uint representing the SurfaceInterval field - public uint? GetSurfaceInterval() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set SurfaceInterval field - /// Units: s - /// Comment: Time since end of last dive - /// Nullable field value to be set - public void SetSurfaceInterval(uint? surfaceInterval_) - { - SetFieldValue(4, 0, surfaceInterval_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartCns field - /// Units: percent - /// Returns nullable byte representing the StartCns field - public byte? GetStartCns() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set StartCns field - /// Units: percent - /// Nullable field value to be set - public void SetStartCns(byte? startCns_) - { - SetFieldValue(5, 0, startCns_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EndCns field - /// Units: percent - /// Returns nullable byte representing the EndCns field - public byte? GetEndCns() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set EndCns field - /// Units: percent - /// Nullable field value to be set - public void SetEndCns(byte? endCns_) - { - SetFieldValue(6, 0, endCns_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartN2 field - /// Units: percent - /// Returns nullable ushort representing the StartN2 field - public ushort? GetStartN2() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set StartN2 field - /// Units: percent - /// Nullable field value to be set - public void SetStartN2(ushort? startN2_) - { - SetFieldValue(7, 0, startN2_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EndN2 field - /// Units: percent - /// Returns nullable ushort representing the EndN2 field - public ushort? GetEndN2() - { - Object val = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set EndN2 field - /// Units: percent - /// Nullable field value to be set - public void SetEndN2(ushort? endN2_) - { - SetFieldValue(8, 0, endN2_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the O2Toxicity field - /// Units: OTUs - /// Returns nullable ushort representing the O2Toxicity field - public ushort? GetO2Toxicity() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set O2Toxicity field - /// Units: OTUs - /// Nullable field value to be set - public void SetO2Toxicity(ushort? o2Toxicity_) - { - SetFieldValue(9, 0, o2Toxicity_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DiveNumber field - /// Returns nullable uint representing the DiveNumber field - public uint? GetDiveNumber() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set DiveNumber field - /// Nullable field value to be set - public void SetDiveNumber(uint? diveNumber_) - { - SetFieldValue(10, 0, diveNumber_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BottomTime field - /// Units: s - /// Returns nullable float representing the BottomTime field - public float? GetBottomTime() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set BottomTime field - /// Units: s - /// Nullable field value to be set - public void SetBottomTime(float? bottomTime_) - { - SetFieldValue(11, 0, bottomTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgPressureSac field - /// Units: bar/min - /// Comment: Average pressure-based surface air consumption - /// Returns nullable float representing the AvgPressureSac field - public float? GetAvgPressureSac() - { - Object val = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgPressureSac field - /// Units: bar/min - /// Comment: Average pressure-based surface air consumption - /// Nullable field value to be set - public void SetAvgPressureSac(float? avgPressureSac_) - { - SetFieldValue(12, 0, avgPressureSac_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgVolumeSac field - /// Units: L/min - /// Comment: Average volumetric surface air consumption - /// Returns nullable float representing the AvgVolumeSac field - public float? GetAvgVolumeSac() - { - Object val = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgVolumeSac field - /// Units: L/min - /// Comment: Average volumetric surface air consumption - /// Nullable field value to be set - public void SetAvgVolumeSac(float? avgVolumeSac_) - { - SetFieldValue(13, 0, avgVolumeSac_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRmv field - /// Units: L/min - /// Comment: Average respiratory minute volume - /// Returns nullable float representing the AvgRmv field - public float? GetAvgRmv() - { - Object val = GetFieldValue(14, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRmv field - /// Units: L/min - /// Comment: Average respiratory minute volume - /// Nullable field value to be set - public void SetAvgRmv(float? avgRmv_) - { - SetFieldValue(14, 0, avgRmv_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DescentTime field - /// Units: s - /// Comment: Time to reach deepest level stop - /// Returns nullable float representing the DescentTime field - public float? GetDescentTime() - { - Object val = GetFieldValue(15, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set DescentTime field - /// Units: s - /// Comment: Time to reach deepest level stop - /// Nullable field value to be set - public void SetDescentTime(float? descentTime_) - { - SetFieldValue(15, 0, descentTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AscentTime field - /// Units: s - /// Comment: Time after leaving bottom until reaching surface - /// Returns nullable float representing the AscentTime field - public float? GetAscentTime() - { - Object val = GetFieldValue(16, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AscentTime field - /// Units: s - /// Comment: Time after leaving bottom until reaching surface - /// Nullable field value to be set - public void SetAscentTime(float? ascentTime_) - { - SetFieldValue(16, 0, ascentTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgAscentRate field - /// Units: m/s - /// Comment: Average ascent rate, not including descents or stops - /// Returns nullable float representing the AvgAscentRate field - public float? GetAvgAscentRate() - { - Object val = GetFieldValue(17, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgAscentRate field - /// Units: m/s - /// Comment: Average ascent rate, not including descents or stops - /// Nullable field value to be set - public void SetAvgAscentRate(float? avgAscentRate_) - { - SetFieldValue(17, 0, avgAscentRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgDescentRate field - /// Units: m/s - /// Comment: Average descent rate, not including ascents or stops - /// Returns nullable float representing the AvgDescentRate field - public float? GetAvgDescentRate() - { - Object val = GetFieldValue(22, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgDescentRate field - /// Units: m/s - /// Comment: Average descent rate, not including ascents or stops - /// Nullable field value to be set - public void SetAvgDescentRate(float? avgDescentRate_) - { - SetFieldValue(22, 0, avgDescentRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxAscentRate field - /// Units: m/s - /// Comment: Maximum ascent rate - /// Returns nullable float representing the MaxAscentRate field - public float? GetMaxAscentRate() - { - Object val = GetFieldValue(23, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxAscentRate field - /// Units: m/s - /// Comment: Maximum ascent rate - /// Nullable field value to be set - public void SetMaxAscentRate(float? maxAscentRate_) - { - SetFieldValue(23, 0, maxAscentRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxDescentRate field - /// Units: m/s - /// Comment: Maximum descent rate - /// Returns nullable float representing the MaxDescentRate field - public float? GetMaxDescentRate() - { - Object val = GetFieldValue(24, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxDescentRate field - /// Units: m/s - /// Comment: Maximum descent rate - /// Nullable field value to be set - public void SetMaxDescentRate(float? maxDescentRate_) - { - SetFieldValue(24, 0, maxDescentRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HangTime field - /// Units: s - /// Comment: Time spent neither ascending nor descending - /// Returns nullable float representing the HangTime field - public float? GetHangTime() - { - Object val = GetFieldValue(25, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set HangTime field - /// Units: s - /// Comment: Time spent neither ascending nor descending - /// Nullable field value to be set - public void SetHangTime(float? hangTime_) - { - SetFieldValue(25, 0, hangTime_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/EventMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/EventMesg.cs deleted file mode 100644 index 89a2e7b76..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/EventMesg.cs +++ /dev/null @@ -1,1030 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Event profile message. - /// - public class EventMesg : Mesg - { - #region Fields - static class DataSubfield - { - public static ushort TimerTrigger = 0; - public static ushort CoursePointIndex = 1; - public static ushort BatteryLevel = 2; - public static ushort VirtualPartnerSpeed = 3; - public static ushort HrHighAlert = 4; - public static ushort HrLowAlert = 5; - public static ushort SpeedHighAlert = 6; - public static ushort SpeedLowAlert = 7; - public static ushort CadHighAlert = 8; - public static ushort CadLowAlert = 9; - public static ushort PowerHighAlert = 10; - public static ushort PowerLowAlert = 11; - public static ushort TimeDurationAlert = 12; - public static ushort DistanceDurationAlert = 13; - public static ushort CalorieDurationAlert = 14; - public static ushort FitnessEquipmentState = 15; - public static ushort SportPoint = 16; - public static ushort GearChangeData = 17; - public static ushort RiderPosition = 18; - public static ushort CommTimeout = 19; - public static ushort DiveAlert = 20; - public static ushort RadarThreatAlert = 21; - public static ushort Subfields = 22; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte Event = 0; - public const byte EventType = 1; - public const byte Data16 = 2; - public const byte Data = 3; - public const byte EventGroup = 4; - public const byte Score = 7; - public const byte OpponentScore = 8; - public const byte FrontGearNum = 9; - public const byte FrontGear = 10; - public const byte RearGearNum = 11; - public const byte RearGear = 12; - public const byte DeviceIndex = 13; - public const byte RadarThreatLevelMax = 21; - public const byte RadarThreatCount = 22; - public const byte RadarThreatAvgApproachSpeed = 23; - public const byte RadarThreatMaxApproachSpeed = 24; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public EventMesg() : base(Profile.GetMesg(MesgNum.Event)) - { - } - - public EventMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Event field - /// Returns nullable Event enum representing the Event field - public Event? GetEvent() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Event? value = obj == null ? (Event?)null : (Event)obj; - return value; - } - - /// - /// Set Event field - /// Nullable field value to be set - public void SetEvent(Event? event_) - { - SetFieldValue(0, 0, event_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventType field - /// Returns nullable EventType enum representing the EventType field - public EventType? GetEventType() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - EventType? value = obj == null ? (EventType?)null : (EventType)obj; - return value; - } - - /// - /// Set EventType field - /// Nullable field value to be set - public void SetEventType(EventType? eventType_) - { - SetFieldValue(1, 0, eventType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Data16 field - /// Returns nullable ushort representing the Data16 field - public ushort? GetData16() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Data16 field - /// Nullable field value to be set - public void SetData16(ushort? data16_) - { - SetFieldValue(2, 0, data16_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Data field - /// Returns nullable uint representing the Data field - public uint? GetData() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set Data field - /// Nullable field value to be set - public void SetData(uint? data_) - { - SetFieldValue(3, 0, data_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the TimerTrigger subfield - /// Nullable TimerTrigger enum representing the TimerTrigger subfield - public TimerTrigger? GetTimerTrigger() - { - return (TimerTrigger?)GetFieldValue(3, 0, DataSubfield.TimerTrigger); - } - - /// - /// - /// Set TimerTrigger subfield - /// Subfield value to be set - public void SetTimerTrigger(byte? timerTrigger) - { - SetFieldValue(3, 0, timerTrigger, DataSubfield.TimerTrigger); - } - - /// - /// Retrieves the CoursePointIndex subfield - /// Nullable ushort representing the CoursePointIndex subfield - public ushort? GetCoursePointIndex() - { - Object val = GetFieldValue(3, 0, DataSubfield.CoursePointIndex); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set CoursePointIndex subfield - /// Subfield value to be set - public void SetCoursePointIndex(ushort? coursePointIndex) - { - SetFieldValue(3, 0, coursePointIndex, DataSubfield.CoursePointIndex); - } - - /// - /// Retrieves the BatteryLevel subfield - /// Units: V - /// Nullable float representing the BatteryLevel subfield - public float? GetBatteryLevel() - { - Object val = GetFieldValue(3, 0, DataSubfield.BatteryLevel); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set BatteryLevel subfield - /// Units: V - /// Subfield value to be set - public void SetBatteryLevel(float? batteryLevel) - { - SetFieldValue(3, 0, batteryLevel, DataSubfield.BatteryLevel); - } - - /// - /// Retrieves the VirtualPartnerSpeed subfield - /// Units: m/s - /// Nullable float representing the VirtualPartnerSpeed subfield - public float? GetVirtualPartnerSpeed() - { - Object val = GetFieldValue(3, 0, DataSubfield.VirtualPartnerSpeed); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set VirtualPartnerSpeed subfield - /// Units: m/s - /// Subfield value to be set - public void SetVirtualPartnerSpeed(float? virtualPartnerSpeed) - { - SetFieldValue(3, 0, virtualPartnerSpeed, DataSubfield.VirtualPartnerSpeed); - } - - /// - /// Retrieves the HrHighAlert subfield - /// Units: bpm - /// Nullable byte representing the HrHighAlert subfield - public byte? GetHrHighAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.HrHighAlert); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set HrHighAlert subfield - /// Units: bpm - /// Subfield value to be set - public void SetHrHighAlert(byte? hrHighAlert) - { - SetFieldValue(3, 0, hrHighAlert, DataSubfield.HrHighAlert); - } - - /// - /// Retrieves the HrLowAlert subfield - /// Units: bpm - /// Nullable byte representing the HrLowAlert subfield - public byte? GetHrLowAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.HrLowAlert); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set HrLowAlert subfield - /// Units: bpm - /// Subfield value to be set - public void SetHrLowAlert(byte? hrLowAlert) - { - SetFieldValue(3, 0, hrLowAlert, DataSubfield.HrLowAlert); - } - - /// - /// Retrieves the SpeedHighAlert subfield - /// Units: m/s - /// Nullable float representing the SpeedHighAlert subfield - public float? GetSpeedHighAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.SpeedHighAlert); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set SpeedHighAlert subfield - /// Units: m/s - /// Subfield value to be set - public void SetSpeedHighAlert(float? speedHighAlert) - { - SetFieldValue(3, 0, speedHighAlert, DataSubfield.SpeedHighAlert); - } - - /// - /// Retrieves the SpeedLowAlert subfield - /// Units: m/s - /// Nullable float representing the SpeedLowAlert subfield - public float? GetSpeedLowAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.SpeedLowAlert); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set SpeedLowAlert subfield - /// Units: m/s - /// Subfield value to be set - public void SetSpeedLowAlert(float? speedLowAlert) - { - SetFieldValue(3, 0, speedLowAlert, DataSubfield.SpeedLowAlert); - } - - /// - /// Retrieves the CadHighAlert subfield - /// Units: rpm - /// Nullable ushort representing the CadHighAlert subfield - public ushort? GetCadHighAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.CadHighAlert); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set CadHighAlert subfield - /// Units: rpm - /// Subfield value to be set - public void SetCadHighAlert(ushort? cadHighAlert) - { - SetFieldValue(3, 0, cadHighAlert, DataSubfield.CadHighAlert); - } - - /// - /// Retrieves the CadLowAlert subfield - /// Units: rpm - /// Nullable ushort representing the CadLowAlert subfield - public ushort? GetCadLowAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.CadLowAlert); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set CadLowAlert subfield - /// Units: rpm - /// Subfield value to be set - public void SetCadLowAlert(ushort? cadLowAlert) - { - SetFieldValue(3, 0, cadLowAlert, DataSubfield.CadLowAlert); - } - - /// - /// Retrieves the PowerHighAlert subfield - /// Units: watts - /// Nullable ushort representing the PowerHighAlert subfield - public ushort? GetPowerHighAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.PowerHighAlert); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set PowerHighAlert subfield - /// Units: watts - /// Subfield value to be set - public void SetPowerHighAlert(ushort? powerHighAlert) - { - SetFieldValue(3, 0, powerHighAlert, DataSubfield.PowerHighAlert); - } - - /// - /// Retrieves the PowerLowAlert subfield - /// Units: watts - /// Nullable ushort representing the PowerLowAlert subfield - public ushort? GetPowerLowAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.PowerLowAlert); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set PowerLowAlert subfield - /// Units: watts - /// Subfield value to be set - public void SetPowerLowAlert(ushort? powerLowAlert) - { - SetFieldValue(3, 0, powerLowAlert, DataSubfield.PowerLowAlert); - } - - /// - /// Retrieves the TimeDurationAlert subfield - /// Units: s - /// Nullable float representing the TimeDurationAlert subfield - public float? GetTimeDurationAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.TimeDurationAlert); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set TimeDurationAlert subfield - /// Units: s - /// Subfield value to be set - public void SetTimeDurationAlert(float? timeDurationAlert) - { - SetFieldValue(3, 0, timeDurationAlert, DataSubfield.TimeDurationAlert); - } - - /// - /// Retrieves the DistanceDurationAlert subfield - /// Units: m - /// Nullable float representing the DistanceDurationAlert subfield - public float? GetDistanceDurationAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.DistanceDurationAlert); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set DistanceDurationAlert subfield - /// Units: m - /// Subfield value to be set - public void SetDistanceDurationAlert(float? distanceDurationAlert) - { - SetFieldValue(3, 0, distanceDurationAlert, DataSubfield.DistanceDurationAlert); - } - - /// - /// Retrieves the CalorieDurationAlert subfield - /// Units: calories - /// Nullable uint representing the CalorieDurationAlert subfield - public uint? GetCalorieDurationAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.CalorieDurationAlert); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set CalorieDurationAlert subfield - /// Units: calories - /// Subfield value to be set - public void SetCalorieDurationAlert(uint? calorieDurationAlert) - { - SetFieldValue(3, 0, calorieDurationAlert, DataSubfield.CalorieDurationAlert); - } - - /// - /// Retrieves the FitnessEquipmentState subfield - /// Nullable FitnessEquipmentState enum representing the FitnessEquipmentState subfield - public FitnessEquipmentState? GetFitnessEquipmentState() - { - return (FitnessEquipmentState?)GetFieldValue(3, 0, DataSubfield.FitnessEquipmentState); - } - - /// - /// - /// Set FitnessEquipmentState subfield - /// Subfield value to be set - public void SetFitnessEquipmentState(byte? fitnessEquipmentState) - { - SetFieldValue(3, 0, fitnessEquipmentState, DataSubfield.FitnessEquipmentState); - } - - /// - /// Retrieves the SportPoint subfield - /// Nullable uint representing the SportPoint subfield - public uint? GetSportPoint() - { - Object val = GetFieldValue(3, 0, DataSubfield.SportPoint); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set SportPoint subfield - /// Subfield value to be set - public void SetSportPoint(uint? sportPoint) - { - SetFieldValue(3, 0, sportPoint, DataSubfield.SportPoint); - } - - /// - /// Retrieves the GearChangeData subfield - /// Nullable uint representing the GearChangeData subfield - public uint? GetGearChangeData() - { - Object val = GetFieldValue(3, 0, DataSubfield.GearChangeData); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set GearChangeData subfield - /// Subfield value to be set - public void SetGearChangeData(uint? gearChangeData) - { - SetFieldValue(3, 0, gearChangeData, DataSubfield.GearChangeData); - } - - /// - /// Retrieves the RiderPosition subfield - /// Comment: Indicates the rider position value. - /// Nullable RiderPositionType enum representing the RiderPosition subfield - public RiderPositionType? GetRiderPosition() - { - return (RiderPositionType?)GetFieldValue(3, 0, DataSubfield.RiderPosition); - } - - /// - /// - /// Set RiderPosition subfield - /// Comment: Indicates the rider position value. - /// Subfield value to be set - public void SetRiderPosition(byte? riderPosition) - { - SetFieldValue(3, 0, riderPosition, DataSubfield.RiderPosition); - } - - /// - /// Retrieves the CommTimeout subfield - /// Nullable ushort representing the CommTimeout subfield - public ushort? GetCommTimeout() - { - Object val = GetFieldValue(3, 0, DataSubfield.CommTimeout); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set CommTimeout subfield - /// Subfield value to be set - public void SetCommTimeout(ushort? commTimeout) - { - SetFieldValue(3, 0, commTimeout, DataSubfield.CommTimeout); - } - - /// - /// Retrieves the DiveAlert subfield - /// Nullable DiveAlert enum representing the DiveAlert subfield - public DiveAlert? GetDiveAlert() - { - return (DiveAlert?)GetFieldValue(3, 0, DataSubfield.DiveAlert); - } - - /// - /// - /// Set DiveAlert subfield - /// Subfield value to be set - public void SetDiveAlert(byte? diveAlert) - { - SetFieldValue(3, 0, diveAlert, DataSubfield.DiveAlert); - } - - /// - /// Retrieves the RadarThreatAlert subfield - /// Comment: The first byte is the radar_threat_level_max, the second byte is the radar_threat_count, third bytes is the average approach speed, and the 4th byte is the max approach speed - /// Nullable uint representing the RadarThreatAlert subfield - public uint? GetRadarThreatAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.RadarThreatAlert); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set RadarThreatAlert subfield - /// Comment: The first byte is the radar_threat_level_max, the second byte is the radar_threat_count, third bytes is the average approach speed, and the 4th byte is the max approach speed - /// Subfield value to be set - public void SetRadarThreatAlert(uint? radarThreatAlert) - { - SetFieldValue(3, 0, radarThreatAlert, DataSubfield.RadarThreatAlert); - } - /// - /// Retrieves the EventGroup field - /// Returns nullable byte representing the EventGroup field - public byte? GetEventGroup() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set EventGroup field - /// Nullable field value to be set - public void SetEventGroup(byte? eventGroup_) - { - SetFieldValue(4, 0, eventGroup_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Score field - /// Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - /// Returns nullable ushort representing the Score field - public ushort? GetScore() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Score field - /// Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - /// Nullable field value to be set - public void SetScore(ushort? score_) - { - SetFieldValue(7, 0, score_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the OpponentScore field - /// Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - /// Returns nullable ushort representing the OpponentScore field - public ushort? GetOpponentScore() - { - Object val = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set OpponentScore field - /// Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - /// Nullable field value to be set - public void SetOpponentScore(ushort? opponentScore_) - { - SetFieldValue(8, 0, opponentScore_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FrontGearNum field - /// Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Front gear number. 1 is innermost. - /// Returns nullable byte representing the FrontGearNum field - public byte? GetFrontGearNum() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FrontGearNum field - /// Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Front gear number. 1 is innermost. - /// Nullable field value to be set - public void SetFrontGearNum(byte? frontGearNum_) - { - SetFieldValue(9, 0, frontGearNum_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FrontGear field - /// Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of front teeth. - /// Returns nullable byte representing the FrontGear field - public byte? GetFrontGear() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FrontGear field - /// Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of front teeth. - /// Nullable field value to be set - public void SetFrontGear(byte? frontGear_) - { - SetFieldValue(10, 0, frontGear_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RearGearNum field - /// Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Rear gear number. 1 is innermost. - /// Returns nullable byte representing the RearGearNum field - public byte? GetRearGearNum() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set RearGearNum field - /// Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Rear gear number. 1 is innermost. - /// Nullable field value to be set - public void SetRearGearNum(byte? rearGearNum_) - { - SetFieldValue(11, 0, rearGearNum_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RearGear field - /// Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of rear teeth. - /// Returns nullable byte representing the RearGear field - public byte? GetRearGear() - { - Object val = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set RearGear field - /// Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of rear teeth. - /// Nullable field value to be set - public void SetRearGear(byte? rearGear_) - { - SetFieldValue(12, 0, rearGear_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeviceIndex field - /// Returns nullable byte representing the DeviceIndex field - public byte? GetDeviceIndex() - { - Object val = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DeviceIndex field - /// Nullable field value to be set - public void SetDeviceIndex(byte? deviceIndex_) - { - SetFieldValue(13, 0, deviceIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RadarThreatLevelMax field - /// Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - /// Returns nullable RadarThreatLevelType enum representing the RadarThreatLevelMax field - public RadarThreatLevelType? GetRadarThreatLevelMax() - { - object obj = GetFieldValue(21, 0, Fit.SubfieldIndexMainField); - RadarThreatLevelType? value = obj == null ? (RadarThreatLevelType?)null : (RadarThreatLevelType)obj; - return value; - } - - /// - /// Set RadarThreatLevelMax field - /// Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - /// Nullable field value to be set - public void SetRadarThreatLevelMax(RadarThreatLevelType? radarThreatLevelMax_) - { - SetFieldValue(21, 0, radarThreatLevelMax_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RadarThreatCount field - /// Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - /// Returns nullable byte representing the RadarThreatCount field - public byte? GetRadarThreatCount() - { - Object val = GetFieldValue(22, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set RadarThreatCount field - /// Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - /// Nullable field value to be set - public void SetRadarThreatCount(byte? radarThreatCount_) - { - SetFieldValue(22, 0, radarThreatCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RadarThreatAvgApproachSpeed field - /// Units: m/s - /// Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - /// Returns nullable float representing the RadarThreatAvgApproachSpeed field - public float? GetRadarThreatAvgApproachSpeed() - { - Object val = GetFieldValue(23, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set RadarThreatAvgApproachSpeed field - /// Units: m/s - /// Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - /// Nullable field value to be set - public void SetRadarThreatAvgApproachSpeed(float? radarThreatAvgApproachSpeed_) - { - SetFieldValue(23, 0, radarThreatAvgApproachSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RadarThreatMaxApproachSpeed field - /// Units: m/s - /// Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - /// Returns nullable float representing the RadarThreatMaxApproachSpeed field - public float? GetRadarThreatMaxApproachSpeed() - { - Object val = GetFieldValue(24, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set RadarThreatMaxApproachSpeed field - /// Units: m/s - /// Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - /// Nullable field value to be set - public void SetRadarThreatMaxApproachSpeed(float? radarThreatMaxApproachSpeed_) - { - SetFieldValue(24, 0, radarThreatMaxApproachSpeed_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ExdDataConceptConfigurationMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ExdDataConceptConfigurationMesg.cs deleted file mode 100644 index cd30100aa..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ExdDataConceptConfigurationMesg.cs +++ /dev/null @@ -1,297 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the ExdDataConceptConfiguration profile message. - /// - public class ExdDataConceptConfigurationMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte ScreenIndex = 0; - public const byte ConceptField = 1; - public const byte FieldId = 2; - public const byte ConceptIndex = 3; - public const byte DataPage = 4; - public const byte ConceptKey = 5; - public const byte Scaling = 6; - public const byte DataUnits = 8; - public const byte Qualifier = 9; - public const byte Descriptor = 10; - public const byte IsSigned = 11; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public ExdDataConceptConfigurationMesg() : base(Profile.GetMesg(MesgNum.ExdDataConceptConfiguration)) - { - } - - public ExdDataConceptConfigurationMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the ScreenIndex field - /// Returns nullable byte representing the ScreenIndex field - public byte? GetScreenIndex() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ScreenIndex field - /// Nullable field value to be set - public void SetScreenIndex(byte? screenIndex_) - { - SetFieldValue(0, 0, screenIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ConceptField field - /// Returns nullable byte representing the ConceptField field - public byte? GetConceptField() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ConceptField field - /// Nullable field value to be set - public void SetConceptField(byte? conceptField_) - { - SetFieldValue(1, 0, conceptField_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FieldId field - /// Returns nullable byte representing the FieldId field - public byte? GetFieldId() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FieldId field - /// Nullable field value to be set - public void SetFieldId(byte? fieldId_) - { - SetFieldValue(2, 0, fieldId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ConceptIndex field - /// Returns nullable byte representing the ConceptIndex field - public byte? GetConceptIndex() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ConceptIndex field - /// Nullable field value to be set - public void SetConceptIndex(byte? conceptIndex_) - { - SetFieldValue(3, 0, conceptIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DataPage field - /// Returns nullable byte representing the DataPage field - public byte? GetDataPage() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DataPage field - /// Nullable field value to be set - public void SetDataPage(byte? dataPage_) - { - SetFieldValue(4, 0, dataPage_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ConceptKey field - /// Returns nullable byte representing the ConceptKey field - public byte? GetConceptKey() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ConceptKey field - /// Nullable field value to be set - public void SetConceptKey(byte? conceptKey_) - { - SetFieldValue(5, 0, conceptKey_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Scaling field - /// Returns nullable byte representing the Scaling field - public byte? GetScaling() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Scaling field - /// Nullable field value to be set - public void SetScaling(byte? scaling_) - { - SetFieldValue(6, 0, scaling_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DataUnits field - /// Returns nullable ExdDataUnits enum representing the DataUnits field - public ExdDataUnits? GetDataUnits() - { - object obj = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - ExdDataUnits? value = obj == null ? (ExdDataUnits?)null : (ExdDataUnits)obj; - return value; - } - - /// - /// Set DataUnits field - /// Nullable field value to be set - public void SetDataUnits(ExdDataUnits? dataUnits_) - { - SetFieldValue(8, 0, dataUnits_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Qualifier field - /// Returns nullable ExdQualifiers enum representing the Qualifier field - public ExdQualifiers? GetQualifier() - { - object obj = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - ExdQualifiers? value = obj == null ? (ExdQualifiers?)null : (ExdQualifiers)obj; - return value; - } - - /// - /// Set Qualifier field - /// Nullable field value to be set - public void SetQualifier(ExdQualifiers? qualifier_) - { - SetFieldValue(9, 0, qualifier_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Descriptor field - /// Returns nullable ExdDescriptors enum representing the Descriptor field - public ExdDescriptors? GetDescriptor() - { - object obj = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - ExdDescriptors? value = obj == null ? (ExdDescriptors?)null : (ExdDescriptors)obj; - return value; - } - - /// - /// Set Descriptor field - /// Nullable field value to be set - public void SetDescriptor(ExdDescriptors? descriptor_) - { - SetFieldValue(10, 0, descriptor_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the IsSigned field - /// Returns nullable Bool enum representing the IsSigned field - public Bool? GetIsSigned() - { - object obj = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set IsSigned field - /// Nullable field value to be set - public void SetIsSigned(Bool? isSigned_) - { - SetFieldValue(11, 0, isSigned_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ExdDataFieldConfigurationMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ExdDataFieldConfigurationMesg.cs deleted file mode 100644 index ac18b165a..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ExdDataFieldConfigurationMesg.cs +++ /dev/null @@ -1,221 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the ExdDataFieldConfiguration profile message. - /// - public class ExdDataFieldConfigurationMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte ScreenIndex = 0; - public const byte ConceptField = 1; - public const byte FieldId = 2; - public const byte ConceptCount = 3; - public const byte DisplayType = 4; - public const byte Title = 5; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public ExdDataFieldConfigurationMesg() : base(Profile.GetMesg(MesgNum.ExdDataFieldConfiguration)) - { - } - - public ExdDataFieldConfigurationMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the ScreenIndex field - /// Returns nullable byte representing the ScreenIndex field - public byte? GetScreenIndex() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ScreenIndex field - /// Nullable field value to be set - public void SetScreenIndex(byte? screenIndex_) - { - SetFieldValue(0, 0, screenIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ConceptField field - /// Returns nullable byte representing the ConceptField field - public byte? GetConceptField() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ConceptField field - /// Nullable field value to be set - public void SetConceptField(byte? conceptField_) - { - SetFieldValue(1, 0, conceptField_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FieldId field - /// Returns nullable byte representing the FieldId field - public byte? GetFieldId() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FieldId field - /// Nullable field value to be set - public void SetFieldId(byte? fieldId_) - { - SetFieldValue(2, 0, fieldId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ConceptCount field - /// Returns nullable byte representing the ConceptCount field - public byte? GetConceptCount() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ConceptCount field - /// Nullable field value to be set - public void SetConceptCount(byte? conceptCount_) - { - SetFieldValue(3, 0, conceptCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DisplayType field - /// Returns nullable ExdDisplayType enum representing the DisplayType field - public ExdDisplayType? GetDisplayType() - { - object obj = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - ExdDisplayType? value = obj == null ? (ExdDisplayType?)null : (ExdDisplayType)obj; - return value; - } - - /// - /// Set DisplayType field - /// Nullable field value to be set - public void SetDisplayType(ExdDisplayType? displayType_) - { - SetFieldValue(4, 0, displayType_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Title - public int GetNumTitle() - { - return GetNumFieldValues(5, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Title field - /// 0 based index of Title element to retrieve - /// Returns byte[] representing the Title field - public byte[] GetTitle(int index) - { - byte[] data = (byte[])GetFieldValue(5, index, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Title field - /// 0 based index of Title element to retrieve - /// Returns String representing the Title field - public String GetTitleAsString(int index) - { - byte[] data = (byte[])GetFieldValue(5, index, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Title field - /// 0 based index of Title element to retrieve - /// field value to be set - public void SetTitle(int index, String title_) - { - byte[] data = Encoding.UTF8.GetBytes(title_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(5, index, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Title field - /// 0 based index of title - /// field value to be set - public void SetTitle(int index, byte[] title_) - { - SetFieldValue(5, index, title_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ExdScreenConfigurationMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ExdScreenConfigurationMesg.cs deleted file mode 100644 index 513553c49..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ExdScreenConfigurationMesg.cs +++ /dev/null @@ -1,141 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the ExdScreenConfiguration profile message. - /// - public class ExdScreenConfigurationMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte ScreenIndex = 0; - public const byte FieldCount = 1; - public const byte Layout = 2; - public const byte ScreenEnabled = 3; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public ExdScreenConfigurationMesg() : base(Profile.GetMesg(MesgNum.ExdScreenConfiguration)) - { - } - - public ExdScreenConfigurationMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the ScreenIndex field - /// Returns nullable byte representing the ScreenIndex field - public byte? GetScreenIndex() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ScreenIndex field - /// Nullable field value to be set - public void SetScreenIndex(byte? screenIndex_) - { - SetFieldValue(0, 0, screenIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FieldCount field - /// Comment: number of fields in screen - /// Returns nullable byte representing the FieldCount field - public byte? GetFieldCount() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FieldCount field - /// Comment: number of fields in screen - /// Nullable field value to be set - public void SetFieldCount(byte? fieldCount_) - { - SetFieldValue(1, 0, fieldCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Layout field - /// Returns nullable ExdLayout enum representing the Layout field - public ExdLayout? GetLayout() - { - object obj = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - ExdLayout? value = obj == null ? (ExdLayout?)null : (ExdLayout)obj; - return value; - } - - /// - /// Set Layout field - /// Nullable field value to be set - public void SetLayout(ExdLayout? layout_) - { - SetFieldValue(2, 0, layout_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ScreenEnabled field - /// Returns nullable Bool enum representing the ScreenEnabled field - public Bool? GetScreenEnabled() - { - object obj = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set ScreenEnabled field - /// Nullable field value to be set - public void SetScreenEnabled(Bool? screenEnabled_) - { - SetFieldValue(3, 0, screenEnabled_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ExerciseTitleMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ExerciseTitleMesg.cs deleted file mode 100644 index a463e55f0..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ExerciseTitleMesg.cs +++ /dev/null @@ -1,178 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the ExerciseTitle profile message. - /// - public class ExerciseTitleMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte ExerciseCategory = 0; - public const byte ExerciseName = 1; - public const byte WktStepName = 2; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public ExerciseTitleMesg() : base(Profile.GetMesg(MesgNum.ExerciseTitle)) - { - } - - public ExerciseTitleMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ExerciseCategory field - /// Returns nullable ushort representing the ExerciseCategory field - public ushort? GetExerciseCategory() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ExerciseCategory field - /// Nullable field value to be set - public void SetExerciseCategory(ushort? exerciseCategory_) - { - SetFieldValue(0, 0, exerciseCategory_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ExerciseName field - /// Returns nullable ushort representing the ExerciseName field - public ushort? GetExerciseName() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ExerciseName field - /// Nullable field value to be set - public void SetExerciseName(ushort? exerciseName_) - { - SetFieldValue(1, 0, exerciseName_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field WktStepName - public int GetNumWktStepName() - { - return GetNumFieldValues(2, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WktStepName field - /// 0 based index of WktStepName element to retrieve - /// Returns byte[] representing the WktStepName field - public byte[] GetWktStepName(int index) - { - byte[] data = (byte[])GetFieldValue(2, index, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the WktStepName field - /// 0 based index of WktStepName element to retrieve - /// Returns String representing the WktStepName field - public String GetWktStepNameAsString(int index) - { - byte[] data = (byte[])GetFieldValue(2, index, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set WktStepName field - /// 0 based index of WktStepName element to retrieve - /// field value to be set - public void SetWktStepName(int index, String wktStepName_) - { - byte[] data = Encoding.UTF8.GetBytes(wktStepName_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(2, index, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set WktStepName field - /// 0 based index of wkt_step_name - /// field value to be set - public void SetWktStepName(int index, byte[] wktStepName_) - { - SetFieldValue(2, index, wktStepName_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/FieldCapabilitiesMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/FieldCapabilitiesMesg.cs deleted file mode 100644 index f8fd29340..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/FieldCapabilitiesMesg.cs +++ /dev/null @@ -1,168 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the FieldCapabilities profile message. - /// - public class FieldCapabilitiesMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte File = 0; - public const byte MesgNum = 1; - public const byte FieldNum = 2; - public const byte Count = 3; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public FieldCapabilitiesMesg() : base(Profile.GetMesg(MesgNum.FieldCapabilities)) - { - } - - public FieldCapabilitiesMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the File field - /// Returns nullable File enum representing the File field - public File? GetFile() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - File? value = obj == null ? (File?)null : (File)obj; - return value; - } - - /// - /// Set File field - /// Nullable field value to be set - public void SetFile(File? file_) - { - SetFieldValue(0, 0, file_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MesgNum field - /// Returns nullable ushort representing the MesgNum field - public ushort? GetMesgNum() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MesgNum field - /// Nullable field value to be set - public void SetMesgNum(ushort? mesgNum_) - { - SetFieldValue(1, 0, mesgNum_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FieldNum field - /// Returns nullable byte representing the FieldNum field - public byte? GetFieldNum() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FieldNum field - /// Nullable field value to be set - public void SetFieldNum(byte? fieldNum_) - { - SetFieldValue(2, 0, fieldNum_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Count field - /// Returns nullable ushort representing the Count field - public ushort? GetCount() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Count field - /// Nullable field value to be set - public void SetCount(ushort? count_) - { - SetFieldValue(3, 0, count_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/FieldDescriptionMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/FieldDescriptionMesg.cs deleted file mode 100644 index 31b24f053..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/FieldDescriptionMesg.cs +++ /dev/null @@ -1,492 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the FieldDescription profile message. - /// - public class FieldDescriptionMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte DeveloperDataIndex = 0; - public const byte FieldDefinitionNumber = 1; - public const byte FitBaseTypeId = 2; - public const byte FieldName = 3; - public const byte Array = 4; - public const byte Components = 5; - public const byte Scale = 6; - public const byte Offset = 7; - public const byte Units = 8; - public const byte Bits = 9; - public const byte Accumulate = 10; - public const byte FitBaseUnitId = 13; - public const byte NativeMesgNum = 14; - public const byte NativeFieldNum = 15; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public FieldDescriptionMesg() : base(Profile.GetMesg(MesgNum.FieldDescription)) - { - } - - public FieldDescriptionMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the DeveloperDataIndex field - /// Returns nullable byte representing the DeveloperDataIndex field - public byte? GetDeveloperDataIndex() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DeveloperDataIndex field - /// Nullable field value to be set - public void SetDeveloperDataIndex(byte? developerDataIndex_) - { - SetFieldValue(0, 0, developerDataIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FieldDefinitionNumber field - /// Returns nullable byte representing the FieldDefinitionNumber field - public byte? GetFieldDefinitionNumber() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FieldDefinitionNumber field - /// Nullable field value to be set - public void SetFieldDefinitionNumber(byte? fieldDefinitionNumber_) - { - SetFieldValue(1, 0, fieldDefinitionNumber_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FitBaseTypeId field - /// Returns nullable byte representing the FitBaseTypeId field - public byte? GetFitBaseTypeId() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FitBaseTypeId field - /// Nullable field value to be set - public void SetFitBaseTypeId(byte? fitBaseTypeId_) - { - SetFieldValue(2, 0, fitBaseTypeId_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field FieldName - public int GetNumFieldName() - { - return GetNumFieldValues(3, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FieldName field - /// 0 based index of FieldName element to retrieve - /// Returns byte[] representing the FieldName field - public byte[] GetFieldName(int index) - { - byte[] data = (byte[])GetFieldValue(3, index, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the FieldName field - /// 0 based index of FieldName element to retrieve - /// Returns String representing the FieldName field - public String GetFieldNameAsString(int index) - { - byte[] data = (byte[])GetFieldValue(3, index, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set FieldName field - /// 0 based index of FieldName element to retrieve - /// field value to be set - public void SetFieldName(int index, String fieldName_) - { - byte[] data = Encoding.UTF8.GetBytes(fieldName_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(3, index, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set FieldName field - /// 0 based index of field_name - /// field value to be set - public void SetFieldName(int index, byte[] fieldName_) - { - SetFieldValue(3, index, fieldName_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Array field - /// Returns nullable byte representing the Array field - public byte? GetArray() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Array field - /// Nullable field value to be set - public void SetArray(byte? array_) - { - SetFieldValue(4, 0, array_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Components field - /// Returns byte[] representing the Components field - public byte[] GetComponents() - { - byte[] data = (byte[])GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Components field - /// Returns String representing the Components field - public String GetComponentsAsString() - { - byte[] data = (byte[])GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Components field - /// field value to be set - public void SetComponents(String components_) - { - byte[] data = Encoding.UTF8.GetBytes(components_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(5, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Components field - /// field value to be set - public void SetComponents(byte[] components_) - { - SetFieldValue(5, 0, components_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Scale field - /// Returns nullable byte representing the Scale field - public byte? GetScale() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Scale field - /// Nullable field value to be set - public void SetScale(byte? scale_) - { - SetFieldValue(6, 0, scale_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Offset field - /// Returns nullable sbyte representing the Offset field - public sbyte? GetOffset() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set Offset field - /// Nullable field value to be set - public void SetOffset(sbyte? offset_) - { - SetFieldValue(7, 0, offset_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Units - public int GetNumUnits() - { - return GetNumFieldValues(8, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Units field - /// 0 based index of Units element to retrieve - /// Returns byte[] representing the Units field - public byte[] GetUnits(int index) - { - byte[] data = (byte[])GetFieldValue(8, index, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Units field - /// 0 based index of Units element to retrieve - /// Returns String representing the Units field - public String GetUnitsAsString(int index) - { - byte[] data = (byte[])GetFieldValue(8, index, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Units field - /// 0 based index of Units element to retrieve - /// field value to be set - public void SetUnits(int index, String units_) - { - byte[] data = Encoding.UTF8.GetBytes(units_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(8, index, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Units field - /// 0 based index of units - /// field value to be set - public void SetUnits(int index, byte[] units_) - { - SetFieldValue(8, index, units_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Bits field - /// Returns byte[] representing the Bits field - public byte[] GetBits() - { - byte[] data = (byte[])GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Bits field - /// Returns String representing the Bits field - public String GetBitsAsString() - { - byte[] data = (byte[])GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Bits field - /// field value to be set - public void SetBits(String bits_) - { - byte[] data = Encoding.UTF8.GetBytes(bits_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(9, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Bits field - /// field value to be set - public void SetBits(byte[] bits_) - { - SetFieldValue(9, 0, bits_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Accumulate field - /// Returns byte[] representing the Accumulate field - public byte[] GetAccumulate() - { - byte[] data = (byte[])GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Accumulate field - /// Returns String representing the Accumulate field - public String GetAccumulateAsString() - { - byte[] data = (byte[])GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Accumulate field - /// field value to be set - public void SetAccumulate(String accumulate_) - { - byte[] data = Encoding.UTF8.GetBytes(accumulate_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(10, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Accumulate field - /// field value to be set - public void SetAccumulate(byte[] accumulate_) - { - SetFieldValue(10, 0, accumulate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FitBaseUnitId field - /// Returns nullable ushort representing the FitBaseUnitId field - public ushort? GetFitBaseUnitId() - { - Object val = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set FitBaseUnitId field - /// Nullable field value to be set - public void SetFitBaseUnitId(ushort? fitBaseUnitId_) - { - SetFieldValue(13, 0, fitBaseUnitId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NativeMesgNum field - /// Returns nullable ushort representing the NativeMesgNum field - public ushort? GetNativeMesgNum() - { - Object val = GetFieldValue(14, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NativeMesgNum field - /// Nullable field value to be set - public void SetNativeMesgNum(ushort? nativeMesgNum_) - { - SetFieldValue(14, 0, nativeMesgNum_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NativeFieldNum field - /// Returns nullable byte representing the NativeFieldNum field - public byte? GetNativeFieldNum() - { - Object val = GetFieldValue(15, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set NativeFieldNum field - /// Nullable field value to be set - public void SetNativeFieldNum(byte? nativeFieldNum_) - { - SetFieldValue(15, 0, nativeFieldNum_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/FileCapabilitiesMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/FileCapabilitiesMesg.cs deleted file mode 100644 index df16f6c34..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/FileCapabilitiesMesg.cs +++ /dev/null @@ -1,209 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the FileCapabilities profile message. - /// - public class FileCapabilitiesMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Type = 0; - public const byte Flags = 1; - public const byte Directory = 2; - public const byte MaxCount = 3; - public const byte MaxSize = 4; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public FileCapabilitiesMesg() : base(Profile.GetMesg(MesgNum.FileCapabilities)) - { - } - - public FileCapabilitiesMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Type field - /// Returns nullable File enum representing the Type field - new public File? GetType() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - File? value = obj == null ? (File?)null : (File)obj; - return value; - } - - /// - /// Set Type field - /// Nullable field value to be set - public void SetType(File? type_) - { - SetFieldValue(0, 0, type_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Flags field - /// Returns nullable byte representing the Flags field - public byte? GetFlags() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Flags field - /// Nullable field value to be set - public void SetFlags(byte? flags_) - { - SetFieldValue(1, 0, flags_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Directory field - /// Returns byte[] representing the Directory field - public byte[] GetDirectory() - { - byte[] data = (byte[])GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Directory field - /// Returns String representing the Directory field - public String GetDirectoryAsString() - { - byte[] data = (byte[])GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Directory field - /// field value to be set - public void SetDirectory(String directory_) - { - byte[] data = Encoding.UTF8.GetBytes(directory_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(2, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Directory field - /// field value to be set - public void SetDirectory(byte[] directory_) - { - SetFieldValue(2, 0, directory_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxCount field - /// Returns nullable ushort representing the MaxCount field - public ushort? GetMaxCount() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MaxCount field - /// Nullable field value to be set - public void SetMaxCount(ushort? maxCount_) - { - SetFieldValue(3, 0, maxCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxSize field - /// Units: bytes - /// Returns nullable uint representing the MaxSize field - public uint? GetMaxSize() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set MaxSize field - /// Units: bytes - /// Nullable field value to be set - public void SetMaxSize(uint? maxSize_) - { - SetFieldValue(4, 0, maxSize_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/FileCreatorMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/FileCreatorMesg.cs deleted file mode 100644 index 7b5c63529..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/FileCreatorMesg.cs +++ /dev/null @@ -1,101 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the FileCreator profile message. - /// - public class FileCreatorMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte SoftwareVersion = 0; - public const byte HardwareVersion = 1; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public FileCreatorMesg() : base(Profile.GetMesg(MesgNum.FileCreator)) - { - } - - public FileCreatorMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the SoftwareVersion field - /// Returns nullable ushort representing the SoftwareVersion field - public ushort? GetSoftwareVersion() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set SoftwareVersion field - /// Nullable field value to be set - public void SetSoftwareVersion(ushort? softwareVersion_) - { - SetFieldValue(0, 0, softwareVersion_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HardwareVersion field - /// Returns nullable byte representing the HardwareVersion field - public byte? GetHardwareVersion() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HardwareVersion field - /// Nullable field value to be set - public void SetHardwareVersion(byte? hardwareVersion_) - { - SetFieldValue(1, 0, hardwareVersion_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/FileIdMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/FileIdMesg.cs deleted file mode 100644 index 28ad9bb91..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/FileIdMesg.cs +++ /dev/null @@ -1,295 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the FileId profile message. - /// - public class FileIdMesg : Mesg - { - #region Fields - static class ProductSubfield - { - public static ushort FaveroProduct = 0; - public static ushort GarminProduct = 1; - public static ushort Subfields = 2; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Type = 0; - public const byte Manufacturer = 1; - public const byte Product = 2; - public const byte SerialNumber = 3; - public const byte TimeCreated = 4; - public const byte Number = 5; - public const byte ProductName = 8; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public FileIdMesg() : base(Profile.GetMesg(MesgNum.FileId)) - { - } - - public FileIdMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Type field - /// Returns nullable File enum representing the Type field - new public File? GetType() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - File? value = obj == null ? (File?)null : (File)obj; - return value; - } - - /// - /// Set Type field - /// Nullable field value to be set - public void SetType(File? type_) - { - SetFieldValue(0, 0, type_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Manufacturer field - /// Returns nullable ushort representing the Manufacturer field - public ushort? GetManufacturer() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Manufacturer field - /// Nullable field value to be set - public void SetManufacturer(ushort? manufacturer_) - { - SetFieldValue(1, 0, manufacturer_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Product field - /// Returns nullable ushort representing the Product field - public ushort? GetProduct() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Product field - /// Nullable field value to be set - public void SetProduct(ushort? product_) - { - SetFieldValue(2, 0, product_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the FaveroProduct subfield - /// Nullable ushort representing the FaveroProduct subfield - public ushort? GetFaveroProduct() - { - Object val = GetFieldValue(2, 0, ProductSubfield.FaveroProduct); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set FaveroProduct subfield - /// Subfield value to be set - public void SetFaveroProduct(ushort? faveroProduct) - { - SetFieldValue(2, 0, faveroProduct, ProductSubfield.FaveroProduct); - } - - /// - /// Retrieves the GarminProduct subfield - /// Nullable ushort representing the GarminProduct subfield - public ushort? GetGarminProduct() - { - Object val = GetFieldValue(2, 0, ProductSubfield.GarminProduct); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set GarminProduct subfield - /// Subfield value to be set - public void SetGarminProduct(ushort? garminProduct) - { - SetFieldValue(2, 0, garminProduct, ProductSubfield.GarminProduct); - } - /// - /// Retrieves the SerialNumber field - /// Returns nullable uint representing the SerialNumber field - public uint? GetSerialNumber() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set SerialNumber field - /// Nullable field value to be set - public void SetSerialNumber(uint? serialNumber_) - { - SetFieldValue(3, 0, serialNumber_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeCreated field - /// Comment: Only set for files that are can be created/erased. - /// Returns DateTime representing the TimeCreated field - public DateTime GetTimeCreated() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set TimeCreated field - /// Comment: Only set for files that are can be created/erased. - /// Nullable field value to be set - public void SetTimeCreated(DateTime timeCreated_) - { - SetFieldValue(4, 0, timeCreated_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Number field - /// Comment: Only set for files that are not created/erased. - /// Returns nullable ushort representing the Number field - public ushort? GetNumber() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Number field - /// Comment: Only set for files that are not created/erased. - /// Nullable field value to be set - public void SetNumber(ushort? number_) - { - SetFieldValue(5, 0, number_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ProductName field - /// Comment: Optional free form string to indicate the devices name or model - /// Returns byte[] representing the ProductName field - public byte[] GetProductName() - { - byte[] data = (byte[])GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the ProductName field - /// Comment: Optional free form string to indicate the devices name or model - /// Returns String representing the ProductName field - public String GetProductNameAsString() - { - byte[] data = (byte[])GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set ProductName field - /// Comment: Optional free form string to indicate the devices name or model - /// field value to be set - public void SetProductName(String productName_) - { - byte[] data = Encoding.UTF8.GetBytes(productName_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(8, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set ProductName field - /// Comment: Optional free form string to indicate the devices name or model - /// field value to be set - public void SetProductName(byte[] productName_) - { - SetFieldValue(8, 0, productName_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/GoalMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/GoalMesg.cs deleted file mode 100644 index 74afac5b9..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/GoalMesg.cs +++ /dev/null @@ -1,330 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Goal profile message. - /// - public class GoalMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Sport = 0; - public const byte SubSport = 1; - public const byte StartDate = 2; - public const byte EndDate = 3; - public const byte Type = 4; - public const byte Value = 5; - public const byte Repeat = 6; - public const byte TargetValue = 7; - public const byte Recurrence = 8; - public const byte RecurrenceValue = 9; - public const byte Enabled = 10; - public const byte Source = 11; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public GoalMesg() : base(Profile.GetMesg(MesgNum.Goal)) - { - } - - public GoalMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sport field - /// Returns nullable Sport enum representing the Sport field - public Sport? GetSport() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Sport? value = obj == null ? (Sport?)null : (Sport)obj; - return value; - } - - /// - /// Set Sport field - /// Nullable field value to be set - public void SetSport(Sport? sport_) - { - SetFieldValue(0, 0, sport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SubSport field - /// Returns nullable SubSport enum representing the SubSport field - public SubSport? GetSubSport() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - SubSport? value = obj == null ? (SubSport?)null : (SubSport)obj; - return value; - } - - /// - /// Set SubSport field - /// Nullable field value to be set - public void SetSubSport(SubSport? subSport_) - { - SetFieldValue(1, 0, subSport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartDate field - /// Returns DateTime representing the StartDate field - public DateTime GetStartDate() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set StartDate field - /// Nullable field value to be set - public void SetStartDate(DateTime startDate_) - { - SetFieldValue(2, 0, startDate_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EndDate field - /// Returns DateTime representing the EndDate field - public DateTime GetEndDate() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set EndDate field - /// Nullable field value to be set - public void SetEndDate(DateTime endDate_) - { - SetFieldValue(3, 0, endDate_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Type field - /// Returns nullable Goal enum representing the Type field - new public Goal? GetType() - { - object obj = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - Goal? value = obj == null ? (Goal?)null : (Goal)obj; - return value; - } - - /// - /// Set Type field - /// Nullable field value to be set - public void SetType(Goal? type_) - { - SetFieldValue(4, 0, type_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Value field - /// Returns nullable uint representing the Value field - public uint? GetValue() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set Value field - /// Nullable field value to be set - public void SetValue(uint? value_) - { - SetFieldValue(5, 0, value_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Repeat field - /// Returns nullable Bool enum representing the Repeat field - public Bool? GetRepeat() - { - object obj = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set Repeat field - /// Nullable field value to be set - public void SetRepeat(Bool? repeat_) - { - SetFieldValue(6, 0, repeat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TargetValue field - /// Returns nullable uint representing the TargetValue field - public uint? GetTargetValue() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TargetValue field - /// Nullable field value to be set - public void SetTargetValue(uint? targetValue_) - { - SetFieldValue(7, 0, targetValue_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Recurrence field - /// Returns nullable GoalRecurrence enum representing the Recurrence field - public GoalRecurrence? GetRecurrence() - { - object obj = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - GoalRecurrence? value = obj == null ? (GoalRecurrence?)null : (GoalRecurrence)obj; - return value; - } - - /// - /// Set Recurrence field - /// Nullable field value to be set - public void SetRecurrence(GoalRecurrence? recurrence_) - { - SetFieldValue(8, 0, recurrence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RecurrenceValue field - /// Returns nullable ushort representing the RecurrenceValue field - public ushort? GetRecurrenceValue() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set RecurrenceValue field - /// Nullable field value to be set - public void SetRecurrenceValue(ushort? recurrenceValue_) - { - SetFieldValue(9, 0, recurrenceValue_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Enabled field - /// Returns nullable Bool enum representing the Enabled field - public Bool? GetEnabled() - { - object obj = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set Enabled field - /// Nullable field value to be set - public void SetEnabled(Bool? enabled_) - { - SetFieldValue(10, 0, enabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Source field - /// Returns nullable GoalSource enum representing the Source field - public GoalSource? GetSource() - { - object obj = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - GoalSource? value = obj == null ? (GoalSource?)null : (GoalSource)obj; - return value; - } - - /// - /// Set Source field - /// Nullable field value to be set - public void SetSource(GoalSource? source_) - { - SetFieldValue(11, 0, source_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/GpsMetadataMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/GpsMetadataMesg.cs deleted file mode 100644 index 9c8539f46..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/GpsMetadataMesg.cs +++ /dev/null @@ -1,307 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the GpsMetadata profile message. - /// - public class GpsMetadataMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte TimestampMs = 0; - public const byte PositionLat = 1; - public const byte PositionLong = 2; - public const byte EnhancedAltitude = 3; - public const byte EnhancedSpeed = 4; - public const byte Heading = 5; - public const byte UtcTimestamp = 6; - public const byte Velocity = 7; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public GpsMetadataMesg() : base(Profile.GetMesg(MesgNum.GpsMetadata)) - { - } - - public GpsMetadataMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp. - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp. - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Returns nullable ushort representing the TimestampMs field - public ushort? GetTimestampMs() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Nullable field value to be set - public void SetTimestampMs(ushort? timestampMs_) - { - SetFieldValue(0, 0, timestampMs_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLat field - /// Units: semicircles - /// Returns nullable int representing the PositionLat field - public int? GetPositionLat() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLat(int? positionLat_) - { - SetFieldValue(1, 0, positionLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLong field - /// Units: semicircles - /// Returns nullable int representing the PositionLong field - public int? GetPositionLong() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLong(int? positionLong_) - { - SetFieldValue(2, 0, positionLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedAltitude field - /// Units: m - /// Returns nullable float representing the EnhancedAltitude field - public float? GetEnhancedAltitude() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedAltitude field - /// Units: m - /// Nullable field value to be set - public void SetEnhancedAltitude(float? enhancedAltitude_) - { - SetFieldValue(3, 0, enhancedAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedSpeed field - /// Units: m/s - /// Returns nullable float representing the EnhancedSpeed field - public float? GetEnhancedSpeed() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetEnhancedSpeed(float? enhancedSpeed_) - { - SetFieldValue(4, 0, enhancedSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Heading field - /// Units: degrees - /// Returns nullable float representing the Heading field - public float? GetHeading() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Heading field - /// Units: degrees - /// Nullable field value to be set - public void SetHeading(float? heading_) - { - SetFieldValue(5, 0, heading_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the UtcTimestamp field - /// Units: s - /// Comment: Used to correlate UTC to system time if the timestamp of the message is in system time. This UTC time is derived from the GPS data. - /// Returns DateTime representing the UtcTimestamp field - public DateTime GetUtcTimestamp() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set UtcTimestamp field - /// Units: s - /// Comment: Used to correlate UTC to system time if the timestamp of the message is in system time. This UTC time is derived from the GPS data. - /// Nullable field value to be set - public void SetUtcTimestamp(DateTime utcTimestamp_) - { - SetFieldValue(6, 0, utcTimestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Velocity - public int GetNumVelocity() - { - return GetNumFieldValues(7, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Velocity field - /// Units: m/s - /// Comment: velocity[0] is lon velocity. Velocity[1] is lat velocity. Velocity[2] is altitude velocity. - /// 0 based index of Velocity element to retrieve - /// Returns nullable float representing the Velocity field - public float? GetVelocity(int index) - { - Object val = GetFieldValue(7, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Velocity field - /// Units: m/s - /// Comment: velocity[0] is lon velocity. Velocity[1] is lat velocity. Velocity[2] is altitude velocity. - /// 0 based index of velocity - /// Nullable field value to be set - public void SetVelocity(int index, float? velocity_) - { - SetFieldValue(7, index, velocity_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/GyroscopeDataMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/GyroscopeDataMesg.cs deleted file mode 100644 index 608e38cc0..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/GyroscopeDataMesg.cs +++ /dev/null @@ -1,389 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the GyroscopeData profile message. - /// - public class GyroscopeDataMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte TimestampMs = 0; - public const byte SampleTimeOffset = 1; - public const byte GyroX = 2; - public const byte GyroY = 3; - public const byte GyroZ = 4; - public const byte CalibratedGyroX = 5; - public const byte CalibratedGyroY = 6; - public const byte CalibratedGyroZ = 7; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public GyroscopeDataMesg() : base(Profile.GetMesg(MesgNum.GyroscopeData)) - { - } - - public GyroscopeDataMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Returns nullable ushort representing the TimestampMs field - public ushort? GetTimestampMs() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Nullable field value to be set - public void SetTimestampMs(ushort? timestampMs_) - { - SetFieldValue(0, 0, timestampMs_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field SampleTimeOffset - public int GetNumSampleTimeOffset() - { - return GetNumFieldValues(1, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SampleTimeOffset field - /// Units: ms - /// Comment: Each time in the array describes the time at which the gyro sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in gyro_x and gyro_y and gyro_z - /// 0 based index of SampleTimeOffset element to retrieve - /// Returns nullable ushort representing the SampleTimeOffset field - public ushort? GetSampleTimeOffset(int index) - { - Object val = GetFieldValue(1, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set SampleTimeOffset field - /// Units: ms - /// Comment: Each time in the array describes the time at which the gyro sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in gyro_x and gyro_y and gyro_z - /// 0 based index of sample_time_offset - /// Nullable field value to be set - public void SetSampleTimeOffset(int index, ushort? sampleTimeOffset_) - { - SetFieldValue(1, index, sampleTimeOffset_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field GyroX - public int GetNumGyroX() - { - return GetNumFieldValues(2, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GyroX field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of GyroX element to retrieve - /// Returns nullable ushort representing the GyroX field - public ushort? GetGyroX(int index) - { - Object val = GetFieldValue(2, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set GyroX field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of gyro_x - /// Nullable field value to be set - public void SetGyroX(int index, ushort? gyroX_) - { - SetFieldValue(2, index, gyroX_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field GyroY - public int GetNumGyroY() - { - return GetNumFieldValues(3, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GyroY field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of GyroY element to retrieve - /// Returns nullable ushort representing the GyroY field - public ushort? GetGyroY(int index) - { - Object val = GetFieldValue(3, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set GyroY field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of gyro_y - /// Nullable field value to be set - public void SetGyroY(int index, ushort? gyroY_) - { - SetFieldValue(3, index, gyroY_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field GyroZ - public int GetNumGyroZ() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GyroZ field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of GyroZ element to retrieve - /// Returns nullable ushort representing the GyroZ field - public ushort? GetGyroZ(int index) - { - Object val = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set GyroZ field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of gyro_z - /// Nullable field value to be set - public void SetGyroZ(int index, ushort? gyroZ_) - { - SetFieldValue(4, index, gyroZ_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CalibratedGyroX - public int GetNumCalibratedGyroX() - { - return GetNumFieldValues(5, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CalibratedGyroX field - /// Units: deg/s - /// Comment: Calibrated gyro reading - /// 0 based index of CalibratedGyroX element to retrieve - /// Returns nullable float representing the CalibratedGyroX field - public float? GetCalibratedGyroX(int index) - { - Object val = GetFieldValue(5, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CalibratedGyroX field - /// Units: deg/s - /// Comment: Calibrated gyro reading - /// 0 based index of calibrated_gyro_x - /// Nullable field value to be set - public void SetCalibratedGyroX(int index, float? calibratedGyroX_) - { - SetFieldValue(5, index, calibratedGyroX_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CalibratedGyroY - public int GetNumCalibratedGyroY() - { - return GetNumFieldValues(6, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CalibratedGyroY field - /// Units: deg/s - /// Comment: Calibrated gyro reading - /// 0 based index of CalibratedGyroY element to retrieve - /// Returns nullable float representing the CalibratedGyroY field - public float? GetCalibratedGyroY(int index) - { - Object val = GetFieldValue(6, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CalibratedGyroY field - /// Units: deg/s - /// Comment: Calibrated gyro reading - /// 0 based index of calibrated_gyro_y - /// Nullable field value to be set - public void SetCalibratedGyroY(int index, float? calibratedGyroY_) - { - SetFieldValue(6, index, calibratedGyroY_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CalibratedGyroZ - public int GetNumCalibratedGyroZ() - { - return GetNumFieldValues(7, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CalibratedGyroZ field - /// Units: deg/s - /// Comment: Calibrated gyro reading - /// 0 based index of CalibratedGyroZ element to retrieve - /// Returns nullable float representing the CalibratedGyroZ field - public float? GetCalibratedGyroZ(int index) - { - Object val = GetFieldValue(7, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CalibratedGyroZ field - /// Units: deg/s - /// Comment: Calibrated gyro reading - /// 0 based index of calibrated_gyro_z - /// Nullable field value to be set - public void SetCalibratedGyroZ(int index, float? calibratedGyroZ_) - { - SetFieldValue(7, index, calibratedGyroZ_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/HrMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/HrMesg.cs deleted file mode 100644 index 91b051905..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/HrMesg.cs +++ /dev/null @@ -1,241 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Hr profile message. - /// - public class HrMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte FractionalTimestamp = 0; - public const byte Time256 = 1; - public const byte FilteredBpm = 6; - public const byte EventTimestamp = 9; - public const byte EventTimestamp12 = 10; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public HrMesg() : base(Profile.GetMesg(MesgNum.Hr)) - { - } - - public HrMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FractionalTimestamp field - /// Units: s - /// Returns nullable float representing the FractionalTimestamp field - public float? GetFractionalTimestamp() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set FractionalTimestamp field - /// Units: s - /// Nullable field value to be set - public void SetFractionalTimestamp(float? fractionalTimestamp_) - { - SetFieldValue(0, 0, fractionalTimestamp_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Time256 field - /// Units: s - /// Returns nullable float representing the Time256 field - public float? GetTime256() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Time256 field - /// Units: s - /// Nullable field value to be set - public void SetTime256(float? time256_) - { - SetFieldValue(1, 0, time256_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field FilteredBpm - public int GetNumFilteredBpm() - { - return GetNumFieldValues(6, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FilteredBpm field - /// Units: bpm - /// 0 based index of FilteredBpm element to retrieve - /// Returns nullable byte representing the FilteredBpm field - public byte? GetFilteredBpm(int index) - { - Object val = GetFieldValue(6, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FilteredBpm field - /// Units: bpm - /// 0 based index of filtered_bpm - /// Nullable field value to be set - public void SetFilteredBpm(int index, byte? filteredBpm_) - { - SetFieldValue(6, index, filteredBpm_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field EventTimestamp - public int GetNumEventTimestamp() - { - return GetNumFieldValues(9, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventTimestamp field - /// Units: s - /// 0 based index of EventTimestamp element to retrieve - /// Returns nullable float representing the EventTimestamp field - public float? GetEventTimestamp(int index) - { - Object val = GetFieldValue(9, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EventTimestamp field - /// Units: s - /// 0 based index of event_timestamp - /// Nullable field value to be set - public void SetEventTimestamp(int index, float? eventTimestamp_) - { - SetFieldValue(9, index, eventTimestamp_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field EventTimestamp12 - public int GetNumEventTimestamp12() - { - return GetNumFieldValues(10, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventTimestamp12 field - /// 0 based index of EventTimestamp12 element to retrieve - /// Returns nullable byte representing the EventTimestamp12 field - public byte? GetEventTimestamp12(int index) - { - Object val = GetFieldValue(10, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set EventTimestamp12 field - /// 0 based index of event_timestamp_12 - /// Nullable field value to be set - public void SetEventTimestamp12(int index, byte? eventTimestamp12_) - { - SetFieldValue(10, index, eventTimestamp12_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/HrZoneMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/HrZoneMesg.cs deleted file mode 100644 index 1c5c003b9..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/HrZoneMesg.cs +++ /dev/null @@ -1,142 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the HrZone profile message. - /// - public class HrZoneMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte HighBpm = 1; - public const byte Name = 2; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public HrZoneMesg() : base(Profile.GetMesg(MesgNum.HrZone)) - { - } - - public HrZoneMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HighBpm field - /// Units: bpm - /// Returns nullable byte representing the HighBpm field - public byte? GetHighBpm() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HighBpm field - /// Units: bpm - /// Nullable field value to be set - public void SetHighBpm(byte? highBpm_) - { - SetFieldValue(1, 0, highBpm_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(2, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(2, 0, name_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/HrmProfileMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/HrmProfileMesg.cs deleted file mode 100644 index 5b1dca060..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/HrmProfileMesg.cs +++ /dev/null @@ -1,163 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the HrmProfile profile message. - /// - public class HrmProfileMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Enabled = 0; - public const byte HrmAntId = 1; - public const byte LogHrv = 2; - public const byte HrmAntIdTransType = 3; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public HrmProfileMesg() : base(Profile.GetMesg(MesgNum.HrmProfile)) - { - } - - public HrmProfileMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Enabled field - /// Returns nullable Bool enum representing the Enabled field - public Bool? GetEnabled() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set Enabled field - /// Nullable field value to be set - public void SetEnabled(Bool? enabled_) - { - SetFieldValue(0, 0, enabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HrmAntId field - /// Returns nullable ushort representing the HrmAntId field - public ushort? GetHrmAntId() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set HrmAntId field - /// Nullable field value to be set - public void SetHrmAntId(ushort? hrmAntId_) - { - SetFieldValue(1, 0, hrmAntId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LogHrv field - /// Returns nullable Bool enum representing the LogHrv field - public Bool? GetLogHrv() - { - object obj = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set LogHrv field - /// Nullable field value to be set - public void SetLogHrv(Bool? logHrv_) - { - SetFieldValue(2, 0, logHrv_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HrmAntIdTransType field - /// Returns nullable byte representing the HrmAntIdTransType field - public byte? GetHrmAntIdTransType() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HrmAntIdTransType field - /// Nullable field value to be set - public void SetHrmAntIdTransType(byte? hrmAntIdTransType_) - { - SetFieldValue(3, 0, hrmAntIdTransType_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/HrvMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/HrvMesg.cs deleted file mode 100644 index a4f4f85ba..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/HrvMesg.cs +++ /dev/null @@ -1,93 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Hrv profile message. - /// - public class HrvMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Time = 0; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public HrvMesg() : base(Profile.GetMesg(MesgNum.Hrv)) - { - } - - public HrvMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - - /// - /// - /// - /// returns number of elements in field Time - public int GetNumTime() - { - return GetNumFieldValues(0, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Time field - /// Units: s - /// Comment: Time between beats - /// 0 based index of Time element to retrieve - /// Returns nullable float representing the Time field - public float? GetTime(int index) - { - Object val = GetFieldValue(0, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Time field - /// Units: s - /// Comment: Time between beats - /// 0 based index of time - /// Nullable field value to be set - public void SetTime(int index, float? time_) - { - SetFieldValue(0, index, time_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/JumpMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/JumpMesg.cs deleted file mode 100644 index 5d1e0364c..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/JumpMesg.cs +++ /dev/null @@ -1,311 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Jump profile message. - /// - public class JumpMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte Distance = 0; - public const byte Height = 1; - public const byte Rotations = 2; - public const byte HangTime = 3; - public const byte Score = 4; - public const byte PositionLat = 5; - public const byte PositionLong = 6; - public const byte Speed = 7; - public const byte EnhancedSpeed = 8; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public JumpMesg() : base(Profile.GetMesg(MesgNum.Jump)) - { - } - - public JumpMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Distance field - /// Units: m - /// Returns nullable float representing the Distance field - public float? GetDistance() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Distance field - /// Units: m - /// Nullable field value to be set - public void SetDistance(float? distance_) - { - SetFieldValue(0, 0, distance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Height field - /// Units: m - /// Returns nullable float representing the Height field - public float? GetHeight() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Height field - /// Units: m - /// Nullable field value to be set - public void SetHeight(float? height_) - { - SetFieldValue(1, 0, height_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Rotations field - /// Returns nullable byte representing the Rotations field - public byte? GetRotations() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Rotations field - /// Nullable field value to be set - public void SetRotations(byte? rotations_) - { - SetFieldValue(2, 0, rotations_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HangTime field - /// Units: s - /// Returns nullable float representing the HangTime field - public float? GetHangTime() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set HangTime field - /// Units: s - /// Nullable field value to be set - public void SetHangTime(float? hangTime_) - { - SetFieldValue(3, 0, hangTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Score field - /// Comment: A score for a jump calculated based on hang time, rotations, and distance. - /// Returns nullable float representing the Score field - public float? GetScore() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Score field - /// Comment: A score for a jump calculated based on hang time, rotations, and distance. - /// Nullable field value to be set - public void SetScore(float? score_) - { - SetFieldValue(4, 0, score_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLat field - /// Units: semicircles - /// Returns nullable int representing the PositionLat field - public int? GetPositionLat() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLat(int? positionLat_) - { - SetFieldValue(5, 0, positionLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLong field - /// Units: semicircles - /// Returns nullable int representing the PositionLong field - public int? GetPositionLong() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLong(int? positionLong_) - { - SetFieldValue(6, 0, positionLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Speed field - /// Units: m/s - /// Returns nullable float representing the Speed field - public float? GetSpeed() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Speed field - /// Units: m/s - /// Nullable field value to be set - public void SetSpeed(float? speed_) - { - SetFieldValue(7, 0, speed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedSpeed field - /// Units: m/s - /// Returns nullable float representing the EnhancedSpeed field - public float? GetEnhancedSpeed() - { - Object val = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetEnhancedSpeed(float? enhancedSpeed_) - { - SetFieldValue(8, 0, enhancedSpeed_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/LapMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/LapMesg.cs deleted file mode 100644 index b79168e88..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/LapMesg.cs +++ /dev/null @@ -1,3626 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Lap profile message. - /// - public class LapMesg : Mesg - { - #region Fields - static class TotalCyclesSubfield - { - public static ushort TotalStrides = 0; - public static ushort TotalStrokes = 1; - public static ushort Subfields = 2; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - static class AvgCadenceSubfield - { - public static ushort AvgRunningCadence = 0; - public static ushort Subfields = 1; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - static class MaxCadenceSubfield - { - public static ushort MaxRunningCadence = 0; - public static ushort Subfields = 1; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Timestamp = 253; - public const byte Event = 0; - public const byte EventType = 1; - public const byte StartTime = 2; - public const byte StartPositionLat = 3; - public const byte StartPositionLong = 4; - public const byte EndPositionLat = 5; - public const byte EndPositionLong = 6; - public const byte TotalElapsedTime = 7; - public const byte TotalTimerTime = 8; - public const byte TotalDistance = 9; - public const byte TotalCycles = 10; - public const byte TotalCalories = 11; - public const byte TotalFatCalories = 12; - public const byte AvgSpeed = 13; - public const byte MaxSpeed = 14; - public const byte AvgHeartRate = 15; - public const byte MaxHeartRate = 16; - public const byte AvgCadence = 17; - public const byte MaxCadence = 18; - public const byte AvgPower = 19; - public const byte MaxPower = 20; - public const byte TotalAscent = 21; - public const byte TotalDescent = 22; - public const byte Intensity = 23; - public const byte LapTrigger = 24; - public const byte Sport = 25; - public const byte EventGroup = 26; - public const byte NumLengths = 32; - public const byte NormalizedPower = 33; - public const byte LeftRightBalance = 34; - public const byte FirstLengthIndex = 35; - public const byte AvgStrokeDistance = 37; - public const byte SwimStroke = 38; - public const byte SubSport = 39; - public const byte NumActiveLengths = 40; - public const byte TotalWork = 41; - public const byte AvgAltitude = 42; - public const byte MaxAltitude = 43; - public const byte GpsAccuracy = 44; - public const byte AvgGrade = 45; - public const byte AvgPosGrade = 46; - public const byte AvgNegGrade = 47; - public const byte MaxPosGrade = 48; - public const byte MaxNegGrade = 49; - public const byte AvgTemperature = 50; - public const byte MaxTemperature = 51; - public const byte TotalMovingTime = 52; - public const byte AvgPosVerticalSpeed = 53; - public const byte AvgNegVerticalSpeed = 54; - public const byte MaxPosVerticalSpeed = 55; - public const byte MaxNegVerticalSpeed = 56; - public const byte TimeInHrZone = 57; - public const byte TimeInSpeedZone = 58; - public const byte TimeInCadenceZone = 59; - public const byte TimeInPowerZone = 60; - public const byte RepetitionNum = 61; - public const byte MinAltitude = 62; - public const byte MinHeartRate = 63; - public const byte WktStepIndex = 71; - public const byte OpponentScore = 74; - public const byte StrokeCount = 75; - public const byte ZoneCount = 76; - public const byte AvgVerticalOscillation = 77; - public const byte AvgStanceTimePercent = 78; - public const byte AvgStanceTime = 79; - public const byte AvgFractionalCadence = 80; - public const byte MaxFractionalCadence = 81; - public const byte TotalFractionalCycles = 82; - public const byte PlayerScore = 83; - public const byte AvgTotalHemoglobinConc = 84; - public const byte MinTotalHemoglobinConc = 85; - public const byte MaxTotalHemoglobinConc = 86; - public const byte AvgSaturatedHemoglobinPercent = 87; - public const byte MinSaturatedHemoglobinPercent = 88; - public const byte MaxSaturatedHemoglobinPercent = 89; - public const byte AvgLeftTorqueEffectiveness = 91; - public const byte AvgRightTorqueEffectiveness = 92; - public const byte AvgLeftPedalSmoothness = 93; - public const byte AvgRightPedalSmoothness = 94; - public const byte AvgCombinedPedalSmoothness = 95; - public const byte TimeStanding = 98; - public const byte StandCount = 99; - public const byte AvgLeftPco = 100; - public const byte AvgRightPco = 101; - public const byte AvgLeftPowerPhase = 102; - public const byte AvgLeftPowerPhasePeak = 103; - public const byte AvgRightPowerPhase = 104; - public const byte AvgRightPowerPhasePeak = 105; - public const byte AvgPowerPosition = 106; - public const byte MaxPowerPosition = 107; - public const byte AvgCadencePosition = 108; - public const byte MaxCadencePosition = 109; - public const byte EnhancedAvgSpeed = 110; - public const byte EnhancedMaxSpeed = 111; - public const byte EnhancedAvgAltitude = 112; - public const byte EnhancedMinAltitude = 113; - public const byte EnhancedMaxAltitude = 114; - public const byte AvgLevMotorPower = 115; - public const byte MaxLevMotorPower = 116; - public const byte LevBatteryConsumption = 117; - public const byte AvgVerticalRatio = 118; - public const byte AvgStanceTimeBalance = 119; - public const byte AvgStepLength = 120; - public const byte AvgVam = 121; - public const byte AvgDepth = 122; - public const byte MaxDepth = 123; - public const byte MinTemperature = 124; - public const byte EnhancedAvgRespirationRate = 136; - public const byte EnhancedMaxRespirationRate = 137; - public const byte AvgRespirationRate = 147; - public const byte MaxRespirationRate = 148; - public const byte TotalGrit = 149; - public const byte TotalFlow = 150; - public const byte JumpCount = 151; - public const byte AvgGrit = 153; - public const byte AvgFlow = 154; - public const byte TotalFractionalAscent = 156; - public const byte TotalFractionalDescent = 157; - public const byte AvgCoreTemperature = 158; - public const byte MinCoreTemperature = 159; - public const byte MaxCoreTemperature = 160; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public LapMesg() : base(Profile.GetMesg(MesgNum.Lap)) - { - } - - public LapMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Lap end time. - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Lap end time. - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Event field - /// Returns nullable Event enum representing the Event field - public Event? GetEvent() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Event? value = obj == null ? (Event?)null : (Event)obj; - return value; - } - - /// - /// Set Event field - /// Nullable field value to be set - public void SetEvent(Event? event_) - { - SetFieldValue(0, 0, event_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventType field - /// Returns nullable EventType enum representing the EventType field - public EventType? GetEventType() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - EventType? value = obj == null ? (EventType?)null : (EventType)obj; - return value; - } - - /// - /// Set EventType field - /// Nullable field value to be set - public void SetEventType(EventType? eventType_) - { - SetFieldValue(1, 0, eventType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartTime field - /// Returns DateTime representing the StartTime field - public DateTime GetStartTime() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set StartTime field - /// Nullable field value to be set - public void SetStartTime(DateTime startTime_) - { - SetFieldValue(2, 0, startTime_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartPositionLat field - /// Units: semicircles - /// Returns nullable int representing the StartPositionLat field - public int? GetStartPositionLat() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set StartPositionLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetStartPositionLat(int? startPositionLat_) - { - SetFieldValue(3, 0, startPositionLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartPositionLong field - /// Units: semicircles - /// Returns nullable int representing the StartPositionLong field - public int? GetStartPositionLong() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set StartPositionLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetStartPositionLong(int? startPositionLong_) - { - SetFieldValue(4, 0, startPositionLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EndPositionLat field - /// Units: semicircles - /// Returns nullable int representing the EndPositionLat field - public int? GetEndPositionLat() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set EndPositionLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetEndPositionLat(int? endPositionLat_) - { - SetFieldValue(5, 0, endPositionLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EndPositionLong field - /// Units: semicircles - /// Returns nullable int representing the EndPositionLong field - public int? GetEndPositionLong() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set EndPositionLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetEndPositionLong(int? endPositionLong_) - { - SetFieldValue(6, 0, endPositionLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalElapsedTime field - /// Units: s - /// Comment: Time (includes pauses) - /// Returns nullable float representing the TotalElapsedTime field - public float? GetTotalElapsedTime() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalElapsedTime field - /// Units: s - /// Comment: Time (includes pauses) - /// Nullable field value to be set - public void SetTotalElapsedTime(float? totalElapsedTime_) - { - SetFieldValue(7, 0, totalElapsedTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalTimerTime field - /// Units: s - /// Comment: Timer Time (excludes pauses) - /// Returns nullable float representing the TotalTimerTime field - public float? GetTotalTimerTime() - { - Object val = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalTimerTime field - /// Units: s - /// Comment: Timer Time (excludes pauses) - /// Nullable field value to be set - public void SetTotalTimerTime(float? totalTimerTime_) - { - SetFieldValue(8, 0, totalTimerTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalDistance field - /// Units: m - /// Returns nullable float representing the TotalDistance field - public float? GetTotalDistance() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalDistance field - /// Units: m - /// Nullable field value to be set - public void SetTotalDistance(float? totalDistance_) - { - SetFieldValue(9, 0, totalDistance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalCycles field - /// Units: cycles - /// Returns nullable uint representing the TotalCycles field - public uint? GetTotalCycles() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TotalCycles field - /// Units: cycles - /// Nullable field value to be set - public void SetTotalCycles(uint? totalCycles_) - { - SetFieldValue(10, 0, totalCycles_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the TotalStrides subfield - /// Units: strides - /// Nullable uint representing the TotalStrides subfield - public uint? GetTotalStrides() - { - Object val = GetFieldValue(10, 0, TotalCyclesSubfield.TotalStrides); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set TotalStrides subfield - /// Units: strides - /// Subfield value to be set - public void SetTotalStrides(uint? totalStrides) - { - SetFieldValue(10, 0, totalStrides, TotalCyclesSubfield.TotalStrides); - } - - /// - /// Retrieves the TotalStrokes subfield - /// Units: strokes - /// Nullable uint representing the TotalStrokes subfield - public uint? GetTotalStrokes() - { - Object val = GetFieldValue(10, 0, TotalCyclesSubfield.TotalStrokes); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set TotalStrokes subfield - /// Units: strokes - /// Subfield value to be set - public void SetTotalStrokes(uint? totalStrokes) - { - SetFieldValue(10, 0, totalStrokes, TotalCyclesSubfield.TotalStrokes); - } - /// - /// Retrieves the TotalCalories field - /// Units: kcal - /// Returns nullable ushort representing the TotalCalories field - public ushort? GetTotalCalories() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalCalories field - /// Units: kcal - /// Nullable field value to be set - public void SetTotalCalories(ushort? totalCalories_) - { - SetFieldValue(11, 0, totalCalories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFatCalories field - /// Units: kcal - /// Comment: If New Leaf - /// Returns nullable ushort representing the TotalFatCalories field - public ushort? GetTotalFatCalories() - { - Object val = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalFatCalories field - /// Units: kcal - /// Comment: If New Leaf - /// Nullable field value to be set - public void SetTotalFatCalories(ushort? totalFatCalories_) - { - SetFieldValue(12, 0, totalFatCalories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgSpeed field - /// Units: m/s - /// Returns nullable float representing the AvgSpeed field - public float? GetAvgSpeed() - { - Object val = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgSpeed(float? avgSpeed_) - { - SetFieldValue(13, 0, avgSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxSpeed field - /// Units: m/s - /// Returns nullable float representing the MaxSpeed field - public float? GetMaxSpeed() - { - Object val = GetFieldValue(14, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetMaxSpeed(float? maxSpeed_) - { - SetFieldValue(14, 0, maxSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgHeartRate field - /// Units: bpm - /// Returns nullable byte representing the AvgHeartRate field - public byte? GetAvgHeartRate() - { - Object val = GetFieldValue(15, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetAvgHeartRate(byte? avgHeartRate_) - { - SetFieldValue(15, 0, avgHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxHeartRate field - /// Units: bpm - /// Returns nullable byte representing the MaxHeartRate field - public byte? GetMaxHeartRate() - { - Object val = GetFieldValue(16, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetMaxHeartRate(byte? maxHeartRate_) - { - SetFieldValue(16, 0, maxHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgCadence field - /// Units: rpm - /// Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - /// Returns nullable byte representing the AvgCadence field - public byte? GetAvgCadence() - { - Object val = GetFieldValue(17, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgCadence field - /// Units: rpm - /// Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - /// Nullable field value to be set - public void SetAvgCadence(byte? avgCadence_) - { - SetFieldValue(17, 0, avgCadence_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the AvgRunningCadence subfield - /// Units: strides/min - /// Nullable byte representing the AvgRunningCadence subfield - public byte? GetAvgRunningCadence() - { - Object val = GetFieldValue(17, 0, AvgCadenceSubfield.AvgRunningCadence); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set AvgRunningCadence subfield - /// Units: strides/min - /// Subfield value to be set - public void SetAvgRunningCadence(byte? avgRunningCadence) - { - SetFieldValue(17, 0, avgRunningCadence, AvgCadenceSubfield.AvgRunningCadence); - } - /// - /// Retrieves the MaxCadence field - /// Units: rpm - /// Returns nullable byte representing the MaxCadence field - public byte? GetMaxCadence() - { - Object val = GetFieldValue(18, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxCadence field - /// Units: rpm - /// Nullable field value to be set - public void SetMaxCadence(byte? maxCadence_) - { - SetFieldValue(18, 0, maxCadence_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the MaxRunningCadence subfield - /// Units: strides/min - /// Nullable byte representing the MaxRunningCadence subfield - public byte? GetMaxRunningCadence() - { - Object val = GetFieldValue(18, 0, MaxCadenceSubfield.MaxRunningCadence); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set MaxRunningCadence subfield - /// Units: strides/min - /// Subfield value to be set - public void SetMaxRunningCadence(byte? maxRunningCadence) - { - SetFieldValue(18, 0, maxRunningCadence, MaxCadenceSubfield.MaxRunningCadence); - } - /// - /// Retrieves the AvgPower field - /// Units: watts - /// Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - /// Returns nullable ushort representing the AvgPower field - public ushort? GetAvgPower() - { - Object val = GetFieldValue(19, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AvgPower field - /// Units: watts - /// Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - /// Nullable field value to be set - public void SetAvgPower(ushort? avgPower_) - { - SetFieldValue(19, 0, avgPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPower field - /// Units: watts - /// Returns nullable ushort representing the MaxPower field - public ushort? GetMaxPower() - { - Object val = GetFieldValue(20, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MaxPower field - /// Units: watts - /// Nullable field value to be set - public void SetMaxPower(ushort? maxPower_) - { - SetFieldValue(20, 0, maxPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalAscent field - /// Units: m - /// Returns nullable ushort representing the TotalAscent field - public ushort? GetTotalAscent() - { - Object val = GetFieldValue(21, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalAscent field - /// Units: m - /// Nullable field value to be set - public void SetTotalAscent(ushort? totalAscent_) - { - SetFieldValue(21, 0, totalAscent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalDescent field - /// Units: m - /// Returns nullable ushort representing the TotalDescent field - public ushort? GetTotalDescent() - { - Object val = GetFieldValue(22, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalDescent field - /// Units: m - /// Nullable field value to be set - public void SetTotalDescent(ushort? totalDescent_) - { - SetFieldValue(22, 0, totalDescent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Intensity field - /// Returns nullable Intensity enum representing the Intensity field - public Intensity? GetIntensity() - { - object obj = GetFieldValue(23, 0, Fit.SubfieldIndexMainField); - Intensity? value = obj == null ? (Intensity?)null : (Intensity)obj; - return value; - } - - /// - /// Set Intensity field - /// Nullable field value to be set - public void SetIntensity(Intensity? intensity_) - { - SetFieldValue(23, 0, intensity_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LapTrigger field - /// Returns nullable LapTrigger enum representing the LapTrigger field - public LapTrigger? GetLapTrigger() - { - object obj = GetFieldValue(24, 0, Fit.SubfieldIndexMainField); - LapTrigger? value = obj == null ? (LapTrigger?)null : (LapTrigger)obj; - return value; - } - - /// - /// Set LapTrigger field - /// Nullable field value to be set - public void SetLapTrigger(LapTrigger? lapTrigger_) - { - SetFieldValue(24, 0, lapTrigger_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sport field - /// Returns nullable Sport enum representing the Sport field - public Sport? GetSport() - { - object obj = GetFieldValue(25, 0, Fit.SubfieldIndexMainField); - Sport? value = obj == null ? (Sport?)null : (Sport)obj; - return value; - } - - /// - /// Set Sport field - /// Nullable field value to be set - public void SetSport(Sport? sport_) - { - SetFieldValue(25, 0, sport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventGroup field - /// Returns nullable byte representing the EventGroup field - public byte? GetEventGroup() - { - Object val = GetFieldValue(26, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set EventGroup field - /// Nullable field value to be set - public void SetEventGroup(byte? eventGroup_) - { - SetFieldValue(26, 0, eventGroup_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NumLengths field - /// Units: lengths - /// Comment: # of lengths of swim pool - /// Returns nullable ushort representing the NumLengths field - public ushort? GetNumLengths() - { - Object val = GetFieldValue(32, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NumLengths field - /// Units: lengths - /// Comment: # of lengths of swim pool - /// Nullable field value to be set - public void SetNumLengths(ushort? numLengths_) - { - SetFieldValue(32, 0, numLengths_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NormalizedPower field - /// Units: watts - /// Returns nullable ushort representing the NormalizedPower field - public ushort? GetNormalizedPower() - { - Object val = GetFieldValue(33, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NormalizedPower field - /// Units: watts - /// Nullable field value to be set - public void SetNormalizedPower(ushort? normalizedPower_) - { - SetFieldValue(33, 0, normalizedPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeftRightBalance field - /// Returns nullable ushort representing the LeftRightBalance field - public ushort? GetLeftRightBalance() - { - Object val = GetFieldValue(34, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set LeftRightBalance field - /// Nullable field value to be set - public void SetLeftRightBalance(ushort? leftRightBalance_) - { - SetFieldValue(34, 0, leftRightBalance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FirstLengthIndex field - /// Returns nullable ushort representing the FirstLengthIndex field - public ushort? GetFirstLengthIndex() - { - Object val = GetFieldValue(35, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set FirstLengthIndex field - /// Nullable field value to be set - public void SetFirstLengthIndex(ushort? firstLengthIndex_) - { - SetFieldValue(35, 0, firstLengthIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgStrokeDistance field - /// Units: m - /// Returns nullable float representing the AvgStrokeDistance field - public float? GetAvgStrokeDistance() - { - Object val = GetFieldValue(37, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgStrokeDistance field - /// Units: m - /// Nullable field value to be set - public void SetAvgStrokeDistance(float? avgStrokeDistance_) - { - SetFieldValue(37, 0, avgStrokeDistance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SwimStroke field - /// Returns nullable SwimStroke enum representing the SwimStroke field - public SwimStroke? GetSwimStroke() - { - object obj = GetFieldValue(38, 0, Fit.SubfieldIndexMainField); - SwimStroke? value = obj == null ? (SwimStroke?)null : (SwimStroke)obj; - return value; - } - - /// - /// Set SwimStroke field - /// Nullable field value to be set - public void SetSwimStroke(SwimStroke? swimStroke_) - { - SetFieldValue(38, 0, swimStroke_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SubSport field - /// Returns nullable SubSport enum representing the SubSport field - public SubSport? GetSubSport() - { - object obj = GetFieldValue(39, 0, Fit.SubfieldIndexMainField); - SubSport? value = obj == null ? (SubSport?)null : (SubSport)obj; - return value; - } - - /// - /// Set SubSport field - /// Nullable field value to be set - public void SetSubSport(SubSport? subSport_) - { - SetFieldValue(39, 0, subSport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NumActiveLengths field - /// Units: lengths - /// Comment: # of active lengths of swim pool - /// Returns nullable ushort representing the NumActiveLengths field - public ushort? GetNumActiveLengths() - { - Object val = GetFieldValue(40, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NumActiveLengths field - /// Units: lengths - /// Comment: # of active lengths of swim pool - /// Nullable field value to be set - public void SetNumActiveLengths(ushort? numActiveLengths_) - { - SetFieldValue(40, 0, numActiveLengths_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalWork field - /// Units: J - /// Returns nullable uint representing the TotalWork field - public uint? GetTotalWork() - { - Object val = GetFieldValue(41, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TotalWork field - /// Units: J - /// Nullable field value to be set - public void SetTotalWork(uint? totalWork_) - { - SetFieldValue(41, 0, totalWork_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgAltitude field - /// Units: m - /// Returns nullable float representing the AvgAltitude field - public float? GetAvgAltitude() - { - Object val = GetFieldValue(42, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgAltitude field - /// Units: m - /// Nullable field value to be set - public void SetAvgAltitude(float? avgAltitude_) - { - SetFieldValue(42, 0, avgAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxAltitude field - /// Units: m - /// Returns nullable float representing the MaxAltitude field - public float? GetMaxAltitude() - { - Object val = GetFieldValue(43, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxAltitude field - /// Units: m - /// Nullable field value to be set - public void SetMaxAltitude(float? maxAltitude_) - { - SetFieldValue(43, 0, maxAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GpsAccuracy field - /// Units: m - /// Returns nullable byte representing the GpsAccuracy field - public byte? GetGpsAccuracy() - { - Object val = GetFieldValue(44, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set GpsAccuracy field - /// Units: m - /// Nullable field value to be set - public void SetGpsAccuracy(byte? gpsAccuracy_) - { - SetFieldValue(44, 0, gpsAccuracy_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgGrade field - /// Units: % - /// Returns nullable float representing the AvgGrade field - public float? GetAvgGrade() - { - Object val = GetFieldValue(45, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgGrade field - /// Units: % - /// Nullable field value to be set - public void SetAvgGrade(float? avgGrade_) - { - SetFieldValue(45, 0, avgGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgPosGrade field - /// Units: % - /// Returns nullable float representing the AvgPosGrade field - public float? GetAvgPosGrade() - { - Object val = GetFieldValue(46, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgPosGrade field - /// Units: % - /// Nullable field value to be set - public void SetAvgPosGrade(float? avgPosGrade_) - { - SetFieldValue(46, 0, avgPosGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgNegGrade field - /// Units: % - /// Returns nullable float representing the AvgNegGrade field - public float? GetAvgNegGrade() - { - Object val = GetFieldValue(47, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgNegGrade field - /// Units: % - /// Nullable field value to be set - public void SetAvgNegGrade(float? avgNegGrade_) - { - SetFieldValue(47, 0, avgNegGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPosGrade field - /// Units: % - /// Returns nullable float representing the MaxPosGrade field - public float? GetMaxPosGrade() - { - Object val = GetFieldValue(48, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxPosGrade field - /// Units: % - /// Nullable field value to be set - public void SetMaxPosGrade(float? maxPosGrade_) - { - SetFieldValue(48, 0, maxPosGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxNegGrade field - /// Units: % - /// Returns nullable float representing the MaxNegGrade field - public float? GetMaxNegGrade() - { - Object val = GetFieldValue(49, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxNegGrade field - /// Units: % - /// Nullable field value to be set - public void SetMaxNegGrade(float? maxNegGrade_) - { - SetFieldValue(49, 0, maxNegGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgTemperature field - /// Units: C - /// Returns nullable sbyte representing the AvgTemperature field - public sbyte? GetAvgTemperature() - { - Object val = GetFieldValue(50, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set AvgTemperature field - /// Units: C - /// Nullable field value to be set - public void SetAvgTemperature(sbyte? avgTemperature_) - { - SetFieldValue(50, 0, avgTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxTemperature field - /// Units: C - /// Returns nullable sbyte representing the MaxTemperature field - public sbyte? GetMaxTemperature() - { - Object val = GetFieldValue(51, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set MaxTemperature field - /// Units: C - /// Nullable field value to be set - public void SetMaxTemperature(sbyte? maxTemperature_) - { - SetFieldValue(51, 0, maxTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalMovingTime field - /// Units: s - /// Returns nullable float representing the TotalMovingTime field - public float? GetTotalMovingTime() - { - Object val = GetFieldValue(52, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalMovingTime field - /// Units: s - /// Nullable field value to be set - public void SetTotalMovingTime(float? totalMovingTime_) - { - SetFieldValue(52, 0, totalMovingTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgPosVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the AvgPosVerticalSpeed field - public float? GetAvgPosVerticalSpeed() - { - Object val = GetFieldValue(53, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgPosVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgPosVerticalSpeed(float? avgPosVerticalSpeed_) - { - SetFieldValue(53, 0, avgPosVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgNegVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the AvgNegVerticalSpeed field - public float? GetAvgNegVerticalSpeed() - { - Object val = GetFieldValue(54, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgNegVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgNegVerticalSpeed(float? avgNegVerticalSpeed_) - { - SetFieldValue(54, 0, avgNegVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPosVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the MaxPosVerticalSpeed field - public float? GetMaxPosVerticalSpeed() - { - Object val = GetFieldValue(55, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxPosVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetMaxPosVerticalSpeed(float? maxPosVerticalSpeed_) - { - SetFieldValue(55, 0, maxPosVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxNegVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the MaxNegVerticalSpeed field - public float? GetMaxNegVerticalSpeed() - { - Object val = GetFieldValue(56, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxNegVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetMaxNegVerticalSpeed(float? maxNegVerticalSpeed_) - { - SetFieldValue(56, 0, maxNegVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInHrZone - public int GetNumTimeInHrZone() - { - return GetNumFieldValues(57, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInHrZone field - /// Units: s - /// 0 based index of TimeInHrZone element to retrieve - /// Returns nullable float representing the TimeInHrZone field - public float? GetTimeInHrZone(int index) - { - Object val = GetFieldValue(57, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInHrZone field - /// Units: s - /// 0 based index of time_in_hr_zone - /// Nullable field value to be set - public void SetTimeInHrZone(int index, float? timeInHrZone_) - { - SetFieldValue(57, index, timeInHrZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInSpeedZone - public int GetNumTimeInSpeedZone() - { - return GetNumFieldValues(58, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInSpeedZone field - /// Units: s - /// 0 based index of TimeInSpeedZone element to retrieve - /// Returns nullable float representing the TimeInSpeedZone field - public float? GetTimeInSpeedZone(int index) - { - Object val = GetFieldValue(58, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInSpeedZone field - /// Units: s - /// 0 based index of time_in_speed_zone - /// Nullable field value to be set - public void SetTimeInSpeedZone(int index, float? timeInSpeedZone_) - { - SetFieldValue(58, index, timeInSpeedZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInCadenceZone - public int GetNumTimeInCadenceZone() - { - return GetNumFieldValues(59, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInCadenceZone field - /// Units: s - /// 0 based index of TimeInCadenceZone element to retrieve - /// Returns nullable float representing the TimeInCadenceZone field - public float? GetTimeInCadenceZone(int index) - { - Object val = GetFieldValue(59, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInCadenceZone field - /// Units: s - /// 0 based index of time_in_cadence_zone - /// Nullable field value to be set - public void SetTimeInCadenceZone(int index, float? timeInCadenceZone_) - { - SetFieldValue(59, index, timeInCadenceZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInPowerZone - public int GetNumTimeInPowerZone() - { - return GetNumFieldValues(60, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInPowerZone field - /// Units: s - /// 0 based index of TimeInPowerZone element to retrieve - /// Returns nullable float representing the TimeInPowerZone field - public float? GetTimeInPowerZone(int index) - { - Object val = GetFieldValue(60, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInPowerZone field - /// Units: s - /// 0 based index of time_in_power_zone - /// Nullable field value to be set - public void SetTimeInPowerZone(int index, float? timeInPowerZone_) - { - SetFieldValue(60, index, timeInPowerZone_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RepetitionNum field - /// Returns nullable ushort representing the RepetitionNum field - public ushort? GetRepetitionNum() - { - Object val = GetFieldValue(61, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set RepetitionNum field - /// Nullable field value to be set - public void SetRepetitionNum(ushort? repetitionNum_) - { - SetFieldValue(61, 0, repetitionNum_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinAltitude field - /// Units: m - /// Returns nullable float representing the MinAltitude field - public float? GetMinAltitude() - { - Object val = GetFieldValue(62, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MinAltitude field - /// Units: m - /// Nullable field value to be set - public void SetMinAltitude(float? minAltitude_) - { - SetFieldValue(62, 0, minAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinHeartRate field - /// Units: bpm - /// Returns nullable byte representing the MinHeartRate field - public byte? GetMinHeartRate() - { - Object val = GetFieldValue(63, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MinHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetMinHeartRate(byte? minHeartRate_) - { - SetFieldValue(63, 0, minHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WktStepIndex field - /// Returns nullable ushort representing the WktStepIndex field - public ushort? GetWktStepIndex() - { - Object val = GetFieldValue(71, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set WktStepIndex field - /// Nullable field value to be set - public void SetWktStepIndex(ushort? wktStepIndex_) - { - SetFieldValue(71, 0, wktStepIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the OpponentScore field - /// Returns nullable ushort representing the OpponentScore field - public ushort? GetOpponentScore() - { - Object val = GetFieldValue(74, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set OpponentScore field - /// Nullable field value to be set - public void SetOpponentScore(ushort? opponentScore_) - { - SetFieldValue(74, 0, opponentScore_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field StrokeCount - public int GetNumStrokeCount() - { - return GetNumFieldValues(75, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StrokeCount field - /// Units: counts - /// Comment: stroke_type enum used as the index - /// 0 based index of StrokeCount element to retrieve - /// Returns nullable ushort representing the StrokeCount field - public ushort? GetStrokeCount(int index) - { - Object val = GetFieldValue(75, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set StrokeCount field - /// Units: counts - /// Comment: stroke_type enum used as the index - /// 0 based index of stroke_count - /// Nullable field value to be set - public void SetStrokeCount(int index, ushort? strokeCount_) - { - SetFieldValue(75, index, strokeCount_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field ZoneCount - public int GetNumZoneCount() - { - return GetNumFieldValues(76, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ZoneCount field - /// Units: counts - /// Comment: zone number used as the index - /// 0 based index of ZoneCount element to retrieve - /// Returns nullable ushort representing the ZoneCount field - public ushort? GetZoneCount(int index) - { - Object val = GetFieldValue(76, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ZoneCount field - /// Units: counts - /// Comment: zone number used as the index - /// 0 based index of zone_count - /// Nullable field value to be set - public void SetZoneCount(int index, ushort? zoneCount_) - { - SetFieldValue(76, index, zoneCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgVerticalOscillation field - /// Units: mm - /// Returns nullable float representing the AvgVerticalOscillation field - public float? GetAvgVerticalOscillation() - { - Object val = GetFieldValue(77, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgVerticalOscillation field - /// Units: mm - /// Nullable field value to be set - public void SetAvgVerticalOscillation(float? avgVerticalOscillation_) - { - SetFieldValue(77, 0, avgVerticalOscillation_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgStanceTimePercent field - /// Units: percent - /// Returns nullable float representing the AvgStanceTimePercent field - public float? GetAvgStanceTimePercent() - { - Object val = GetFieldValue(78, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgStanceTimePercent field - /// Units: percent - /// Nullable field value to be set - public void SetAvgStanceTimePercent(float? avgStanceTimePercent_) - { - SetFieldValue(78, 0, avgStanceTimePercent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgStanceTime field - /// Units: ms - /// Returns nullable float representing the AvgStanceTime field - public float? GetAvgStanceTime() - { - Object val = GetFieldValue(79, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgStanceTime field - /// Units: ms - /// Nullable field value to be set - public void SetAvgStanceTime(float? avgStanceTime_) - { - SetFieldValue(79, 0, avgStanceTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the avg_cadence - /// Returns nullable float representing the AvgFractionalCadence field - public float? GetAvgFractionalCadence() - { - Object val = GetFieldValue(80, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the avg_cadence - /// Nullable field value to be set - public void SetAvgFractionalCadence(float? avgFractionalCadence_) - { - SetFieldValue(80, 0, avgFractionalCadence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the max_cadence - /// Returns nullable float representing the MaxFractionalCadence field - public float? GetMaxFractionalCadence() - { - Object val = GetFieldValue(81, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the max_cadence - /// Nullable field value to be set - public void SetMaxFractionalCadence(float? maxFractionalCadence_) - { - SetFieldValue(81, 0, maxFractionalCadence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFractionalCycles field - /// Units: cycles - /// Comment: fractional part of the total_cycles - /// Returns nullable float representing the TotalFractionalCycles field - public float? GetTotalFractionalCycles() - { - Object val = GetFieldValue(82, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFractionalCycles field - /// Units: cycles - /// Comment: fractional part of the total_cycles - /// Nullable field value to be set - public void SetTotalFractionalCycles(float? totalFractionalCycles_) - { - SetFieldValue(82, 0, totalFractionalCycles_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PlayerScore field - /// Returns nullable ushort representing the PlayerScore field - public ushort? GetPlayerScore() - { - Object val = GetFieldValue(83, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set PlayerScore field - /// Nullable field value to be set - public void SetPlayerScore(ushort? playerScore_) - { - SetFieldValue(83, 0, playerScore_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgTotalHemoglobinConc - public int GetNumAvgTotalHemoglobinConc() - { - return GetNumFieldValues(84, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Avg saturated and unsaturated hemoglobin - /// 0 based index of AvgTotalHemoglobinConc element to retrieve - /// Returns nullable float representing the AvgTotalHemoglobinConc field - public float? GetAvgTotalHemoglobinConc(int index) - { - Object val = GetFieldValue(84, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Avg saturated and unsaturated hemoglobin - /// 0 based index of avg_total_hemoglobin_conc - /// Nullable field value to be set - public void SetAvgTotalHemoglobinConc(int index, float? avgTotalHemoglobinConc_) - { - SetFieldValue(84, index, avgTotalHemoglobinConc_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MinTotalHemoglobinConc - public int GetNumMinTotalHemoglobinConc() - { - return GetNumFieldValues(85, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Min saturated and unsaturated hemoglobin - /// 0 based index of MinTotalHemoglobinConc element to retrieve - /// Returns nullable float representing the MinTotalHemoglobinConc field - public float? GetMinTotalHemoglobinConc(int index) - { - Object val = GetFieldValue(85, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MinTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Min saturated and unsaturated hemoglobin - /// 0 based index of min_total_hemoglobin_conc - /// Nullable field value to be set - public void SetMinTotalHemoglobinConc(int index, float? minTotalHemoglobinConc_) - { - SetFieldValue(85, index, minTotalHemoglobinConc_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MaxTotalHemoglobinConc - public int GetNumMaxTotalHemoglobinConc() - { - return GetNumFieldValues(86, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Max saturated and unsaturated hemoglobin - /// 0 based index of MaxTotalHemoglobinConc element to retrieve - /// Returns nullable float representing the MaxTotalHemoglobinConc field - public float? GetMaxTotalHemoglobinConc(int index) - { - Object val = GetFieldValue(86, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Max saturated and unsaturated hemoglobin - /// 0 based index of max_total_hemoglobin_conc - /// Nullable field value to be set - public void SetMaxTotalHemoglobinConc(int index, float? maxTotalHemoglobinConc_) - { - SetFieldValue(86, index, maxTotalHemoglobinConc_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgSaturatedHemoglobinPercent - public int GetNumAvgSaturatedHemoglobinPercent() - { - return GetNumFieldValues(87, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Avg percentage of hemoglobin saturated with oxygen - /// 0 based index of AvgSaturatedHemoglobinPercent element to retrieve - /// Returns nullable float representing the AvgSaturatedHemoglobinPercent field - public float? GetAvgSaturatedHemoglobinPercent(int index) - { - Object val = GetFieldValue(87, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Avg percentage of hemoglobin saturated with oxygen - /// 0 based index of avg_saturated_hemoglobin_percent - /// Nullable field value to be set - public void SetAvgSaturatedHemoglobinPercent(int index, float? avgSaturatedHemoglobinPercent_) - { - SetFieldValue(87, index, avgSaturatedHemoglobinPercent_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MinSaturatedHemoglobinPercent - public int GetNumMinSaturatedHemoglobinPercent() - { - return GetNumFieldValues(88, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Min percentage of hemoglobin saturated with oxygen - /// 0 based index of MinSaturatedHemoglobinPercent element to retrieve - /// Returns nullable float representing the MinSaturatedHemoglobinPercent field - public float? GetMinSaturatedHemoglobinPercent(int index) - { - Object val = GetFieldValue(88, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MinSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Min percentage of hemoglobin saturated with oxygen - /// 0 based index of min_saturated_hemoglobin_percent - /// Nullable field value to be set - public void SetMinSaturatedHemoglobinPercent(int index, float? minSaturatedHemoglobinPercent_) - { - SetFieldValue(88, index, minSaturatedHemoglobinPercent_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MaxSaturatedHemoglobinPercent - public int GetNumMaxSaturatedHemoglobinPercent() - { - return GetNumFieldValues(89, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Max percentage of hemoglobin saturated with oxygen - /// 0 based index of MaxSaturatedHemoglobinPercent element to retrieve - /// Returns nullable float representing the MaxSaturatedHemoglobinPercent field - public float? GetMaxSaturatedHemoglobinPercent(int index) - { - Object val = GetFieldValue(89, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Max percentage of hemoglobin saturated with oxygen - /// 0 based index of max_saturated_hemoglobin_percent - /// Nullable field value to be set - public void SetMaxSaturatedHemoglobinPercent(int index, float? maxSaturatedHemoglobinPercent_) - { - SetFieldValue(89, index, maxSaturatedHemoglobinPercent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftTorqueEffectiveness field - /// Units: percent - /// Returns nullable float representing the AvgLeftTorqueEffectiveness field - public float? GetAvgLeftTorqueEffectiveness() - { - Object val = GetFieldValue(91, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftTorqueEffectiveness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgLeftTorqueEffectiveness(float? avgLeftTorqueEffectiveness_) - { - SetFieldValue(91, 0, avgLeftTorqueEffectiveness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightTorqueEffectiveness field - /// Units: percent - /// Returns nullable float representing the AvgRightTorqueEffectiveness field - public float? GetAvgRightTorqueEffectiveness() - { - Object val = GetFieldValue(92, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightTorqueEffectiveness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgRightTorqueEffectiveness(float? avgRightTorqueEffectiveness_) - { - SetFieldValue(92, 0, avgRightTorqueEffectiveness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the AvgLeftPedalSmoothness field - public float? GetAvgLeftPedalSmoothness() - { - Object val = GetFieldValue(93, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgLeftPedalSmoothness(float? avgLeftPedalSmoothness_) - { - SetFieldValue(93, 0, avgLeftPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the AvgRightPedalSmoothness field - public float? GetAvgRightPedalSmoothness() - { - Object val = GetFieldValue(94, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgRightPedalSmoothness(float? avgRightPedalSmoothness_) - { - SetFieldValue(94, 0, avgRightPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgCombinedPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the AvgCombinedPedalSmoothness field - public float? GetAvgCombinedPedalSmoothness() - { - Object val = GetFieldValue(95, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgCombinedPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgCombinedPedalSmoothness(float? avgCombinedPedalSmoothness_) - { - SetFieldValue(95, 0, avgCombinedPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeStanding field - /// Units: s - /// Comment: Total time spent in the standing position - /// Returns nullable float representing the TimeStanding field - public float? GetTimeStanding() - { - Object val = GetFieldValue(98, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeStanding field - /// Units: s - /// Comment: Total time spent in the standing position - /// Nullable field value to be set - public void SetTimeStanding(float? timeStanding_) - { - SetFieldValue(98, 0, timeStanding_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StandCount field - /// Comment: Number of transitions to the standing state - /// Returns nullable ushort representing the StandCount field - public ushort? GetStandCount() - { - Object val = GetFieldValue(99, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set StandCount field - /// Comment: Number of transitions to the standing state - /// Nullable field value to be set - public void SetStandCount(ushort? standCount_) - { - SetFieldValue(99, 0, standCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPco field - /// Units: mm - /// Comment: Average left platform center offset - /// Returns nullable sbyte representing the AvgLeftPco field - public sbyte? GetAvgLeftPco() - { - Object val = GetFieldValue(100, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set AvgLeftPco field - /// Units: mm - /// Comment: Average left platform center offset - /// Nullable field value to be set - public void SetAvgLeftPco(sbyte? avgLeftPco_) - { - SetFieldValue(100, 0, avgLeftPco_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPco field - /// Units: mm - /// Comment: Average right platform center offset - /// Returns nullable sbyte representing the AvgRightPco field - public sbyte? GetAvgRightPco() - { - Object val = GetFieldValue(101, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set AvgRightPco field - /// Units: mm - /// Comment: Average right platform center offset - /// Nullable field value to be set - public void SetAvgRightPco(sbyte? avgRightPco_) - { - SetFieldValue(101, 0, avgRightPco_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgLeftPowerPhase - public int GetNumAvgLeftPowerPhase() - { - return GetNumFieldValues(102, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPowerPhase field - /// Units: degrees - /// Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of AvgLeftPowerPhase element to retrieve - /// Returns nullable float representing the AvgLeftPowerPhase field - public float? GetAvgLeftPowerPhase(int index) - { - Object val = GetFieldValue(102, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftPowerPhase field - /// Units: degrees - /// Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of avg_left_power_phase - /// Nullable field value to be set - public void SetAvgLeftPowerPhase(int index, float? avgLeftPowerPhase_) - { - SetFieldValue(102, index, avgLeftPowerPhase_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgLeftPowerPhasePeak - public int GetNumAvgLeftPowerPhasePeak() - { - return GetNumFieldValues(103, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPowerPhasePeak field - /// Units: degrees - /// Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of AvgLeftPowerPhasePeak element to retrieve - /// Returns nullable float representing the AvgLeftPowerPhasePeak field - public float? GetAvgLeftPowerPhasePeak(int index) - { - Object val = GetFieldValue(103, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftPowerPhasePeak field - /// Units: degrees - /// Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of avg_left_power_phase_peak - /// Nullable field value to be set - public void SetAvgLeftPowerPhasePeak(int index, float? avgLeftPowerPhasePeak_) - { - SetFieldValue(103, index, avgLeftPowerPhasePeak_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgRightPowerPhase - public int GetNumAvgRightPowerPhase() - { - return GetNumFieldValues(104, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPowerPhase field - /// Units: degrees - /// Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of AvgRightPowerPhase element to retrieve - /// Returns nullable float representing the AvgRightPowerPhase field - public float? GetAvgRightPowerPhase(int index) - { - Object val = GetFieldValue(104, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightPowerPhase field - /// Units: degrees - /// Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of avg_right_power_phase - /// Nullable field value to be set - public void SetAvgRightPowerPhase(int index, float? avgRightPowerPhase_) - { - SetFieldValue(104, index, avgRightPowerPhase_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgRightPowerPhasePeak - public int GetNumAvgRightPowerPhasePeak() - { - return GetNumFieldValues(105, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPowerPhasePeak field - /// Units: degrees - /// Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of AvgRightPowerPhasePeak element to retrieve - /// Returns nullable float representing the AvgRightPowerPhasePeak field - public float? GetAvgRightPowerPhasePeak(int index) - { - Object val = GetFieldValue(105, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightPowerPhasePeak field - /// Units: degrees - /// Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of avg_right_power_phase_peak - /// Nullable field value to be set - public void SetAvgRightPowerPhasePeak(int index, float? avgRightPowerPhasePeak_) - { - SetFieldValue(105, index, avgRightPowerPhasePeak_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgPowerPosition - public int GetNumAvgPowerPosition() - { - return GetNumFieldValues(106, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgPowerPosition field - /// Units: watts - /// Comment: Average power by position. Data value indexes defined by rider_position_type. - /// 0 based index of AvgPowerPosition element to retrieve - /// Returns nullable ushort representing the AvgPowerPosition field - public ushort? GetAvgPowerPosition(int index) - { - Object val = GetFieldValue(106, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AvgPowerPosition field - /// Units: watts - /// Comment: Average power by position. Data value indexes defined by rider_position_type. - /// 0 based index of avg_power_position - /// Nullable field value to be set - public void SetAvgPowerPosition(int index, ushort? avgPowerPosition_) - { - SetFieldValue(106, index, avgPowerPosition_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MaxPowerPosition - public int GetNumMaxPowerPosition() - { - return GetNumFieldValues(107, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPowerPosition field - /// Units: watts - /// Comment: Maximum power by position. Data value indexes defined by rider_position_type. - /// 0 based index of MaxPowerPosition element to retrieve - /// Returns nullable ushort representing the MaxPowerPosition field - public ushort? GetMaxPowerPosition(int index) - { - Object val = GetFieldValue(107, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MaxPowerPosition field - /// Units: watts - /// Comment: Maximum power by position. Data value indexes defined by rider_position_type. - /// 0 based index of max_power_position - /// Nullable field value to be set - public void SetMaxPowerPosition(int index, ushort? maxPowerPosition_) - { - SetFieldValue(107, index, maxPowerPosition_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgCadencePosition - public int GetNumAvgCadencePosition() - { - return GetNumFieldValues(108, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgCadencePosition field - /// Units: rpm - /// Comment: Average cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of AvgCadencePosition element to retrieve - /// Returns nullable byte representing the AvgCadencePosition field - public byte? GetAvgCadencePosition(int index) - { - Object val = GetFieldValue(108, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgCadencePosition field - /// Units: rpm - /// Comment: Average cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of avg_cadence_position - /// Nullable field value to be set - public void SetAvgCadencePosition(int index, byte? avgCadencePosition_) - { - SetFieldValue(108, index, avgCadencePosition_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MaxCadencePosition - public int GetNumMaxCadencePosition() - { - return GetNumFieldValues(109, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxCadencePosition field - /// Units: rpm - /// Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of MaxCadencePosition element to retrieve - /// Returns nullable byte representing the MaxCadencePosition field - public byte? GetMaxCadencePosition(int index) - { - Object val = GetFieldValue(109, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxCadencePosition field - /// Units: rpm - /// Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of max_cadence_position - /// Nullable field value to be set - public void SetMaxCadencePosition(int index, byte? maxCadencePosition_) - { - SetFieldValue(109, index, maxCadencePosition_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedAvgSpeed field - /// Units: m/s - /// Returns nullable float representing the EnhancedAvgSpeed field - public float? GetEnhancedAvgSpeed() - { - Object val = GetFieldValue(110, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedAvgSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetEnhancedAvgSpeed(float? enhancedAvgSpeed_) - { - SetFieldValue(110, 0, enhancedAvgSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMaxSpeed field - /// Units: m/s - /// Returns nullable float representing the EnhancedMaxSpeed field - public float? GetEnhancedMaxSpeed() - { - Object val = GetFieldValue(111, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMaxSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetEnhancedMaxSpeed(float? enhancedMaxSpeed_) - { - SetFieldValue(111, 0, enhancedMaxSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedAvgAltitude field - /// Units: m - /// Returns nullable float representing the EnhancedAvgAltitude field - public float? GetEnhancedAvgAltitude() - { - Object val = GetFieldValue(112, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedAvgAltitude field - /// Units: m - /// Nullable field value to be set - public void SetEnhancedAvgAltitude(float? enhancedAvgAltitude_) - { - SetFieldValue(112, 0, enhancedAvgAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMinAltitude field - /// Units: m - /// Returns nullable float representing the EnhancedMinAltitude field - public float? GetEnhancedMinAltitude() - { - Object val = GetFieldValue(113, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMinAltitude field - /// Units: m - /// Nullable field value to be set - public void SetEnhancedMinAltitude(float? enhancedMinAltitude_) - { - SetFieldValue(113, 0, enhancedMinAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMaxAltitude field - /// Units: m - /// Returns nullable float representing the EnhancedMaxAltitude field - public float? GetEnhancedMaxAltitude() - { - Object val = GetFieldValue(114, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMaxAltitude field - /// Units: m - /// Nullable field value to be set - public void SetEnhancedMaxAltitude(float? enhancedMaxAltitude_) - { - SetFieldValue(114, 0, enhancedMaxAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLevMotorPower field - /// Units: watts - /// Comment: lev average motor power during lap - /// Returns nullable ushort representing the AvgLevMotorPower field - public ushort? GetAvgLevMotorPower() - { - Object val = GetFieldValue(115, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AvgLevMotorPower field - /// Units: watts - /// Comment: lev average motor power during lap - /// Nullable field value to be set - public void SetAvgLevMotorPower(ushort? avgLevMotorPower_) - { - SetFieldValue(115, 0, avgLevMotorPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxLevMotorPower field - /// Units: watts - /// Comment: lev maximum motor power during lap - /// Returns nullable ushort representing the MaxLevMotorPower field - public ushort? GetMaxLevMotorPower() - { - Object val = GetFieldValue(116, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MaxLevMotorPower field - /// Units: watts - /// Comment: lev maximum motor power during lap - /// Nullable field value to be set - public void SetMaxLevMotorPower(ushort? maxLevMotorPower_) - { - SetFieldValue(116, 0, maxLevMotorPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LevBatteryConsumption field - /// Units: percent - /// Comment: lev battery consumption during lap - /// Returns nullable float representing the LevBatteryConsumption field - public float? GetLevBatteryConsumption() - { - Object val = GetFieldValue(117, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set LevBatteryConsumption field - /// Units: percent - /// Comment: lev battery consumption during lap - /// Nullable field value to be set - public void SetLevBatteryConsumption(float? levBatteryConsumption_) - { - SetFieldValue(117, 0, levBatteryConsumption_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgVerticalRatio field - /// Units: percent - /// Returns nullable float representing the AvgVerticalRatio field - public float? GetAvgVerticalRatio() - { - Object val = GetFieldValue(118, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgVerticalRatio field - /// Units: percent - /// Nullable field value to be set - public void SetAvgVerticalRatio(float? avgVerticalRatio_) - { - SetFieldValue(118, 0, avgVerticalRatio_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgStanceTimeBalance field - /// Units: percent - /// Returns nullable float representing the AvgStanceTimeBalance field - public float? GetAvgStanceTimeBalance() - { - Object val = GetFieldValue(119, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgStanceTimeBalance field - /// Units: percent - /// Nullable field value to be set - public void SetAvgStanceTimeBalance(float? avgStanceTimeBalance_) - { - SetFieldValue(119, 0, avgStanceTimeBalance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgStepLength field - /// Units: mm - /// Returns nullable float representing the AvgStepLength field - public float? GetAvgStepLength() - { - Object val = GetFieldValue(120, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgStepLength field - /// Units: mm - /// Nullable field value to be set - public void SetAvgStepLength(float? avgStepLength_) - { - SetFieldValue(120, 0, avgStepLength_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgVam field - /// Units: m/s - /// Returns nullable float representing the AvgVam field - public float? GetAvgVam() - { - Object val = GetFieldValue(121, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgVam field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgVam(float? avgVam_) - { - SetFieldValue(121, 0, avgVam_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgDepth field - /// Units: m - /// Comment: 0 if above water - /// Returns nullable float representing the AvgDepth field - public float? GetAvgDepth() - { - Object val = GetFieldValue(122, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgDepth field - /// Units: m - /// Comment: 0 if above water - /// Nullable field value to be set - public void SetAvgDepth(float? avgDepth_) - { - SetFieldValue(122, 0, avgDepth_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxDepth field - /// Units: m - /// Comment: 0 if above water - /// Returns nullable float representing the MaxDepth field - public float? GetMaxDepth() - { - Object val = GetFieldValue(123, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxDepth field - /// Units: m - /// Comment: 0 if above water - /// Nullable field value to be set - public void SetMaxDepth(float? maxDepth_) - { - SetFieldValue(123, 0, maxDepth_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinTemperature field - /// Units: C - /// Returns nullable sbyte representing the MinTemperature field - public sbyte? GetMinTemperature() - { - Object val = GetFieldValue(124, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set MinTemperature field - /// Units: C - /// Nullable field value to be set - public void SetMinTemperature(sbyte? minTemperature_) - { - SetFieldValue(124, 0, minTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedAvgRespirationRate field - /// Units: Breaths/min - /// Returns nullable float representing the EnhancedAvgRespirationRate field - public float? GetEnhancedAvgRespirationRate() - { - Object val = GetFieldValue(136, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedAvgRespirationRate field - /// Units: Breaths/min - /// Nullable field value to be set - public void SetEnhancedAvgRespirationRate(float? enhancedAvgRespirationRate_) - { - SetFieldValue(136, 0, enhancedAvgRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMaxRespirationRate field - /// Units: Breaths/min - /// Returns nullable float representing the EnhancedMaxRespirationRate field - public float? GetEnhancedMaxRespirationRate() - { - Object val = GetFieldValue(137, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMaxRespirationRate field - /// Units: Breaths/min - /// Nullable field value to be set - public void SetEnhancedMaxRespirationRate(float? enhancedMaxRespirationRate_) - { - SetFieldValue(137, 0, enhancedMaxRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRespirationRate field - /// Returns nullable byte representing the AvgRespirationRate field - public byte? GetAvgRespirationRate() - { - Object val = GetFieldValue(147, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgRespirationRate field - /// Nullable field value to be set - public void SetAvgRespirationRate(byte? avgRespirationRate_) - { - SetFieldValue(147, 0, avgRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxRespirationRate field - /// Returns nullable byte representing the MaxRespirationRate field - public byte? GetMaxRespirationRate() - { - Object val = GetFieldValue(148, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxRespirationRate field - /// Nullable field value to be set - public void SetMaxRespirationRate(byte? maxRespirationRate_) - { - SetFieldValue(148, 0, maxRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Returns nullable float representing the TotalGrit field - public float? GetTotalGrit() - { - Object val = GetFieldValue(149, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Nullable field value to be set - public void SetTotalGrit(float? totalGrit_) - { - SetFieldValue(149, 0, totalGrit_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Returns nullable float representing the TotalFlow field - public float? GetTotalFlow() - { - Object val = GetFieldValue(150, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Nullable field value to be set - public void SetTotalFlow(float? totalFlow_) - { - SetFieldValue(150, 0, totalFlow_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the JumpCount field - /// Returns nullable ushort representing the JumpCount field - public ushort? GetJumpCount() - { - Object val = GetFieldValue(151, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set JumpCount field - /// Nullable field value to be set - public void SetJumpCount(ushort? jumpCount_) - { - SetFieldValue(151, 0, jumpCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Returns nullable float representing the AvgGrit field - public float? GetAvgGrit() - { - Object val = GetFieldValue(153, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Nullable field value to be set - public void SetAvgGrit(float? avgGrit_) - { - SetFieldValue(153, 0, avgGrit_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Returns nullable float representing the AvgFlow field - public float? GetAvgFlow() - { - Object val = GetFieldValue(154, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Nullable field value to be set - public void SetAvgFlow(float? avgFlow_) - { - SetFieldValue(154, 0, avgFlow_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFractionalAscent field - /// Units: m - /// Comment: fractional part of total_ascent - /// Returns nullable float representing the TotalFractionalAscent field - public float? GetTotalFractionalAscent() - { - Object val = GetFieldValue(156, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFractionalAscent field - /// Units: m - /// Comment: fractional part of total_ascent - /// Nullable field value to be set - public void SetTotalFractionalAscent(float? totalFractionalAscent_) - { - SetFieldValue(156, 0, totalFractionalAscent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFractionalDescent field - /// Units: m - /// Comment: fractional part of total_descent - /// Returns nullable float representing the TotalFractionalDescent field - public float? GetTotalFractionalDescent() - { - Object val = GetFieldValue(157, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFractionalDescent field - /// Units: m - /// Comment: fractional part of total_descent - /// Nullable field value to be set - public void SetTotalFractionalDescent(float? totalFractionalDescent_) - { - SetFieldValue(157, 0, totalFractionalDescent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgCoreTemperature field - /// Units: C - /// Returns nullable float representing the AvgCoreTemperature field - public float? GetAvgCoreTemperature() - { - Object val = GetFieldValue(158, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgCoreTemperature field - /// Units: C - /// Nullable field value to be set - public void SetAvgCoreTemperature(float? avgCoreTemperature_) - { - SetFieldValue(158, 0, avgCoreTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinCoreTemperature field - /// Units: C - /// Returns nullable float representing the MinCoreTemperature field - public float? GetMinCoreTemperature() - { - Object val = GetFieldValue(159, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MinCoreTemperature field - /// Units: C - /// Nullable field value to be set - public void SetMinCoreTemperature(float? minCoreTemperature_) - { - SetFieldValue(159, 0, minCoreTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxCoreTemperature field - /// Units: C - /// Returns nullable float representing the MaxCoreTemperature field - public float? GetMaxCoreTemperature() - { - Object val = GetFieldValue(160, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxCoreTemperature field - /// Units: C - /// Nullable field value to be set - public void SetMaxCoreTemperature(float? maxCoreTemperature_) - { - SetFieldValue(160, 0, maxCoreTemperature_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/LengthMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/LengthMesg.cs deleted file mode 100644 index 470c1fcb1..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/LengthMesg.cs +++ /dev/null @@ -1,611 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Length profile message. - /// - public class LengthMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Timestamp = 253; - public const byte Event = 0; - public const byte EventType = 1; - public const byte StartTime = 2; - public const byte TotalElapsedTime = 3; - public const byte TotalTimerTime = 4; - public const byte TotalStrokes = 5; - public const byte AvgSpeed = 6; - public const byte SwimStroke = 7; - public const byte AvgSwimmingCadence = 9; - public const byte EventGroup = 10; - public const byte TotalCalories = 11; - public const byte LengthType = 12; - public const byte PlayerScore = 18; - public const byte OpponentScore = 19; - public const byte StrokeCount = 20; - public const byte ZoneCount = 21; - public const byte EnhancedAvgRespirationRate = 22; - public const byte EnhancedMaxRespirationRate = 23; - public const byte AvgRespirationRate = 24; - public const byte MaxRespirationRate = 25; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public LengthMesg() : base(Profile.GetMesg(MesgNum.Length)) - { - } - - public LengthMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Timestamp field - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Event field - /// Returns nullable Event enum representing the Event field - public Event? GetEvent() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Event? value = obj == null ? (Event?)null : (Event)obj; - return value; - } - - /// - /// Set Event field - /// Nullable field value to be set - public void SetEvent(Event? event_) - { - SetFieldValue(0, 0, event_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventType field - /// Returns nullable EventType enum representing the EventType field - public EventType? GetEventType() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - EventType? value = obj == null ? (EventType?)null : (EventType)obj; - return value; - } - - /// - /// Set EventType field - /// Nullable field value to be set - public void SetEventType(EventType? eventType_) - { - SetFieldValue(1, 0, eventType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartTime field - /// Returns DateTime representing the StartTime field - public DateTime GetStartTime() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set StartTime field - /// Nullable field value to be set - public void SetStartTime(DateTime startTime_) - { - SetFieldValue(2, 0, startTime_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalElapsedTime field - /// Units: s - /// Returns nullable float representing the TotalElapsedTime field - public float? GetTotalElapsedTime() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalElapsedTime field - /// Units: s - /// Nullable field value to be set - public void SetTotalElapsedTime(float? totalElapsedTime_) - { - SetFieldValue(3, 0, totalElapsedTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalTimerTime field - /// Units: s - /// Returns nullable float representing the TotalTimerTime field - public float? GetTotalTimerTime() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalTimerTime field - /// Units: s - /// Nullable field value to be set - public void SetTotalTimerTime(float? totalTimerTime_) - { - SetFieldValue(4, 0, totalTimerTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalStrokes field - /// Units: strokes - /// Returns nullable ushort representing the TotalStrokes field - public ushort? GetTotalStrokes() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalStrokes field - /// Units: strokes - /// Nullable field value to be set - public void SetTotalStrokes(ushort? totalStrokes_) - { - SetFieldValue(5, 0, totalStrokes_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgSpeed field - /// Units: m/s - /// Returns nullable float representing the AvgSpeed field - public float? GetAvgSpeed() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgSpeed(float? avgSpeed_) - { - SetFieldValue(6, 0, avgSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SwimStroke field - /// Units: swim_stroke - /// Returns nullable SwimStroke enum representing the SwimStroke field - public SwimStroke? GetSwimStroke() - { - object obj = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - SwimStroke? value = obj == null ? (SwimStroke?)null : (SwimStroke)obj; - return value; - } - - /// - /// Set SwimStroke field - /// Units: swim_stroke - /// Nullable field value to be set - public void SetSwimStroke(SwimStroke? swimStroke_) - { - SetFieldValue(7, 0, swimStroke_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgSwimmingCadence field - /// Units: strokes/min - /// Returns nullable byte representing the AvgSwimmingCadence field - public byte? GetAvgSwimmingCadence() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgSwimmingCadence field - /// Units: strokes/min - /// Nullable field value to be set - public void SetAvgSwimmingCadence(byte? avgSwimmingCadence_) - { - SetFieldValue(9, 0, avgSwimmingCadence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventGroup field - /// Returns nullable byte representing the EventGroup field - public byte? GetEventGroup() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set EventGroup field - /// Nullable field value to be set - public void SetEventGroup(byte? eventGroup_) - { - SetFieldValue(10, 0, eventGroup_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalCalories field - /// Units: kcal - /// Returns nullable ushort representing the TotalCalories field - public ushort? GetTotalCalories() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalCalories field - /// Units: kcal - /// Nullable field value to be set - public void SetTotalCalories(ushort? totalCalories_) - { - SetFieldValue(11, 0, totalCalories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LengthType field - /// Returns nullable LengthType enum representing the LengthType field - public LengthType? GetLengthType() - { - object obj = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - LengthType? value = obj == null ? (LengthType?)null : (LengthType)obj; - return value; - } - - /// - /// Set LengthType field - /// Nullable field value to be set - public void SetLengthType(LengthType? lengthType_) - { - SetFieldValue(12, 0, lengthType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PlayerScore field - /// Returns nullable ushort representing the PlayerScore field - public ushort? GetPlayerScore() - { - Object val = GetFieldValue(18, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set PlayerScore field - /// Nullable field value to be set - public void SetPlayerScore(ushort? playerScore_) - { - SetFieldValue(18, 0, playerScore_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the OpponentScore field - /// Returns nullable ushort representing the OpponentScore field - public ushort? GetOpponentScore() - { - Object val = GetFieldValue(19, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set OpponentScore field - /// Nullable field value to be set - public void SetOpponentScore(ushort? opponentScore_) - { - SetFieldValue(19, 0, opponentScore_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field StrokeCount - public int GetNumStrokeCount() - { - return GetNumFieldValues(20, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StrokeCount field - /// Units: counts - /// Comment: stroke_type enum used as the index - /// 0 based index of StrokeCount element to retrieve - /// Returns nullable ushort representing the StrokeCount field - public ushort? GetStrokeCount(int index) - { - Object val = GetFieldValue(20, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set StrokeCount field - /// Units: counts - /// Comment: stroke_type enum used as the index - /// 0 based index of stroke_count - /// Nullable field value to be set - public void SetStrokeCount(int index, ushort? strokeCount_) - { - SetFieldValue(20, index, strokeCount_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field ZoneCount - public int GetNumZoneCount() - { - return GetNumFieldValues(21, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ZoneCount field - /// Units: counts - /// Comment: zone number used as the index - /// 0 based index of ZoneCount element to retrieve - /// Returns nullable ushort representing the ZoneCount field - public ushort? GetZoneCount(int index) - { - Object val = GetFieldValue(21, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ZoneCount field - /// Units: counts - /// Comment: zone number used as the index - /// 0 based index of zone_count - /// Nullable field value to be set - public void SetZoneCount(int index, ushort? zoneCount_) - { - SetFieldValue(21, index, zoneCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedAvgRespirationRate field - /// Units: Breaths/min - /// Returns nullable float representing the EnhancedAvgRespirationRate field - public float? GetEnhancedAvgRespirationRate() - { - Object val = GetFieldValue(22, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedAvgRespirationRate field - /// Units: Breaths/min - /// Nullable field value to be set - public void SetEnhancedAvgRespirationRate(float? enhancedAvgRespirationRate_) - { - SetFieldValue(22, 0, enhancedAvgRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMaxRespirationRate field - /// Units: Breaths/min - /// Returns nullable float representing the EnhancedMaxRespirationRate field - public float? GetEnhancedMaxRespirationRate() - { - Object val = GetFieldValue(23, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMaxRespirationRate field - /// Units: Breaths/min - /// Nullable field value to be set - public void SetEnhancedMaxRespirationRate(float? enhancedMaxRespirationRate_) - { - SetFieldValue(23, 0, enhancedMaxRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRespirationRate field - /// Returns nullable byte representing the AvgRespirationRate field - public byte? GetAvgRespirationRate() - { - Object val = GetFieldValue(24, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgRespirationRate field - /// Nullable field value to be set - public void SetAvgRespirationRate(byte? avgRespirationRate_) - { - SetFieldValue(24, 0, avgRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxRespirationRate field - /// Returns nullable byte representing the MaxRespirationRate field - public byte? GetMaxRespirationRate() - { - Object val = GetFieldValue(25, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxRespirationRate field - /// Nullable field value to be set - public void SetMaxRespirationRate(byte? maxRespirationRate_) - { - SetFieldValue(25, 0, maxRespirationRate_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/MagnetometerDataMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/MagnetometerDataMesg.cs deleted file mode 100644 index 55944c330..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/MagnetometerDataMesg.cs +++ /dev/null @@ -1,389 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the MagnetometerData profile message. - /// - public class MagnetometerDataMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte TimestampMs = 0; - public const byte SampleTimeOffset = 1; - public const byte MagX = 2; - public const byte MagY = 3; - public const byte MagZ = 4; - public const byte CalibratedMagX = 5; - public const byte CalibratedMagY = 6; - public const byte CalibratedMagZ = 7; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public MagnetometerDataMesg() : base(Profile.GetMesg(MesgNum.MagnetometerData)) - { - } - - public MagnetometerDataMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Returns nullable ushort representing the TimestampMs field - public ushort? GetTimestampMs() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Nullable field value to be set - public void SetTimestampMs(ushort? timestampMs_) - { - SetFieldValue(0, 0, timestampMs_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field SampleTimeOffset - public int GetNumSampleTimeOffset() - { - return GetNumFieldValues(1, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SampleTimeOffset field - /// Units: ms - /// Comment: Each time in the array describes the time at which the compass sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in cmps_x and cmps_y and cmps_z - /// 0 based index of SampleTimeOffset element to retrieve - /// Returns nullable ushort representing the SampleTimeOffset field - public ushort? GetSampleTimeOffset(int index) - { - Object val = GetFieldValue(1, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set SampleTimeOffset field - /// Units: ms - /// Comment: Each time in the array describes the time at which the compass sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in cmps_x and cmps_y and cmps_z - /// 0 based index of sample_time_offset - /// Nullable field value to be set - public void SetSampleTimeOffset(int index, ushort? sampleTimeOffset_) - { - SetFieldValue(1, index, sampleTimeOffset_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MagX - public int GetNumMagX() - { - return GetNumFieldValues(2, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MagX field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of MagX element to retrieve - /// Returns nullable ushort representing the MagX field - public ushort? GetMagX(int index) - { - Object val = GetFieldValue(2, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MagX field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of mag_x - /// Nullable field value to be set - public void SetMagX(int index, ushort? magX_) - { - SetFieldValue(2, index, magX_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MagY - public int GetNumMagY() - { - return GetNumFieldValues(3, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MagY field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of MagY element to retrieve - /// Returns nullable ushort representing the MagY field - public ushort? GetMagY(int index) - { - Object val = GetFieldValue(3, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MagY field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of mag_y - /// Nullable field value to be set - public void SetMagY(int index, ushort? magY_) - { - SetFieldValue(3, index, magY_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MagZ - public int GetNumMagZ() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MagZ field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of MagZ element to retrieve - /// Returns nullable ushort representing the MagZ field - public ushort? GetMagZ(int index) - { - Object val = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MagZ field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of mag_z - /// Nullable field value to be set - public void SetMagZ(int index, ushort? magZ_) - { - SetFieldValue(4, index, magZ_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CalibratedMagX - public int GetNumCalibratedMagX() - { - return GetNumFieldValues(5, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CalibratedMagX field - /// Units: G - /// Comment: Calibrated Magnetometer reading - /// 0 based index of CalibratedMagX element to retrieve - /// Returns nullable float representing the CalibratedMagX field - public float? GetCalibratedMagX(int index) - { - Object val = GetFieldValue(5, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CalibratedMagX field - /// Units: G - /// Comment: Calibrated Magnetometer reading - /// 0 based index of calibrated_mag_x - /// Nullable field value to be set - public void SetCalibratedMagX(int index, float? calibratedMagX_) - { - SetFieldValue(5, index, calibratedMagX_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CalibratedMagY - public int GetNumCalibratedMagY() - { - return GetNumFieldValues(6, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CalibratedMagY field - /// Units: G - /// Comment: Calibrated Magnetometer reading - /// 0 based index of CalibratedMagY element to retrieve - /// Returns nullable float representing the CalibratedMagY field - public float? GetCalibratedMagY(int index) - { - Object val = GetFieldValue(6, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CalibratedMagY field - /// Units: G - /// Comment: Calibrated Magnetometer reading - /// 0 based index of calibrated_mag_y - /// Nullable field value to be set - public void SetCalibratedMagY(int index, float? calibratedMagY_) - { - SetFieldValue(6, index, calibratedMagY_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CalibratedMagZ - public int GetNumCalibratedMagZ() - { - return GetNumFieldValues(7, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CalibratedMagZ field - /// Units: G - /// Comment: Calibrated Magnetometer reading - /// 0 based index of CalibratedMagZ element to retrieve - /// Returns nullable float representing the CalibratedMagZ field - public float? GetCalibratedMagZ(int index) - { - Object val = GetFieldValue(7, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CalibratedMagZ field - /// Units: G - /// Comment: Calibrated Magnetometer reading - /// 0 based index of calibrated_mag_z - /// Nullable field value to be set - public void SetCalibratedMagZ(int index, float? calibratedMagZ_) - { - SetFieldValue(7, index, calibratedMagZ_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/MemoGlobMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/MemoGlobMesg.cs deleted file mode 100644 index bf5ddd6ba..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/MemoGlobMesg.cs +++ /dev/null @@ -1,233 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the MemoGlob profile message. - /// - public class MemoGlobMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte PartIndex = 250; - public const byte Memo = 0; - public const byte MesgNum = 1; - public const byte ParentIndex = 2; - public const byte FieldNum = 3; - public const byte Data = 4; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public MemoGlobMesg() : base(Profile.GetMesg(MesgNum.MemoGlob)) - { - } - - public MemoGlobMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the PartIndex field - /// Comment: Sequence number of memo blocks - /// Returns nullable uint representing the PartIndex field - public uint? GetPartIndex() - { - Object val = GetFieldValue(250, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set PartIndex field - /// Comment: Sequence number of memo blocks - /// Nullable field value to be set - public void SetPartIndex(uint? partIndex_) - { - SetFieldValue(250, 0, partIndex_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Memo - public int GetNumMemo() - { - return GetNumFieldValues(0, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Memo field - /// Comment: Deprecated. Use data field. - /// 0 based index of Memo element to retrieve - /// Returns nullable byte representing the Memo field - public byte? GetMemo(int index) - { - Object val = GetFieldValue(0, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Memo field - /// Comment: Deprecated. Use data field. - /// 0 based index of memo - /// Nullable field value to be set - public void SetMemo(int index, byte? memo_) - { - SetFieldValue(0, index, memo_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MesgNum field - /// Comment: Message Number of the parent message - /// Returns nullable ushort representing the MesgNum field - public ushort? GetMesgNum() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MesgNum field - /// Comment: Message Number of the parent message - /// Nullable field value to be set - public void SetMesgNum(ushort? mesgNum_) - { - SetFieldValue(1, 0, mesgNum_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ParentIndex field - /// Comment: Index of mesg that this glob is associated with. - /// Returns nullable ushort representing the ParentIndex field - public ushort? GetParentIndex() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ParentIndex field - /// Comment: Index of mesg that this glob is associated with. - /// Nullable field value to be set - public void SetParentIndex(ushort? parentIndex_) - { - SetFieldValue(2, 0, parentIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FieldNum field - /// Comment: Field within the parent that this glob is associated with - /// Returns nullable byte representing the FieldNum field - public byte? GetFieldNum() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FieldNum field - /// Comment: Field within the parent that this glob is associated with - /// Nullable field value to be set - public void SetFieldNum(byte? fieldNum_) - { - SetFieldValue(3, 0, fieldNum_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Data - public int GetNumData() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Data field - /// Comment: Block of utf8 bytes. Note, mutltibyte characters may be split across adjoining memo_glob messages. - /// 0 based index of Data element to retrieve - /// Returns nullable byte representing the Data field - public byte? GetData(int index) - { - Object val = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Data field - /// Comment: Block of utf8 bytes. Note, mutltibyte characters may be split across adjoining memo_glob messages. - /// 0 based index of data - /// Nullable field value to be set - public void SetData(int index, byte? data_) - { - SetFieldValue(4, index, data_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/MesgCapabilitiesMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/MesgCapabilitiesMesg.cs deleted file mode 100644 index 3dec4aa41..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/MesgCapabilitiesMesg.cs +++ /dev/null @@ -1,244 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the MesgCapabilities profile message. - /// - public class MesgCapabilitiesMesg : Mesg - { - #region Fields - static class CountSubfield - { - public static ushort NumPerFile = 0; - public static ushort MaxPerFile = 1; - public static ushort MaxPerFileType = 2; - public static ushort Subfields = 3; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte File = 0; - public const byte MesgNum = 1; - public const byte CountType = 2; - public const byte Count = 3; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public MesgCapabilitiesMesg() : base(Profile.GetMesg(MesgNum.MesgCapabilities)) - { - } - - public MesgCapabilitiesMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the File field - /// Returns nullable File enum representing the File field - public File? GetFile() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - File? value = obj == null ? (File?)null : (File)obj; - return value; - } - - /// - /// Set File field - /// Nullable field value to be set - public void SetFile(File? file_) - { - SetFieldValue(0, 0, file_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MesgNum field - /// Returns nullable ushort representing the MesgNum field - public ushort? GetMesgNum() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MesgNum field - /// Nullable field value to be set - public void SetMesgNum(ushort? mesgNum_) - { - SetFieldValue(1, 0, mesgNum_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CountType field - /// Returns nullable MesgCount enum representing the CountType field - public MesgCount? GetCountType() - { - object obj = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - MesgCount? value = obj == null ? (MesgCount?)null : (MesgCount)obj; - return value; - } - - /// - /// Set CountType field - /// Nullable field value to be set - public void SetCountType(MesgCount? countType_) - { - SetFieldValue(2, 0, countType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Count field - /// Returns nullable ushort representing the Count field - public ushort? GetCount() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Count field - /// Nullable field value to be set - public void SetCount(ushort? count_) - { - SetFieldValue(3, 0, count_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the NumPerFile subfield - /// Nullable ushort representing the NumPerFile subfield - public ushort? GetNumPerFile() - { - Object val = GetFieldValue(3, 0, CountSubfield.NumPerFile); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set NumPerFile subfield - /// Subfield value to be set - public void SetNumPerFile(ushort? numPerFile) - { - SetFieldValue(3, 0, numPerFile, CountSubfield.NumPerFile); - } - - /// - /// Retrieves the MaxPerFile subfield - /// Nullable ushort representing the MaxPerFile subfield - public ushort? GetMaxPerFile() - { - Object val = GetFieldValue(3, 0, CountSubfield.MaxPerFile); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set MaxPerFile subfield - /// Subfield value to be set - public void SetMaxPerFile(ushort? maxPerFile) - { - SetFieldValue(3, 0, maxPerFile, CountSubfield.MaxPerFile); - } - - /// - /// Retrieves the MaxPerFileType subfield - /// Nullable ushort representing the MaxPerFileType subfield - public ushort? GetMaxPerFileType() - { - Object val = GetFieldValue(3, 0, CountSubfield.MaxPerFileType); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set MaxPerFileType subfield - /// Subfield value to be set - public void SetMaxPerFileType(ushort? maxPerFileType) - { - SetFieldValue(3, 0, maxPerFileType, CountSubfield.MaxPerFileType); - } - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/MetZoneMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/MetZoneMesg.cs deleted file mode 100644 index 6b32424bd..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/MetZoneMesg.cs +++ /dev/null @@ -1,153 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the MetZone profile message. - /// - public class MetZoneMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte HighBpm = 1; - public const byte Calories = 2; - public const byte FatCalories = 3; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public MetZoneMesg() : base(Profile.GetMesg(MesgNum.MetZone)) - { - } - - public MetZoneMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HighBpm field - /// Returns nullable byte representing the HighBpm field - public byte? GetHighBpm() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HighBpm field - /// Nullable field value to be set - public void SetHighBpm(byte? highBpm_) - { - SetFieldValue(1, 0, highBpm_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Calories field - /// Units: kcal / min - /// Returns nullable float representing the Calories field - public float? GetCalories() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Calories field - /// Units: kcal / min - /// Nullable field value to be set - public void SetCalories(float? calories_) - { - SetFieldValue(2, 0, calories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FatCalories field - /// Units: kcal / min - /// Returns nullable float representing the FatCalories field - public float? GetFatCalories() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set FatCalories field - /// Units: kcal / min - /// Nullable field value to be set - public void SetFatCalories(float? fatCalories_) - { - SetFieldValue(3, 0, fatCalories_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/MonitoringInfoMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/MonitoringInfoMesg.cs deleted file mode 100644 index e0fcff912..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/MonitoringInfoMesg.cs +++ /dev/null @@ -1,244 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the MonitoringInfo profile message. - /// - public class MonitoringInfoMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte LocalTimestamp = 0; - public const byte ActivityType = 1; - public const byte CyclesToDistance = 3; - public const byte CyclesToCalories = 4; - public const byte RestingMetabolicRate = 5; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public MonitoringInfoMesg() : base(Profile.GetMesg(MesgNum.MonitoringInfo)) - { - } - - public MonitoringInfoMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LocalTimestamp field - /// Units: s - /// Comment: Use to convert activity timestamps to local time if device does not support time zone and daylight savings time correction. - /// Returns nullable uint representing the LocalTimestamp field - public uint? GetLocalTimestamp() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set LocalTimestamp field - /// Units: s - /// Comment: Use to convert activity timestamps to local time if device does not support time zone and daylight savings time correction. - /// Nullable field value to be set - public void SetLocalTimestamp(uint? localTimestamp_) - { - SetFieldValue(0, 0, localTimestamp_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field ActivityType - public int GetNumActivityType() - { - return GetNumFieldValues(1, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActivityType field - /// 0 based index of ActivityType element to retrieve - /// Returns nullable ActivityType enum representing the ActivityType field - public ActivityType? GetActivityType(int index) - { - object obj = GetFieldValue(1, index, Fit.SubfieldIndexMainField); - ActivityType? value = obj == null ? (ActivityType?)null : (ActivityType)obj; - return value; - } - - /// - /// Set ActivityType field - /// 0 based index of activity_type - /// Nullable field value to be set - public void SetActivityType(int index, ActivityType? activityType_) - { - SetFieldValue(1, index, activityType_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CyclesToDistance - public int GetNumCyclesToDistance() - { - return GetNumFieldValues(3, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CyclesToDistance field - /// Units: m/cycle - /// Comment: Indexed by activity_type - /// 0 based index of CyclesToDistance element to retrieve - /// Returns nullable float representing the CyclesToDistance field - public float? GetCyclesToDistance(int index) - { - Object val = GetFieldValue(3, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CyclesToDistance field - /// Units: m/cycle - /// Comment: Indexed by activity_type - /// 0 based index of cycles_to_distance - /// Nullable field value to be set - public void SetCyclesToDistance(int index, float? cyclesToDistance_) - { - SetFieldValue(3, index, cyclesToDistance_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CyclesToCalories - public int GetNumCyclesToCalories() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CyclesToCalories field - /// Units: kcal/cycle - /// Comment: Indexed by activity_type - /// 0 based index of CyclesToCalories element to retrieve - /// Returns nullable float representing the CyclesToCalories field - public float? GetCyclesToCalories(int index) - { - Object val = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CyclesToCalories field - /// Units: kcal/cycle - /// Comment: Indexed by activity_type - /// 0 based index of cycles_to_calories - /// Nullable field value to be set - public void SetCyclesToCalories(int index, float? cyclesToCalories_) - { - SetFieldValue(4, index, cyclesToCalories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RestingMetabolicRate field - /// Units: kcal / day - /// Returns nullable ushort representing the RestingMetabolicRate field - public ushort? GetRestingMetabolicRate() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set RestingMetabolicRate field - /// Units: kcal / day - /// Nullable field value to be set - public void SetRestingMetabolicRate(ushort? restingMetabolicRate_) - { - SetFieldValue(5, 0, restingMetabolicRate_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/MonitoringMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/MonitoringMesg.cs deleted file mode 100644 index bb4587d92..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/MonitoringMesg.cs +++ /dev/null @@ -1,872 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Monitoring profile message. - /// - public class MonitoringMesg : Mesg - { - #region Fields - static class CyclesSubfield - { - public static ushort Steps = 0; - public static ushort Strokes = 1; - public static ushort Subfields = 2; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte DeviceIndex = 0; - public const byte Calories = 1; - public const byte Distance = 2; - public const byte Cycles = 3; - public const byte ActiveTime = 4; - public const byte ActivityType = 5; - public const byte ActivitySubtype = 6; - public const byte ActivityLevel = 7; - public const byte Distance16 = 8; - public const byte Cycles16 = 9; - public const byte ActiveTime16 = 10; - public const byte LocalTimestamp = 11; - public const byte Temperature = 12; - public const byte TemperatureMin = 14; - public const byte TemperatureMax = 15; - public const byte ActivityTime = 16; - public const byte ActiveCalories = 19; - public const byte CurrentActivityTypeIntensity = 24; - public const byte TimestampMin8 = 25; - public const byte Timestamp16 = 26; - public const byte HeartRate = 27; - public const byte Intensity = 28; - public const byte DurationMin = 29; - public const byte Duration = 30; - public const byte Ascent = 31; - public const byte Descent = 32; - public const byte ModerateActivityMinutes = 33; - public const byte VigorousActivityMinutes = 34; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public MonitoringMesg() : base(Profile.GetMesg(MesgNum.Monitoring)) - { - } - - public MonitoringMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeviceIndex field - /// Comment: Associates this data to device_info message. Not required for file with single device (sensor). - /// Returns nullable byte representing the DeviceIndex field - public byte? GetDeviceIndex() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DeviceIndex field - /// Comment: Associates this data to device_info message. Not required for file with single device (sensor). - /// Nullable field value to be set - public void SetDeviceIndex(byte? deviceIndex_) - { - SetFieldValue(0, 0, deviceIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Calories field - /// Units: kcal - /// Comment: Accumulated total calories. Maintained by MonitoringReader for each activity_type. See SDK documentation - /// Returns nullable ushort representing the Calories field - public ushort? GetCalories() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Calories field - /// Units: kcal - /// Comment: Accumulated total calories. Maintained by MonitoringReader for each activity_type. See SDK documentation - /// Nullable field value to be set - public void SetCalories(ushort? calories_) - { - SetFieldValue(1, 0, calories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Distance field - /// Units: m - /// Comment: Accumulated distance. Maintained by MonitoringReader for each activity_type. See SDK documentation. - /// Returns nullable float representing the Distance field - public float? GetDistance() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Distance field - /// Units: m - /// Comment: Accumulated distance. Maintained by MonitoringReader for each activity_type. See SDK documentation. - /// Nullable field value to be set - public void SetDistance(float? distance_) - { - SetFieldValue(2, 0, distance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Cycles field - /// Units: cycles - /// Comment: Accumulated cycles. Maintained by MonitoringReader for each activity_type. See SDK documentation. - /// Returns nullable float representing the Cycles field - public float? GetCycles() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Cycles field - /// Units: cycles - /// Comment: Accumulated cycles. Maintained by MonitoringReader for each activity_type. See SDK documentation. - /// Nullable field value to be set - public void SetCycles(float? cycles_) - { - SetFieldValue(3, 0, cycles_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the Steps subfield - /// Units: steps - /// Nullable uint representing the Steps subfield - public uint? GetSteps() - { - Object val = GetFieldValue(3, 0, CyclesSubfield.Steps); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set Steps subfield - /// Units: steps - /// Subfield value to be set - public void SetSteps(uint? steps) - { - SetFieldValue(3, 0, steps, CyclesSubfield.Steps); - } - - /// - /// Retrieves the Strokes subfield - /// Units: strokes - /// Nullable float representing the Strokes subfield - public float? GetStrokes() - { - Object val = GetFieldValue(3, 0, CyclesSubfield.Strokes); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set Strokes subfield - /// Units: strokes - /// Subfield value to be set - public void SetStrokes(float? strokes) - { - SetFieldValue(3, 0, strokes, CyclesSubfield.Strokes); - } - /// - /// Retrieves the ActiveTime field - /// Units: s - /// Returns nullable float representing the ActiveTime field - public float? GetActiveTime() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set ActiveTime field - /// Units: s - /// Nullable field value to be set - public void SetActiveTime(float? activeTime_) - { - SetFieldValue(4, 0, activeTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActivityType field - /// Returns nullable ActivityType enum representing the ActivityType field - public ActivityType? GetActivityType() - { - object obj = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - ActivityType? value = obj == null ? (ActivityType?)null : (ActivityType)obj; - return value; - } - - /// - /// Set ActivityType field - /// Nullable field value to be set - public void SetActivityType(ActivityType? activityType_) - { - SetFieldValue(5, 0, activityType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActivitySubtype field - /// Returns nullable ActivitySubtype enum representing the ActivitySubtype field - public ActivitySubtype? GetActivitySubtype() - { - object obj = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - ActivitySubtype? value = obj == null ? (ActivitySubtype?)null : (ActivitySubtype)obj; - return value; - } - - /// - /// Set ActivitySubtype field - /// Nullable field value to be set - public void SetActivitySubtype(ActivitySubtype? activitySubtype_) - { - SetFieldValue(6, 0, activitySubtype_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActivityLevel field - /// Returns nullable ActivityLevel enum representing the ActivityLevel field - public ActivityLevel? GetActivityLevel() - { - object obj = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - ActivityLevel? value = obj == null ? (ActivityLevel?)null : (ActivityLevel)obj; - return value; - } - - /// - /// Set ActivityLevel field - /// Nullable field value to be set - public void SetActivityLevel(ActivityLevel? activityLevel_) - { - SetFieldValue(7, 0, activityLevel_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Distance16 field - /// Units: 100 * m - /// Returns nullable ushort representing the Distance16 field - public ushort? GetDistance16() - { - Object val = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Distance16 field - /// Units: 100 * m - /// Nullable field value to be set - public void SetDistance16(ushort? distance16_) - { - SetFieldValue(8, 0, distance16_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Cycles16 field - /// Units: 2 * cycles (steps) - /// Returns nullable ushort representing the Cycles16 field - public ushort? GetCycles16() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Cycles16 field - /// Units: 2 * cycles (steps) - /// Nullable field value to be set - public void SetCycles16(ushort? cycles16_) - { - SetFieldValue(9, 0, cycles16_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActiveTime16 field - /// Units: s - /// Returns nullable ushort representing the ActiveTime16 field - public ushort? GetActiveTime16() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ActiveTime16 field - /// Units: s - /// Nullable field value to be set - public void SetActiveTime16(ushort? activeTime16_) - { - SetFieldValue(10, 0, activeTime16_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LocalTimestamp field - /// Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - /// Returns nullable uint representing the LocalTimestamp field - public uint? GetLocalTimestamp() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set LocalTimestamp field - /// Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - /// Nullable field value to be set - public void SetLocalTimestamp(uint? localTimestamp_) - { - SetFieldValue(11, 0, localTimestamp_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Temperature field - /// Units: C - /// Comment: Avg temperature during the logging interval ended at timestamp - /// Returns nullable float representing the Temperature field - public float? GetTemperature() - { - Object val = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Temperature field - /// Units: C - /// Comment: Avg temperature during the logging interval ended at timestamp - /// Nullable field value to be set - public void SetTemperature(float? temperature_) - { - SetFieldValue(12, 0, temperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TemperatureMin field - /// Units: C - /// Comment: Min temperature during the logging interval ended at timestamp - /// Returns nullable float representing the TemperatureMin field - public float? GetTemperatureMin() - { - Object val = GetFieldValue(14, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TemperatureMin field - /// Units: C - /// Comment: Min temperature during the logging interval ended at timestamp - /// Nullable field value to be set - public void SetTemperatureMin(float? temperatureMin_) - { - SetFieldValue(14, 0, temperatureMin_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TemperatureMax field - /// Units: C - /// Comment: Max temperature during the logging interval ended at timestamp - /// Returns nullable float representing the TemperatureMax field - public float? GetTemperatureMax() - { - Object val = GetFieldValue(15, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TemperatureMax field - /// Units: C - /// Comment: Max temperature during the logging interval ended at timestamp - /// Nullable field value to be set - public void SetTemperatureMax(float? temperatureMax_) - { - SetFieldValue(15, 0, temperatureMax_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field ActivityTime - public int GetNumActivityTime() - { - return GetNumFieldValues(16, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActivityTime field - /// Units: minutes - /// Comment: Indexed using minute_activity_level enum - /// 0 based index of ActivityTime element to retrieve - /// Returns nullable ushort representing the ActivityTime field - public ushort? GetActivityTime(int index) - { - Object val = GetFieldValue(16, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ActivityTime field - /// Units: minutes - /// Comment: Indexed using minute_activity_level enum - /// 0 based index of activity_time - /// Nullable field value to be set - public void SetActivityTime(int index, ushort? activityTime_) - { - SetFieldValue(16, index, activityTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActiveCalories field - /// Units: kcal - /// Returns nullable ushort representing the ActiveCalories field - public ushort? GetActiveCalories() - { - Object val = GetFieldValue(19, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ActiveCalories field - /// Units: kcal - /// Nullable field value to be set - public void SetActiveCalories(ushort? activeCalories_) - { - SetFieldValue(19, 0, activeCalories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CurrentActivityTypeIntensity field - /// Comment: Indicates single type / intensity for duration since last monitoring message. - /// Returns nullable byte representing the CurrentActivityTypeIntensity field - public byte? GetCurrentActivityTypeIntensity() - { - Object val = GetFieldValue(24, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set CurrentActivityTypeIntensity field - /// Comment: Indicates single type / intensity for duration since last monitoring message. - /// Nullable field value to be set - public void SetCurrentActivityTypeIntensity(byte? currentActivityTypeIntensity_) - { - SetFieldValue(24, 0, currentActivityTypeIntensity_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMin8 field - /// Units: min - /// Returns nullable byte representing the TimestampMin8 field - public byte? GetTimestampMin8() - { - Object val = GetFieldValue(25, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set TimestampMin8 field - /// Units: min - /// Nullable field value to be set - public void SetTimestampMin8(byte? timestampMin8_) - { - SetFieldValue(25, 0, timestampMin8_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Timestamp16 field - /// Units: s - /// Returns nullable ushort representing the Timestamp16 field - public ushort? GetTimestamp16() - { - Object val = GetFieldValue(26, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Timestamp16 field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp16(ushort? timestamp16_) - { - SetFieldValue(26, 0, timestamp16_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HeartRate field - /// Units: bpm - /// Returns nullable byte representing the HeartRate field - public byte? GetHeartRate() - { - Object val = GetFieldValue(27, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetHeartRate(byte? heartRate_) - { - SetFieldValue(27, 0, heartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Intensity field - /// Returns nullable float representing the Intensity field - public float? GetIntensity() - { - Object val = GetFieldValue(28, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Intensity field - /// Nullable field value to be set - public void SetIntensity(float? intensity_) - { - SetFieldValue(28, 0, intensity_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DurationMin field - /// Units: min - /// Returns nullable ushort representing the DurationMin field - public ushort? GetDurationMin() - { - Object val = GetFieldValue(29, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set DurationMin field - /// Units: min - /// Nullable field value to be set - public void SetDurationMin(ushort? durationMin_) - { - SetFieldValue(29, 0, durationMin_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Duration field - /// Units: s - /// Returns nullable uint representing the Duration field - public uint? GetDuration() - { - Object val = GetFieldValue(30, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set Duration field - /// Units: s - /// Nullable field value to be set - public void SetDuration(uint? duration_) - { - SetFieldValue(30, 0, duration_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Ascent field - /// Units: m - /// Returns nullable float representing the Ascent field - public float? GetAscent() - { - Object val = GetFieldValue(31, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Ascent field - /// Units: m - /// Nullable field value to be set - public void SetAscent(float? ascent_) - { - SetFieldValue(31, 0, ascent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Descent field - /// Units: m - /// Returns nullable float representing the Descent field - public float? GetDescent() - { - Object val = GetFieldValue(32, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Descent field - /// Units: m - /// Nullable field value to be set - public void SetDescent(float? descent_) - { - SetFieldValue(32, 0, descent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ModerateActivityMinutes field - /// Units: minutes - /// Returns nullable ushort representing the ModerateActivityMinutes field - public ushort? GetModerateActivityMinutes() - { - Object val = GetFieldValue(33, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ModerateActivityMinutes field - /// Units: minutes - /// Nullable field value to be set - public void SetModerateActivityMinutes(ushort? moderateActivityMinutes_) - { - SetFieldValue(33, 0, moderateActivityMinutes_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the VigorousActivityMinutes field - /// Units: minutes - /// Returns nullable ushort representing the VigorousActivityMinutes field - public ushort? GetVigorousActivityMinutes() - { - Object val = GetFieldValue(34, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set VigorousActivityMinutes field - /// Units: minutes - /// Nullable field value to be set - public void SetVigorousActivityMinutes(ushort? vigorousActivityMinutes_) - { - SetFieldValue(34, 0, vigorousActivityMinutes_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/NmeaSentenceMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/NmeaSentenceMesg.cs deleted file mode 100644 index 9696723c7..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/NmeaSentenceMesg.cs +++ /dev/null @@ -1,152 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the NmeaSentence profile message. - /// - public class NmeaSentenceMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte TimestampMs = 0; - public const byte Sentence = 1; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public NmeaSentenceMesg() : base(Profile.GetMesg(MesgNum.NmeaSentence)) - { - } - - public NmeaSentenceMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Timestamp message was output - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Timestamp message was output - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMs field - /// Units: ms - /// Comment: Fractional part of timestamp, added to timestamp - /// Returns nullable ushort representing the TimestampMs field - public ushort? GetTimestampMs() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimestampMs field - /// Units: ms - /// Comment: Fractional part of timestamp, added to timestamp - /// Nullable field value to be set - public void SetTimestampMs(ushort? timestampMs_) - { - SetFieldValue(0, 0, timestampMs_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sentence field - /// Comment: NMEA sentence - /// Returns byte[] representing the Sentence field - public byte[] GetSentence() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Sentence field - /// Comment: NMEA sentence - /// Returns String representing the Sentence field - public String GetSentenceAsString() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Sentence field - /// Comment: NMEA sentence - /// field value to be set - public void SetSentence(String sentence_) - { - byte[] data = Encoding.UTF8.GetBytes(sentence_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(1, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Sentence field - /// Comment: NMEA sentence - /// field value to be set - public void SetSentence(byte[] sentence_) - { - SetFieldValue(1, 0, sentence_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ObdiiDataMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ObdiiDataMesg.cs deleted file mode 100644 index ef2650c43..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ObdiiDataMesg.cs +++ /dev/null @@ -1,343 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the ObdiiData profile message. - /// - public class ObdiiDataMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte TimestampMs = 0; - public const byte TimeOffset = 1; - public const byte Pid = 2; - public const byte RawData = 3; - public const byte PidDataSize = 4; - public const byte SystemTime = 5; - public const byte StartTimestamp = 6; - public const byte StartTimestampMs = 7; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public ObdiiDataMesg() : base(Profile.GetMesg(MesgNum.ObdiiData)) - { - } - - public ObdiiDataMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Timestamp message was output - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Timestamp message was output - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMs field - /// Units: ms - /// Comment: Fractional part of timestamp, added to timestamp - /// Returns nullable ushort representing the TimestampMs field - public ushort? GetTimestampMs() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimestampMs field - /// Units: ms - /// Comment: Fractional part of timestamp, added to timestamp - /// Nullable field value to be set - public void SetTimestampMs(ushort? timestampMs_) - { - SetFieldValue(0, 0, timestampMs_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeOffset - public int GetNumTimeOffset() - { - return GetNumFieldValues(1, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeOffset field - /// Units: ms - /// Comment: Offset of PID reading [i] from start_timestamp+start_timestamp_ms. Readings may span accross seconds. - /// 0 based index of TimeOffset element to retrieve - /// Returns nullable ushort representing the TimeOffset field - public ushort? GetTimeOffset(int index) - { - Object val = GetFieldValue(1, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimeOffset field - /// Units: ms - /// Comment: Offset of PID reading [i] from start_timestamp+start_timestamp_ms. Readings may span accross seconds. - /// 0 based index of time_offset - /// Nullable field value to be set - public void SetTimeOffset(int index, ushort? timeOffset_) - { - SetFieldValue(1, index, timeOffset_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Pid field - /// Comment: Parameter ID - /// Returns nullable byte representing the Pid field - public byte? GetPid() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Pid field - /// Comment: Parameter ID - /// Nullable field value to be set - public void SetPid(byte? pid_) - { - SetFieldValue(2, 0, pid_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field RawData - public int GetNumRawData() - { - return GetNumFieldValues(3, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RawData field - /// Comment: Raw parameter data - /// 0 based index of RawData element to retrieve - /// Returns nullable byte representing the RawData field - public byte? GetRawData(int index) - { - Object val = GetFieldValue(3, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set RawData field - /// Comment: Raw parameter data - /// 0 based index of raw_data - /// Nullable field value to be set - public void SetRawData(int index, byte? rawData_) - { - SetFieldValue(3, index, rawData_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field PidDataSize - public int GetNumPidDataSize() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PidDataSize field - /// Comment: Optional, data size of PID[i]. If not specified refer to SAE J1979. - /// 0 based index of PidDataSize element to retrieve - /// Returns nullable byte representing the PidDataSize field - public byte? GetPidDataSize(int index) - { - Object val = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set PidDataSize field - /// Comment: Optional, data size of PID[i]. If not specified refer to SAE J1979. - /// 0 based index of pid_data_size - /// Nullable field value to be set - public void SetPidDataSize(int index, byte? pidDataSize_) - { - SetFieldValue(4, index, pidDataSize_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field SystemTime - public int GetNumSystemTime() - { - return GetNumFieldValues(5, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SystemTime field - /// Comment: System time associated with sample expressed in ms, can be used instead of time_offset. There will be a system_time value for each raw_data element. For multibyte pids the system_time is repeated. - /// 0 based index of SystemTime element to retrieve - /// Returns nullable uint representing the SystemTime field - public uint? GetSystemTime(int index) - { - Object val = GetFieldValue(5, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set SystemTime field - /// Comment: System time associated with sample expressed in ms, can be used instead of time_offset. There will be a system_time value for each raw_data element. For multibyte pids the system_time is repeated. - /// 0 based index of system_time - /// Nullable field value to be set - public void SetSystemTime(int index, uint? systemTime_) - { - SetFieldValue(5, index, systemTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartTimestamp field - /// Comment: Timestamp of first sample recorded in the message. Used with time_offset to generate time of each sample - /// Returns DateTime representing the StartTimestamp field - public DateTime GetStartTimestamp() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set StartTimestamp field - /// Comment: Timestamp of first sample recorded in the message. Used with time_offset to generate time of each sample - /// Nullable field value to be set - public void SetStartTimestamp(DateTime startTimestamp_) - { - SetFieldValue(6, 0, startTimestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartTimestampMs field - /// Units: ms - /// Comment: Fractional part of start_timestamp - /// Returns nullable ushort representing the StartTimestampMs field - public ushort? GetStartTimestampMs() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set StartTimestampMs field - /// Units: ms - /// Comment: Fractional part of start_timestamp - /// Nullable field value to be set - public void SetStartTimestampMs(ushort? startTimestampMs_) - { - SetFieldValue(7, 0, startTimestampMs_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/OhrSettingsMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/OhrSettingsMesg.cs deleted file mode 100644 index e9bbfb9ea..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/OhrSettingsMesg.cs +++ /dev/null @@ -1,98 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the OhrSettings profile message. - /// - public class OhrSettingsMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte Enabled = 0; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public OhrSettingsMesg() : base(Profile.GetMesg(MesgNum.OhrSettings)) - { - } - - public OhrSettingsMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Enabled field - /// Returns nullable Switch enum representing the Enabled field - public Switch? GetEnabled() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Switch? value = obj == null ? (Switch?)null : (Switch)obj; - return value; - } - - /// - /// Set Enabled field - /// Nullable field value to be set - public void SetEnabled(Switch? enabled_) - { - SetFieldValue(0, 0, enabled_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/OneDSensorCalibrationMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/OneDSensorCalibrationMesg.cs deleted file mode 100644 index 230e46795..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/OneDSensorCalibrationMesg.cs +++ /dev/null @@ -1,243 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the OneDSensorCalibration profile message. - /// - public class OneDSensorCalibrationMesg : Mesg - { - #region Fields - static class CalibrationFactorSubfield - { - public static ushort BaroCalFactor = 0; - public static ushort Subfields = 1; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte SensorType = 0; - public const byte CalibrationFactor = 1; - public const byte CalibrationDivisor = 2; - public const byte LevelShift = 3; - public const byte OffsetCal = 4; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public OneDSensorCalibrationMesg() : base(Profile.GetMesg(MesgNum.OneDSensorCalibration)) - { - } - - public OneDSensorCalibrationMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SensorType field - /// Comment: Indicates which sensor the calibration is for - /// Returns nullable SensorType enum representing the SensorType field - public SensorType? GetSensorType() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - SensorType? value = obj == null ? (SensorType?)null : (SensorType)obj; - return value; - } - - /// - /// Set SensorType field - /// Comment: Indicates which sensor the calibration is for - /// Nullable field value to be set - public void SetSensorType(SensorType? sensorType_) - { - SetFieldValue(0, 0, sensorType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CalibrationFactor field - /// Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - /// Returns nullable uint representing the CalibrationFactor field - public uint? GetCalibrationFactor() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set CalibrationFactor field - /// Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - /// Nullable field value to be set - public void SetCalibrationFactor(uint? calibrationFactor_) - { - SetFieldValue(1, 0, calibrationFactor_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the BaroCalFactor subfield - /// Units: Pa - /// Comment: Barometer calibration factor - /// Nullable uint representing the BaroCalFactor subfield - public uint? GetBaroCalFactor() - { - Object val = GetFieldValue(1, 0, CalibrationFactorSubfield.BaroCalFactor); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set BaroCalFactor subfield - /// Units: Pa - /// Comment: Barometer calibration factor - /// Subfield value to be set - public void SetBaroCalFactor(uint? baroCalFactor) - { - SetFieldValue(1, 0, baroCalFactor, CalibrationFactorSubfield.BaroCalFactor); - } - /// - /// Retrieves the CalibrationDivisor field - /// Units: counts - /// Comment: Calibration factor divisor - /// Returns nullable uint representing the CalibrationDivisor field - public uint? GetCalibrationDivisor() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set CalibrationDivisor field - /// Units: counts - /// Comment: Calibration factor divisor - /// Nullable field value to be set - public void SetCalibrationDivisor(uint? calibrationDivisor_) - { - SetFieldValue(2, 0, calibrationDivisor_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LevelShift field - /// Comment: Level shift value used to shift the ADC value back into range - /// Returns nullable uint representing the LevelShift field - public uint? GetLevelShift() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set LevelShift field - /// Comment: Level shift value used to shift the ADC value back into range - /// Nullable field value to be set - public void SetLevelShift(uint? levelShift_) - { - SetFieldValue(3, 0, levelShift_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the OffsetCal field - /// Comment: Internal Calibration factor - /// Returns nullable int representing the OffsetCal field - public int? GetOffsetCal() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set OffsetCal field - /// Comment: Internal Calibration factor - /// Nullable field value to be set - public void SetOffsetCal(int? offsetCal_) - { - SetFieldValue(4, 0, offsetCal_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/PadMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/PadMesg.cs deleted file mode 100644 index c365596e9..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/PadMesg.cs +++ /dev/null @@ -1,53 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Pad profile message. - /// - public class PadMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public PadMesg() : base(Profile.GetMesg(MesgNum.Pad)) - { - } - - public PadMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/PowerZoneMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/PowerZoneMesg.cs deleted file mode 100644 index f554bf98a..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/PowerZoneMesg.cs +++ /dev/null @@ -1,142 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the PowerZone profile message. - /// - public class PowerZoneMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte HighValue = 1; - public const byte Name = 2; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public PowerZoneMesg() : base(Profile.GetMesg(MesgNum.PowerZone)) - { - } - - public PowerZoneMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HighValue field - /// Units: watts - /// Returns nullable ushort representing the HighValue field - public ushort? GetHighValue() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set HighValue field - /// Units: watts - /// Nullable field value to be set - public void SetHighValue(ushort? highValue_) - { - SetFieldValue(1, 0, highValue_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(2, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(2, 0, name_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/RecordMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/RecordMesg.cs deleted file mode 100644 index 2ee7ebf40..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/RecordMesg.cs +++ /dev/null @@ -1,2281 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Record profile message. - /// - public class RecordMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte PositionLat = 0; - public const byte PositionLong = 1; - public const byte Altitude = 2; - public const byte HeartRate = 3; - public const byte Cadence = 4; - public const byte Distance = 5; - public const byte Speed = 6; - public const byte Power = 7; - public const byte CompressedSpeedDistance = 8; - public const byte Grade = 9; - public const byte Resistance = 10; - public const byte TimeFromCourse = 11; - public const byte CycleLength = 12; - public const byte Temperature = 13; - public const byte Speed1s = 17; - public const byte Cycles = 18; - public const byte TotalCycles = 19; - public const byte CompressedAccumulatedPower = 28; - public const byte AccumulatedPower = 29; - public const byte LeftRightBalance = 30; - public const byte GpsAccuracy = 31; - public const byte VerticalSpeed = 32; - public const byte Calories = 33; - public const byte VerticalOscillation = 39; - public const byte StanceTimePercent = 40; - public const byte StanceTime = 41; - public const byte ActivityType = 42; - public const byte LeftTorqueEffectiveness = 43; - public const byte RightTorqueEffectiveness = 44; - public const byte LeftPedalSmoothness = 45; - public const byte RightPedalSmoothness = 46; - public const byte CombinedPedalSmoothness = 47; - public const byte Time128 = 48; - public const byte StrokeType = 49; - public const byte Zone = 50; - public const byte BallSpeed = 51; - public const byte Cadence256 = 52; - public const byte FractionalCadence = 53; - public const byte TotalHemoglobinConc = 54; - public const byte TotalHemoglobinConcMin = 55; - public const byte TotalHemoglobinConcMax = 56; - public const byte SaturatedHemoglobinPercent = 57; - public const byte SaturatedHemoglobinPercentMin = 58; - public const byte SaturatedHemoglobinPercentMax = 59; - public const byte DeviceIndex = 62; - public const byte LeftPco = 67; - public const byte RightPco = 68; - public const byte LeftPowerPhase = 69; - public const byte LeftPowerPhasePeak = 70; - public const byte RightPowerPhase = 71; - public const byte RightPowerPhasePeak = 72; - public const byte EnhancedSpeed = 73; - public const byte EnhancedAltitude = 78; - public const byte BatterySoc = 81; - public const byte MotorPower = 82; - public const byte VerticalRatio = 83; - public const byte StanceTimeBalance = 84; - public const byte StepLength = 85; - public const byte AbsolutePressure = 91; - public const byte Depth = 92; - public const byte NextStopDepth = 93; - public const byte NextStopTime = 94; - public const byte TimeToSurface = 95; - public const byte NdlTime = 96; - public const byte CnsLoad = 97; - public const byte N2Load = 98; - public const byte RespirationRate = 99; - public const byte EnhancedRespirationRate = 108; - public const byte Grit = 114; - public const byte Flow = 115; - public const byte EbikeTravelRange = 117; - public const byte EbikeBatteryLevel = 118; - public const byte EbikeAssistMode = 119; - public const byte EbikeAssistLevelPercent = 120; - public const byte AirTimeRemaining = 123; - public const byte PressureSac = 124; - public const byte VolumeSac = 125; - public const byte Rmv = 126; - public const byte AscentRate = 127; - public const byte Po2 = 129; - public const byte CoreTemperature = 139; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public RecordMesg() : base(Profile.GetMesg(MesgNum.Record)) - { - } - - public RecordMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLat field - /// Units: semicircles - /// Returns nullable int representing the PositionLat field - public int? GetPositionLat() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLat(int? positionLat_) - { - SetFieldValue(0, 0, positionLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLong field - /// Units: semicircles - /// Returns nullable int representing the PositionLong field - public int? GetPositionLong() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLong(int? positionLong_) - { - SetFieldValue(1, 0, positionLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Altitude field - /// Units: m - /// Returns nullable float representing the Altitude field - public float? GetAltitude() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Altitude field - /// Units: m - /// Nullable field value to be set - public void SetAltitude(float? altitude_) - { - SetFieldValue(2, 0, altitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HeartRate field - /// Units: bpm - /// Returns nullable byte representing the HeartRate field - public byte? GetHeartRate() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetHeartRate(byte? heartRate_) - { - SetFieldValue(3, 0, heartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Cadence field - /// Units: rpm - /// Returns nullable byte representing the Cadence field - public byte? GetCadence() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Cadence field - /// Units: rpm - /// Nullable field value to be set - public void SetCadence(byte? cadence_) - { - SetFieldValue(4, 0, cadence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Distance field - /// Units: m - /// Returns nullable float representing the Distance field - public float? GetDistance() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Distance field - /// Units: m - /// Nullable field value to be set - public void SetDistance(float? distance_) - { - SetFieldValue(5, 0, distance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Speed field - /// Units: m/s - /// Returns nullable float representing the Speed field - public float? GetSpeed() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Speed field - /// Units: m/s - /// Nullable field value to be set - public void SetSpeed(float? speed_) - { - SetFieldValue(6, 0, speed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Power field - /// Units: watts - /// Returns nullable ushort representing the Power field - public ushort? GetPower() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Power field - /// Units: watts - /// Nullable field value to be set - public void SetPower(ushort? power_) - { - SetFieldValue(7, 0, power_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CompressedSpeedDistance - public int GetNumCompressedSpeedDistance() - { - return GetNumFieldValues(8, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CompressedSpeedDistance field - /// 0 based index of CompressedSpeedDistance element to retrieve - /// Returns nullable byte representing the CompressedSpeedDistance field - public byte? GetCompressedSpeedDistance(int index) - { - Object val = GetFieldValue(8, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set CompressedSpeedDistance field - /// 0 based index of compressed_speed_distance - /// Nullable field value to be set - public void SetCompressedSpeedDistance(int index, byte? compressedSpeedDistance_) - { - SetFieldValue(8, index, compressedSpeedDistance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Grade field - /// Units: % - /// Returns nullable float representing the Grade field - public float? GetGrade() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Grade field - /// Units: % - /// Nullable field value to be set - public void SetGrade(float? grade_) - { - SetFieldValue(9, 0, grade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Resistance field - /// Comment: Relative. 0 is none 254 is Max. - /// Returns nullable byte representing the Resistance field - public byte? GetResistance() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Resistance field - /// Comment: Relative. 0 is none 254 is Max. - /// Nullable field value to be set - public void SetResistance(byte? resistance_) - { - SetFieldValue(10, 0, resistance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeFromCourse field - /// Units: s - /// Returns nullable float representing the TimeFromCourse field - public float? GetTimeFromCourse() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeFromCourse field - /// Units: s - /// Nullable field value to be set - public void SetTimeFromCourse(float? timeFromCourse_) - { - SetFieldValue(11, 0, timeFromCourse_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CycleLength field - /// Units: m - /// Returns nullable float representing the CycleLength field - public float? GetCycleLength() - { - Object val = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CycleLength field - /// Units: m - /// Nullable field value to be set - public void SetCycleLength(float? cycleLength_) - { - SetFieldValue(12, 0, cycleLength_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Temperature field - /// Units: C - /// Returns nullable sbyte representing the Temperature field - public sbyte? GetTemperature() - { - Object val = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set Temperature field - /// Units: C - /// Nullable field value to be set - public void SetTemperature(sbyte? temperature_) - { - SetFieldValue(13, 0, temperature_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Speed1s - public int GetNumSpeed1s() - { - return GetNumFieldValues(17, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Speed1s field - /// Units: m/s - /// Comment: Speed at 1s intervals. Timestamp field indicates time of last array element. - /// 0 based index of Speed1s element to retrieve - /// Returns nullable float representing the Speed1s field - public float? GetSpeed1s(int index) - { - Object val = GetFieldValue(17, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Speed1s field - /// Units: m/s - /// Comment: Speed at 1s intervals. Timestamp field indicates time of last array element. - /// 0 based index of speed_1s - /// Nullable field value to be set - public void SetSpeed1s(int index, float? speed1s_) - { - SetFieldValue(17, index, speed1s_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Cycles field - /// Units: cycles - /// Returns nullable byte representing the Cycles field - public byte? GetCycles() - { - Object val = GetFieldValue(18, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Cycles field - /// Units: cycles - /// Nullable field value to be set - public void SetCycles(byte? cycles_) - { - SetFieldValue(18, 0, cycles_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalCycles field - /// Units: cycles - /// Returns nullable uint representing the TotalCycles field - public uint? GetTotalCycles() - { - Object val = GetFieldValue(19, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TotalCycles field - /// Units: cycles - /// Nullable field value to be set - public void SetTotalCycles(uint? totalCycles_) - { - SetFieldValue(19, 0, totalCycles_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CompressedAccumulatedPower field - /// Units: watts - /// Returns nullable ushort representing the CompressedAccumulatedPower field - public ushort? GetCompressedAccumulatedPower() - { - Object val = GetFieldValue(28, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set CompressedAccumulatedPower field - /// Units: watts - /// Nullable field value to be set - public void SetCompressedAccumulatedPower(ushort? compressedAccumulatedPower_) - { - SetFieldValue(28, 0, compressedAccumulatedPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AccumulatedPower field - /// Units: watts - /// Returns nullable uint representing the AccumulatedPower field - public uint? GetAccumulatedPower() - { - Object val = GetFieldValue(29, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set AccumulatedPower field - /// Units: watts - /// Nullable field value to be set - public void SetAccumulatedPower(uint? accumulatedPower_) - { - SetFieldValue(29, 0, accumulatedPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeftRightBalance field - /// Returns nullable byte representing the LeftRightBalance field - public byte? GetLeftRightBalance() - { - Object val = GetFieldValue(30, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set LeftRightBalance field - /// Nullable field value to be set - public void SetLeftRightBalance(byte? leftRightBalance_) - { - SetFieldValue(30, 0, leftRightBalance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GpsAccuracy field - /// Units: m - /// Returns nullable byte representing the GpsAccuracy field - public byte? GetGpsAccuracy() - { - Object val = GetFieldValue(31, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set GpsAccuracy field - /// Units: m - /// Nullable field value to be set - public void SetGpsAccuracy(byte? gpsAccuracy_) - { - SetFieldValue(31, 0, gpsAccuracy_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the VerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the VerticalSpeed field - public float? GetVerticalSpeed() - { - Object val = GetFieldValue(32, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set VerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetVerticalSpeed(float? verticalSpeed_) - { - SetFieldValue(32, 0, verticalSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Calories field - /// Units: kcal - /// Returns nullable ushort representing the Calories field - public ushort? GetCalories() - { - Object val = GetFieldValue(33, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Calories field - /// Units: kcal - /// Nullable field value to be set - public void SetCalories(ushort? calories_) - { - SetFieldValue(33, 0, calories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the VerticalOscillation field - /// Units: mm - /// Returns nullable float representing the VerticalOscillation field - public float? GetVerticalOscillation() - { - Object val = GetFieldValue(39, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set VerticalOscillation field - /// Units: mm - /// Nullable field value to be set - public void SetVerticalOscillation(float? verticalOscillation_) - { - SetFieldValue(39, 0, verticalOscillation_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StanceTimePercent field - /// Units: percent - /// Returns nullable float representing the StanceTimePercent field - public float? GetStanceTimePercent() - { - Object val = GetFieldValue(40, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set StanceTimePercent field - /// Units: percent - /// Nullable field value to be set - public void SetStanceTimePercent(float? stanceTimePercent_) - { - SetFieldValue(40, 0, stanceTimePercent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StanceTime field - /// Units: ms - /// Returns nullable float representing the StanceTime field - public float? GetStanceTime() - { - Object val = GetFieldValue(41, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set StanceTime field - /// Units: ms - /// Nullable field value to be set - public void SetStanceTime(float? stanceTime_) - { - SetFieldValue(41, 0, stanceTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActivityType field - /// Returns nullable ActivityType enum representing the ActivityType field - public ActivityType? GetActivityType() - { - object obj = GetFieldValue(42, 0, Fit.SubfieldIndexMainField); - ActivityType? value = obj == null ? (ActivityType?)null : (ActivityType)obj; - return value; - } - - /// - /// Set ActivityType field - /// Nullable field value to be set - public void SetActivityType(ActivityType? activityType_) - { - SetFieldValue(42, 0, activityType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeftTorqueEffectiveness field - /// Units: percent - /// Returns nullable float representing the LeftTorqueEffectiveness field - public float? GetLeftTorqueEffectiveness() - { - Object val = GetFieldValue(43, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set LeftTorqueEffectiveness field - /// Units: percent - /// Nullable field value to be set - public void SetLeftTorqueEffectiveness(float? leftTorqueEffectiveness_) - { - SetFieldValue(43, 0, leftTorqueEffectiveness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RightTorqueEffectiveness field - /// Units: percent - /// Returns nullable float representing the RightTorqueEffectiveness field - public float? GetRightTorqueEffectiveness() - { - Object val = GetFieldValue(44, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set RightTorqueEffectiveness field - /// Units: percent - /// Nullable field value to be set - public void SetRightTorqueEffectiveness(float? rightTorqueEffectiveness_) - { - SetFieldValue(44, 0, rightTorqueEffectiveness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeftPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the LeftPedalSmoothness field - public float? GetLeftPedalSmoothness() - { - Object val = GetFieldValue(45, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set LeftPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetLeftPedalSmoothness(float? leftPedalSmoothness_) - { - SetFieldValue(45, 0, leftPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RightPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the RightPedalSmoothness field - public float? GetRightPedalSmoothness() - { - Object val = GetFieldValue(46, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set RightPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetRightPedalSmoothness(float? rightPedalSmoothness_) - { - SetFieldValue(46, 0, rightPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CombinedPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the CombinedPedalSmoothness field - public float? GetCombinedPedalSmoothness() - { - Object val = GetFieldValue(47, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CombinedPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetCombinedPedalSmoothness(float? combinedPedalSmoothness_) - { - SetFieldValue(47, 0, combinedPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Time128 field - /// Units: s - /// Returns nullable float representing the Time128 field - public float? GetTime128() - { - Object val = GetFieldValue(48, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Time128 field - /// Units: s - /// Nullable field value to be set - public void SetTime128(float? time128_) - { - SetFieldValue(48, 0, time128_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StrokeType field - /// Returns nullable StrokeType enum representing the StrokeType field - public StrokeType? GetStrokeType() - { - object obj = GetFieldValue(49, 0, Fit.SubfieldIndexMainField); - StrokeType? value = obj == null ? (StrokeType?)null : (StrokeType)obj; - return value; - } - - /// - /// Set StrokeType field - /// Nullable field value to be set - public void SetStrokeType(StrokeType? strokeType_) - { - SetFieldValue(49, 0, strokeType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Zone field - /// Returns nullable byte representing the Zone field - public byte? GetZone() - { - Object val = GetFieldValue(50, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Zone field - /// Nullable field value to be set - public void SetZone(byte? zone_) - { - SetFieldValue(50, 0, zone_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BallSpeed field - /// Units: m/s - /// Returns nullable float representing the BallSpeed field - public float? GetBallSpeed() - { - Object val = GetFieldValue(51, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set BallSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetBallSpeed(float? ballSpeed_) - { - SetFieldValue(51, 0, ballSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Cadence256 field - /// Units: rpm - /// Comment: Log cadence and fractional cadence for backwards compatability - /// Returns nullable float representing the Cadence256 field - public float? GetCadence256() - { - Object val = GetFieldValue(52, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Cadence256 field - /// Units: rpm - /// Comment: Log cadence and fractional cadence for backwards compatability - /// Nullable field value to be set - public void SetCadence256(float? cadence256_) - { - SetFieldValue(52, 0, cadence256_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FractionalCadence field - /// Units: rpm - /// Returns nullable float representing the FractionalCadence field - public float? GetFractionalCadence() - { - Object val = GetFieldValue(53, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set FractionalCadence field - /// Units: rpm - /// Nullable field value to be set - public void SetFractionalCadence(float? fractionalCadence_) - { - SetFieldValue(53, 0, fractionalCadence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalHemoglobinConc field - /// Units: g/dL - /// Comment: Total saturated and unsaturated hemoglobin - /// Returns nullable float representing the TotalHemoglobinConc field - public float? GetTotalHemoglobinConc() - { - Object val = GetFieldValue(54, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalHemoglobinConc field - /// Units: g/dL - /// Comment: Total saturated and unsaturated hemoglobin - /// Nullable field value to be set - public void SetTotalHemoglobinConc(float? totalHemoglobinConc_) - { - SetFieldValue(54, 0, totalHemoglobinConc_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalHemoglobinConcMin field - /// Units: g/dL - /// Comment: Min saturated and unsaturated hemoglobin - /// Returns nullable float representing the TotalHemoglobinConcMin field - public float? GetTotalHemoglobinConcMin() - { - Object val = GetFieldValue(55, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalHemoglobinConcMin field - /// Units: g/dL - /// Comment: Min saturated and unsaturated hemoglobin - /// Nullable field value to be set - public void SetTotalHemoglobinConcMin(float? totalHemoglobinConcMin_) - { - SetFieldValue(55, 0, totalHemoglobinConcMin_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalHemoglobinConcMax field - /// Units: g/dL - /// Comment: Max saturated and unsaturated hemoglobin - /// Returns nullable float representing the TotalHemoglobinConcMax field - public float? GetTotalHemoglobinConcMax() - { - Object val = GetFieldValue(56, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalHemoglobinConcMax field - /// Units: g/dL - /// Comment: Max saturated and unsaturated hemoglobin - /// Nullable field value to be set - public void SetTotalHemoglobinConcMax(float? totalHemoglobinConcMax_) - { - SetFieldValue(56, 0, totalHemoglobinConcMax_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SaturatedHemoglobinPercent field - /// Units: % - /// Comment: Percentage of hemoglobin saturated with oxygen - /// Returns nullable float representing the SaturatedHemoglobinPercent field - public float? GetSaturatedHemoglobinPercent() - { - Object val = GetFieldValue(57, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set SaturatedHemoglobinPercent field - /// Units: % - /// Comment: Percentage of hemoglobin saturated with oxygen - /// Nullable field value to be set - public void SetSaturatedHemoglobinPercent(float? saturatedHemoglobinPercent_) - { - SetFieldValue(57, 0, saturatedHemoglobinPercent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SaturatedHemoglobinPercentMin field - /// Units: % - /// Comment: Min percentage of hemoglobin saturated with oxygen - /// Returns nullable float representing the SaturatedHemoglobinPercentMin field - public float? GetSaturatedHemoglobinPercentMin() - { - Object val = GetFieldValue(58, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set SaturatedHemoglobinPercentMin field - /// Units: % - /// Comment: Min percentage of hemoglobin saturated with oxygen - /// Nullable field value to be set - public void SetSaturatedHemoglobinPercentMin(float? saturatedHemoglobinPercentMin_) - { - SetFieldValue(58, 0, saturatedHemoglobinPercentMin_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SaturatedHemoglobinPercentMax field - /// Units: % - /// Comment: Max percentage of hemoglobin saturated with oxygen - /// Returns nullable float representing the SaturatedHemoglobinPercentMax field - public float? GetSaturatedHemoglobinPercentMax() - { - Object val = GetFieldValue(59, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set SaturatedHemoglobinPercentMax field - /// Units: % - /// Comment: Max percentage of hemoglobin saturated with oxygen - /// Nullable field value to be set - public void SetSaturatedHemoglobinPercentMax(float? saturatedHemoglobinPercentMax_) - { - SetFieldValue(59, 0, saturatedHemoglobinPercentMax_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeviceIndex field - /// Returns nullable byte representing the DeviceIndex field - public byte? GetDeviceIndex() - { - Object val = GetFieldValue(62, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DeviceIndex field - /// Nullable field value to be set - public void SetDeviceIndex(byte? deviceIndex_) - { - SetFieldValue(62, 0, deviceIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeftPco field - /// Units: mm - /// Comment: Left platform center offset - /// Returns nullable sbyte representing the LeftPco field - public sbyte? GetLeftPco() - { - Object val = GetFieldValue(67, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set LeftPco field - /// Units: mm - /// Comment: Left platform center offset - /// Nullable field value to be set - public void SetLeftPco(sbyte? leftPco_) - { - SetFieldValue(67, 0, leftPco_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RightPco field - /// Units: mm - /// Comment: Right platform center offset - /// Returns nullable sbyte representing the RightPco field - public sbyte? GetRightPco() - { - Object val = GetFieldValue(68, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set RightPco field - /// Units: mm - /// Comment: Right platform center offset - /// Nullable field value to be set - public void SetRightPco(sbyte? rightPco_) - { - SetFieldValue(68, 0, rightPco_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field LeftPowerPhase - public int GetNumLeftPowerPhase() - { - return GetNumFieldValues(69, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeftPowerPhase field - /// Units: degrees - /// Comment: Left power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of LeftPowerPhase element to retrieve - /// Returns nullable float representing the LeftPowerPhase field - public float? GetLeftPowerPhase(int index) - { - Object val = GetFieldValue(69, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set LeftPowerPhase field - /// Units: degrees - /// Comment: Left power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of left_power_phase - /// Nullable field value to be set - public void SetLeftPowerPhase(int index, float? leftPowerPhase_) - { - SetFieldValue(69, index, leftPowerPhase_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field LeftPowerPhasePeak - public int GetNumLeftPowerPhasePeak() - { - return GetNumFieldValues(70, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeftPowerPhasePeak field - /// Units: degrees - /// Comment: Left power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of LeftPowerPhasePeak element to retrieve - /// Returns nullable float representing the LeftPowerPhasePeak field - public float? GetLeftPowerPhasePeak(int index) - { - Object val = GetFieldValue(70, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set LeftPowerPhasePeak field - /// Units: degrees - /// Comment: Left power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of left_power_phase_peak - /// Nullable field value to be set - public void SetLeftPowerPhasePeak(int index, float? leftPowerPhasePeak_) - { - SetFieldValue(70, index, leftPowerPhasePeak_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field RightPowerPhase - public int GetNumRightPowerPhase() - { - return GetNumFieldValues(71, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RightPowerPhase field - /// Units: degrees - /// Comment: Right power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of RightPowerPhase element to retrieve - /// Returns nullable float representing the RightPowerPhase field - public float? GetRightPowerPhase(int index) - { - Object val = GetFieldValue(71, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set RightPowerPhase field - /// Units: degrees - /// Comment: Right power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of right_power_phase - /// Nullable field value to be set - public void SetRightPowerPhase(int index, float? rightPowerPhase_) - { - SetFieldValue(71, index, rightPowerPhase_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field RightPowerPhasePeak - public int GetNumRightPowerPhasePeak() - { - return GetNumFieldValues(72, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RightPowerPhasePeak field - /// Units: degrees - /// Comment: Right power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of RightPowerPhasePeak element to retrieve - /// Returns nullable float representing the RightPowerPhasePeak field - public float? GetRightPowerPhasePeak(int index) - { - Object val = GetFieldValue(72, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set RightPowerPhasePeak field - /// Units: degrees - /// Comment: Right power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of right_power_phase_peak - /// Nullable field value to be set - public void SetRightPowerPhasePeak(int index, float? rightPowerPhasePeak_) - { - SetFieldValue(72, index, rightPowerPhasePeak_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedSpeed field - /// Units: m/s - /// Returns nullable float representing the EnhancedSpeed field - public float? GetEnhancedSpeed() - { - Object val = GetFieldValue(73, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetEnhancedSpeed(float? enhancedSpeed_) - { - SetFieldValue(73, 0, enhancedSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedAltitude field - /// Units: m - /// Returns nullable float representing the EnhancedAltitude field - public float? GetEnhancedAltitude() - { - Object val = GetFieldValue(78, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedAltitude field - /// Units: m - /// Nullable field value to be set - public void SetEnhancedAltitude(float? enhancedAltitude_) - { - SetFieldValue(78, 0, enhancedAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BatterySoc field - /// Units: percent - /// Comment: lev battery state of charge - /// Returns nullable float representing the BatterySoc field - public float? GetBatterySoc() - { - Object val = GetFieldValue(81, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set BatterySoc field - /// Units: percent - /// Comment: lev battery state of charge - /// Nullable field value to be set - public void SetBatterySoc(float? batterySoc_) - { - SetFieldValue(81, 0, batterySoc_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MotorPower field - /// Units: watts - /// Comment: lev motor power - /// Returns nullable ushort representing the MotorPower field - public ushort? GetMotorPower() - { - Object val = GetFieldValue(82, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MotorPower field - /// Units: watts - /// Comment: lev motor power - /// Nullable field value to be set - public void SetMotorPower(ushort? motorPower_) - { - SetFieldValue(82, 0, motorPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the VerticalRatio field - /// Units: percent - /// Returns nullable float representing the VerticalRatio field - public float? GetVerticalRatio() - { - Object val = GetFieldValue(83, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set VerticalRatio field - /// Units: percent - /// Nullable field value to be set - public void SetVerticalRatio(float? verticalRatio_) - { - SetFieldValue(83, 0, verticalRatio_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StanceTimeBalance field - /// Units: percent - /// Returns nullable float representing the StanceTimeBalance field - public float? GetStanceTimeBalance() - { - Object val = GetFieldValue(84, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set StanceTimeBalance field - /// Units: percent - /// Nullable field value to be set - public void SetStanceTimeBalance(float? stanceTimeBalance_) - { - SetFieldValue(84, 0, stanceTimeBalance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StepLength field - /// Units: mm - /// Returns nullable float representing the StepLength field - public float? GetStepLength() - { - Object val = GetFieldValue(85, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set StepLength field - /// Units: mm - /// Nullable field value to be set - public void SetStepLength(float? stepLength_) - { - SetFieldValue(85, 0, stepLength_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AbsolutePressure field - /// Units: Pa - /// Comment: Includes atmospheric pressure - /// Returns nullable uint representing the AbsolutePressure field - public uint? GetAbsolutePressure() - { - Object val = GetFieldValue(91, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set AbsolutePressure field - /// Units: Pa - /// Comment: Includes atmospheric pressure - /// Nullable field value to be set - public void SetAbsolutePressure(uint? absolutePressure_) - { - SetFieldValue(91, 0, absolutePressure_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Depth field - /// Units: m - /// Comment: 0 if above water - /// Returns nullable float representing the Depth field - public float? GetDepth() - { - Object val = GetFieldValue(92, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Depth field - /// Units: m - /// Comment: 0 if above water - /// Nullable field value to be set - public void SetDepth(float? depth_) - { - SetFieldValue(92, 0, depth_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NextStopDepth field - /// Units: m - /// Comment: 0 if above water - /// Returns nullable float representing the NextStopDepth field - public float? GetNextStopDepth() - { - Object val = GetFieldValue(93, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set NextStopDepth field - /// Units: m - /// Comment: 0 if above water - /// Nullable field value to be set - public void SetNextStopDepth(float? nextStopDepth_) - { - SetFieldValue(93, 0, nextStopDepth_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NextStopTime field - /// Units: s - /// Returns nullable uint representing the NextStopTime field - public uint? GetNextStopTime() - { - Object val = GetFieldValue(94, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set NextStopTime field - /// Units: s - /// Nullable field value to be set - public void SetNextStopTime(uint? nextStopTime_) - { - SetFieldValue(94, 0, nextStopTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeToSurface field - /// Units: s - /// Returns nullable uint representing the TimeToSurface field - public uint? GetTimeToSurface() - { - Object val = GetFieldValue(95, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TimeToSurface field - /// Units: s - /// Nullable field value to be set - public void SetTimeToSurface(uint? timeToSurface_) - { - SetFieldValue(95, 0, timeToSurface_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NdlTime field - /// Units: s - /// Returns nullable uint representing the NdlTime field - public uint? GetNdlTime() - { - Object val = GetFieldValue(96, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set NdlTime field - /// Units: s - /// Nullable field value to be set - public void SetNdlTime(uint? ndlTime_) - { - SetFieldValue(96, 0, ndlTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CnsLoad field - /// Units: percent - /// Returns nullable byte representing the CnsLoad field - public byte? GetCnsLoad() - { - Object val = GetFieldValue(97, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set CnsLoad field - /// Units: percent - /// Nullable field value to be set - public void SetCnsLoad(byte? cnsLoad_) - { - SetFieldValue(97, 0, cnsLoad_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the N2Load field - /// Units: percent - /// Returns nullable ushort representing the N2Load field - public ushort? GetN2Load() - { - Object val = GetFieldValue(98, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set N2Load field - /// Units: percent - /// Nullable field value to be set - public void SetN2Load(ushort? n2Load_) - { - SetFieldValue(98, 0, n2Load_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RespirationRate field - /// Units: s - /// Returns nullable byte representing the RespirationRate field - public byte? GetRespirationRate() - { - Object val = GetFieldValue(99, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set RespirationRate field - /// Units: s - /// Nullable field value to be set - public void SetRespirationRate(byte? respirationRate_) - { - SetFieldValue(99, 0, respirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedRespirationRate field - /// Units: Breaths/min - /// Returns nullable float representing the EnhancedRespirationRate field - public float? GetEnhancedRespirationRate() - { - Object val = GetFieldValue(108, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedRespirationRate field - /// Units: Breaths/min - /// Nullable field value to be set - public void SetEnhancedRespirationRate(float? enhancedRespirationRate_) - { - SetFieldValue(108, 0, enhancedRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Grit field - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Returns nullable float representing the Grit field - public float? GetGrit() - { - Object val = GetFieldValue(114, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Grit field - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Nullable field value to be set - public void SetGrit(float? grit_) - { - SetFieldValue(114, 0, grit_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Flow field - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Returns nullable float representing the Flow field - public float? GetFlow() - { - Object val = GetFieldValue(115, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Flow field - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Nullable field value to be set - public void SetFlow(float? flow_) - { - SetFieldValue(115, 0, flow_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EbikeTravelRange field - /// Units: km - /// Returns nullable ushort representing the EbikeTravelRange field - public ushort? GetEbikeTravelRange() - { - Object val = GetFieldValue(117, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set EbikeTravelRange field - /// Units: km - /// Nullable field value to be set - public void SetEbikeTravelRange(ushort? ebikeTravelRange_) - { - SetFieldValue(117, 0, ebikeTravelRange_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EbikeBatteryLevel field - /// Units: percent - /// Returns nullable byte representing the EbikeBatteryLevel field - public byte? GetEbikeBatteryLevel() - { - Object val = GetFieldValue(118, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set EbikeBatteryLevel field - /// Units: percent - /// Nullable field value to be set - public void SetEbikeBatteryLevel(byte? ebikeBatteryLevel_) - { - SetFieldValue(118, 0, ebikeBatteryLevel_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EbikeAssistMode field - /// Units: depends on sensor - /// Returns nullable byte representing the EbikeAssistMode field - public byte? GetEbikeAssistMode() - { - Object val = GetFieldValue(119, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set EbikeAssistMode field - /// Units: depends on sensor - /// Nullable field value to be set - public void SetEbikeAssistMode(byte? ebikeAssistMode_) - { - SetFieldValue(119, 0, ebikeAssistMode_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EbikeAssistLevelPercent field - /// Units: percent - /// Returns nullable byte representing the EbikeAssistLevelPercent field - public byte? GetEbikeAssistLevelPercent() - { - Object val = GetFieldValue(120, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set EbikeAssistLevelPercent field - /// Units: percent - /// Nullable field value to be set - public void SetEbikeAssistLevelPercent(byte? ebikeAssistLevelPercent_) - { - SetFieldValue(120, 0, ebikeAssistLevelPercent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AirTimeRemaining field - /// Units: s - /// Returns nullable uint representing the AirTimeRemaining field - public uint? GetAirTimeRemaining() - { - Object val = GetFieldValue(123, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set AirTimeRemaining field - /// Units: s - /// Nullable field value to be set - public void SetAirTimeRemaining(uint? airTimeRemaining_) - { - SetFieldValue(123, 0, airTimeRemaining_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PressureSac field - /// Units: bar/min - /// Comment: Pressure-based surface air consumption - /// Returns nullable float representing the PressureSac field - public float? GetPressureSac() - { - Object val = GetFieldValue(124, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set PressureSac field - /// Units: bar/min - /// Comment: Pressure-based surface air consumption - /// Nullable field value to be set - public void SetPressureSac(float? pressureSac_) - { - SetFieldValue(124, 0, pressureSac_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the VolumeSac field - /// Units: L/min - /// Comment: Volumetric surface air consumption - /// Returns nullable float representing the VolumeSac field - public float? GetVolumeSac() - { - Object val = GetFieldValue(125, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set VolumeSac field - /// Units: L/min - /// Comment: Volumetric surface air consumption - /// Nullable field value to be set - public void SetVolumeSac(float? volumeSac_) - { - SetFieldValue(125, 0, volumeSac_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Rmv field - /// Units: L/min - /// Comment: Respiratory minute volume - /// Returns nullable float representing the Rmv field - public float? GetRmv() - { - Object val = GetFieldValue(126, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Rmv field - /// Units: L/min - /// Comment: Respiratory minute volume - /// Nullable field value to be set - public void SetRmv(float? rmv_) - { - SetFieldValue(126, 0, rmv_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AscentRate field - /// Units: m/s - /// Returns nullable float representing the AscentRate field - public float? GetAscentRate() - { - Object val = GetFieldValue(127, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AscentRate field - /// Units: m/s - /// Nullable field value to be set - public void SetAscentRate(float? ascentRate_) - { - SetFieldValue(127, 0, ascentRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Po2 field - /// Units: percent - /// Comment: Current partial pressure of oxygen - /// Returns nullable float representing the Po2 field - public float? GetPo2() - { - Object val = GetFieldValue(129, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Po2 field - /// Units: percent - /// Comment: Current partial pressure of oxygen - /// Nullable field value to be set - public void SetPo2(float? po2_) - { - SetFieldValue(129, 0, po2_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CoreTemperature field - /// Units: C - /// Returns nullable float representing the CoreTemperature field - public float? GetCoreTemperature() - { - Object val = GetFieldValue(139, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CoreTemperature field - /// Units: C - /// Nullable field value to be set - public void SetCoreTemperature(float? coreTemperature_) - { - SetFieldValue(139, 0, coreTemperature_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ScheduleMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ScheduleMesg.cs deleted file mode 100644 index 801ddea69..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ScheduleMesg.cs +++ /dev/null @@ -1,277 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Schedule profile message. - /// - public class ScheduleMesg : Mesg - { - #region Fields - static class ProductSubfield - { - public static ushort FaveroProduct = 0; - public static ushort GarminProduct = 1; - public static ushort Subfields = 2; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Manufacturer = 0; - public const byte Product = 1; - public const byte SerialNumber = 2; - public const byte TimeCreated = 3; - public const byte Completed = 4; - public const byte Type = 5; - public const byte ScheduledTime = 6; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public ScheduleMesg() : base(Profile.GetMesg(MesgNum.Schedule)) - { - } - - public ScheduleMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Manufacturer field - /// Comment: Corresponds to file_id of scheduled workout / course. - /// Returns nullable ushort representing the Manufacturer field - public ushort? GetManufacturer() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Manufacturer field - /// Comment: Corresponds to file_id of scheduled workout / course. - /// Nullable field value to be set - public void SetManufacturer(ushort? manufacturer_) - { - SetFieldValue(0, 0, manufacturer_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Product field - /// Comment: Corresponds to file_id of scheduled workout / course. - /// Returns nullable ushort representing the Product field - public ushort? GetProduct() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Product field - /// Comment: Corresponds to file_id of scheduled workout / course. - /// Nullable field value to be set - public void SetProduct(ushort? product_) - { - SetFieldValue(1, 0, product_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the FaveroProduct subfield - /// Nullable ushort representing the FaveroProduct subfield - public ushort? GetFaveroProduct() - { - Object val = GetFieldValue(1, 0, ProductSubfield.FaveroProduct); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set FaveroProduct subfield - /// Subfield value to be set - public void SetFaveroProduct(ushort? faveroProduct) - { - SetFieldValue(1, 0, faveroProduct, ProductSubfield.FaveroProduct); - } - - /// - /// Retrieves the GarminProduct subfield - /// Nullable ushort representing the GarminProduct subfield - public ushort? GetGarminProduct() - { - Object val = GetFieldValue(1, 0, ProductSubfield.GarminProduct); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set GarminProduct subfield - /// Subfield value to be set - public void SetGarminProduct(ushort? garminProduct) - { - SetFieldValue(1, 0, garminProduct, ProductSubfield.GarminProduct); - } - /// - /// Retrieves the SerialNumber field - /// Comment: Corresponds to file_id of scheduled workout / course. - /// Returns nullable uint representing the SerialNumber field - public uint? GetSerialNumber() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set SerialNumber field - /// Comment: Corresponds to file_id of scheduled workout / course. - /// Nullable field value to be set - public void SetSerialNumber(uint? serialNumber_) - { - SetFieldValue(2, 0, serialNumber_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeCreated field - /// Comment: Corresponds to file_id of scheduled workout / course. - /// Returns DateTime representing the TimeCreated field - public DateTime GetTimeCreated() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set TimeCreated field - /// Comment: Corresponds to file_id of scheduled workout / course. - /// Nullable field value to be set - public void SetTimeCreated(DateTime timeCreated_) - { - SetFieldValue(3, 0, timeCreated_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Completed field - /// Comment: TRUE if this activity has been started - /// Returns nullable Bool enum representing the Completed field - public Bool? GetCompleted() - { - object obj = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set Completed field - /// Comment: TRUE if this activity has been started - /// Nullable field value to be set - public void SetCompleted(Bool? completed_) - { - SetFieldValue(4, 0, completed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Type field - /// Returns nullable Schedule enum representing the Type field - new public Schedule? GetType() - { - object obj = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - Schedule? value = obj == null ? (Schedule?)null : (Schedule)obj; - return value; - } - - /// - /// Set Type field - /// Nullable field value to be set - public void SetType(Schedule? type_) - { - SetFieldValue(5, 0, type_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ScheduledTime field - /// Returns nullable uint representing the ScheduledTime field - public uint? GetScheduledTime() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set ScheduledTime field - /// Nullable field value to be set - public void SetScheduledTime(uint? scheduledTime_) - { - SetFieldValue(6, 0, scheduledTime_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SdmProfileMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SdmProfileMesg.cs deleted file mode 100644 index 72052b884..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SdmProfileMesg.cs +++ /dev/null @@ -1,243 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the SdmProfile profile message. - /// - public class SdmProfileMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Enabled = 0; - public const byte SdmAntId = 1; - public const byte SdmCalFactor = 2; - public const byte Odometer = 3; - public const byte SpeedSource = 4; - public const byte SdmAntIdTransType = 5; - public const byte OdometerRollover = 7; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SdmProfileMesg() : base(Profile.GetMesg(MesgNum.SdmProfile)) - { - } - - public SdmProfileMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Enabled field - /// Returns nullable Bool enum representing the Enabled field - public Bool? GetEnabled() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set Enabled field - /// Nullable field value to be set - public void SetEnabled(Bool? enabled_) - { - SetFieldValue(0, 0, enabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SdmAntId field - /// Returns nullable ushort representing the SdmAntId field - public ushort? GetSdmAntId() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set SdmAntId field - /// Nullable field value to be set - public void SetSdmAntId(ushort? sdmAntId_) - { - SetFieldValue(1, 0, sdmAntId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SdmCalFactor field - /// Units: % - /// Returns nullable float representing the SdmCalFactor field - public float? GetSdmCalFactor() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set SdmCalFactor field - /// Units: % - /// Nullable field value to be set - public void SetSdmCalFactor(float? sdmCalFactor_) - { - SetFieldValue(2, 0, sdmCalFactor_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Odometer field - /// Units: m - /// Returns nullable float representing the Odometer field - public float? GetOdometer() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Odometer field - /// Units: m - /// Nullable field value to be set - public void SetOdometer(float? odometer_) - { - SetFieldValue(3, 0, odometer_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SpeedSource field - /// Comment: Use footpod for speed source instead of GPS - /// Returns nullable Bool enum representing the SpeedSource field - public Bool? GetSpeedSource() - { - object obj = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set SpeedSource field - /// Comment: Use footpod for speed source instead of GPS - /// Nullable field value to be set - public void SetSpeedSource(Bool? speedSource_) - { - SetFieldValue(4, 0, speedSource_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SdmAntIdTransType field - /// Returns nullable byte representing the SdmAntIdTransType field - public byte? GetSdmAntIdTransType() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set SdmAntIdTransType field - /// Nullable field value to be set - public void SetSdmAntIdTransType(byte? sdmAntIdTransType_) - { - SetFieldValue(5, 0, sdmAntIdTransType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the OdometerRollover field - /// Comment: Rollover counter that can be used to extend the odometer - /// Returns nullable byte representing the OdometerRollover field - public byte? GetOdometerRollover() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set OdometerRollover field - /// Comment: Rollover counter that can be used to extend the odometer - /// Nullable field value to be set - public void SetOdometerRollover(byte? odometerRollover_) - { - SetFieldValue(7, 0, odometerRollover_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SegmentFileMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SegmentFileMesg.cs deleted file mode 100644 index 0e4c85ab5..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SegmentFileMesg.cs +++ /dev/null @@ -1,359 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the SegmentFile profile message. - /// - public class SegmentFileMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte FileUuid = 1; - public const byte Enabled = 3; - public const byte UserProfilePrimaryKey = 4; - public const byte LeaderType = 7; - public const byte LeaderGroupPrimaryKey = 8; - public const byte LeaderActivityId = 9; - public const byte LeaderActivityIdString = 10; - public const byte DefaultRaceLeader = 11; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SegmentFileMesg() : base(Profile.GetMesg(MesgNum.SegmentFile)) - { - } - - public SegmentFileMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FileUuid field - /// Comment: UUID of the segment file - /// Returns byte[] representing the FileUuid field - public byte[] GetFileUuid() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the FileUuid field - /// Comment: UUID of the segment file - /// Returns String representing the FileUuid field - public String GetFileUuidAsString() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set FileUuid field - /// Comment: UUID of the segment file - /// field value to be set - public void SetFileUuid(String fileUuid_) - { - byte[] data = Encoding.UTF8.GetBytes(fileUuid_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(1, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set FileUuid field - /// Comment: UUID of the segment file - /// field value to be set - public void SetFileUuid(byte[] fileUuid_) - { - SetFieldValue(1, 0, fileUuid_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Enabled field - /// Comment: Enabled state of the segment file - /// Returns nullable Bool enum representing the Enabled field - public Bool? GetEnabled() - { - object obj = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set Enabled field - /// Comment: Enabled state of the segment file - /// Nullable field value to be set - public void SetEnabled(Bool? enabled_) - { - SetFieldValue(3, 0, enabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the UserProfilePrimaryKey field - /// Comment: Primary key of the user that created the segment file - /// Returns nullable uint representing the UserProfilePrimaryKey field - public uint? GetUserProfilePrimaryKey() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set UserProfilePrimaryKey field - /// Comment: Primary key of the user that created the segment file - /// Nullable field value to be set - public void SetUserProfilePrimaryKey(uint? userProfilePrimaryKey_) - { - SetFieldValue(4, 0, userProfilePrimaryKey_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field LeaderType - public int GetNumLeaderType() - { - return GetNumFieldValues(7, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeaderType field - /// Comment: Leader type of each leader in the segment file - /// 0 based index of LeaderType element to retrieve - /// Returns nullable SegmentLeaderboardType enum representing the LeaderType field - public SegmentLeaderboardType? GetLeaderType(int index) - { - object obj = GetFieldValue(7, index, Fit.SubfieldIndexMainField); - SegmentLeaderboardType? value = obj == null ? (SegmentLeaderboardType?)null : (SegmentLeaderboardType)obj; - return value; - } - - /// - /// Set LeaderType field - /// Comment: Leader type of each leader in the segment file - /// 0 based index of leader_type - /// Nullable field value to be set - public void SetLeaderType(int index, SegmentLeaderboardType? leaderType_) - { - SetFieldValue(7, index, leaderType_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field LeaderGroupPrimaryKey - public int GetNumLeaderGroupPrimaryKey() - { - return GetNumFieldValues(8, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeaderGroupPrimaryKey field - /// Comment: Group primary key of each leader in the segment file - /// 0 based index of LeaderGroupPrimaryKey element to retrieve - /// Returns nullable uint representing the LeaderGroupPrimaryKey field - public uint? GetLeaderGroupPrimaryKey(int index) - { - Object val = GetFieldValue(8, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set LeaderGroupPrimaryKey field - /// Comment: Group primary key of each leader in the segment file - /// 0 based index of leader_group_primary_key - /// Nullable field value to be set - public void SetLeaderGroupPrimaryKey(int index, uint? leaderGroupPrimaryKey_) - { - SetFieldValue(8, index, leaderGroupPrimaryKey_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field LeaderActivityId - public int GetNumLeaderActivityId() - { - return GetNumFieldValues(9, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeaderActivityId field - /// Comment: Activity ID of each leader in the segment file - /// 0 based index of LeaderActivityId element to retrieve - /// Returns nullable uint representing the LeaderActivityId field - public uint? GetLeaderActivityId(int index) - { - Object val = GetFieldValue(9, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set LeaderActivityId field - /// Comment: Activity ID of each leader in the segment file - /// 0 based index of leader_activity_id - /// Nullable field value to be set - public void SetLeaderActivityId(int index, uint? leaderActivityId_) - { - SetFieldValue(9, index, leaderActivityId_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field LeaderActivityIdString - public int GetNumLeaderActivityIdString() - { - return GetNumFieldValues(10, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeaderActivityIdString field - /// Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - /// 0 based index of LeaderActivityIdString element to retrieve - /// Returns byte[] representing the LeaderActivityIdString field - public byte[] GetLeaderActivityIdString(int index) - { - byte[] data = (byte[])GetFieldValue(10, index, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the LeaderActivityIdString field - /// Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - /// 0 based index of LeaderActivityIdString element to retrieve - /// Returns String representing the LeaderActivityIdString field - public String GetLeaderActivityIdStringAsString(int index) - { - byte[] data = (byte[])GetFieldValue(10, index, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set LeaderActivityIdString field - /// Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - /// 0 based index of LeaderActivityIdString element to retrieve - /// field value to be set - public void SetLeaderActivityIdString(int index, String leaderActivityIdString_) - { - byte[] data = Encoding.UTF8.GetBytes(leaderActivityIdString_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(10, index, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set LeaderActivityIdString field - /// Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - /// 0 based index of leader_activity_id_string - /// field value to be set - public void SetLeaderActivityIdString(int index, byte[] leaderActivityIdString_) - { - SetFieldValue(10, index, leaderActivityIdString_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DefaultRaceLeader field - /// Comment: Index for the Leader Board entry selected as the default race participant - /// Returns nullable byte representing the DefaultRaceLeader field - public byte? GetDefaultRaceLeader() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DefaultRaceLeader field - /// Comment: Index for the Leader Board entry selected as the default race participant - /// Nullable field value to be set - public void SetDefaultRaceLeader(byte? defaultRaceLeader_) - { - SetFieldValue(11, 0, defaultRaceLeader_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SegmentIdMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SegmentIdMesg.cs deleted file mode 100644 index ef82d4e3b..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SegmentIdMesg.cs +++ /dev/null @@ -1,301 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the SegmentId profile message. - /// - public class SegmentIdMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Name = 0; - public const byte Uuid = 1; - public const byte Sport = 2; - public const byte Enabled = 3; - public const byte UserProfilePrimaryKey = 4; - public const byte DeviceId = 5; - public const byte DefaultRaceLeader = 6; - public const byte DeleteStatus = 7; - public const byte SelectionType = 8; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SegmentIdMesg() : base(Profile.GetMesg(MesgNum.SegmentId)) - { - } - - public SegmentIdMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Name field - /// Comment: Friendly name assigned to segment - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Comment: Friendly name assigned to segment - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// Comment: Friendly name assigned to segment - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(0, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// Comment: Friendly name assigned to segment - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(0, 0, name_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Uuid field - /// Comment: UUID of the segment - /// Returns byte[] representing the Uuid field - public byte[] GetUuid() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Uuid field - /// Comment: UUID of the segment - /// Returns String representing the Uuid field - public String GetUuidAsString() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Uuid field - /// Comment: UUID of the segment - /// field value to be set - public void SetUuid(String uuid_) - { - byte[] data = Encoding.UTF8.GetBytes(uuid_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(1, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Uuid field - /// Comment: UUID of the segment - /// field value to be set - public void SetUuid(byte[] uuid_) - { - SetFieldValue(1, 0, uuid_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sport field - /// Comment: Sport associated with the segment - /// Returns nullable Sport enum representing the Sport field - public Sport? GetSport() - { - object obj = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - Sport? value = obj == null ? (Sport?)null : (Sport)obj; - return value; - } - - /// - /// Set Sport field - /// Comment: Sport associated with the segment - /// Nullable field value to be set - public void SetSport(Sport? sport_) - { - SetFieldValue(2, 0, sport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Enabled field - /// Comment: Segment enabled for evaluation - /// Returns nullable Bool enum representing the Enabled field - public Bool? GetEnabled() - { - object obj = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set Enabled field - /// Comment: Segment enabled for evaluation - /// Nullable field value to be set - public void SetEnabled(Bool? enabled_) - { - SetFieldValue(3, 0, enabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the UserProfilePrimaryKey field - /// Comment: Primary key of the user that created the segment - /// Returns nullable uint representing the UserProfilePrimaryKey field - public uint? GetUserProfilePrimaryKey() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set UserProfilePrimaryKey field - /// Comment: Primary key of the user that created the segment - /// Nullable field value to be set - public void SetUserProfilePrimaryKey(uint? userProfilePrimaryKey_) - { - SetFieldValue(4, 0, userProfilePrimaryKey_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeviceId field - /// Comment: ID of the device that created the segment - /// Returns nullable uint representing the DeviceId field - public uint? GetDeviceId() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set DeviceId field - /// Comment: ID of the device that created the segment - /// Nullable field value to be set - public void SetDeviceId(uint? deviceId_) - { - SetFieldValue(5, 0, deviceId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DefaultRaceLeader field - /// Comment: Index for the Leader Board entry selected as the default race participant - /// Returns nullable byte representing the DefaultRaceLeader field - public byte? GetDefaultRaceLeader() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DefaultRaceLeader field - /// Comment: Index for the Leader Board entry selected as the default race participant - /// Nullable field value to be set - public void SetDefaultRaceLeader(byte? defaultRaceLeader_) - { - SetFieldValue(6, 0, defaultRaceLeader_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeleteStatus field - /// Comment: Indicates if any segments should be deleted - /// Returns nullable SegmentDeleteStatus enum representing the DeleteStatus field - public SegmentDeleteStatus? GetDeleteStatus() - { - object obj = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - SegmentDeleteStatus? value = obj == null ? (SegmentDeleteStatus?)null : (SegmentDeleteStatus)obj; - return value; - } - - /// - /// Set DeleteStatus field - /// Comment: Indicates if any segments should be deleted - /// Nullable field value to be set - public void SetDeleteStatus(SegmentDeleteStatus? deleteStatus_) - { - SetFieldValue(7, 0, deleteStatus_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SelectionType field - /// Comment: Indicates how the segment was selected to be sent to the device - /// Returns nullable SegmentSelectionType enum representing the SelectionType field - public SegmentSelectionType? GetSelectionType() - { - object obj = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - SegmentSelectionType? value = obj == null ? (SegmentSelectionType?)null : (SegmentSelectionType)obj; - return value; - } - - /// - /// Set SelectionType field - /// Comment: Indicates how the segment was selected to be sent to the device - /// Nullable field value to be set - public void SetSelectionType(SegmentSelectionType? selectionType_) - { - SetFieldValue(8, 0, selectionType_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SegmentLapMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SegmentLapMesg.cs deleted file mode 100644 index 2d8406b45..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SegmentLapMesg.cs +++ /dev/null @@ -1,2728 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the SegmentLap profile message. - /// - public class SegmentLapMesg : Mesg - { - #region Fields - static class TotalCyclesSubfield - { - public static ushort TotalStrokes = 0; - public static ushort Subfields = 1; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Timestamp = 253; - public const byte Event = 0; - public const byte EventType = 1; - public const byte StartTime = 2; - public const byte StartPositionLat = 3; - public const byte StartPositionLong = 4; - public const byte EndPositionLat = 5; - public const byte EndPositionLong = 6; - public const byte TotalElapsedTime = 7; - public const byte TotalTimerTime = 8; - public const byte TotalDistance = 9; - public const byte TotalCycles = 10; - public const byte TotalCalories = 11; - public const byte TotalFatCalories = 12; - public const byte AvgSpeed = 13; - public const byte MaxSpeed = 14; - public const byte AvgHeartRate = 15; - public const byte MaxHeartRate = 16; - public const byte AvgCadence = 17; - public const byte MaxCadence = 18; - public const byte AvgPower = 19; - public const byte MaxPower = 20; - public const byte TotalAscent = 21; - public const byte TotalDescent = 22; - public const byte Sport = 23; - public const byte EventGroup = 24; - public const byte NecLat = 25; - public const byte NecLong = 26; - public const byte SwcLat = 27; - public const byte SwcLong = 28; - public const byte Name = 29; - public const byte NormalizedPower = 30; - public const byte LeftRightBalance = 31; - public const byte SubSport = 32; - public const byte TotalWork = 33; - public const byte AvgAltitude = 34; - public const byte MaxAltitude = 35; - public const byte GpsAccuracy = 36; - public const byte AvgGrade = 37; - public const byte AvgPosGrade = 38; - public const byte AvgNegGrade = 39; - public const byte MaxPosGrade = 40; - public const byte MaxNegGrade = 41; - public const byte AvgTemperature = 42; - public const byte MaxTemperature = 43; - public const byte TotalMovingTime = 44; - public const byte AvgPosVerticalSpeed = 45; - public const byte AvgNegVerticalSpeed = 46; - public const byte MaxPosVerticalSpeed = 47; - public const byte MaxNegVerticalSpeed = 48; - public const byte TimeInHrZone = 49; - public const byte TimeInSpeedZone = 50; - public const byte TimeInCadenceZone = 51; - public const byte TimeInPowerZone = 52; - public const byte RepetitionNum = 53; - public const byte MinAltitude = 54; - public const byte MinHeartRate = 55; - public const byte ActiveTime = 56; - public const byte WktStepIndex = 57; - public const byte SportEvent = 58; - public const byte AvgLeftTorqueEffectiveness = 59; - public const byte AvgRightTorqueEffectiveness = 60; - public const byte AvgLeftPedalSmoothness = 61; - public const byte AvgRightPedalSmoothness = 62; - public const byte AvgCombinedPedalSmoothness = 63; - public const byte Status = 64; - public const byte Uuid = 65; - public const byte AvgFractionalCadence = 66; - public const byte MaxFractionalCadence = 67; - public const byte TotalFractionalCycles = 68; - public const byte FrontGearShiftCount = 69; - public const byte RearGearShiftCount = 70; - public const byte TimeStanding = 71; - public const byte StandCount = 72; - public const byte AvgLeftPco = 73; - public const byte AvgRightPco = 74; - public const byte AvgLeftPowerPhase = 75; - public const byte AvgLeftPowerPhasePeak = 76; - public const byte AvgRightPowerPhase = 77; - public const byte AvgRightPowerPhasePeak = 78; - public const byte AvgPowerPosition = 79; - public const byte MaxPowerPosition = 80; - public const byte AvgCadencePosition = 81; - public const byte MaxCadencePosition = 82; - public const byte Manufacturer = 83; - public const byte TotalGrit = 84; - public const byte TotalFlow = 85; - public const byte AvgGrit = 86; - public const byte AvgFlow = 87; - public const byte TotalFractionalAscent = 89; - public const byte TotalFractionalDescent = 90; - public const byte EnhancedAvgAltitude = 91; - public const byte EnhancedMaxAltitude = 92; - public const byte EnhancedMinAltitude = 93; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SegmentLapMesg() : base(Profile.GetMesg(MesgNum.SegmentLap)) - { - } - - public SegmentLapMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Lap end time. - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Lap end time. - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Event field - /// Returns nullable Event enum representing the Event field - public Event? GetEvent() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Event? value = obj == null ? (Event?)null : (Event)obj; - return value; - } - - /// - /// Set Event field - /// Nullable field value to be set - public void SetEvent(Event? event_) - { - SetFieldValue(0, 0, event_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventType field - /// Returns nullable EventType enum representing the EventType field - public EventType? GetEventType() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - EventType? value = obj == null ? (EventType?)null : (EventType)obj; - return value; - } - - /// - /// Set EventType field - /// Nullable field value to be set - public void SetEventType(EventType? eventType_) - { - SetFieldValue(1, 0, eventType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartTime field - /// Returns DateTime representing the StartTime field - public DateTime GetStartTime() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set StartTime field - /// Nullable field value to be set - public void SetStartTime(DateTime startTime_) - { - SetFieldValue(2, 0, startTime_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartPositionLat field - /// Units: semicircles - /// Returns nullable int representing the StartPositionLat field - public int? GetStartPositionLat() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set StartPositionLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetStartPositionLat(int? startPositionLat_) - { - SetFieldValue(3, 0, startPositionLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartPositionLong field - /// Units: semicircles - /// Returns nullable int representing the StartPositionLong field - public int? GetStartPositionLong() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set StartPositionLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetStartPositionLong(int? startPositionLong_) - { - SetFieldValue(4, 0, startPositionLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EndPositionLat field - /// Units: semicircles - /// Returns nullable int representing the EndPositionLat field - public int? GetEndPositionLat() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set EndPositionLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetEndPositionLat(int? endPositionLat_) - { - SetFieldValue(5, 0, endPositionLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EndPositionLong field - /// Units: semicircles - /// Returns nullable int representing the EndPositionLong field - public int? GetEndPositionLong() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set EndPositionLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetEndPositionLong(int? endPositionLong_) - { - SetFieldValue(6, 0, endPositionLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalElapsedTime field - /// Units: s - /// Comment: Time (includes pauses) - /// Returns nullable float representing the TotalElapsedTime field - public float? GetTotalElapsedTime() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalElapsedTime field - /// Units: s - /// Comment: Time (includes pauses) - /// Nullable field value to be set - public void SetTotalElapsedTime(float? totalElapsedTime_) - { - SetFieldValue(7, 0, totalElapsedTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalTimerTime field - /// Units: s - /// Comment: Timer Time (excludes pauses) - /// Returns nullable float representing the TotalTimerTime field - public float? GetTotalTimerTime() - { - Object val = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalTimerTime field - /// Units: s - /// Comment: Timer Time (excludes pauses) - /// Nullable field value to be set - public void SetTotalTimerTime(float? totalTimerTime_) - { - SetFieldValue(8, 0, totalTimerTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalDistance field - /// Units: m - /// Returns nullable float representing the TotalDistance field - public float? GetTotalDistance() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalDistance field - /// Units: m - /// Nullable field value to be set - public void SetTotalDistance(float? totalDistance_) - { - SetFieldValue(9, 0, totalDistance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalCycles field - /// Units: cycles - /// Returns nullable uint representing the TotalCycles field - public uint? GetTotalCycles() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TotalCycles field - /// Units: cycles - /// Nullable field value to be set - public void SetTotalCycles(uint? totalCycles_) - { - SetFieldValue(10, 0, totalCycles_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the TotalStrokes subfield - /// Units: strokes - /// Nullable uint representing the TotalStrokes subfield - public uint? GetTotalStrokes() - { - Object val = GetFieldValue(10, 0, TotalCyclesSubfield.TotalStrokes); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set TotalStrokes subfield - /// Units: strokes - /// Subfield value to be set - public void SetTotalStrokes(uint? totalStrokes) - { - SetFieldValue(10, 0, totalStrokes, TotalCyclesSubfield.TotalStrokes); - } - /// - /// Retrieves the TotalCalories field - /// Units: kcal - /// Returns nullable ushort representing the TotalCalories field - public ushort? GetTotalCalories() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalCalories field - /// Units: kcal - /// Nullable field value to be set - public void SetTotalCalories(ushort? totalCalories_) - { - SetFieldValue(11, 0, totalCalories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFatCalories field - /// Units: kcal - /// Comment: If New Leaf - /// Returns nullable ushort representing the TotalFatCalories field - public ushort? GetTotalFatCalories() - { - Object val = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalFatCalories field - /// Units: kcal - /// Comment: If New Leaf - /// Nullable field value to be set - public void SetTotalFatCalories(ushort? totalFatCalories_) - { - SetFieldValue(12, 0, totalFatCalories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgSpeed field - /// Units: m/s - /// Returns nullable float representing the AvgSpeed field - public float? GetAvgSpeed() - { - Object val = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgSpeed(float? avgSpeed_) - { - SetFieldValue(13, 0, avgSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxSpeed field - /// Units: m/s - /// Returns nullable float representing the MaxSpeed field - public float? GetMaxSpeed() - { - Object val = GetFieldValue(14, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetMaxSpeed(float? maxSpeed_) - { - SetFieldValue(14, 0, maxSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgHeartRate field - /// Units: bpm - /// Returns nullable byte representing the AvgHeartRate field - public byte? GetAvgHeartRate() - { - Object val = GetFieldValue(15, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetAvgHeartRate(byte? avgHeartRate_) - { - SetFieldValue(15, 0, avgHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxHeartRate field - /// Units: bpm - /// Returns nullable byte representing the MaxHeartRate field - public byte? GetMaxHeartRate() - { - Object val = GetFieldValue(16, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetMaxHeartRate(byte? maxHeartRate_) - { - SetFieldValue(16, 0, maxHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgCadence field - /// Units: rpm - /// Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - /// Returns nullable byte representing the AvgCadence field - public byte? GetAvgCadence() - { - Object val = GetFieldValue(17, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgCadence field - /// Units: rpm - /// Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - /// Nullable field value to be set - public void SetAvgCadence(byte? avgCadence_) - { - SetFieldValue(17, 0, avgCadence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxCadence field - /// Units: rpm - /// Returns nullable byte representing the MaxCadence field - public byte? GetMaxCadence() - { - Object val = GetFieldValue(18, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxCadence field - /// Units: rpm - /// Nullable field value to be set - public void SetMaxCadence(byte? maxCadence_) - { - SetFieldValue(18, 0, maxCadence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgPower field - /// Units: watts - /// Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - /// Returns nullable ushort representing the AvgPower field - public ushort? GetAvgPower() - { - Object val = GetFieldValue(19, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AvgPower field - /// Units: watts - /// Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - /// Nullable field value to be set - public void SetAvgPower(ushort? avgPower_) - { - SetFieldValue(19, 0, avgPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPower field - /// Units: watts - /// Returns nullable ushort representing the MaxPower field - public ushort? GetMaxPower() - { - Object val = GetFieldValue(20, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MaxPower field - /// Units: watts - /// Nullable field value to be set - public void SetMaxPower(ushort? maxPower_) - { - SetFieldValue(20, 0, maxPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalAscent field - /// Units: m - /// Returns nullable ushort representing the TotalAscent field - public ushort? GetTotalAscent() - { - Object val = GetFieldValue(21, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalAscent field - /// Units: m - /// Nullable field value to be set - public void SetTotalAscent(ushort? totalAscent_) - { - SetFieldValue(21, 0, totalAscent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalDescent field - /// Units: m - /// Returns nullable ushort representing the TotalDescent field - public ushort? GetTotalDescent() - { - Object val = GetFieldValue(22, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalDescent field - /// Units: m - /// Nullable field value to be set - public void SetTotalDescent(ushort? totalDescent_) - { - SetFieldValue(22, 0, totalDescent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sport field - /// Returns nullable Sport enum representing the Sport field - public Sport? GetSport() - { - object obj = GetFieldValue(23, 0, Fit.SubfieldIndexMainField); - Sport? value = obj == null ? (Sport?)null : (Sport)obj; - return value; - } - - /// - /// Set Sport field - /// Nullable field value to be set - public void SetSport(Sport? sport_) - { - SetFieldValue(23, 0, sport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventGroup field - /// Returns nullable byte representing the EventGroup field - public byte? GetEventGroup() - { - Object val = GetFieldValue(24, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set EventGroup field - /// Nullable field value to be set - public void SetEventGroup(byte? eventGroup_) - { - SetFieldValue(24, 0, eventGroup_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NecLat field - /// Units: semicircles - /// Comment: North east corner latitude. - /// Returns nullable int representing the NecLat field - public int? GetNecLat() - { - Object val = GetFieldValue(25, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set NecLat field - /// Units: semicircles - /// Comment: North east corner latitude. - /// Nullable field value to be set - public void SetNecLat(int? necLat_) - { - SetFieldValue(25, 0, necLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NecLong field - /// Units: semicircles - /// Comment: North east corner longitude. - /// Returns nullable int representing the NecLong field - public int? GetNecLong() - { - Object val = GetFieldValue(26, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set NecLong field - /// Units: semicircles - /// Comment: North east corner longitude. - /// Nullable field value to be set - public void SetNecLong(int? necLong_) - { - SetFieldValue(26, 0, necLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SwcLat field - /// Units: semicircles - /// Comment: South west corner latitude. - /// Returns nullable int representing the SwcLat field - public int? GetSwcLat() - { - Object val = GetFieldValue(27, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set SwcLat field - /// Units: semicircles - /// Comment: South west corner latitude. - /// Nullable field value to be set - public void SetSwcLat(int? swcLat_) - { - SetFieldValue(27, 0, swcLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SwcLong field - /// Units: semicircles - /// Comment: South west corner latitude. - /// Returns nullable int representing the SwcLong field - public int? GetSwcLong() - { - Object val = GetFieldValue(28, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set SwcLong field - /// Units: semicircles - /// Comment: South west corner latitude. - /// Nullable field value to be set - public void SetSwcLong(int? swcLong_) - { - SetFieldValue(28, 0, swcLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(29, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(29, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(29, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(29, 0, name_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NormalizedPower field - /// Units: watts - /// Returns nullable ushort representing the NormalizedPower field - public ushort? GetNormalizedPower() - { - Object val = GetFieldValue(30, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NormalizedPower field - /// Units: watts - /// Nullable field value to be set - public void SetNormalizedPower(ushort? normalizedPower_) - { - SetFieldValue(30, 0, normalizedPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeftRightBalance field - /// Returns nullable ushort representing the LeftRightBalance field - public ushort? GetLeftRightBalance() - { - Object val = GetFieldValue(31, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set LeftRightBalance field - /// Nullable field value to be set - public void SetLeftRightBalance(ushort? leftRightBalance_) - { - SetFieldValue(31, 0, leftRightBalance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SubSport field - /// Returns nullable SubSport enum representing the SubSport field - public SubSport? GetSubSport() - { - object obj = GetFieldValue(32, 0, Fit.SubfieldIndexMainField); - SubSport? value = obj == null ? (SubSport?)null : (SubSport)obj; - return value; - } - - /// - /// Set SubSport field - /// Nullable field value to be set - public void SetSubSport(SubSport? subSport_) - { - SetFieldValue(32, 0, subSport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalWork field - /// Units: J - /// Returns nullable uint representing the TotalWork field - public uint? GetTotalWork() - { - Object val = GetFieldValue(33, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TotalWork field - /// Units: J - /// Nullable field value to be set - public void SetTotalWork(uint? totalWork_) - { - SetFieldValue(33, 0, totalWork_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgAltitude field - /// Units: m - /// Returns nullable float representing the AvgAltitude field - public float? GetAvgAltitude() - { - Object val = GetFieldValue(34, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgAltitude field - /// Units: m - /// Nullable field value to be set - public void SetAvgAltitude(float? avgAltitude_) - { - SetFieldValue(34, 0, avgAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxAltitude field - /// Units: m - /// Returns nullable float representing the MaxAltitude field - public float? GetMaxAltitude() - { - Object val = GetFieldValue(35, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxAltitude field - /// Units: m - /// Nullable field value to be set - public void SetMaxAltitude(float? maxAltitude_) - { - SetFieldValue(35, 0, maxAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GpsAccuracy field - /// Units: m - /// Returns nullable byte representing the GpsAccuracy field - public byte? GetGpsAccuracy() - { - Object val = GetFieldValue(36, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set GpsAccuracy field - /// Units: m - /// Nullable field value to be set - public void SetGpsAccuracy(byte? gpsAccuracy_) - { - SetFieldValue(36, 0, gpsAccuracy_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgGrade field - /// Units: % - /// Returns nullable float representing the AvgGrade field - public float? GetAvgGrade() - { - Object val = GetFieldValue(37, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgGrade field - /// Units: % - /// Nullable field value to be set - public void SetAvgGrade(float? avgGrade_) - { - SetFieldValue(37, 0, avgGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgPosGrade field - /// Units: % - /// Returns nullable float representing the AvgPosGrade field - public float? GetAvgPosGrade() - { - Object val = GetFieldValue(38, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgPosGrade field - /// Units: % - /// Nullable field value to be set - public void SetAvgPosGrade(float? avgPosGrade_) - { - SetFieldValue(38, 0, avgPosGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgNegGrade field - /// Units: % - /// Returns nullable float representing the AvgNegGrade field - public float? GetAvgNegGrade() - { - Object val = GetFieldValue(39, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgNegGrade field - /// Units: % - /// Nullable field value to be set - public void SetAvgNegGrade(float? avgNegGrade_) - { - SetFieldValue(39, 0, avgNegGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPosGrade field - /// Units: % - /// Returns nullable float representing the MaxPosGrade field - public float? GetMaxPosGrade() - { - Object val = GetFieldValue(40, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxPosGrade field - /// Units: % - /// Nullable field value to be set - public void SetMaxPosGrade(float? maxPosGrade_) - { - SetFieldValue(40, 0, maxPosGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxNegGrade field - /// Units: % - /// Returns nullable float representing the MaxNegGrade field - public float? GetMaxNegGrade() - { - Object val = GetFieldValue(41, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxNegGrade field - /// Units: % - /// Nullable field value to be set - public void SetMaxNegGrade(float? maxNegGrade_) - { - SetFieldValue(41, 0, maxNegGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgTemperature field - /// Units: C - /// Returns nullable sbyte representing the AvgTemperature field - public sbyte? GetAvgTemperature() - { - Object val = GetFieldValue(42, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set AvgTemperature field - /// Units: C - /// Nullable field value to be set - public void SetAvgTemperature(sbyte? avgTemperature_) - { - SetFieldValue(42, 0, avgTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxTemperature field - /// Units: C - /// Returns nullable sbyte representing the MaxTemperature field - public sbyte? GetMaxTemperature() - { - Object val = GetFieldValue(43, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set MaxTemperature field - /// Units: C - /// Nullable field value to be set - public void SetMaxTemperature(sbyte? maxTemperature_) - { - SetFieldValue(43, 0, maxTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalMovingTime field - /// Units: s - /// Returns nullable float representing the TotalMovingTime field - public float? GetTotalMovingTime() - { - Object val = GetFieldValue(44, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalMovingTime field - /// Units: s - /// Nullable field value to be set - public void SetTotalMovingTime(float? totalMovingTime_) - { - SetFieldValue(44, 0, totalMovingTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgPosVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the AvgPosVerticalSpeed field - public float? GetAvgPosVerticalSpeed() - { - Object val = GetFieldValue(45, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgPosVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgPosVerticalSpeed(float? avgPosVerticalSpeed_) - { - SetFieldValue(45, 0, avgPosVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgNegVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the AvgNegVerticalSpeed field - public float? GetAvgNegVerticalSpeed() - { - Object val = GetFieldValue(46, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgNegVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgNegVerticalSpeed(float? avgNegVerticalSpeed_) - { - SetFieldValue(46, 0, avgNegVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPosVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the MaxPosVerticalSpeed field - public float? GetMaxPosVerticalSpeed() - { - Object val = GetFieldValue(47, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxPosVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetMaxPosVerticalSpeed(float? maxPosVerticalSpeed_) - { - SetFieldValue(47, 0, maxPosVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxNegVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the MaxNegVerticalSpeed field - public float? GetMaxNegVerticalSpeed() - { - Object val = GetFieldValue(48, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxNegVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetMaxNegVerticalSpeed(float? maxNegVerticalSpeed_) - { - SetFieldValue(48, 0, maxNegVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInHrZone - public int GetNumTimeInHrZone() - { - return GetNumFieldValues(49, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInHrZone field - /// Units: s - /// 0 based index of TimeInHrZone element to retrieve - /// Returns nullable float representing the TimeInHrZone field - public float? GetTimeInHrZone(int index) - { - Object val = GetFieldValue(49, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInHrZone field - /// Units: s - /// 0 based index of time_in_hr_zone - /// Nullable field value to be set - public void SetTimeInHrZone(int index, float? timeInHrZone_) - { - SetFieldValue(49, index, timeInHrZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInSpeedZone - public int GetNumTimeInSpeedZone() - { - return GetNumFieldValues(50, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInSpeedZone field - /// Units: s - /// 0 based index of TimeInSpeedZone element to retrieve - /// Returns nullable float representing the TimeInSpeedZone field - public float? GetTimeInSpeedZone(int index) - { - Object val = GetFieldValue(50, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInSpeedZone field - /// Units: s - /// 0 based index of time_in_speed_zone - /// Nullable field value to be set - public void SetTimeInSpeedZone(int index, float? timeInSpeedZone_) - { - SetFieldValue(50, index, timeInSpeedZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInCadenceZone - public int GetNumTimeInCadenceZone() - { - return GetNumFieldValues(51, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInCadenceZone field - /// Units: s - /// 0 based index of TimeInCadenceZone element to retrieve - /// Returns nullable float representing the TimeInCadenceZone field - public float? GetTimeInCadenceZone(int index) - { - Object val = GetFieldValue(51, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInCadenceZone field - /// Units: s - /// 0 based index of time_in_cadence_zone - /// Nullable field value to be set - public void SetTimeInCadenceZone(int index, float? timeInCadenceZone_) - { - SetFieldValue(51, index, timeInCadenceZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInPowerZone - public int GetNumTimeInPowerZone() - { - return GetNumFieldValues(52, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInPowerZone field - /// Units: s - /// 0 based index of TimeInPowerZone element to retrieve - /// Returns nullable float representing the TimeInPowerZone field - public float? GetTimeInPowerZone(int index) - { - Object val = GetFieldValue(52, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInPowerZone field - /// Units: s - /// 0 based index of time_in_power_zone - /// Nullable field value to be set - public void SetTimeInPowerZone(int index, float? timeInPowerZone_) - { - SetFieldValue(52, index, timeInPowerZone_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RepetitionNum field - /// Returns nullable ushort representing the RepetitionNum field - public ushort? GetRepetitionNum() - { - Object val = GetFieldValue(53, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set RepetitionNum field - /// Nullable field value to be set - public void SetRepetitionNum(ushort? repetitionNum_) - { - SetFieldValue(53, 0, repetitionNum_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinAltitude field - /// Units: m - /// Returns nullable float representing the MinAltitude field - public float? GetMinAltitude() - { - Object val = GetFieldValue(54, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MinAltitude field - /// Units: m - /// Nullable field value to be set - public void SetMinAltitude(float? minAltitude_) - { - SetFieldValue(54, 0, minAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinHeartRate field - /// Units: bpm - /// Returns nullable byte representing the MinHeartRate field - public byte? GetMinHeartRate() - { - Object val = GetFieldValue(55, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MinHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetMinHeartRate(byte? minHeartRate_) - { - SetFieldValue(55, 0, minHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActiveTime field - /// Units: s - /// Returns nullable float representing the ActiveTime field - public float? GetActiveTime() - { - Object val = GetFieldValue(56, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set ActiveTime field - /// Units: s - /// Nullable field value to be set - public void SetActiveTime(float? activeTime_) - { - SetFieldValue(56, 0, activeTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WktStepIndex field - /// Returns nullable ushort representing the WktStepIndex field - public ushort? GetWktStepIndex() - { - Object val = GetFieldValue(57, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set WktStepIndex field - /// Nullable field value to be set - public void SetWktStepIndex(ushort? wktStepIndex_) - { - SetFieldValue(57, 0, wktStepIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SportEvent field - /// Returns nullable SportEvent enum representing the SportEvent field - public SportEvent? GetSportEvent() - { - object obj = GetFieldValue(58, 0, Fit.SubfieldIndexMainField); - SportEvent? value = obj == null ? (SportEvent?)null : (SportEvent)obj; - return value; - } - - /// - /// Set SportEvent field - /// Nullable field value to be set - public void SetSportEvent(SportEvent? sportEvent_) - { - SetFieldValue(58, 0, sportEvent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftTorqueEffectiveness field - /// Units: percent - /// Returns nullable float representing the AvgLeftTorqueEffectiveness field - public float? GetAvgLeftTorqueEffectiveness() - { - Object val = GetFieldValue(59, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftTorqueEffectiveness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgLeftTorqueEffectiveness(float? avgLeftTorqueEffectiveness_) - { - SetFieldValue(59, 0, avgLeftTorqueEffectiveness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightTorqueEffectiveness field - /// Units: percent - /// Returns nullable float representing the AvgRightTorqueEffectiveness field - public float? GetAvgRightTorqueEffectiveness() - { - Object val = GetFieldValue(60, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightTorqueEffectiveness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgRightTorqueEffectiveness(float? avgRightTorqueEffectiveness_) - { - SetFieldValue(60, 0, avgRightTorqueEffectiveness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the AvgLeftPedalSmoothness field - public float? GetAvgLeftPedalSmoothness() - { - Object val = GetFieldValue(61, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgLeftPedalSmoothness(float? avgLeftPedalSmoothness_) - { - SetFieldValue(61, 0, avgLeftPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the AvgRightPedalSmoothness field - public float? GetAvgRightPedalSmoothness() - { - Object val = GetFieldValue(62, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgRightPedalSmoothness(float? avgRightPedalSmoothness_) - { - SetFieldValue(62, 0, avgRightPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgCombinedPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the AvgCombinedPedalSmoothness field - public float? GetAvgCombinedPedalSmoothness() - { - Object val = GetFieldValue(63, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgCombinedPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgCombinedPedalSmoothness(float? avgCombinedPedalSmoothness_) - { - SetFieldValue(63, 0, avgCombinedPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Status field - /// Returns nullable SegmentLapStatus enum representing the Status field - public SegmentLapStatus? GetStatus() - { - object obj = GetFieldValue(64, 0, Fit.SubfieldIndexMainField); - SegmentLapStatus? value = obj == null ? (SegmentLapStatus?)null : (SegmentLapStatus)obj; - return value; - } - - /// - /// Set Status field - /// Nullable field value to be set - public void SetStatus(SegmentLapStatus? status_) - { - SetFieldValue(64, 0, status_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Uuid field - /// Returns byte[] representing the Uuid field - public byte[] GetUuid() - { - byte[] data = (byte[])GetFieldValue(65, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Uuid field - /// Returns String representing the Uuid field - public String GetUuidAsString() - { - byte[] data = (byte[])GetFieldValue(65, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Uuid field - /// field value to be set - public void SetUuid(String uuid_) - { - byte[] data = Encoding.UTF8.GetBytes(uuid_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(65, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Uuid field - /// field value to be set - public void SetUuid(byte[] uuid_) - { - SetFieldValue(65, 0, uuid_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the avg_cadence - /// Returns nullable float representing the AvgFractionalCadence field - public float? GetAvgFractionalCadence() - { - Object val = GetFieldValue(66, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the avg_cadence - /// Nullable field value to be set - public void SetAvgFractionalCadence(float? avgFractionalCadence_) - { - SetFieldValue(66, 0, avgFractionalCadence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the max_cadence - /// Returns nullable float representing the MaxFractionalCadence field - public float? GetMaxFractionalCadence() - { - Object val = GetFieldValue(67, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the max_cadence - /// Nullable field value to be set - public void SetMaxFractionalCadence(float? maxFractionalCadence_) - { - SetFieldValue(67, 0, maxFractionalCadence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFractionalCycles field - /// Units: cycles - /// Comment: fractional part of the total_cycles - /// Returns nullable float representing the TotalFractionalCycles field - public float? GetTotalFractionalCycles() - { - Object val = GetFieldValue(68, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFractionalCycles field - /// Units: cycles - /// Comment: fractional part of the total_cycles - /// Nullable field value to be set - public void SetTotalFractionalCycles(float? totalFractionalCycles_) - { - SetFieldValue(68, 0, totalFractionalCycles_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FrontGearShiftCount field - /// Returns nullable ushort representing the FrontGearShiftCount field - public ushort? GetFrontGearShiftCount() - { - Object val = GetFieldValue(69, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set FrontGearShiftCount field - /// Nullable field value to be set - public void SetFrontGearShiftCount(ushort? frontGearShiftCount_) - { - SetFieldValue(69, 0, frontGearShiftCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RearGearShiftCount field - /// Returns nullable ushort representing the RearGearShiftCount field - public ushort? GetRearGearShiftCount() - { - Object val = GetFieldValue(70, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set RearGearShiftCount field - /// Nullable field value to be set - public void SetRearGearShiftCount(ushort? rearGearShiftCount_) - { - SetFieldValue(70, 0, rearGearShiftCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeStanding field - /// Units: s - /// Comment: Total time spent in the standing position - /// Returns nullable float representing the TimeStanding field - public float? GetTimeStanding() - { - Object val = GetFieldValue(71, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeStanding field - /// Units: s - /// Comment: Total time spent in the standing position - /// Nullable field value to be set - public void SetTimeStanding(float? timeStanding_) - { - SetFieldValue(71, 0, timeStanding_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StandCount field - /// Comment: Number of transitions to the standing state - /// Returns nullable ushort representing the StandCount field - public ushort? GetStandCount() - { - Object val = GetFieldValue(72, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set StandCount field - /// Comment: Number of transitions to the standing state - /// Nullable field value to be set - public void SetStandCount(ushort? standCount_) - { - SetFieldValue(72, 0, standCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPco field - /// Units: mm - /// Comment: Average left platform center offset - /// Returns nullable sbyte representing the AvgLeftPco field - public sbyte? GetAvgLeftPco() - { - Object val = GetFieldValue(73, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set AvgLeftPco field - /// Units: mm - /// Comment: Average left platform center offset - /// Nullable field value to be set - public void SetAvgLeftPco(sbyte? avgLeftPco_) - { - SetFieldValue(73, 0, avgLeftPco_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPco field - /// Units: mm - /// Comment: Average right platform center offset - /// Returns nullable sbyte representing the AvgRightPco field - public sbyte? GetAvgRightPco() - { - Object val = GetFieldValue(74, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set AvgRightPco field - /// Units: mm - /// Comment: Average right platform center offset - /// Nullable field value to be set - public void SetAvgRightPco(sbyte? avgRightPco_) - { - SetFieldValue(74, 0, avgRightPco_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgLeftPowerPhase - public int GetNumAvgLeftPowerPhase() - { - return GetNumFieldValues(75, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPowerPhase field - /// Units: degrees - /// Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of AvgLeftPowerPhase element to retrieve - /// Returns nullable float representing the AvgLeftPowerPhase field - public float? GetAvgLeftPowerPhase(int index) - { - Object val = GetFieldValue(75, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftPowerPhase field - /// Units: degrees - /// Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of avg_left_power_phase - /// Nullable field value to be set - public void SetAvgLeftPowerPhase(int index, float? avgLeftPowerPhase_) - { - SetFieldValue(75, index, avgLeftPowerPhase_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgLeftPowerPhasePeak - public int GetNumAvgLeftPowerPhasePeak() - { - return GetNumFieldValues(76, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPowerPhasePeak field - /// Units: degrees - /// Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of AvgLeftPowerPhasePeak element to retrieve - /// Returns nullable float representing the AvgLeftPowerPhasePeak field - public float? GetAvgLeftPowerPhasePeak(int index) - { - Object val = GetFieldValue(76, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftPowerPhasePeak field - /// Units: degrees - /// Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of avg_left_power_phase_peak - /// Nullable field value to be set - public void SetAvgLeftPowerPhasePeak(int index, float? avgLeftPowerPhasePeak_) - { - SetFieldValue(76, index, avgLeftPowerPhasePeak_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgRightPowerPhase - public int GetNumAvgRightPowerPhase() - { - return GetNumFieldValues(77, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPowerPhase field - /// Units: degrees - /// Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of AvgRightPowerPhase element to retrieve - /// Returns nullable float representing the AvgRightPowerPhase field - public float? GetAvgRightPowerPhase(int index) - { - Object val = GetFieldValue(77, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightPowerPhase field - /// Units: degrees - /// Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of avg_right_power_phase - /// Nullable field value to be set - public void SetAvgRightPowerPhase(int index, float? avgRightPowerPhase_) - { - SetFieldValue(77, index, avgRightPowerPhase_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgRightPowerPhasePeak - public int GetNumAvgRightPowerPhasePeak() - { - return GetNumFieldValues(78, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPowerPhasePeak field - /// Units: degrees - /// Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of AvgRightPowerPhasePeak element to retrieve - /// Returns nullable float representing the AvgRightPowerPhasePeak field - public float? GetAvgRightPowerPhasePeak(int index) - { - Object val = GetFieldValue(78, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightPowerPhasePeak field - /// Units: degrees - /// Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of avg_right_power_phase_peak - /// Nullable field value to be set - public void SetAvgRightPowerPhasePeak(int index, float? avgRightPowerPhasePeak_) - { - SetFieldValue(78, index, avgRightPowerPhasePeak_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgPowerPosition - public int GetNumAvgPowerPosition() - { - return GetNumFieldValues(79, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgPowerPosition field - /// Units: watts - /// Comment: Average power by position. Data value indexes defined by rider_position_type. - /// 0 based index of AvgPowerPosition element to retrieve - /// Returns nullable ushort representing the AvgPowerPosition field - public ushort? GetAvgPowerPosition(int index) - { - Object val = GetFieldValue(79, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AvgPowerPosition field - /// Units: watts - /// Comment: Average power by position. Data value indexes defined by rider_position_type. - /// 0 based index of avg_power_position - /// Nullable field value to be set - public void SetAvgPowerPosition(int index, ushort? avgPowerPosition_) - { - SetFieldValue(79, index, avgPowerPosition_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MaxPowerPosition - public int GetNumMaxPowerPosition() - { - return GetNumFieldValues(80, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPowerPosition field - /// Units: watts - /// Comment: Maximum power by position. Data value indexes defined by rider_position_type. - /// 0 based index of MaxPowerPosition element to retrieve - /// Returns nullable ushort representing the MaxPowerPosition field - public ushort? GetMaxPowerPosition(int index) - { - Object val = GetFieldValue(80, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MaxPowerPosition field - /// Units: watts - /// Comment: Maximum power by position. Data value indexes defined by rider_position_type. - /// 0 based index of max_power_position - /// Nullable field value to be set - public void SetMaxPowerPosition(int index, ushort? maxPowerPosition_) - { - SetFieldValue(80, index, maxPowerPosition_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgCadencePosition - public int GetNumAvgCadencePosition() - { - return GetNumFieldValues(81, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgCadencePosition field - /// Units: rpm - /// Comment: Average cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of AvgCadencePosition element to retrieve - /// Returns nullable byte representing the AvgCadencePosition field - public byte? GetAvgCadencePosition(int index) - { - Object val = GetFieldValue(81, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgCadencePosition field - /// Units: rpm - /// Comment: Average cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of avg_cadence_position - /// Nullable field value to be set - public void SetAvgCadencePosition(int index, byte? avgCadencePosition_) - { - SetFieldValue(81, index, avgCadencePosition_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MaxCadencePosition - public int GetNumMaxCadencePosition() - { - return GetNumFieldValues(82, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxCadencePosition field - /// Units: rpm - /// Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of MaxCadencePosition element to retrieve - /// Returns nullable byte representing the MaxCadencePosition field - public byte? GetMaxCadencePosition(int index) - { - Object val = GetFieldValue(82, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxCadencePosition field - /// Units: rpm - /// Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of max_cadence_position - /// Nullable field value to be set - public void SetMaxCadencePosition(int index, byte? maxCadencePosition_) - { - SetFieldValue(82, index, maxCadencePosition_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Manufacturer field - /// Comment: Manufacturer that produced the segment - /// Returns nullable ushort representing the Manufacturer field - public ushort? GetManufacturer() - { - Object val = GetFieldValue(83, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Manufacturer field - /// Comment: Manufacturer that produced the segment - /// Nullable field value to be set - public void SetManufacturer(ushort? manufacturer_) - { - SetFieldValue(83, 0, manufacturer_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Returns nullable float representing the TotalGrit field - public float? GetTotalGrit() - { - Object val = GetFieldValue(84, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Nullable field value to be set - public void SetTotalGrit(float? totalGrit_) - { - SetFieldValue(84, 0, totalGrit_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Returns nullable float representing the TotalFlow field - public float? GetTotalFlow() - { - Object val = GetFieldValue(85, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Nullable field value to be set - public void SetTotalFlow(float? totalFlow_) - { - SetFieldValue(85, 0, totalFlow_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Returns nullable float representing the AvgGrit field - public float? GetAvgGrit() - { - Object val = GetFieldValue(86, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Nullable field value to be set - public void SetAvgGrit(float? avgGrit_) - { - SetFieldValue(86, 0, avgGrit_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Returns nullable float representing the AvgFlow field - public float? GetAvgFlow() - { - Object val = GetFieldValue(87, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Nullable field value to be set - public void SetAvgFlow(float? avgFlow_) - { - SetFieldValue(87, 0, avgFlow_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFractionalAscent field - /// Units: m - /// Comment: fractional part of total_ascent - /// Returns nullable float representing the TotalFractionalAscent field - public float? GetTotalFractionalAscent() - { - Object val = GetFieldValue(89, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFractionalAscent field - /// Units: m - /// Comment: fractional part of total_ascent - /// Nullable field value to be set - public void SetTotalFractionalAscent(float? totalFractionalAscent_) - { - SetFieldValue(89, 0, totalFractionalAscent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFractionalDescent field - /// Units: m - /// Comment: fractional part of total_descent - /// Returns nullable float representing the TotalFractionalDescent field - public float? GetTotalFractionalDescent() - { - Object val = GetFieldValue(90, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFractionalDescent field - /// Units: m - /// Comment: fractional part of total_descent - /// Nullable field value to be set - public void SetTotalFractionalDescent(float? totalFractionalDescent_) - { - SetFieldValue(90, 0, totalFractionalDescent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedAvgAltitude field - /// Units: m - /// Returns nullable float representing the EnhancedAvgAltitude field - public float? GetEnhancedAvgAltitude() - { - Object val = GetFieldValue(91, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedAvgAltitude field - /// Units: m - /// Nullable field value to be set - public void SetEnhancedAvgAltitude(float? enhancedAvgAltitude_) - { - SetFieldValue(91, 0, enhancedAvgAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMaxAltitude field - /// Units: m - /// Returns nullable float representing the EnhancedMaxAltitude field - public float? GetEnhancedMaxAltitude() - { - Object val = GetFieldValue(92, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMaxAltitude field - /// Units: m - /// Nullable field value to be set - public void SetEnhancedMaxAltitude(float? enhancedMaxAltitude_) - { - SetFieldValue(92, 0, enhancedMaxAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMinAltitude field - /// Units: m - /// Returns nullable float representing the EnhancedMinAltitude field - public float? GetEnhancedMinAltitude() - { - Object val = GetFieldValue(93, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMinAltitude field - /// Units: m - /// Nullable field value to be set - public void SetEnhancedMinAltitude(float? enhancedMinAltitude_) - { - SetFieldValue(93, 0, enhancedMinAltitude_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SegmentLeaderboardEntryMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SegmentLeaderboardEntryMesg.cs deleted file mode 100644 index dba24c1db..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SegmentLeaderboardEntryMesg.cs +++ /dev/null @@ -1,264 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the SegmentLeaderboardEntry profile message. - /// - public class SegmentLeaderboardEntryMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Name = 0; - public const byte Type = 1; - public const byte GroupPrimaryKey = 2; - public const byte ActivityId = 3; - public const byte SegmentTime = 4; - public const byte ActivityIdString = 5; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SegmentLeaderboardEntryMesg() : base(Profile.GetMesg(MesgNum.SegmentLeaderboardEntry)) - { - } - - public SegmentLeaderboardEntryMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Comment: Friendly name assigned to leader - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Comment: Friendly name assigned to leader - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// Comment: Friendly name assigned to leader - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(0, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// Comment: Friendly name assigned to leader - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(0, 0, name_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Type field - /// Comment: Leader classification - /// Returns nullable SegmentLeaderboardType enum representing the Type field - new public SegmentLeaderboardType? GetType() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - SegmentLeaderboardType? value = obj == null ? (SegmentLeaderboardType?)null : (SegmentLeaderboardType)obj; - return value; - } - - /// - /// Set Type field - /// Comment: Leader classification - /// Nullable field value to be set - public void SetType(SegmentLeaderboardType? type_) - { - SetFieldValue(1, 0, type_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GroupPrimaryKey field - /// Comment: Primary user ID of this leader - /// Returns nullable uint representing the GroupPrimaryKey field - public uint? GetGroupPrimaryKey() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set GroupPrimaryKey field - /// Comment: Primary user ID of this leader - /// Nullable field value to be set - public void SetGroupPrimaryKey(uint? groupPrimaryKey_) - { - SetFieldValue(2, 0, groupPrimaryKey_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActivityId field - /// Comment: ID of the activity associated with this leader time - /// Returns nullable uint representing the ActivityId field - public uint? GetActivityId() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set ActivityId field - /// Comment: ID of the activity associated with this leader time - /// Nullable field value to be set - public void SetActivityId(uint? activityId_) - { - SetFieldValue(3, 0, activityId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SegmentTime field - /// Units: s - /// Comment: Segment Time (includes pauses) - /// Returns nullable float representing the SegmentTime field - public float? GetSegmentTime() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set SegmentTime field - /// Units: s - /// Comment: Segment Time (includes pauses) - /// Nullable field value to be set - public void SetSegmentTime(float? segmentTime_) - { - SetFieldValue(4, 0, segmentTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActivityIdString field - /// Comment: String version of the activity_id. 21 characters long, express in decimal - /// Returns byte[] representing the ActivityIdString field - public byte[] GetActivityIdString() - { - byte[] data = (byte[])GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the ActivityIdString field - /// Comment: String version of the activity_id. 21 characters long, express in decimal - /// Returns String representing the ActivityIdString field - public String GetActivityIdStringAsString() - { - byte[] data = (byte[])GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set ActivityIdString field - /// Comment: String version of the activity_id. 21 characters long, express in decimal - /// field value to be set - public void SetActivityIdString(String activityIdString_) - { - byte[] data = Encoding.UTF8.GetBytes(activityIdString_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(5, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set ActivityIdString field - /// Comment: String version of the activity_id. 21 characters long, express in decimal - /// field value to be set - public void SetActivityIdString(byte[] activityIdString_) - { - SetFieldValue(5, 0, activityIdString_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SegmentPointMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SegmentPointMesg.cs deleted file mode 100644 index 5ceed0363..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SegmentPointMesg.cs +++ /dev/null @@ -1,253 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the SegmentPoint profile message. - /// - public class SegmentPointMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte PositionLat = 1; - public const byte PositionLong = 2; - public const byte Distance = 3; - public const byte Altitude = 4; - public const byte LeaderTime = 5; - public const byte EnhancedAltitude = 6; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SegmentPointMesg() : base(Profile.GetMesg(MesgNum.SegmentPoint)) - { - } - - public SegmentPointMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLat field - /// Units: semicircles - /// Returns nullable int representing the PositionLat field - public int? GetPositionLat() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLat(int? positionLat_) - { - SetFieldValue(1, 0, positionLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLong field - /// Units: semicircles - /// Returns nullable int representing the PositionLong field - public int? GetPositionLong() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLong(int? positionLong_) - { - SetFieldValue(2, 0, positionLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Distance field - /// Units: m - /// Comment: Accumulated distance along the segment at the described point - /// Returns nullable float representing the Distance field - public float? GetDistance() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Distance field - /// Units: m - /// Comment: Accumulated distance along the segment at the described point - /// Nullable field value to be set - public void SetDistance(float? distance_) - { - SetFieldValue(3, 0, distance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Altitude field - /// Units: m - /// Comment: Accumulated altitude along the segment at the described point - /// Returns nullable float representing the Altitude field - public float? GetAltitude() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Altitude field - /// Units: m - /// Comment: Accumulated altitude along the segment at the described point - /// Nullable field value to be set - public void SetAltitude(float? altitude_) - { - SetFieldValue(4, 0, altitude_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field LeaderTime - public int GetNumLeaderTime() - { - return GetNumFieldValues(5, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeaderTime field - /// Units: s - /// Comment: Accumualted time each leader board member required to reach the described point. This value is zero for all leader board members at the starting point of the segment. - /// 0 based index of LeaderTime element to retrieve - /// Returns nullable float representing the LeaderTime field - public float? GetLeaderTime(int index) - { - Object val = GetFieldValue(5, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set LeaderTime field - /// Units: s - /// Comment: Accumualted time each leader board member required to reach the described point. This value is zero for all leader board members at the starting point of the segment. - /// 0 based index of leader_time - /// Nullable field value to be set - public void SetLeaderTime(int index, float? leaderTime_) - { - SetFieldValue(5, index, leaderTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedAltitude field - /// Units: m - /// Comment: Accumulated altitude along the segment at the described point - /// Returns nullable float representing the EnhancedAltitude field - public float? GetEnhancedAltitude() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedAltitude field - /// Units: m - /// Comment: Accumulated altitude along the segment at the described point - /// Nullable field value to be set - public void SetEnhancedAltitude(float? enhancedAltitude_) - { - SetFieldValue(6, 0, enhancedAltitude_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SessionMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SessionMesg.cs deleted file mode 100644 index 4300f1b6b..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SessionMesg.cs +++ /dev/null @@ -1,4271 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Session profile message. - /// - public class SessionMesg : Mesg - { - #region Fields - static class TotalCyclesSubfield - { - public static ushort TotalStrides = 0; - public static ushort TotalStrokes = 1; - public static ushort Subfields = 2; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - static class AvgCadenceSubfield - { - public static ushort AvgRunningCadence = 0; - public static ushort Subfields = 1; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - static class MaxCadenceSubfield - { - public static ushort MaxRunningCadence = 0; - public static ushort Subfields = 1; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Timestamp = 253; - public const byte Event = 0; - public const byte EventType = 1; - public const byte StartTime = 2; - public const byte StartPositionLat = 3; - public const byte StartPositionLong = 4; - public const byte Sport = 5; - public const byte SubSport = 6; - public const byte TotalElapsedTime = 7; - public const byte TotalTimerTime = 8; - public const byte TotalDistance = 9; - public const byte TotalCycles = 10; - public const byte TotalCalories = 11; - public const byte TotalFatCalories = 13; - public const byte AvgSpeed = 14; - public const byte MaxSpeed = 15; - public const byte AvgHeartRate = 16; - public const byte MaxHeartRate = 17; - public const byte AvgCadence = 18; - public const byte MaxCadence = 19; - public const byte AvgPower = 20; - public const byte MaxPower = 21; - public const byte TotalAscent = 22; - public const byte TotalDescent = 23; - public const byte TotalTrainingEffect = 24; - public const byte FirstLapIndex = 25; - public const byte NumLaps = 26; - public const byte EventGroup = 27; - public const byte Trigger = 28; - public const byte NecLat = 29; - public const byte NecLong = 30; - public const byte SwcLat = 31; - public const byte SwcLong = 32; - public const byte NumLengths = 33; - public const byte NormalizedPower = 34; - public const byte TrainingStressScore = 35; - public const byte IntensityFactor = 36; - public const byte LeftRightBalance = 37; - public const byte AvgStrokeCount = 41; - public const byte AvgStrokeDistance = 42; - public const byte SwimStroke = 43; - public const byte PoolLength = 44; - public const byte ThresholdPower = 45; - public const byte PoolLengthUnit = 46; - public const byte NumActiveLengths = 47; - public const byte TotalWork = 48; - public const byte AvgAltitude = 49; - public const byte MaxAltitude = 50; - public const byte GpsAccuracy = 51; - public const byte AvgGrade = 52; - public const byte AvgPosGrade = 53; - public const byte AvgNegGrade = 54; - public const byte MaxPosGrade = 55; - public const byte MaxNegGrade = 56; - public const byte AvgTemperature = 57; - public const byte MaxTemperature = 58; - public const byte TotalMovingTime = 59; - public const byte AvgPosVerticalSpeed = 60; - public const byte AvgNegVerticalSpeed = 61; - public const byte MaxPosVerticalSpeed = 62; - public const byte MaxNegVerticalSpeed = 63; - public const byte MinHeartRate = 64; - public const byte TimeInHrZone = 65; - public const byte TimeInSpeedZone = 66; - public const byte TimeInCadenceZone = 67; - public const byte TimeInPowerZone = 68; - public const byte AvgLapTime = 69; - public const byte BestLapIndex = 70; - public const byte MinAltitude = 71; - public const byte PlayerScore = 82; - public const byte OpponentScore = 83; - public const byte OpponentName = 84; - public const byte StrokeCount = 85; - public const byte ZoneCount = 86; - public const byte MaxBallSpeed = 87; - public const byte AvgBallSpeed = 88; - public const byte AvgVerticalOscillation = 89; - public const byte AvgStanceTimePercent = 90; - public const byte AvgStanceTime = 91; - public const byte AvgFractionalCadence = 92; - public const byte MaxFractionalCadence = 93; - public const byte TotalFractionalCycles = 94; - public const byte AvgTotalHemoglobinConc = 95; - public const byte MinTotalHemoglobinConc = 96; - public const byte MaxTotalHemoglobinConc = 97; - public const byte AvgSaturatedHemoglobinPercent = 98; - public const byte MinSaturatedHemoglobinPercent = 99; - public const byte MaxSaturatedHemoglobinPercent = 100; - public const byte AvgLeftTorqueEffectiveness = 101; - public const byte AvgRightTorqueEffectiveness = 102; - public const byte AvgLeftPedalSmoothness = 103; - public const byte AvgRightPedalSmoothness = 104; - public const byte AvgCombinedPedalSmoothness = 105; - public const byte SportIndex = 111; - public const byte TimeStanding = 112; - public const byte StandCount = 113; - public const byte AvgLeftPco = 114; - public const byte AvgRightPco = 115; - public const byte AvgLeftPowerPhase = 116; - public const byte AvgLeftPowerPhasePeak = 117; - public const byte AvgRightPowerPhase = 118; - public const byte AvgRightPowerPhasePeak = 119; - public const byte AvgPowerPosition = 120; - public const byte MaxPowerPosition = 121; - public const byte AvgCadencePosition = 122; - public const byte MaxCadencePosition = 123; - public const byte EnhancedAvgSpeed = 124; - public const byte EnhancedMaxSpeed = 125; - public const byte EnhancedAvgAltitude = 126; - public const byte EnhancedMinAltitude = 127; - public const byte EnhancedMaxAltitude = 128; - public const byte AvgLevMotorPower = 129; - public const byte MaxLevMotorPower = 130; - public const byte LevBatteryConsumption = 131; - public const byte AvgVerticalRatio = 132; - public const byte AvgStanceTimeBalance = 133; - public const byte AvgStepLength = 134; - public const byte TotalAnaerobicTrainingEffect = 137; - public const byte AvgVam = 139; - public const byte AvgDepth = 140; - public const byte MaxDepth = 141; - public const byte SurfaceInterval = 142; - public const byte StartCns = 143; - public const byte EndCns = 144; - public const byte StartN2 = 145; - public const byte EndN2 = 146; - public const byte AvgRespirationRate = 147; - public const byte MaxRespirationRate = 148; - public const byte MinRespirationRate = 149; - public const byte MinTemperature = 150; - public const byte O2Toxicity = 155; - public const byte DiveNumber = 156; - public const byte TrainingLoadPeak = 168; - public const byte EnhancedAvgRespirationRate = 169; - public const byte EnhancedMaxRespirationRate = 170; - public const byte EnhancedMinRespirationRate = 180; - public const byte TotalGrit = 181; - public const byte TotalFlow = 182; - public const byte JumpCount = 183; - public const byte AvgGrit = 186; - public const byte AvgFlow = 187; - public const byte TotalFractionalAscent = 199; - public const byte TotalFractionalDescent = 200; - public const byte AvgCoreTemperature = 208; - public const byte MinCoreTemperature = 209; - public const byte MaxCoreTemperature = 210; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SessionMesg() : base(Profile.GetMesg(MesgNum.Session)) - { - } - - public SessionMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Comment: Selected bit is set for the current session. - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Comment: Selected bit is set for the current session. - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Sesson end time. - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Sesson end time. - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Event field - /// Comment: session - /// Returns nullable Event enum representing the Event field - public Event? GetEvent() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Event? value = obj == null ? (Event?)null : (Event)obj; - return value; - } - - /// - /// Set Event field - /// Comment: session - /// Nullable field value to be set - public void SetEvent(Event? event_) - { - SetFieldValue(0, 0, event_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventType field - /// Comment: stop - /// Returns nullable EventType enum representing the EventType field - public EventType? GetEventType() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - EventType? value = obj == null ? (EventType?)null : (EventType)obj; - return value; - } - - /// - /// Set EventType field - /// Comment: stop - /// Nullable field value to be set - public void SetEventType(EventType? eventType_) - { - SetFieldValue(1, 0, eventType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartTime field - /// Returns DateTime representing the StartTime field - public DateTime GetStartTime() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set StartTime field - /// Nullable field value to be set - public void SetStartTime(DateTime startTime_) - { - SetFieldValue(2, 0, startTime_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartPositionLat field - /// Units: semicircles - /// Returns nullable int representing the StartPositionLat field - public int? GetStartPositionLat() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set StartPositionLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetStartPositionLat(int? startPositionLat_) - { - SetFieldValue(3, 0, startPositionLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartPositionLong field - /// Units: semicircles - /// Returns nullable int representing the StartPositionLong field - public int? GetStartPositionLong() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set StartPositionLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetStartPositionLong(int? startPositionLong_) - { - SetFieldValue(4, 0, startPositionLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sport field - /// Returns nullable Sport enum representing the Sport field - public Sport? GetSport() - { - object obj = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - Sport? value = obj == null ? (Sport?)null : (Sport)obj; - return value; - } - - /// - /// Set Sport field - /// Nullable field value to be set - public void SetSport(Sport? sport_) - { - SetFieldValue(5, 0, sport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SubSport field - /// Returns nullable SubSport enum representing the SubSport field - public SubSport? GetSubSport() - { - object obj = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - SubSport? value = obj == null ? (SubSport?)null : (SubSport)obj; - return value; - } - - /// - /// Set SubSport field - /// Nullable field value to be set - public void SetSubSport(SubSport? subSport_) - { - SetFieldValue(6, 0, subSport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalElapsedTime field - /// Units: s - /// Comment: Time (includes pauses) - /// Returns nullable float representing the TotalElapsedTime field - public float? GetTotalElapsedTime() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalElapsedTime field - /// Units: s - /// Comment: Time (includes pauses) - /// Nullable field value to be set - public void SetTotalElapsedTime(float? totalElapsedTime_) - { - SetFieldValue(7, 0, totalElapsedTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalTimerTime field - /// Units: s - /// Comment: Timer Time (excludes pauses) - /// Returns nullable float representing the TotalTimerTime field - public float? GetTotalTimerTime() - { - Object val = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalTimerTime field - /// Units: s - /// Comment: Timer Time (excludes pauses) - /// Nullable field value to be set - public void SetTotalTimerTime(float? totalTimerTime_) - { - SetFieldValue(8, 0, totalTimerTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalDistance field - /// Units: m - /// Returns nullable float representing the TotalDistance field - public float? GetTotalDistance() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalDistance field - /// Units: m - /// Nullable field value to be set - public void SetTotalDistance(float? totalDistance_) - { - SetFieldValue(9, 0, totalDistance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalCycles field - /// Units: cycles - /// Returns nullable uint representing the TotalCycles field - public uint? GetTotalCycles() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TotalCycles field - /// Units: cycles - /// Nullable field value to be set - public void SetTotalCycles(uint? totalCycles_) - { - SetFieldValue(10, 0, totalCycles_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the TotalStrides subfield - /// Units: strides - /// Nullable uint representing the TotalStrides subfield - public uint? GetTotalStrides() - { - Object val = GetFieldValue(10, 0, TotalCyclesSubfield.TotalStrides); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set TotalStrides subfield - /// Units: strides - /// Subfield value to be set - public void SetTotalStrides(uint? totalStrides) - { - SetFieldValue(10, 0, totalStrides, TotalCyclesSubfield.TotalStrides); - } - - /// - /// Retrieves the TotalStrokes subfield - /// Units: strokes - /// Nullable uint representing the TotalStrokes subfield - public uint? GetTotalStrokes() - { - Object val = GetFieldValue(10, 0, TotalCyclesSubfield.TotalStrokes); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set TotalStrokes subfield - /// Units: strokes - /// Subfield value to be set - public void SetTotalStrokes(uint? totalStrokes) - { - SetFieldValue(10, 0, totalStrokes, TotalCyclesSubfield.TotalStrokes); - } - /// - /// Retrieves the TotalCalories field - /// Units: kcal - /// Returns nullable ushort representing the TotalCalories field - public ushort? GetTotalCalories() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalCalories field - /// Units: kcal - /// Nullable field value to be set - public void SetTotalCalories(ushort? totalCalories_) - { - SetFieldValue(11, 0, totalCalories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFatCalories field - /// Units: kcal - /// Returns nullable ushort representing the TotalFatCalories field - public ushort? GetTotalFatCalories() - { - Object val = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalFatCalories field - /// Units: kcal - /// Nullable field value to be set - public void SetTotalFatCalories(ushort? totalFatCalories_) - { - SetFieldValue(13, 0, totalFatCalories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgSpeed field - /// Units: m/s - /// Comment: total_distance / total_timer_time - /// Returns nullable float representing the AvgSpeed field - public float? GetAvgSpeed() - { - Object val = GetFieldValue(14, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgSpeed field - /// Units: m/s - /// Comment: total_distance / total_timer_time - /// Nullable field value to be set - public void SetAvgSpeed(float? avgSpeed_) - { - SetFieldValue(14, 0, avgSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxSpeed field - /// Units: m/s - /// Returns nullable float representing the MaxSpeed field - public float? GetMaxSpeed() - { - Object val = GetFieldValue(15, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetMaxSpeed(float? maxSpeed_) - { - SetFieldValue(15, 0, maxSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgHeartRate field - /// Units: bpm - /// Comment: average heart rate (excludes pause time) - /// Returns nullable byte representing the AvgHeartRate field - public byte? GetAvgHeartRate() - { - Object val = GetFieldValue(16, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgHeartRate field - /// Units: bpm - /// Comment: average heart rate (excludes pause time) - /// Nullable field value to be set - public void SetAvgHeartRate(byte? avgHeartRate_) - { - SetFieldValue(16, 0, avgHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxHeartRate field - /// Units: bpm - /// Returns nullable byte representing the MaxHeartRate field - public byte? GetMaxHeartRate() - { - Object val = GetFieldValue(17, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetMaxHeartRate(byte? maxHeartRate_) - { - SetFieldValue(17, 0, maxHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgCadence field - /// Units: rpm - /// Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - /// Returns nullable byte representing the AvgCadence field - public byte? GetAvgCadence() - { - Object val = GetFieldValue(18, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgCadence field - /// Units: rpm - /// Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - /// Nullable field value to be set - public void SetAvgCadence(byte? avgCadence_) - { - SetFieldValue(18, 0, avgCadence_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the AvgRunningCadence subfield - /// Units: strides/min - /// Nullable byte representing the AvgRunningCadence subfield - public byte? GetAvgRunningCadence() - { - Object val = GetFieldValue(18, 0, AvgCadenceSubfield.AvgRunningCadence); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set AvgRunningCadence subfield - /// Units: strides/min - /// Subfield value to be set - public void SetAvgRunningCadence(byte? avgRunningCadence) - { - SetFieldValue(18, 0, avgRunningCadence, AvgCadenceSubfield.AvgRunningCadence); - } - /// - /// Retrieves the MaxCadence field - /// Units: rpm - /// Returns nullable byte representing the MaxCadence field - public byte? GetMaxCadence() - { - Object val = GetFieldValue(19, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxCadence field - /// Units: rpm - /// Nullable field value to be set - public void SetMaxCadence(byte? maxCadence_) - { - SetFieldValue(19, 0, maxCadence_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the MaxRunningCadence subfield - /// Units: strides/min - /// Nullable byte representing the MaxRunningCadence subfield - public byte? GetMaxRunningCadence() - { - Object val = GetFieldValue(19, 0, MaxCadenceSubfield.MaxRunningCadence); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set MaxRunningCadence subfield - /// Units: strides/min - /// Subfield value to be set - public void SetMaxRunningCadence(byte? maxRunningCadence) - { - SetFieldValue(19, 0, maxRunningCadence, MaxCadenceSubfield.MaxRunningCadence); - } - /// - /// Retrieves the AvgPower field - /// Units: watts - /// Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - /// Returns nullable ushort representing the AvgPower field - public ushort? GetAvgPower() - { - Object val = GetFieldValue(20, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AvgPower field - /// Units: watts - /// Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - /// Nullable field value to be set - public void SetAvgPower(ushort? avgPower_) - { - SetFieldValue(20, 0, avgPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPower field - /// Units: watts - /// Returns nullable ushort representing the MaxPower field - public ushort? GetMaxPower() - { - Object val = GetFieldValue(21, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MaxPower field - /// Units: watts - /// Nullable field value to be set - public void SetMaxPower(ushort? maxPower_) - { - SetFieldValue(21, 0, maxPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalAscent field - /// Units: m - /// Returns nullable ushort representing the TotalAscent field - public ushort? GetTotalAscent() - { - Object val = GetFieldValue(22, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalAscent field - /// Units: m - /// Nullable field value to be set - public void SetTotalAscent(ushort? totalAscent_) - { - SetFieldValue(22, 0, totalAscent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalDescent field - /// Units: m - /// Returns nullable ushort representing the TotalDescent field - public ushort? GetTotalDescent() - { - Object val = GetFieldValue(23, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalDescent field - /// Units: m - /// Nullable field value to be set - public void SetTotalDescent(ushort? totalDescent_) - { - SetFieldValue(23, 0, totalDescent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalTrainingEffect field - /// Returns nullable float representing the TotalTrainingEffect field - public float? GetTotalTrainingEffect() - { - Object val = GetFieldValue(24, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalTrainingEffect field - /// Nullable field value to be set - public void SetTotalTrainingEffect(float? totalTrainingEffect_) - { - SetFieldValue(24, 0, totalTrainingEffect_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FirstLapIndex field - /// Returns nullable ushort representing the FirstLapIndex field - public ushort? GetFirstLapIndex() - { - Object val = GetFieldValue(25, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set FirstLapIndex field - /// Nullable field value to be set - public void SetFirstLapIndex(ushort? firstLapIndex_) - { - SetFieldValue(25, 0, firstLapIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NumLaps field - /// Returns nullable ushort representing the NumLaps field - public ushort? GetNumLaps() - { - Object val = GetFieldValue(26, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NumLaps field - /// Nullable field value to be set - public void SetNumLaps(ushort? numLaps_) - { - SetFieldValue(26, 0, numLaps_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventGroup field - /// Returns nullable byte representing the EventGroup field - public byte? GetEventGroup() - { - Object val = GetFieldValue(27, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set EventGroup field - /// Nullable field value to be set - public void SetEventGroup(byte? eventGroup_) - { - SetFieldValue(27, 0, eventGroup_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Trigger field - /// Returns nullable SessionTrigger enum representing the Trigger field - public SessionTrigger? GetTrigger() - { - object obj = GetFieldValue(28, 0, Fit.SubfieldIndexMainField); - SessionTrigger? value = obj == null ? (SessionTrigger?)null : (SessionTrigger)obj; - return value; - } - - /// - /// Set Trigger field - /// Nullable field value to be set - public void SetTrigger(SessionTrigger? trigger_) - { - SetFieldValue(28, 0, trigger_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NecLat field - /// Units: semicircles - /// Comment: North east corner latitude - /// Returns nullable int representing the NecLat field - public int? GetNecLat() - { - Object val = GetFieldValue(29, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set NecLat field - /// Units: semicircles - /// Comment: North east corner latitude - /// Nullable field value to be set - public void SetNecLat(int? necLat_) - { - SetFieldValue(29, 0, necLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NecLong field - /// Units: semicircles - /// Comment: North east corner longitude - /// Returns nullable int representing the NecLong field - public int? GetNecLong() - { - Object val = GetFieldValue(30, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set NecLong field - /// Units: semicircles - /// Comment: North east corner longitude - /// Nullable field value to be set - public void SetNecLong(int? necLong_) - { - SetFieldValue(30, 0, necLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SwcLat field - /// Units: semicircles - /// Comment: South west corner latitude - /// Returns nullable int representing the SwcLat field - public int? GetSwcLat() - { - Object val = GetFieldValue(31, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set SwcLat field - /// Units: semicircles - /// Comment: South west corner latitude - /// Nullable field value to be set - public void SetSwcLat(int? swcLat_) - { - SetFieldValue(31, 0, swcLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SwcLong field - /// Units: semicircles - /// Comment: South west corner longitude - /// Returns nullable int representing the SwcLong field - public int? GetSwcLong() - { - Object val = GetFieldValue(32, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set SwcLong field - /// Units: semicircles - /// Comment: South west corner longitude - /// Nullable field value to be set - public void SetSwcLong(int? swcLong_) - { - SetFieldValue(32, 0, swcLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NumLengths field - /// Units: lengths - /// Comment: # of lengths of swim pool - /// Returns nullable ushort representing the NumLengths field - public ushort? GetNumLengths() - { - Object val = GetFieldValue(33, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NumLengths field - /// Units: lengths - /// Comment: # of lengths of swim pool - /// Nullable field value to be set - public void SetNumLengths(ushort? numLengths_) - { - SetFieldValue(33, 0, numLengths_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NormalizedPower field - /// Units: watts - /// Returns nullable ushort representing the NormalizedPower field - public ushort? GetNormalizedPower() - { - Object val = GetFieldValue(34, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NormalizedPower field - /// Units: watts - /// Nullable field value to be set - public void SetNormalizedPower(ushort? normalizedPower_) - { - SetFieldValue(34, 0, normalizedPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TrainingStressScore field - /// Units: tss - /// Returns nullable float representing the TrainingStressScore field - public float? GetTrainingStressScore() - { - Object val = GetFieldValue(35, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TrainingStressScore field - /// Units: tss - /// Nullable field value to be set - public void SetTrainingStressScore(float? trainingStressScore_) - { - SetFieldValue(35, 0, trainingStressScore_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the IntensityFactor field - /// Units: if - /// Returns nullable float representing the IntensityFactor field - public float? GetIntensityFactor() - { - Object val = GetFieldValue(36, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set IntensityFactor field - /// Units: if - /// Nullable field value to be set - public void SetIntensityFactor(float? intensityFactor_) - { - SetFieldValue(36, 0, intensityFactor_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeftRightBalance field - /// Returns nullable ushort representing the LeftRightBalance field - public ushort? GetLeftRightBalance() - { - Object val = GetFieldValue(37, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set LeftRightBalance field - /// Nullable field value to be set - public void SetLeftRightBalance(ushort? leftRightBalance_) - { - SetFieldValue(37, 0, leftRightBalance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgStrokeCount field - /// Units: strokes/lap - /// Returns nullable float representing the AvgStrokeCount field - public float? GetAvgStrokeCount() - { - Object val = GetFieldValue(41, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgStrokeCount field - /// Units: strokes/lap - /// Nullable field value to be set - public void SetAvgStrokeCount(float? avgStrokeCount_) - { - SetFieldValue(41, 0, avgStrokeCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgStrokeDistance field - /// Units: m - /// Returns nullable float representing the AvgStrokeDistance field - public float? GetAvgStrokeDistance() - { - Object val = GetFieldValue(42, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgStrokeDistance field - /// Units: m - /// Nullable field value to be set - public void SetAvgStrokeDistance(float? avgStrokeDistance_) - { - SetFieldValue(42, 0, avgStrokeDistance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SwimStroke field - /// Units: swim_stroke - /// Returns nullable SwimStroke enum representing the SwimStroke field - public SwimStroke? GetSwimStroke() - { - object obj = GetFieldValue(43, 0, Fit.SubfieldIndexMainField); - SwimStroke? value = obj == null ? (SwimStroke?)null : (SwimStroke)obj; - return value; - } - - /// - /// Set SwimStroke field - /// Units: swim_stroke - /// Nullable field value to be set - public void SetSwimStroke(SwimStroke? swimStroke_) - { - SetFieldValue(43, 0, swimStroke_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PoolLength field - /// Units: m - /// Returns nullable float representing the PoolLength field - public float? GetPoolLength() - { - Object val = GetFieldValue(44, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set PoolLength field - /// Units: m - /// Nullable field value to be set - public void SetPoolLength(float? poolLength_) - { - SetFieldValue(44, 0, poolLength_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ThresholdPower field - /// Units: watts - /// Returns nullable ushort representing the ThresholdPower field - public ushort? GetThresholdPower() - { - Object val = GetFieldValue(45, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ThresholdPower field - /// Units: watts - /// Nullable field value to be set - public void SetThresholdPower(ushort? thresholdPower_) - { - SetFieldValue(45, 0, thresholdPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PoolLengthUnit field - /// Returns nullable DisplayMeasure enum representing the PoolLengthUnit field - public DisplayMeasure? GetPoolLengthUnit() - { - object obj = GetFieldValue(46, 0, Fit.SubfieldIndexMainField); - DisplayMeasure? value = obj == null ? (DisplayMeasure?)null : (DisplayMeasure)obj; - return value; - } - - /// - /// Set PoolLengthUnit field - /// Nullable field value to be set - public void SetPoolLengthUnit(DisplayMeasure? poolLengthUnit_) - { - SetFieldValue(46, 0, poolLengthUnit_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NumActiveLengths field - /// Units: lengths - /// Comment: # of active lengths of swim pool - /// Returns nullable ushort representing the NumActiveLengths field - public ushort? GetNumActiveLengths() - { - Object val = GetFieldValue(47, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NumActiveLengths field - /// Units: lengths - /// Comment: # of active lengths of swim pool - /// Nullable field value to be set - public void SetNumActiveLengths(ushort? numActiveLengths_) - { - SetFieldValue(47, 0, numActiveLengths_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalWork field - /// Units: J - /// Returns nullable uint representing the TotalWork field - public uint? GetTotalWork() - { - Object val = GetFieldValue(48, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TotalWork field - /// Units: J - /// Nullable field value to be set - public void SetTotalWork(uint? totalWork_) - { - SetFieldValue(48, 0, totalWork_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgAltitude field - /// Units: m - /// Returns nullable float representing the AvgAltitude field - public float? GetAvgAltitude() - { - Object val = GetFieldValue(49, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgAltitude field - /// Units: m - /// Nullable field value to be set - public void SetAvgAltitude(float? avgAltitude_) - { - SetFieldValue(49, 0, avgAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxAltitude field - /// Units: m - /// Returns nullable float representing the MaxAltitude field - public float? GetMaxAltitude() - { - Object val = GetFieldValue(50, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxAltitude field - /// Units: m - /// Nullable field value to be set - public void SetMaxAltitude(float? maxAltitude_) - { - SetFieldValue(50, 0, maxAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GpsAccuracy field - /// Units: m - /// Returns nullable byte representing the GpsAccuracy field - public byte? GetGpsAccuracy() - { - Object val = GetFieldValue(51, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set GpsAccuracy field - /// Units: m - /// Nullable field value to be set - public void SetGpsAccuracy(byte? gpsAccuracy_) - { - SetFieldValue(51, 0, gpsAccuracy_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgGrade field - /// Units: % - /// Returns nullable float representing the AvgGrade field - public float? GetAvgGrade() - { - Object val = GetFieldValue(52, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgGrade field - /// Units: % - /// Nullable field value to be set - public void SetAvgGrade(float? avgGrade_) - { - SetFieldValue(52, 0, avgGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgPosGrade field - /// Units: % - /// Returns nullable float representing the AvgPosGrade field - public float? GetAvgPosGrade() - { - Object val = GetFieldValue(53, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgPosGrade field - /// Units: % - /// Nullable field value to be set - public void SetAvgPosGrade(float? avgPosGrade_) - { - SetFieldValue(53, 0, avgPosGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgNegGrade field - /// Units: % - /// Returns nullable float representing the AvgNegGrade field - public float? GetAvgNegGrade() - { - Object val = GetFieldValue(54, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgNegGrade field - /// Units: % - /// Nullable field value to be set - public void SetAvgNegGrade(float? avgNegGrade_) - { - SetFieldValue(54, 0, avgNegGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPosGrade field - /// Units: % - /// Returns nullable float representing the MaxPosGrade field - public float? GetMaxPosGrade() - { - Object val = GetFieldValue(55, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxPosGrade field - /// Units: % - /// Nullable field value to be set - public void SetMaxPosGrade(float? maxPosGrade_) - { - SetFieldValue(55, 0, maxPosGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxNegGrade field - /// Units: % - /// Returns nullable float representing the MaxNegGrade field - public float? GetMaxNegGrade() - { - Object val = GetFieldValue(56, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxNegGrade field - /// Units: % - /// Nullable field value to be set - public void SetMaxNegGrade(float? maxNegGrade_) - { - SetFieldValue(56, 0, maxNegGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgTemperature field - /// Units: C - /// Returns nullable sbyte representing the AvgTemperature field - public sbyte? GetAvgTemperature() - { - Object val = GetFieldValue(57, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set AvgTemperature field - /// Units: C - /// Nullable field value to be set - public void SetAvgTemperature(sbyte? avgTemperature_) - { - SetFieldValue(57, 0, avgTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxTemperature field - /// Units: C - /// Returns nullable sbyte representing the MaxTemperature field - public sbyte? GetMaxTemperature() - { - Object val = GetFieldValue(58, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set MaxTemperature field - /// Units: C - /// Nullable field value to be set - public void SetMaxTemperature(sbyte? maxTemperature_) - { - SetFieldValue(58, 0, maxTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalMovingTime field - /// Units: s - /// Returns nullable float representing the TotalMovingTime field - public float? GetTotalMovingTime() - { - Object val = GetFieldValue(59, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalMovingTime field - /// Units: s - /// Nullable field value to be set - public void SetTotalMovingTime(float? totalMovingTime_) - { - SetFieldValue(59, 0, totalMovingTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgPosVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the AvgPosVerticalSpeed field - public float? GetAvgPosVerticalSpeed() - { - Object val = GetFieldValue(60, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgPosVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgPosVerticalSpeed(float? avgPosVerticalSpeed_) - { - SetFieldValue(60, 0, avgPosVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgNegVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the AvgNegVerticalSpeed field - public float? GetAvgNegVerticalSpeed() - { - Object val = GetFieldValue(61, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgNegVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgNegVerticalSpeed(float? avgNegVerticalSpeed_) - { - SetFieldValue(61, 0, avgNegVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPosVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the MaxPosVerticalSpeed field - public float? GetMaxPosVerticalSpeed() - { - Object val = GetFieldValue(62, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxPosVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetMaxPosVerticalSpeed(float? maxPosVerticalSpeed_) - { - SetFieldValue(62, 0, maxPosVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxNegVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the MaxNegVerticalSpeed field - public float? GetMaxNegVerticalSpeed() - { - Object val = GetFieldValue(63, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxNegVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetMaxNegVerticalSpeed(float? maxNegVerticalSpeed_) - { - SetFieldValue(63, 0, maxNegVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinHeartRate field - /// Units: bpm - /// Returns nullable byte representing the MinHeartRate field - public byte? GetMinHeartRate() - { - Object val = GetFieldValue(64, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MinHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetMinHeartRate(byte? minHeartRate_) - { - SetFieldValue(64, 0, minHeartRate_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInHrZone - public int GetNumTimeInHrZone() - { - return GetNumFieldValues(65, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInHrZone field - /// Units: s - /// 0 based index of TimeInHrZone element to retrieve - /// Returns nullable float representing the TimeInHrZone field - public float? GetTimeInHrZone(int index) - { - Object val = GetFieldValue(65, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInHrZone field - /// Units: s - /// 0 based index of time_in_hr_zone - /// Nullable field value to be set - public void SetTimeInHrZone(int index, float? timeInHrZone_) - { - SetFieldValue(65, index, timeInHrZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInSpeedZone - public int GetNumTimeInSpeedZone() - { - return GetNumFieldValues(66, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInSpeedZone field - /// Units: s - /// 0 based index of TimeInSpeedZone element to retrieve - /// Returns nullable float representing the TimeInSpeedZone field - public float? GetTimeInSpeedZone(int index) - { - Object val = GetFieldValue(66, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInSpeedZone field - /// Units: s - /// 0 based index of time_in_speed_zone - /// Nullable field value to be set - public void SetTimeInSpeedZone(int index, float? timeInSpeedZone_) - { - SetFieldValue(66, index, timeInSpeedZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInCadenceZone - public int GetNumTimeInCadenceZone() - { - return GetNumFieldValues(67, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInCadenceZone field - /// Units: s - /// 0 based index of TimeInCadenceZone element to retrieve - /// Returns nullable float representing the TimeInCadenceZone field - public float? GetTimeInCadenceZone(int index) - { - Object val = GetFieldValue(67, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInCadenceZone field - /// Units: s - /// 0 based index of time_in_cadence_zone - /// Nullable field value to be set - public void SetTimeInCadenceZone(int index, float? timeInCadenceZone_) - { - SetFieldValue(67, index, timeInCadenceZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInPowerZone - public int GetNumTimeInPowerZone() - { - return GetNumFieldValues(68, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInPowerZone field - /// Units: s - /// 0 based index of TimeInPowerZone element to retrieve - /// Returns nullable float representing the TimeInPowerZone field - public float? GetTimeInPowerZone(int index) - { - Object val = GetFieldValue(68, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInPowerZone field - /// Units: s - /// 0 based index of time_in_power_zone - /// Nullable field value to be set - public void SetTimeInPowerZone(int index, float? timeInPowerZone_) - { - SetFieldValue(68, index, timeInPowerZone_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLapTime field - /// Units: s - /// Returns nullable float representing the AvgLapTime field - public float? GetAvgLapTime() - { - Object val = GetFieldValue(69, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLapTime field - /// Units: s - /// Nullable field value to be set - public void SetAvgLapTime(float? avgLapTime_) - { - SetFieldValue(69, 0, avgLapTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BestLapIndex field - /// Returns nullable ushort representing the BestLapIndex field - public ushort? GetBestLapIndex() - { - Object val = GetFieldValue(70, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set BestLapIndex field - /// Nullable field value to be set - public void SetBestLapIndex(ushort? bestLapIndex_) - { - SetFieldValue(70, 0, bestLapIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinAltitude field - /// Units: m - /// Returns nullable float representing the MinAltitude field - public float? GetMinAltitude() - { - Object val = GetFieldValue(71, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MinAltitude field - /// Units: m - /// Nullable field value to be set - public void SetMinAltitude(float? minAltitude_) - { - SetFieldValue(71, 0, minAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PlayerScore field - /// Returns nullable ushort representing the PlayerScore field - public ushort? GetPlayerScore() - { - Object val = GetFieldValue(82, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set PlayerScore field - /// Nullable field value to be set - public void SetPlayerScore(ushort? playerScore_) - { - SetFieldValue(82, 0, playerScore_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the OpponentScore field - /// Returns nullable ushort representing the OpponentScore field - public ushort? GetOpponentScore() - { - Object val = GetFieldValue(83, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set OpponentScore field - /// Nullable field value to be set - public void SetOpponentScore(ushort? opponentScore_) - { - SetFieldValue(83, 0, opponentScore_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the OpponentName field - /// Returns byte[] representing the OpponentName field - public byte[] GetOpponentName() - { - byte[] data = (byte[])GetFieldValue(84, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the OpponentName field - /// Returns String representing the OpponentName field - public String GetOpponentNameAsString() - { - byte[] data = (byte[])GetFieldValue(84, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set OpponentName field - /// field value to be set - public void SetOpponentName(String opponentName_) - { - byte[] data = Encoding.UTF8.GetBytes(opponentName_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(84, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set OpponentName field - /// field value to be set - public void SetOpponentName(byte[] opponentName_) - { - SetFieldValue(84, 0, opponentName_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field StrokeCount - public int GetNumStrokeCount() - { - return GetNumFieldValues(85, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StrokeCount field - /// Units: counts - /// Comment: stroke_type enum used as the index - /// 0 based index of StrokeCount element to retrieve - /// Returns nullable ushort representing the StrokeCount field - public ushort? GetStrokeCount(int index) - { - Object val = GetFieldValue(85, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set StrokeCount field - /// Units: counts - /// Comment: stroke_type enum used as the index - /// 0 based index of stroke_count - /// Nullable field value to be set - public void SetStrokeCount(int index, ushort? strokeCount_) - { - SetFieldValue(85, index, strokeCount_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field ZoneCount - public int GetNumZoneCount() - { - return GetNumFieldValues(86, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ZoneCount field - /// Units: counts - /// Comment: zone number used as the index - /// 0 based index of ZoneCount element to retrieve - /// Returns nullable ushort representing the ZoneCount field - public ushort? GetZoneCount(int index) - { - Object val = GetFieldValue(86, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ZoneCount field - /// Units: counts - /// Comment: zone number used as the index - /// 0 based index of zone_count - /// Nullable field value to be set - public void SetZoneCount(int index, ushort? zoneCount_) - { - SetFieldValue(86, index, zoneCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxBallSpeed field - /// Units: m/s - /// Returns nullable float representing the MaxBallSpeed field - public float? GetMaxBallSpeed() - { - Object val = GetFieldValue(87, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxBallSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetMaxBallSpeed(float? maxBallSpeed_) - { - SetFieldValue(87, 0, maxBallSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgBallSpeed field - /// Units: m/s - /// Returns nullable float representing the AvgBallSpeed field - public float? GetAvgBallSpeed() - { - Object val = GetFieldValue(88, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgBallSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgBallSpeed(float? avgBallSpeed_) - { - SetFieldValue(88, 0, avgBallSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgVerticalOscillation field - /// Units: mm - /// Returns nullable float representing the AvgVerticalOscillation field - public float? GetAvgVerticalOscillation() - { - Object val = GetFieldValue(89, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgVerticalOscillation field - /// Units: mm - /// Nullable field value to be set - public void SetAvgVerticalOscillation(float? avgVerticalOscillation_) - { - SetFieldValue(89, 0, avgVerticalOscillation_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgStanceTimePercent field - /// Units: percent - /// Returns nullable float representing the AvgStanceTimePercent field - public float? GetAvgStanceTimePercent() - { - Object val = GetFieldValue(90, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgStanceTimePercent field - /// Units: percent - /// Nullable field value to be set - public void SetAvgStanceTimePercent(float? avgStanceTimePercent_) - { - SetFieldValue(90, 0, avgStanceTimePercent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgStanceTime field - /// Units: ms - /// Returns nullable float representing the AvgStanceTime field - public float? GetAvgStanceTime() - { - Object val = GetFieldValue(91, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgStanceTime field - /// Units: ms - /// Nullable field value to be set - public void SetAvgStanceTime(float? avgStanceTime_) - { - SetFieldValue(91, 0, avgStanceTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the avg_cadence - /// Returns nullable float representing the AvgFractionalCadence field - public float? GetAvgFractionalCadence() - { - Object val = GetFieldValue(92, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the avg_cadence - /// Nullable field value to be set - public void SetAvgFractionalCadence(float? avgFractionalCadence_) - { - SetFieldValue(92, 0, avgFractionalCadence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the max_cadence - /// Returns nullable float representing the MaxFractionalCadence field - public float? GetMaxFractionalCadence() - { - Object val = GetFieldValue(93, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the max_cadence - /// Nullable field value to be set - public void SetMaxFractionalCadence(float? maxFractionalCadence_) - { - SetFieldValue(93, 0, maxFractionalCadence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFractionalCycles field - /// Units: cycles - /// Comment: fractional part of the total_cycles - /// Returns nullable float representing the TotalFractionalCycles field - public float? GetTotalFractionalCycles() - { - Object val = GetFieldValue(94, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFractionalCycles field - /// Units: cycles - /// Comment: fractional part of the total_cycles - /// Nullable field value to be set - public void SetTotalFractionalCycles(float? totalFractionalCycles_) - { - SetFieldValue(94, 0, totalFractionalCycles_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgTotalHemoglobinConc - public int GetNumAvgTotalHemoglobinConc() - { - return GetNumFieldValues(95, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Avg saturated and unsaturated hemoglobin - /// 0 based index of AvgTotalHemoglobinConc element to retrieve - /// Returns nullable float representing the AvgTotalHemoglobinConc field - public float? GetAvgTotalHemoglobinConc(int index) - { - Object val = GetFieldValue(95, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Avg saturated and unsaturated hemoglobin - /// 0 based index of avg_total_hemoglobin_conc - /// Nullable field value to be set - public void SetAvgTotalHemoglobinConc(int index, float? avgTotalHemoglobinConc_) - { - SetFieldValue(95, index, avgTotalHemoglobinConc_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MinTotalHemoglobinConc - public int GetNumMinTotalHemoglobinConc() - { - return GetNumFieldValues(96, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Min saturated and unsaturated hemoglobin - /// 0 based index of MinTotalHemoglobinConc element to retrieve - /// Returns nullable float representing the MinTotalHemoglobinConc field - public float? GetMinTotalHemoglobinConc(int index) - { - Object val = GetFieldValue(96, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MinTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Min saturated and unsaturated hemoglobin - /// 0 based index of min_total_hemoglobin_conc - /// Nullable field value to be set - public void SetMinTotalHemoglobinConc(int index, float? minTotalHemoglobinConc_) - { - SetFieldValue(96, index, minTotalHemoglobinConc_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MaxTotalHemoglobinConc - public int GetNumMaxTotalHemoglobinConc() - { - return GetNumFieldValues(97, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Max saturated and unsaturated hemoglobin - /// 0 based index of MaxTotalHemoglobinConc element to retrieve - /// Returns nullable float representing the MaxTotalHemoglobinConc field - public float? GetMaxTotalHemoglobinConc(int index) - { - Object val = GetFieldValue(97, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Max saturated and unsaturated hemoglobin - /// 0 based index of max_total_hemoglobin_conc - /// Nullable field value to be set - public void SetMaxTotalHemoglobinConc(int index, float? maxTotalHemoglobinConc_) - { - SetFieldValue(97, index, maxTotalHemoglobinConc_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgSaturatedHemoglobinPercent - public int GetNumAvgSaturatedHemoglobinPercent() - { - return GetNumFieldValues(98, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Avg percentage of hemoglobin saturated with oxygen - /// 0 based index of AvgSaturatedHemoglobinPercent element to retrieve - /// Returns nullable float representing the AvgSaturatedHemoglobinPercent field - public float? GetAvgSaturatedHemoglobinPercent(int index) - { - Object val = GetFieldValue(98, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Avg percentage of hemoglobin saturated with oxygen - /// 0 based index of avg_saturated_hemoglobin_percent - /// Nullable field value to be set - public void SetAvgSaturatedHemoglobinPercent(int index, float? avgSaturatedHemoglobinPercent_) - { - SetFieldValue(98, index, avgSaturatedHemoglobinPercent_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MinSaturatedHemoglobinPercent - public int GetNumMinSaturatedHemoglobinPercent() - { - return GetNumFieldValues(99, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Min percentage of hemoglobin saturated with oxygen - /// 0 based index of MinSaturatedHemoglobinPercent element to retrieve - /// Returns nullable float representing the MinSaturatedHemoglobinPercent field - public float? GetMinSaturatedHemoglobinPercent(int index) - { - Object val = GetFieldValue(99, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MinSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Min percentage of hemoglobin saturated with oxygen - /// 0 based index of min_saturated_hemoglobin_percent - /// Nullable field value to be set - public void SetMinSaturatedHemoglobinPercent(int index, float? minSaturatedHemoglobinPercent_) - { - SetFieldValue(99, index, minSaturatedHemoglobinPercent_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MaxSaturatedHemoglobinPercent - public int GetNumMaxSaturatedHemoglobinPercent() - { - return GetNumFieldValues(100, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Max percentage of hemoglobin saturated with oxygen - /// 0 based index of MaxSaturatedHemoglobinPercent element to retrieve - /// Returns nullable float representing the MaxSaturatedHemoglobinPercent field - public float? GetMaxSaturatedHemoglobinPercent(int index) - { - Object val = GetFieldValue(100, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Max percentage of hemoglobin saturated with oxygen - /// 0 based index of max_saturated_hemoglobin_percent - /// Nullable field value to be set - public void SetMaxSaturatedHemoglobinPercent(int index, float? maxSaturatedHemoglobinPercent_) - { - SetFieldValue(100, index, maxSaturatedHemoglobinPercent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftTorqueEffectiveness field - /// Units: percent - /// Returns nullable float representing the AvgLeftTorqueEffectiveness field - public float? GetAvgLeftTorqueEffectiveness() - { - Object val = GetFieldValue(101, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftTorqueEffectiveness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgLeftTorqueEffectiveness(float? avgLeftTorqueEffectiveness_) - { - SetFieldValue(101, 0, avgLeftTorqueEffectiveness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightTorqueEffectiveness field - /// Units: percent - /// Returns nullable float representing the AvgRightTorqueEffectiveness field - public float? GetAvgRightTorqueEffectiveness() - { - Object val = GetFieldValue(102, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightTorqueEffectiveness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgRightTorqueEffectiveness(float? avgRightTorqueEffectiveness_) - { - SetFieldValue(102, 0, avgRightTorqueEffectiveness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the AvgLeftPedalSmoothness field - public float? GetAvgLeftPedalSmoothness() - { - Object val = GetFieldValue(103, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgLeftPedalSmoothness(float? avgLeftPedalSmoothness_) - { - SetFieldValue(103, 0, avgLeftPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the AvgRightPedalSmoothness field - public float? GetAvgRightPedalSmoothness() - { - Object val = GetFieldValue(104, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgRightPedalSmoothness(float? avgRightPedalSmoothness_) - { - SetFieldValue(104, 0, avgRightPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgCombinedPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the AvgCombinedPedalSmoothness field - public float? GetAvgCombinedPedalSmoothness() - { - Object val = GetFieldValue(105, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgCombinedPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgCombinedPedalSmoothness(float? avgCombinedPedalSmoothness_) - { - SetFieldValue(105, 0, avgCombinedPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SportIndex field - /// Returns nullable byte representing the SportIndex field - public byte? GetSportIndex() - { - Object val = GetFieldValue(111, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set SportIndex field - /// Nullable field value to be set - public void SetSportIndex(byte? sportIndex_) - { - SetFieldValue(111, 0, sportIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeStanding field - /// Units: s - /// Comment: Total time spend in the standing position - /// Returns nullable float representing the TimeStanding field - public float? GetTimeStanding() - { - Object val = GetFieldValue(112, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeStanding field - /// Units: s - /// Comment: Total time spend in the standing position - /// Nullable field value to be set - public void SetTimeStanding(float? timeStanding_) - { - SetFieldValue(112, 0, timeStanding_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StandCount field - /// Comment: Number of transitions to the standing state - /// Returns nullable ushort representing the StandCount field - public ushort? GetStandCount() - { - Object val = GetFieldValue(113, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set StandCount field - /// Comment: Number of transitions to the standing state - /// Nullable field value to be set - public void SetStandCount(ushort? standCount_) - { - SetFieldValue(113, 0, standCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPco field - /// Units: mm - /// Comment: Average platform center offset Left - /// Returns nullable sbyte representing the AvgLeftPco field - public sbyte? GetAvgLeftPco() - { - Object val = GetFieldValue(114, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set AvgLeftPco field - /// Units: mm - /// Comment: Average platform center offset Left - /// Nullable field value to be set - public void SetAvgLeftPco(sbyte? avgLeftPco_) - { - SetFieldValue(114, 0, avgLeftPco_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPco field - /// Units: mm - /// Comment: Average platform center offset Right - /// Returns nullable sbyte representing the AvgRightPco field - public sbyte? GetAvgRightPco() - { - Object val = GetFieldValue(115, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set AvgRightPco field - /// Units: mm - /// Comment: Average platform center offset Right - /// Nullable field value to be set - public void SetAvgRightPco(sbyte? avgRightPco_) - { - SetFieldValue(115, 0, avgRightPco_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgLeftPowerPhase - public int GetNumAvgLeftPowerPhase() - { - return GetNumFieldValues(116, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPowerPhase field - /// Units: degrees - /// Comment: Average left power phase angles. Indexes defined by power_phase_type. - /// 0 based index of AvgLeftPowerPhase element to retrieve - /// Returns nullable float representing the AvgLeftPowerPhase field - public float? GetAvgLeftPowerPhase(int index) - { - Object val = GetFieldValue(116, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftPowerPhase field - /// Units: degrees - /// Comment: Average left power phase angles. Indexes defined by power_phase_type. - /// 0 based index of avg_left_power_phase - /// Nullable field value to be set - public void SetAvgLeftPowerPhase(int index, float? avgLeftPowerPhase_) - { - SetFieldValue(116, index, avgLeftPowerPhase_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgLeftPowerPhasePeak - public int GetNumAvgLeftPowerPhasePeak() - { - return GetNumFieldValues(117, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPowerPhasePeak field - /// Units: degrees - /// Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of AvgLeftPowerPhasePeak element to retrieve - /// Returns nullable float representing the AvgLeftPowerPhasePeak field - public float? GetAvgLeftPowerPhasePeak(int index) - { - Object val = GetFieldValue(117, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftPowerPhasePeak field - /// Units: degrees - /// Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of avg_left_power_phase_peak - /// Nullable field value to be set - public void SetAvgLeftPowerPhasePeak(int index, float? avgLeftPowerPhasePeak_) - { - SetFieldValue(117, index, avgLeftPowerPhasePeak_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgRightPowerPhase - public int GetNumAvgRightPowerPhase() - { - return GetNumFieldValues(118, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPowerPhase field - /// Units: degrees - /// Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of AvgRightPowerPhase element to retrieve - /// Returns nullable float representing the AvgRightPowerPhase field - public float? GetAvgRightPowerPhase(int index) - { - Object val = GetFieldValue(118, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightPowerPhase field - /// Units: degrees - /// Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of avg_right_power_phase - /// Nullable field value to be set - public void SetAvgRightPowerPhase(int index, float? avgRightPowerPhase_) - { - SetFieldValue(118, index, avgRightPowerPhase_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgRightPowerPhasePeak - public int GetNumAvgRightPowerPhasePeak() - { - return GetNumFieldValues(119, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPowerPhasePeak field - /// Units: degrees - /// Comment: Average right power phase peak angles data value indexes defined by power_phase_type. - /// 0 based index of AvgRightPowerPhasePeak element to retrieve - /// Returns nullable float representing the AvgRightPowerPhasePeak field - public float? GetAvgRightPowerPhasePeak(int index) - { - Object val = GetFieldValue(119, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightPowerPhasePeak field - /// Units: degrees - /// Comment: Average right power phase peak angles data value indexes defined by power_phase_type. - /// 0 based index of avg_right_power_phase_peak - /// Nullable field value to be set - public void SetAvgRightPowerPhasePeak(int index, float? avgRightPowerPhasePeak_) - { - SetFieldValue(119, index, avgRightPowerPhasePeak_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgPowerPosition - public int GetNumAvgPowerPosition() - { - return GetNumFieldValues(120, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgPowerPosition field - /// Units: watts - /// Comment: Average power by position. Data value indexes defined by rider_position_type. - /// 0 based index of AvgPowerPosition element to retrieve - /// Returns nullable ushort representing the AvgPowerPosition field - public ushort? GetAvgPowerPosition(int index) - { - Object val = GetFieldValue(120, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AvgPowerPosition field - /// Units: watts - /// Comment: Average power by position. Data value indexes defined by rider_position_type. - /// 0 based index of avg_power_position - /// Nullable field value to be set - public void SetAvgPowerPosition(int index, ushort? avgPowerPosition_) - { - SetFieldValue(120, index, avgPowerPosition_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MaxPowerPosition - public int GetNumMaxPowerPosition() - { - return GetNumFieldValues(121, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPowerPosition field - /// Units: watts - /// Comment: Maximum power by position. Data value indexes defined by rider_position_type. - /// 0 based index of MaxPowerPosition element to retrieve - /// Returns nullable ushort representing the MaxPowerPosition field - public ushort? GetMaxPowerPosition(int index) - { - Object val = GetFieldValue(121, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MaxPowerPosition field - /// Units: watts - /// Comment: Maximum power by position. Data value indexes defined by rider_position_type. - /// 0 based index of max_power_position - /// Nullable field value to be set - public void SetMaxPowerPosition(int index, ushort? maxPowerPosition_) - { - SetFieldValue(121, index, maxPowerPosition_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgCadencePosition - public int GetNumAvgCadencePosition() - { - return GetNumFieldValues(122, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgCadencePosition field - /// Units: rpm - /// Comment: Average cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of AvgCadencePosition element to retrieve - /// Returns nullable byte representing the AvgCadencePosition field - public byte? GetAvgCadencePosition(int index) - { - Object val = GetFieldValue(122, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgCadencePosition field - /// Units: rpm - /// Comment: Average cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of avg_cadence_position - /// Nullable field value to be set - public void SetAvgCadencePosition(int index, byte? avgCadencePosition_) - { - SetFieldValue(122, index, avgCadencePosition_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MaxCadencePosition - public int GetNumMaxCadencePosition() - { - return GetNumFieldValues(123, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxCadencePosition field - /// Units: rpm - /// Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of MaxCadencePosition element to retrieve - /// Returns nullable byte representing the MaxCadencePosition field - public byte? GetMaxCadencePosition(int index) - { - Object val = GetFieldValue(123, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxCadencePosition field - /// Units: rpm - /// Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of max_cadence_position - /// Nullable field value to be set - public void SetMaxCadencePosition(int index, byte? maxCadencePosition_) - { - SetFieldValue(123, index, maxCadencePosition_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedAvgSpeed field - /// Units: m/s - /// Comment: total_distance / total_timer_time - /// Returns nullable float representing the EnhancedAvgSpeed field - public float? GetEnhancedAvgSpeed() - { - Object val = GetFieldValue(124, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedAvgSpeed field - /// Units: m/s - /// Comment: total_distance / total_timer_time - /// Nullable field value to be set - public void SetEnhancedAvgSpeed(float? enhancedAvgSpeed_) - { - SetFieldValue(124, 0, enhancedAvgSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMaxSpeed field - /// Units: m/s - /// Returns nullable float representing the EnhancedMaxSpeed field - public float? GetEnhancedMaxSpeed() - { - Object val = GetFieldValue(125, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMaxSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetEnhancedMaxSpeed(float? enhancedMaxSpeed_) - { - SetFieldValue(125, 0, enhancedMaxSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedAvgAltitude field - /// Units: m - /// Returns nullable float representing the EnhancedAvgAltitude field - public float? GetEnhancedAvgAltitude() - { - Object val = GetFieldValue(126, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedAvgAltitude field - /// Units: m - /// Nullable field value to be set - public void SetEnhancedAvgAltitude(float? enhancedAvgAltitude_) - { - SetFieldValue(126, 0, enhancedAvgAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMinAltitude field - /// Units: m - /// Returns nullable float representing the EnhancedMinAltitude field - public float? GetEnhancedMinAltitude() - { - Object val = GetFieldValue(127, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMinAltitude field - /// Units: m - /// Nullable field value to be set - public void SetEnhancedMinAltitude(float? enhancedMinAltitude_) - { - SetFieldValue(127, 0, enhancedMinAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMaxAltitude field - /// Units: m - /// Returns nullable float representing the EnhancedMaxAltitude field - public float? GetEnhancedMaxAltitude() - { - Object val = GetFieldValue(128, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMaxAltitude field - /// Units: m - /// Nullable field value to be set - public void SetEnhancedMaxAltitude(float? enhancedMaxAltitude_) - { - SetFieldValue(128, 0, enhancedMaxAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLevMotorPower field - /// Units: watts - /// Comment: lev average motor power during session - /// Returns nullable ushort representing the AvgLevMotorPower field - public ushort? GetAvgLevMotorPower() - { - Object val = GetFieldValue(129, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AvgLevMotorPower field - /// Units: watts - /// Comment: lev average motor power during session - /// Nullable field value to be set - public void SetAvgLevMotorPower(ushort? avgLevMotorPower_) - { - SetFieldValue(129, 0, avgLevMotorPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxLevMotorPower field - /// Units: watts - /// Comment: lev maximum motor power during session - /// Returns nullable ushort representing the MaxLevMotorPower field - public ushort? GetMaxLevMotorPower() - { - Object val = GetFieldValue(130, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MaxLevMotorPower field - /// Units: watts - /// Comment: lev maximum motor power during session - /// Nullable field value to be set - public void SetMaxLevMotorPower(ushort? maxLevMotorPower_) - { - SetFieldValue(130, 0, maxLevMotorPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LevBatteryConsumption field - /// Units: percent - /// Comment: lev battery consumption during session - /// Returns nullable float representing the LevBatteryConsumption field - public float? GetLevBatteryConsumption() - { - Object val = GetFieldValue(131, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set LevBatteryConsumption field - /// Units: percent - /// Comment: lev battery consumption during session - /// Nullable field value to be set - public void SetLevBatteryConsumption(float? levBatteryConsumption_) - { - SetFieldValue(131, 0, levBatteryConsumption_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgVerticalRatio field - /// Units: percent - /// Returns nullable float representing the AvgVerticalRatio field - public float? GetAvgVerticalRatio() - { - Object val = GetFieldValue(132, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgVerticalRatio field - /// Units: percent - /// Nullable field value to be set - public void SetAvgVerticalRatio(float? avgVerticalRatio_) - { - SetFieldValue(132, 0, avgVerticalRatio_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgStanceTimeBalance field - /// Units: percent - /// Returns nullable float representing the AvgStanceTimeBalance field - public float? GetAvgStanceTimeBalance() - { - Object val = GetFieldValue(133, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgStanceTimeBalance field - /// Units: percent - /// Nullable field value to be set - public void SetAvgStanceTimeBalance(float? avgStanceTimeBalance_) - { - SetFieldValue(133, 0, avgStanceTimeBalance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgStepLength field - /// Units: mm - /// Returns nullable float representing the AvgStepLength field - public float? GetAvgStepLength() - { - Object val = GetFieldValue(134, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgStepLength field - /// Units: mm - /// Nullable field value to be set - public void SetAvgStepLength(float? avgStepLength_) - { - SetFieldValue(134, 0, avgStepLength_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalAnaerobicTrainingEffect field - /// Returns nullable float representing the TotalAnaerobicTrainingEffect field - public float? GetTotalAnaerobicTrainingEffect() - { - Object val = GetFieldValue(137, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalAnaerobicTrainingEffect field - /// Nullable field value to be set - public void SetTotalAnaerobicTrainingEffect(float? totalAnaerobicTrainingEffect_) - { - SetFieldValue(137, 0, totalAnaerobicTrainingEffect_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgVam field - /// Units: m/s - /// Returns nullable float representing the AvgVam field - public float? GetAvgVam() - { - Object val = GetFieldValue(139, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgVam field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgVam(float? avgVam_) - { - SetFieldValue(139, 0, avgVam_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgDepth field - /// Units: m - /// Comment: 0 if above water - /// Returns nullable float representing the AvgDepth field - public float? GetAvgDepth() - { - Object val = GetFieldValue(140, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgDepth field - /// Units: m - /// Comment: 0 if above water - /// Nullable field value to be set - public void SetAvgDepth(float? avgDepth_) - { - SetFieldValue(140, 0, avgDepth_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxDepth field - /// Units: m - /// Comment: 0 if above water - /// Returns nullable float representing the MaxDepth field - public float? GetMaxDepth() - { - Object val = GetFieldValue(141, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxDepth field - /// Units: m - /// Comment: 0 if above water - /// Nullable field value to be set - public void SetMaxDepth(float? maxDepth_) - { - SetFieldValue(141, 0, maxDepth_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SurfaceInterval field - /// Units: s - /// Comment: Time since end of last dive - /// Returns nullable uint representing the SurfaceInterval field - public uint? GetSurfaceInterval() - { - Object val = GetFieldValue(142, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set SurfaceInterval field - /// Units: s - /// Comment: Time since end of last dive - /// Nullable field value to be set - public void SetSurfaceInterval(uint? surfaceInterval_) - { - SetFieldValue(142, 0, surfaceInterval_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartCns field - /// Units: percent - /// Returns nullable byte representing the StartCns field - public byte? GetStartCns() - { - Object val = GetFieldValue(143, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set StartCns field - /// Units: percent - /// Nullable field value to be set - public void SetStartCns(byte? startCns_) - { - SetFieldValue(143, 0, startCns_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EndCns field - /// Units: percent - /// Returns nullable byte representing the EndCns field - public byte? GetEndCns() - { - Object val = GetFieldValue(144, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set EndCns field - /// Units: percent - /// Nullable field value to be set - public void SetEndCns(byte? endCns_) - { - SetFieldValue(144, 0, endCns_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartN2 field - /// Units: percent - /// Returns nullable ushort representing the StartN2 field - public ushort? GetStartN2() - { - Object val = GetFieldValue(145, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set StartN2 field - /// Units: percent - /// Nullable field value to be set - public void SetStartN2(ushort? startN2_) - { - SetFieldValue(145, 0, startN2_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EndN2 field - /// Units: percent - /// Returns nullable ushort representing the EndN2 field - public ushort? GetEndN2() - { - Object val = GetFieldValue(146, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set EndN2 field - /// Units: percent - /// Nullable field value to be set - public void SetEndN2(ushort? endN2_) - { - SetFieldValue(146, 0, endN2_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRespirationRate field - /// Returns nullable byte representing the AvgRespirationRate field - public byte? GetAvgRespirationRate() - { - Object val = GetFieldValue(147, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgRespirationRate field - /// Nullable field value to be set - public void SetAvgRespirationRate(byte? avgRespirationRate_) - { - SetFieldValue(147, 0, avgRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxRespirationRate field - /// Returns nullable byte representing the MaxRespirationRate field - public byte? GetMaxRespirationRate() - { - Object val = GetFieldValue(148, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxRespirationRate field - /// Nullable field value to be set - public void SetMaxRespirationRate(byte? maxRespirationRate_) - { - SetFieldValue(148, 0, maxRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinRespirationRate field - /// Returns nullable byte representing the MinRespirationRate field - public byte? GetMinRespirationRate() - { - Object val = GetFieldValue(149, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MinRespirationRate field - /// Nullable field value to be set - public void SetMinRespirationRate(byte? minRespirationRate_) - { - SetFieldValue(149, 0, minRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinTemperature field - /// Units: C - /// Returns nullable sbyte representing the MinTemperature field - public sbyte? GetMinTemperature() - { - Object val = GetFieldValue(150, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set MinTemperature field - /// Units: C - /// Nullable field value to be set - public void SetMinTemperature(sbyte? minTemperature_) - { - SetFieldValue(150, 0, minTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the O2Toxicity field - /// Units: OTUs - /// Returns nullable ushort representing the O2Toxicity field - public ushort? GetO2Toxicity() - { - Object val = GetFieldValue(155, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set O2Toxicity field - /// Units: OTUs - /// Nullable field value to be set - public void SetO2Toxicity(ushort? o2Toxicity_) - { - SetFieldValue(155, 0, o2Toxicity_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DiveNumber field - /// Returns nullable uint representing the DiveNumber field - public uint? GetDiveNumber() - { - Object val = GetFieldValue(156, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set DiveNumber field - /// Nullable field value to be set - public void SetDiveNumber(uint? diveNumber_) - { - SetFieldValue(156, 0, diveNumber_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TrainingLoadPeak field - /// Returns nullable float representing the TrainingLoadPeak field - public float? GetTrainingLoadPeak() - { - Object val = GetFieldValue(168, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TrainingLoadPeak field - /// Nullable field value to be set - public void SetTrainingLoadPeak(float? trainingLoadPeak_) - { - SetFieldValue(168, 0, trainingLoadPeak_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedAvgRespirationRate field - /// Units: Breaths/min - /// Returns nullable float representing the EnhancedAvgRespirationRate field - public float? GetEnhancedAvgRespirationRate() - { - Object val = GetFieldValue(169, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedAvgRespirationRate field - /// Units: Breaths/min - /// Nullable field value to be set - public void SetEnhancedAvgRespirationRate(float? enhancedAvgRespirationRate_) - { - SetFieldValue(169, 0, enhancedAvgRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMaxRespirationRate field - /// Units: Breaths/min - /// Returns nullable float representing the EnhancedMaxRespirationRate field - public float? GetEnhancedMaxRespirationRate() - { - Object val = GetFieldValue(170, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMaxRespirationRate field - /// Units: Breaths/min - /// Nullable field value to be set - public void SetEnhancedMaxRespirationRate(float? enhancedMaxRespirationRate_) - { - SetFieldValue(170, 0, enhancedMaxRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMinRespirationRate field - /// Returns nullable float representing the EnhancedMinRespirationRate field - public float? GetEnhancedMinRespirationRate() - { - Object val = GetFieldValue(180, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMinRespirationRate field - /// Nullable field value to be set - public void SetEnhancedMinRespirationRate(float? enhancedMinRespirationRate_) - { - SetFieldValue(180, 0, enhancedMinRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Returns nullable float representing the TotalGrit field - public float? GetTotalGrit() - { - Object val = GetFieldValue(181, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Nullable field value to be set - public void SetTotalGrit(float? totalGrit_) - { - SetFieldValue(181, 0, totalGrit_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Returns nullable float representing the TotalFlow field - public float? GetTotalFlow() - { - Object val = GetFieldValue(182, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Nullable field value to be set - public void SetTotalFlow(float? totalFlow_) - { - SetFieldValue(182, 0, totalFlow_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the JumpCount field - /// Returns nullable ushort representing the JumpCount field - public ushort? GetJumpCount() - { - Object val = GetFieldValue(183, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set JumpCount field - /// Nullable field value to be set - public void SetJumpCount(ushort? jumpCount_) - { - SetFieldValue(183, 0, jumpCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Returns nullable float representing the AvgGrit field - public float? GetAvgGrit() - { - Object val = GetFieldValue(186, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Nullable field value to be set - public void SetAvgGrit(float? avgGrit_) - { - SetFieldValue(186, 0, avgGrit_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Returns nullable float representing the AvgFlow field - public float? GetAvgFlow() - { - Object val = GetFieldValue(187, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Nullable field value to be set - public void SetAvgFlow(float? avgFlow_) - { - SetFieldValue(187, 0, avgFlow_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFractionalAscent field - /// Units: m - /// Comment: fractional part of total_ascent - /// Returns nullable float representing the TotalFractionalAscent field - public float? GetTotalFractionalAscent() - { - Object val = GetFieldValue(199, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFractionalAscent field - /// Units: m - /// Comment: fractional part of total_ascent - /// Nullable field value to be set - public void SetTotalFractionalAscent(float? totalFractionalAscent_) - { - SetFieldValue(199, 0, totalFractionalAscent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFractionalDescent field - /// Units: m - /// Comment: fractional part of total_descent - /// Returns nullable float representing the TotalFractionalDescent field - public float? GetTotalFractionalDescent() - { - Object val = GetFieldValue(200, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFractionalDescent field - /// Units: m - /// Comment: fractional part of total_descent - /// Nullable field value to be set - public void SetTotalFractionalDescent(float? totalFractionalDescent_) - { - SetFieldValue(200, 0, totalFractionalDescent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgCoreTemperature field - /// Units: C - /// Returns nullable float representing the AvgCoreTemperature field - public float? GetAvgCoreTemperature() - { - Object val = GetFieldValue(208, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgCoreTemperature field - /// Units: C - /// Nullable field value to be set - public void SetAvgCoreTemperature(float? avgCoreTemperature_) - { - SetFieldValue(208, 0, avgCoreTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinCoreTemperature field - /// Units: C - /// Returns nullable float representing the MinCoreTemperature field - public float? GetMinCoreTemperature() - { - Object val = GetFieldValue(209, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MinCoreTemperature field - /// Units: C - /// Nullable field value to be set - public void SetMinCoreTemperature(float? minCoreTemperature_) - { - SetFieldValue(209, 0, minCoreTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxCoreTemperature field - /// Units: C - /// Returns nullable float representing the MaxCoreTemperature field - public float? GetMaxCoreTemperature() - { - Object val = GetFieldValue(210, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxCoreTemperature field - /// Units: C - /// Nullable field value to be set - public void SetMaxCoreTemperature(float? maxCoreTemperature_) - { - SetFieldValue(210, 0, maxCoreTemperature_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SetMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SetMesg.cs deleted file mode 100644 index 9a37437fa..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SetMesg.cs +++ /dev/null @@ -1,355 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Set profile message. - /// - public class SetMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 254; - public const byte Duration = 0; - public const byte Repetitions = 3; - public const byte Weight = 4; - public const byte SetType = 5; - public const byte StartTime = 6; - public const byte Category = 7; - public const byte CategorySubtype = 8; - public const byte WeightDisplayUnit = 9; - public const byte MessageIndex = 10; - public const byte WktStepIndex = 11; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SetMesg() : base(Profile.GetMesg(MesgNum.Set)) - { - } - - public SetMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Comment: Timestamp of the set - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Comment: Timestamp of the set - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(254, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Duration field - /// Units: s - /// Returns nullable float representing the Duration field - public float? GetDuration() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Duration field - /// Units: s - /// Nullable field value to be set - public void SetDuration(float? duration_) - { - SetFieldValue(0, 0, duration_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Repetitions field - /// Comment: # of repitions of the movement - /// Returns nullable ushort representing the Repetitions field - public ushort? GetRepetitions() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Repetitions field - /// Comment: # of repitions of the movement - /// Nullable field value to be set - public void SetRepetitions(ushort? repetitions_) - { - SetFieldValue(3, 0, repetitions_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Weight field - /// Units: kg - /// Comment: Amount of weight applied for the set - /// Returns nullable float representing the Weight field - public float? GetWeight() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Weight field - /// Units: kg - /// Comment: Amount of weight applied for the set - /// Nullable field value to be set - public void SetWeight(float? weight_) - { - SetFieldValue(4, 0, weight_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SetType field - /// Returns nullable byte representing the SetType field - public byte? GetSetType() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set SetType field - /// Nullable field value to be set - public void SetSetType(byte? setType_) - { - SetFieldValue(5, 0, setType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartTime field - /// Comment: Start time of the set - /// Returns DateTime representing the StartTime field - public DateTime GetStartTime() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set StartTime field - /// Comment: Start time of the set - /// Nullable field value to be set - public void SetStartTime(DateTime startTime_) - { - SetFieldValue(6, 0, startTime_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Category - public int GetNumCategory() - { - return GetNumFieldValues(7, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Category field - /// 0 based index of Category element to retrieve - /// Returns nullable ushort representing the Category field - public ushort? GetCategory(int index) - { - Object val = GetFieldValue(7, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Category field - /// 0 based index of category - /// Nullable field value to be set - public void SetCategory(int index, ushort? category_) - { - SetFieldValue(7, index, category_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CategorySubtype - public int GetNumCategorySubtype() - { - return GetNumFieldValues(8, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CategorySubtype field - /// Comment: Based on the associated category, see [category]_exercise_names - /// 0 based index of CategorySubtype element to retrieve - /// Returns nullable ushort representing the CategorySubtype field - public ushort? GetCategorySubtype(int index) - { - Object val = GetFieldValue(8, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set CategorySubtype field - /// Comment: Based on the associated category, see [category]_exercise_names - /// 0 based index of category_subtype - /// Nullable field value to be set - public void SetCategorySubtype(int index, ushort? categorySubtype_) - { - SetFieldValue(8, index, categorySubtype_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WeightDisplayUnit field - /// Returns nullable ushort representing the WeightDisplayUnit field - public ushort? GetWeightDisplayUnit() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set WeightDisplayUnit field - /// Nullable field value to be set - public void SetWeightDisplayUnit(ushort? weightDisplayUnit_) - { - SetFieldValue(9, 0, weightDisplayUnit_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(10, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WktStepIndex field - /// Returns nullable ushort representing the WktStepIndex field - public ushort? GetWktStepIndex() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set WktStepIndex field - /// Nullable field value to be set - public void SetWktStepIndex(ushort? wktStepIndex_) - { - SetFieldValue(11, 0, wktStepIndex_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SlaveDeviceMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SlaveDeviceMesg.cs deleted file mode 100644 index aae120e47..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SlaveDeviceMesg.cs +++ /dev/null @@ -1,157 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the SlaveDevice profile message. - /// - public class SlaveDeviceMesg : Mesg - { - #region Fields - static class ProductSubfield - { - public static ushort FaveroProduct = 0; - public static ushort GarminProduct = 1; - public static ushort Subfields = 2; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Manufacturer = 0; - public const byte Product = 1; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SlaveDeviceMesg() : base(Profile.GetMesg(MesgNum.SlaveDevice)) - { - } - - public SlaveDeviceMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Manufacturer field - /// Returns nullable ushort representing the Manufacturer field - public ushort? GetManufacturer() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Manufacturer field - /// Nullable field value to be set - public void SetManufacturer(ushort? manufacturer_) - { - SetFieldValue(0, 0, manufacturer_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Product field - /// Returns nullable ushort representing the Product field - public ushort? GetProduct() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Product field - /// Nullable field value to be set - public void SetProduct(ushort? product_) - { - SetFieldValue(1, 0, product_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the FaveroProduct subfield - /// Nullable ushort representing the FaveroProduct subfield - public ushort? GetFaveroProduct() - { - Object val = GetFieldValue(1, 0, ProductSubfield.FaveroProduct); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set FaveroProduct subfield - /// Subfield value to be set - public void SetFaveroProduct(ushort? faveroProduct) - { - SetFieldValue(1, 0, faveroProduct, ProductSubfield.FaveroProduct); - } - - /// - /// Retrieves the GarminProduct subfield - /// Nullable ushort representing the GarminProduct subfield - public ushort? GetGarminProduct() - { - Object val = GetFieldValue(1, 0, ProductSubfield.GarminProduct); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set GarminProduct subfield - /// Subfield value to be set - public void SetGarminProduct(ushort? garminProduct) - { - SetFieldValue(1, 0, garminProduct, ProductSubfield.GarminProduct); - } - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SoftwareMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SoftwareMesg.cs deleted file mode 100644 index fb910efd1..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SoftwareMesg.cs +++ /dev/null @@ -1,140 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Software profile message. - /// - public class SoftwareMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Version = 3; - public const byte PartNumber = 5; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SoftwareMesg() : base(Profile.GetMesg(MesgNum.Software)) - { - } - - public SoftwareMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Version field - /// Returns nullable float representing the Version field - public float? GetVersion() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Version field - /// Nullable field value to be set - public void SetVersion(float? version_) - { - SetFieldValue(3, 0, version_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PartNumber field - /// Returns byte[] representing the PartNumber field - public byte[] GetPartNumber() - { - byte[] data = (byte[])GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the PartNumber field - /// Returns String representing the PartNumber field - public String GetPartNumberAsString() - { - byte[] data = (byte[])GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set PartNumber field - /// field value to be set - public void SetPartNumber(String partNumber_) - { - byte[] data = Encoding.UTF8.GetBytes(partNumber_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(5, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set PartNumber field - /// field value to be set - public void SetPartNumber(byte[] partNumber_) - { - SetFieldValue(5, 0, partNumber_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SpeedZoneMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SpeedZoneMesg.cs deleted file mode 100644 index fd6f10ab5..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SpeedZoneMesg.cs +++ /dev/null @@ -1,142 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the SpeedZone profile message. - /// - public class SpeedZoneMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte HighValue = 0; - public const byte Name = 1; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SpeedZoneMesg() : base(Profile.GetMesg(MesgNum.SpeedZone)) - { - } - - public SpeedZoneMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HighValue field - /// Units: m/s - /// Returns nullable float representing the HighValue field - public float? GetHighValue() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set HighValue field - /// Units: m/s - /// Nullable field value to be set - public void SetHighValue(float? highValue_) - { - SetFieldValue(0, 0, highValue_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(1, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(1, 0, name_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SplitMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SplitMesg.cs deleted file mode 100644 index 139e8fbaf..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SplitMesg.cs +++ /dev/null @@ -1,174 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Split profile message. - /// - public class SplitMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte SplitType = 0; - public const byte TotalElapsedTime = 1; - public const byte TotalTimerTime = 2; - public const byte TotalDistance = 3; - public const byte StartTime = 9; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SplitMesg() : base(Profile.GetMesg(MesgNum.Split)) - { - } - - public SplitMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the SplitType field - /// Returns nullable SplitType enum representing the SplitType field - public SplitType? GetSplitType() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - SplitType? value = obj == null ? (SplitType?)null : (SplitType)obj; - return value; - } - - /// - /// Set SplitType field - /// Nullable field value to be set - public void SetSplitType(SplitType? splitType_) - { - SetFieldValue(0, 0, splitType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalElapsedTime field - /// Units: s - /// Returns nullable float representing the TotalElapsedTime field - public float? GetTotalElapsedTime() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalElapsedTime field - /// Units: s - /// Nullable field value to be set - public void SetTotalElapsedTime(float? totalElapsedTime_) - { - SetFieldValue(1, 0, totalElapsedTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalTimerTime field - /// Units: s - /// Returns nullable float representing the TotalTimerTime field - public float? GetTotalTimerTime() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalTimerTime field - /// Units: s - /// Nullable field value to be set - public void SetTotalTimerTime(float? totalTimerTime_) - { - SetFieldValue(2, 0, totalTimerTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalDistance field - /// Units: m - /// Returns nullable float representing the TotalDistance field - public float? GetTotalDistance() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalDistance field - /// Units: m - /// Nullable field value to be set - public void SetTotalDistance(float? totalDistance_) - { - SetFieldValue(3, 0, totalDistance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartTime field - /// Returns DateTime representing the StartTime field - public DateTime GetStartTime() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set StartTime field - /// Nullable field value to be set - public void SetStartTime(DateTime startTime_) - { - SetFieldValue(9, 0, startTime_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SportMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SportMesg.cs deleted file mode 100644 index d4ba18f6c..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/SportMesg.cs +++ /dev/null @@ -1,130 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Sport profile message. - /// - public class SportMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Sport = 0; - public const byte SubSport = 1; - public const byte Name = 3; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SportMesg() : base(Profile.GetMesg(MesgNum.Sport)) - { - } - - public SportMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Sport field - /// Returns nullable Sport enum representing the Sport field - public Sport? GetSport() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Sport? value = obj == null ? (Sport?)null : (Sport)obj; - return value; - } - - /// - /// Set Sport field - /// Nullable field value to be set - public void SetSport(Sport? sport_) - { - SetFieldValue(0, 0, sport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SubSport field - /// Returns nullable SubSport enum representing the SubSport field - public SubSport? GetSubSport() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - SubSport? value = obj == null ? (SubSport?)null : (SubSport)obj; - return value; - } - - /// - /// Set SubSport field - /// Nullable field value to be set - public void SetSubSport(SubSport? subSport_) - { - SetFieldValue(1, 0, subSport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(3, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(3, 0, name_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/StressLevelMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/StressLevelMesg.cs deleted file mode 100644 index 11abccdea..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/StressLevelMesg.cs +++ /dev/null @@ -1,105 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the StressLevel profile message. - /// - public class StressLevelMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte StressLevelValue = 0; - public const byte StressLevelTime = 1; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public StressLevelMesg() : base(Profile.GetMesg(MesgNum.StressLevel)) - { - } - - public StressLevelMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the StressLevelValue field - /// Returns nullable short representing the StressLevelValue field - public short? GetStressLevelValue() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt16(val)); - - } - - /// - /// Set StressLevelValue field - /// Nullable field value to be set - public void SetStressLevelValue(short? stressLevelValue_) - { - SetFieldValue(0, 0, stressLevelValue_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StressLevelTime field - /// Units: s - /// Comment: Time stress score was calculated - /// Returns DateTime representing the StressLevelTime field - public DateTime GetStressLevelTime() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set StressLevelTime field - /// Units: s - /// Comment: Time stress score was calculated - /// Nullable field value to be set - public void SetStressLevelTime(DateTime stressLevelTime_) - { - SetFieldValue(1, 0, stressLevelTime_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/TankSummaryMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/TankSummaryMesg.cs deleted file mode 100644 index 7fd9bdda0..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/TankSummaryMesg.cs +++ /dev/null @@ -1,181 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the TankSummary profile message. - /// - public class TankSummaryMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte Sensor = 0; - public const byte StartPressure = 1; - public const byte EndPressure = 2; - public const byte VolumeUsed = 3; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public TankSummaryMesg() : base(Profile.GetMesg(MesgNum.TankSummary)) - { - } - - public TankSummaryMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sensor field - /// Returns nullable uint representing the Sensor field - public uint? GetSensor() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set Sensor field - /// Nullable field value to be set - public void SetSensor(uint? sensor_) - { - SetFieldValue(0, 0, sensor_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartPressure field - /// Units: bar - /// Returns nullable float representing the StartPressure field - public float? GetStartPressure() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set StartPressure field - /// Units: bar - /// Nullable field value to be set - public void SetStartPressure(float? startPressure_) - { - SetFieldValue(1, 0, startPressure_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EndPressure field - /// Units: bar - /// Returns nullable float representing the EndPressure field - public float? GetEndPressure() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EndPressure field - /// Units: bar - /// Nullable field value to be set - public void SetEndPressure(float? endPressure_) - { - SetFieldValue(2, 0, endPressure_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the VolumeUsed field - /// Units: L - /// Returns nullable float representing the VolumeUsed field - public float? GetVolumeUsed() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set VolumeUsed field - /// Units: L - /// Nullable field value to be set - public void SetVolumeUsed(float? volumeUsed_) - { - SetFieldValue(3, 0, volumeUsed_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/TankUpdateMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/TankUpdateMesg.cs deleted file mode 100644 index 9417edc11..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/TankUpdateMesg.cs +++ /dev/null @@ -1,129 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the TankUpdate profile message. - /// - public class TankUpdateMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte Sensor = 0; - public const byte Pressure = 1; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public TankUpdateMesg() : base(Profile.GetMesg(MesgNum.TankUpdate)) - { - } - - public TankUpdateMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sensor field - /// Returns nullable uint representing the Sensor field - public uint? GetSensor() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set Sensor field - /// Nullable field value to be set - public void SetSensor(uint? sensor_) - { - SetFieldValue(0, 0, sensor_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Pressure field - /// Units: bar - /// Returns nullable float representing the Pressure field - public float? GetPressure() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Pressure field - /// Units: bar - /// Nullable field value to be set - public void SetPressure(float? pressure_) - { - SetFieldValue(1, 0, pressure_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ThreeDSensorCalibrationMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ThreeDSensorCalibrationMesg.cs deleted file mode 100644 index 048a26a83..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ThreeDSensorCalibrationMesg.cs +++ /dev/null @@ -1,322 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the ThreeDSensorCalibration profile message. - /// - public class ThreeDSensorCalibrationMesg : Mesg - { - #region Fields - static class CalibrationFactorSubfield - { - public static ushort AccelCalFactor = 0; - public static ushort GyroCalFactor = 1; - public static ushort Subfields = 2; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte SensorType = 0; - public const byte CalibrationFactor = 1; - public const byte CalibrationDivisor = 2; - public const byte LevelShift = 3; - public const byte OffsetCal = 4; - public const byte OrientationMatrix = 5; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public ThreeDSensorCalibrationMesg() : base(Profile.GetMesg(MesgNum.ThreeDSensorCalibration)) - { - } - - public ThreeDSensorCalibrationMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SensorType field - /// Comment: Indicates which sensor the calibration is for - /// Returns nullable SensorType enum representing the SensorType field - public SensorType? GetSensorType() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - SensorType? value = obj == null ? (SensorType?)null : (SensorType)obj; - return value; - } - - /// - /// Set SensorType field - /// Comment: Indicates which sensor the calibration is for - /// Nullable field value to be set - public void SetSensorType(SensorType? sensorType_) - { - SetFieldValue(0, 0, sensorType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CalibrationFactor field - /// Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - /// Returns nullable uint representing the CalibrationFactor field - public uint? GetCalibrationFactor() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set CalibrationFactor field - /// Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - /// Nullable field value to be set - public void SetCalibrationFactor(uint? calibrationFactor_) - { - SetFieldValue(1, 0, calibrationFactor_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the AccelCalFactor subfield - /// Units: g - /// Comment: Accelerometer calibration factor - /// Nullable uint representing the AccelCalFactor subfield - public uint? GetAccelCalFactor() - { - Object val = GetFieldValue(1, 0, CalibrationFactorSubfield.AccelCalFactor); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set AccelCalFactor subfield - /// Units: g - /// Comment: Accelerometer calibration factor - /// Subfield value to be set - public void SetAccelCalFactor(uint? accelCalFactor) - { - SetFieldValue(1, 0, accelCalFactor, CalibrationFactorSubfield.AccelCalFactor); - } - - /// - /// Retrieves the GyroCalFactor subfield - /// Units: deg/s - /// Comment: Gyro calibration factor - /// Nullable uint representing the GyroCalFactor subfield - public uint? GetGyroCalFactor() - { - Object val = GetFieldValue(1, 0, CalibrationFactorSubfield.GyroCalFactor); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set GyroCalFactor subfield - /// Units: deg/s - /// Comment: Gyro calibration factor - /// Subfield value to be set - public void SetGyroCalFactor(uint? gyroCalFactor) - { - SetFieldValue(1, 0, gyroCalFactor, CalibrationFactorSubfield.GyroCalFactor); - } - /// - /// Retrieves the CalibrationDivisor field - /// Units: counts - /// Comment: Calibration factor divisor - /// Returns nullable uint representing the CalibrationDivisor field - public uint? GetCalibrationDivisor() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set CalibrationDivisor field - /// Units: counts - /// Comment: Calibration factor divisor - /// Nullable field value to be set - public void SetCalibrationDivisor(uint? calibrationDivisor_) - { - SetFieldValue(2, 0, calibrationDivisor_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LevelShift field - /// Comment: Level shift value used to shift the ADC value back into range - /// Returns nullable uint representing the LevelShift field - public uint? GetLevelShift() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set LevelShift field - /// Comment: Level shift value used to shift the ADC value back into range - /// Nullable field value to be set - public void SetLevelShift(uint? levelShift_) - { - SetFieldValue(3, 0, levelShift_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field OffsetCal - public int GetNumOffsetCal() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the OffsetCal field - /// Comment: Internal calibration factors, one for each: xy, yx, zx - /// 0 based index of OffsetCal element to retrieve - /// Returns nullable int representing the OffsetCal field - public int? GetOffsetCal(int index) - { - Object val = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set OffsetCal field - /// Comment: Internal calibration factors, one for each: xy, yx, zx - /// 0 based index of offset_cal - /// Nullable field value to be set - public void SetOffsetCal(int index, int? offsetCal_) - { - SetFieldValue(4, index, offsetCal_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field OrientationMatrix - public int GetNumOrientationMatrix() - { - return GetNumFieldValues(5, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the OrientationMatrix field - /// Comment: 3 x 3 rotation matrix (row major) - /// 0 based index of OrientationMatrix element to retrieve - /// Returns nullable float representing the OrientationMatrix field - public float? GetOrientationMatrix(int index) - { - Object val = GetFieldValue(5, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set OrientationMatrix field - /// Comment: 3 x 3 rotation matrix (row major) - /// 0 based index of orientation_matrix - /// Nullable field value to be set - public void SetOrientationMatrix(int index, float? orientationMatrix_) - { - SetFieldValue(5, index, orientationMatrix_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/TimeInZoneMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/TimeInZoneMesg.cs deleted file mode 100644 index fd5e662ad..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/TimeInZoneMesg.cs +++ /dev/null @@ -1,565 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the TimeInZone profile message. - /// - public class TimeInZoneMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte ReferenceMesg = 0; - public const byte ReferenceIndex = 1; - public const byte TimeInHrZone = 2; - public const byte TimeInSpeedZone = 3; - public const byte TimeInCadenceZone = 4; - public const byte TimeInPowerZone = 5; - public const byte HrZoneHighBoundary = 6; - public const byte SpeedZoneHighBoundary = 7; - public const byte CadenceZoneHighBondary = 8; - public const byte PowerZoneHighBoundary = 9; - public const byte HrCalcType = 10; - public const byte MaxHeartRate = 11; - public const byte RestingHeartRate = 12; - public const byte ThresholdHeartRate = 13; - public const byte PwrCalcType = 14; - public const byte FunctionalThresholdPower = 15; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public TimeInZoneMesg() : base(Profile.GetMesg(MesgNum.TimeInZone)) - { - } - - public TimeInZoneMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ReferenceMesg field - /// Returns nullable ushort representing the ReferenceMesg field - public ushort? GetReferenceMesg() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ReferenceMesg field - /// Nullable field value to be set - public void SetReferenceMesg(ushort? referenceMesg_) - { - SetFieldValue(0, 0, referenceMesg_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ReferenceIndex field - /// Returns nullable ushort representing the ReferenceIndex field - public ushort? GetReferenceIndex() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ReferenceIndex field - /// Nullable field value to be set - public void SetReferenceIndex(ushort? referenceIndex_) - { - SetFieldValue(1, 0, referenceIndex_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInHrZone - public int GetNumTimeInHrZone() - { - return GetNumFieldValues(2, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInHrZone field - /// Units: s - /// 0 based index of TimeInHrZone element to retrieve - /// Returns nullable float representing the TimeInHrZone field - public float? GetTimeInHrZone(int index) - { - Object val = GetFieldValue(2, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInHrZone field - /// Units: s - /// 0 based index of time_in_hr_zone - /// Nullable field value to be set - public void SetTimeInHrZone(int index, float? timeInHrZone_) - { - SetFieldValue(2, index, timeInHrZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInSpeedZone - public int GetNumTimeInSpeedZone() - { - return GetNumFieldValues(3, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInSpeedZone field - /// Units: s - /// 0 based index of TimeInSpeedZone element to retrieve - /// Returns nullable float representing the TimeInSpeedZone field - public float? GetTimeInSpeedZone(int index) - { - Object val = GetFieldValue(3, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInSpeedZone field - /// Units: s - /// 0 based index of time_in_speed_zone - /// Nullable field value to be set - public void SetTimeInSpeedZone(int index, float? timeInSpeedZone_) - { - SetFieldValue(3, index, timeInSpeedZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInCadenceZone - public int GetNumTimeInCadenceZone() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInCadenceZone field - /// Units: s - /// 0 based index of TimeInCadenceZone element to retrieve - /// Returns nullable float representing the TimeInCadenceZone field - public float? GetTimeInCadenceZone(int index) - { - Object val = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInCadenceZone field - /// Units: s - /// 0 based index of time_in_cadence_zone - /// Nullable field value to be set - public void SetTimeInCadenceZone(int index, float? timeInCadenceZone_) - { - SetFieldValue(4, index, timeInCadenceZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInPowerZone - public int GetNumTimeInPowerZone() - { - return GetNumFieldValues(5, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInPowerZone field - /// Units: s - /// 0 based index of TimeInPowerZone element to retrieve - /// Returns nullable float representing the TimeInPowerZone field - public float? GetTimeInPowerZone(int index) - { - Object val = GetFieldValue(5, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInPowerZone field - /// Units: s - /// 0 based index of time_in_power_zone - /// Nullable field value to be set - public void SetTimeInPowerZone(int index, float? timeInPowerZone_) - { - SetFieldValue(5, index, timeInPowerZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field HrZoneHighBoundary - public int GetNumHrZoneHighBoundary() - { - return GetNumFieldValues(6, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HrZoneHighBoundary field - /// Units: bpm - /// 0 based index of HrZoneHighBoundary element to retrieve - /// Returns nullable byte representing the HrZoneHighBoundary field - public byte? GetHrZoneHighBoundary(int index) - { - Object val = GetFieldValue(6, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HrZoneHighBoundary field - /// Units: bpm - /// 0 based index of hr_zone_high_boundary - /// Nullable field value to be set - public void SetHrZoneHighBoundary(int index, byte? hrZoneHighBoundary_) - { - SetFieldValue(6, index, hrZoneHighBoundary_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field SpeedZoneHighBoundary - public int GetNumSpeedZoneHighBoundary() - { - return GetNumFieldValues(7, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SpeedZoneHighBoundary field - /// Units: m/s - /// 0 based index of SpeedZoneHighBoundary element to retrieve - /// Returns nullable float representing the SpeedZoneHighBoundary field - public float? GetSpeedZoneHighBoundary(int index) - { - Object val = GetFieldValue(7, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set SpeedZoneHighBoundary field - /// Units: m/s - /// 0 based index of speed_zone_high_boundary - /// Nullable field value to be set - public void SetSpeedZoneHighBoundary(int index, float? speedZoneHighBoundary_) - { - SetFieldValue(7, index, speedZoneHighBoundary_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CadenceZoneHighBondary - public int GetNumCadenceZoneHighBondary() - { - return GetNumFieldValues(8, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CadenceZoneHighBondary field - /// Units: rpm - /// 0 based index of CadenceZoneHighBondary element to retrieve - /// Returns nullable byte representing the CadenceZoneHighBondary field - public byte? GetCadenceZoneHighBondary(int index) - { - Object val = GetFieldValue(8, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set CadenceZoneHighBondary field - /// Units: rpm - /// 0 based index of cadence_zone_high_bondary - /// Nullable field value to be set - public void SetCadenceZoneHighBondary(int index, byte? cadenceZoneHighBondary_) - { - SetFieldValue(8, index, cadenceZoneHighBondary_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field PowerZoneHighBoundary - public int GetNumPowerZoneHighBoundary() - { - return GetNumFieldValues(9, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PowerZoneHighBoundary field - /// Units: watts - /// 0 based index of PowerZoneHighBoundary element to retrieve - /// Returns nullable ushort representing the PowerZoneHighBoundary field - public ushort? GetPowerZoneHighBoundary(int index) - { - Object val = GetFieldValue(9, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set PowerZoneHighBoundary field - /// Units: watts - /// 0 based index of power_zone_high_boundary - /// Nullable field value to be set - public void SetPowerZoneHighBoundary(int index, ushort? powerZoneHighBoundary_) - { - SetFieldValue(9, index, powerZoneHighBoundary_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HrCalcType field - /// Returns nullable HrZoneCalc enum representing the HrCalcType field - public HrZoneCalc? GetHrCalcType() - { - object obj = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - HrZoneCalc? value = obj == null ? (HrZoneCalc?)null : (HrZoneCalc)obj; - return value; - } - - /// - /// Set HrCalcType field - /// Nullable field value to be set - public void SetHrCalcType(HrZoneCalc? hrCalcType_) - { - SetFieldValue(10, 0, hrCalcType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxHeartRate field - /// Returns nullable byte representing the MaxHeartRate field - public byte? GetMaxHeartRate() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxHeartRate field - /// Nullable field value to be set - public void SetMaxHeartRate(byte? maxHeartRate_) - { - SetFieldValue(11, 0, maxHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RestingHeartRate field - /// Returns nullable byte representing the RestingHeartRate field - public byte? GetRestingHeartRate() - { - Object val = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set RestingHeartRate field - /// Nullable field value to be set - public void SetRestingHeartRate(byte? restingHeartRate_) - { - SetFieldValue(12, 0, restingHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ThresholdHeartRate field - /// Returns nullable byte representing the ThresholdHeartRate field - public byte? GetThresholdHeartRate() - { - Object val = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ThresholdHeartRate field - /// Nullable field value to be set - public void SetThresholdHeartRate(byte? thresholdHeartRate_) - { - SetFieldValue(13, 0, thresholdHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PwrCalcType field - /// Returns nullable PwrZoneCalc enum representing the PwrCalcType field - public PwrZoneCalc? GetPwrCalcType() - { - object obj = GetFieldValue(14, 0, Fit.SubfieldIndexMainField); - PwrZoneCalc? value = obj == null ? (PwrZoneCalc?)null : (PwrZoneCalc)obj; - return value; - } - - /// - /// Set PwrCalcType field - /// Nullable field value to be set - public void SetPwrCalcType(PwrZoneCalc? pwrCalcType_) - { - SetFieldValue(14, 0, pwrCalcType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FunctionalThresholdPower field - /// Returns nullable ushort representing the FunctionalThresholdPower field - public ushort? GetFunctionalThresholdPower() - { - Object val = GetFieldValue(15, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set FunctionalThresholdPower field - /// Nullable field value to be set - public void SetFunctionalThresholdPower(ushort? functionalThresholdPower_) - { - SetFieldValue(15, 0, functionalThresholdPower_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/TimestampCorrelationMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/TimestampCorrelationMesg.cs deleted file mode 100644 index 2c48a985a..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/TimestampCorrelationMesg.cs +++ /dev/null @@ -1,249 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the TimestampCorrelation profile message. - /// - public class TimestampCorrelationMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte FractionalTimestamp = 0; - public const byte SystemTimestamp = 1; - public const byte FractionalSystemTimestamp = 2; - public const byte LocalTimestamp = 3; - public const byte TimestampMs = 4; - public const byte SystemTimestampMs = 5; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public TimestampCorrelationMesg() : base(Profile.GetMesg(MesgNum.TimestampCorrelation)) - { - } - - public TimestampCorrelationMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Whole second part of UTC timestamp at the time the system timestamp was recorded. - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Whole second part of UTC timestamp at the time the system timestamp was recorded. - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FractionalTimestamp field - /// Units: s - /// Comment: Fractional part of the UTC timestamp at the time the system timestamp was recorded. - /// Returns nullable float representing the FractionalTimestamp field - public float? GetFractionalTimestamp() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set FractionalTimestamp field - /// Units: s - /// Comment: Fractional part of the UTC timestamp at the time the system timestamp was recorded. - /// Nullable field value to be set - public void SetFractionalTimestamp(float? fractionalTimestamp_) - { - SetFieldValue(0, 0, fractionalTimestamp_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SystemTimestamp field - /// Units: s - /// Comment: Whole second part of the system timestamp - /// Returns DateTime representing the SystemTimestamp field - public DateTime GetSystemTimestamp() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set SystemTimestamp field - /// Units: s - /// Comment: Whole second part of the system timestamp - /// Nullable field value to be set - public void SetSystemTimestamp(DateTime systemTimestamp_) - { - SetFieldValue(1, 0, systemTimestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FractionalSystemTimestamp field - /// Units: s - /// Comment: Fractional part of the system timestamp - /// Returns nullable float representing the FractionalSystemTimestamp field - public float? GetFractionalSystemTimestamp() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set FractionalSystemTimestamp field - /// Units: s - /// Comment: Fractional part of the system timestamp - /// Nullable field value to be set - public void SetFractionalSystemTimestamp(float? fractionalSystemTimestamp_) - { - SetFieldValue(2, 0, fractionalSystemTimestamp_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LocalTimestamp field - /// Units: s - /// Comment: timestamp epoch expressed in local time used to convert timestamps to local time - /// Returns nullable uint representing the LocalTimestamp field - public uint? GetLocalTimestamp() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set LocalTimestamp field - /// Units: s - /// Comment: timestamp epoch expressed in local time used to convert timestamps to local time - /// Nullable field value to be set - public void SetLocalTimestamp(uint? localTimestamp_) - { - SetFieldValue(3, 0, localTimestamp_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the UTC timestamp at the time the system timestamp was recorded. - /// Returns nullable ushort representing the TimestampMs field - public ushort? GetTimestampMs() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the UTC timestamp at the time the system timestamp was recorded. - /// Nullable field value to be set - public void SetTimestampMs(ushort? timestampMs_) - { - SetFieldValue(4, 0, timestampMs_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SystemTimestampMs field - /// Units: ms - /// Comment: Millisecond part of the system timestamp - /// Returns nullable ushort representing the SystemTimestampMs field - public ushort? GetSystemTimestampMs() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set SystemTimestampMs field - /// Units: ms - /// Comment: Millisecond part of the system timestamp - /// Nullable field value to be set - public void SetSystemTimestampMs(ushort? systemTimestampMs_) - { - SetFieldValue(5, 0, systemTimestampMs_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/TotalsMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/TotalsMesg.cs deleted file mode 100644 index 5d3a2d76e..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/TotalsMesg.cs +++ /dev/null @@ -1,304 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Totals profile message. - /// - public class TotalsMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Timestamp = 253; - public const byte TimerTime = 0; - public const byte Distance = 1; - public const byte Calories = 2; - public const byte Sport = 3; - public const byte ElapsedTime = 4; - public const byte Sessions = 5; - public const byte ActiveTime = 6; - public const byte SportIndex = 9; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public TotalsMesg() : base(Profile.GetMesg(MesgNum.Totals)) - { - } - - public TotalsMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimerTime field - /// Units: s - /// Comment: Excludes pauses - /// Returns nullable uint representing the TimerTime field - public uint? GetTimerTime() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TimerTime field - /// Units: s - /// Comment: Excludes pauses - /// Nullable field value to be set - public void SetTimerTime(uint? timerTime_) - { - SetFieldValue(0, 0, timerTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Distance field - /// Units: m - /// Returns nullable uint representing the Distance field - public uint? GetDistance() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set Distance field - /// Units: m - /// Nullable field value to be set - public void SetDistance(uint? distance_) - { - SetFieldValue(1, 0, distance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Calories field - /// Units: kcal - /// Returns nullable uint representing the Calories field - public uint? GetCalories() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set Calories field - /// Units: kcal - /// Nullable field value to be set - public void SetCalories(uint? calories_) - { - SetFieldValue(2, 0, calories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sport field - /// Returns nullable Sport enum representing the Sport field - public Sport? GetSport() - { - object obj = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - Sport? value = obj == null ? (Sport?)null : (Sport)obj; - return value; - } - - /// - /// Set Sport field - /// Nullable field value to be set - public void SetSport(Sport? sport_) - { - SetFieldValue(3, 0, sport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ElapsedTime field - /// Units: s - /// Comment: Includes pauses - /// Returns nullable uint representing the ElapsedTime field - public uint? GetElapsedTime() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set ElapsedTime field - /// Units: s - /// Comment: Includes pauses - /// Nullable field value to be set - public void SetElapsedTime(uint? elapsedTime_) - { - SetFieldValue(4, 0, elapsedTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sessions field - /// Returns nullable ushort representing the Sessions field - public ushort? GetSessions() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Sessions field - /// Nullable field value to be set - public void SetSessions(ushort? sessions_) - { - SetFieldValue(5, 0, sessions_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActiveTime field - /// Units: s - /// Returns nullable uint representing the ActiveTime field - public uint? GetActiveTime() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set ActiveTime field - /// Units: s - /// Nullable field value to be set - public void SetActiveTime(uint? activeTime_) - { - SetFieldValue(6, 0, activeTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SportIndex field - /// Returns nullable byte representing the SportIndex field - public byte? GetSportIndex() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set SportIndex field - /// Nullable field value to be set - public void SetSportIndex(byte? sportIndex_) - { - SetFieldValue(9, 0, sportIndex_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/TrainingFileMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/TrainingFileMesg.cs deleted file mode 100644 index cee801d3b..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/TrainingFileMesg.cs +++ /dev/null @@ -1,248 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the TrainingFile profile message. - /// - public class TrainingFileMesg : Mesg - { - #region Fields - static class ProductSubfield - { - public static ushort FaveroProduct = 0; - public static ushort GarminProduct = 1; - public static ushort Subfields = 2; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte Type = 0; - public const byte Manufacturer = 1; - public const byte Product = 2; - public const byte SerialNumber = 3; - public const byte TimeCreated = 4; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public TrainingFileMesg() : base(Profile.GetMesg(MesgNum.TrainingFile)) - { - } - - public TrainingFileMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Type field - /// Returns nullable File enum representing the Type field - new public File? GetType() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - File? value = obj == null ? (File?)null : (File)obj; - return value; - } - - /// - /// Set Type field - /// Nullable field value to be set - public void SetType(File? type_) - { - SetFieldValue(0, 0, type_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Manufacturer field - /// Returns nullable ushort representing the Manufacturer field - public ushort? GetManufacturer() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Manufacturer field - /// Nullable field value to be set - public void SetManufacturer(ushort? manufacturer_) - { - SetFieldValue(1, 0, manufacturer_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Product field - /// Returns nullable ushort representing the Product field - public ushort? GetProduct() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Product field - /// Nullable field value to be set - public void SetProduct(ushort? product_) - { - SetFieldValue(2, 0, product_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the FaveroProduct subfield - /// Nullable ushort representing the FaveroProduct subfield - public ushort? GetFaveroProduct() - { - Object val = GetFieldValue(2, 0, ProductSubfield.FaveroProduct); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set FaveroProduct subfield - /// Subfield value to be set - public void SetFaveroProduct(ushort? faveroProduct) - { - SetFieldValue(2, 0, faveroProduct, ProductSubfield.FaveroProduct); - } - - /// - /// Retrieves the GarminProduct subfield - /// Nullable ushort representing the GarminProduct subfield - public ushort? GetGarminProduct() - { - Object val = GetFieldValue(2, 0, ProductSubfield.GarminProduct); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set GarminProduct subfield - /// Subfield value to be set - public void SetGarminProduct(ushort? garminProduct) - { - SetFieldValue(2, 0, garminProduct, ProductSubfield.GarminProduct); - } - /// - /// Retrieves the SerialNumber field - /// Returns nullable uint representing the SerialNumber field - public uint? GetSerialNumber() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set SerialNumber field - /// Nullable field value to be set - public void SetSerialNumber(uint? serialNumber_) - { - SetFieldValue(3, 0, serialNumber_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeCreated field - /// Returns DateTime representing the TimeCreated field - public DateTime GetTimeCreated() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set TimeCreated field - /// Nullable field value to be set - public void SetTimeCreated(DateTime timeCreated_) - { - SetFieldValue(4, 0, timeCreated_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/UserProfileMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/UserProfileMesg.cs deleted file mode 100644 index 192ccf56f..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/UserProfileMesg.cs +++ /dev/null @@ -1,737 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the UserProfile profile message. - /// - public class UserProfileMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte FriendlyName = 0; - public const byte Gender = 1; - public const byte Age = 2; - public const byte Height = 3; - public const byte Weight = 4; - public const byte Language = 5; - public const byte ElevSetting = 6; - public const byte WeightSetting = 7; - public const byte RestingHeartRate = 8; - public const byte DefaultMaxRunningHeartRate = 9; - public const byte DefaultMaxBikingHeartRate = 10; - public const byte DefaultMaxHeartRate = 11; - public const byte HrSetting = 12; - public const byte SpeedSetting = 13; - public const byte DistSetting = 14; - public const byte PowerSetting = 16; - public const byte ActivityClass = 17; - public const byte PositionSetting = 18; - public const byte TemperatureSetting = 21; - public const byte LocalId = 22; - public const byte GlobalId = 23; - public const byte WakeTime = 28; - public const byte SleepTime = 29; - public const byte HeightSetting = 30; - public const byte UserRunningStepLength = 31; - public const byte UserWalkingStepLength = 32; - public const byte DepthSetting = 47; - public const byte DiveCount = 49; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public UserProfileMesg() : base(Profile.GetMesg(MesgNum.UserProfile)) - { - } - - public UserProfileMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FriendlyName field - /// Returns byte[] representing the FriendlyName field - public byte[] GetFriendlyName() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the FriendlyName field - /// Returns String representing the FriendlyName field - public String GetFriendlyNameAsString() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set FriendlyName field - /// field value to be set - public void SetFriendlyName(String friendlyName_) - { - byte[] data = Encoding.UTF8.GetBytes(friendlyName_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(0, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set FriendlyName field - /// field value to be set - public void SetFriendlyName(byte[] friendlyName_) - { - SetFieldValue(0, 0, friendlyName_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Gender field - /// Returns nullable Gender enum representing the Gender field - public Gender? GetGender() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - Gender? value = obj == null ? (Gender?)null : (Gender)obj; - return value; - } - - /// - /// Set Gender field - /// Nullable field value to be set - public void SetGender(Gender? gender_) - { - SetFieldValue(1, 0, gender_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Age field - /// Units: years - /// Returns nullable byte representing the Age field - public byte? GetAge() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Age field - /// Units: years - /// Nullable field value to be set - public void SetAge(byte? age_) - { - SetFieldValue(2, 0, age_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Height field - /// Units: m - /// Returns nullable float representing the Height field - public float? GetHeight() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Height field - /// Units: m - /// Nullable field value to be set - public void SetHeight(float? height_) - { - SetFieldValue(3, 0, height_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Weight field - /// Units: kg - /// Returns nullable float representing the Weight field - public float? GetWeight() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Weight field - /// Units: kg - /// Nullable field value to be set - public void SetWeight(float? weight_) - { - SetFieldValue(4, 0, weight_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Language field - /// Returns nullable Language enum representing the Language field - public Language? GetLanguage() - { - object obj = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - Language? value = obj == null ? (Language?)null : (Language)obj; - return value; - } - - /// - /// Set Language field - /// Nullable field value to be set - public void SetLanguage(Language? language_) - { - SetFieldValue(5, 0, language_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ElevSetting field - /// Returns nullable DisplayMeasure enum representing the ElevSetting field - public DisplayMeasure? GetElevSetting() - { - object obj = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - DisplayMeasure? value = obj == null ? (DisplayMeasure?)null : (DisplayMeasure)obj; - return value; - } - - /// - /// Set ElevSetting field - /// Nullable field value to be set - public void SetElevSetting(DisplayMeasure? elevSetting_) - { - SetFieldValue(6, 0, elevSetting_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WeightSetting field - /// Returns nullable DisplayMeasure enum representing the WeightSetting field - public DisplayMeasure? GetWeightSetting() - { - object obj = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - DisplayMeasure? value = obj == null ? (DisplayMeasure?)null : (DisplayMeasure)obj; - return value; - } - - /// - /// Set WeightSetting field - /// Nullable field value to be set - public void SetWeightSetting(DisplayMeasure? weightSetting_) - { - SetFieldValue(7, 0, weightSetting_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RestingHeartRate field - /// Units: bpm - /// Returns nullable byte representing the RestingHeartRate field - public byte? GetRestingHeartRate() - { - Object val = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set RestingHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetRestingHeartRate(byte? restingHeartRate_) - { - SetFieldValue(8, 0, restingHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DefaultMaxRunningHeartRate field - /// Units: bpm - /// Returns nullable byte representing the DefaultMaxRunningHeartRate field - public byte? GetDefaultMaxRunningHeartRate() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DefaultMaxRunningHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetDefaultMaxRunningHeartRate(byte? defaultMaxRunningHeartRate_) - { - SetFieldValue(9, 0, defaultMaxRunningHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DefaultMaxBikingHeartRate field - /// Units: bpm - /// Returns nullable byte representing the DefaultMaxBikingHeartRate field - public byte? GetDefaultMaxBikingHeartRate() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DefaultMaxBikingHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetDefaultMaxBikingHeartRate(byte? defaultMaxBikingHeartRate_) - { - SetFieldValue(10, 0, defaultMaxBikingHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DefaultMaxHeartRate field - /// Units: bpm - /// Returns nullable byte representing the DefaultMaxHeartRate field - public byte? GetDefaultMaxHeartRate() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DefaultMaxHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetDefaultMaxHeartRate(byte? defaultMaxHeartRate_) - { - SetFieldValue(11, 0, defaultMaxHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HrSetting field - /// Returns nullable DisplayHeart enum representing the HrSetting field - public DisplayHeart? GetHrSetting() - { - object obj = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - DisplayHeart? value = obj == null ? (DisplayHeart?)null : (DisplayHeart)obj; - return value; - } - - /// - /// Set HrSetting field - /// Nullable field value to be set - public void SetHrSetting(DisplayHeart? hrSetting_) - { - SetFieldValue(12, 0, hrSetting_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SpeedSetting field - /// Returns nullable DisplayMeasure enum representing the SpeedSetting field - public DisplayMeasure? GetSpeedSetting() - { - object obj = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - DisplayMeasure? value = obj == null ? (DisplayMeasure?)null : (DisplayMeasure)obj; - return value; - } - - /// - /// Set SpeedSetting field - /// Nullable field value to be set - public void SetSpeedSetting(DisplayMeasure? speedSetting_) - { - SetFieldValue(13, 0, speedSetting_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DistSetting field - /// Returns nullable DisplayMeasure enum representing the DistSetting field - public DisplayMeasure? GetDistSetting() - { - object obj = GetFieldValue(14, 0, Fit.SubfieldIndexMainField); - DisplayMeasure? value = obj == null ? (DisplayMeasure?)null : (DisplayMeasure)obj; - return value; - } - - /// - /// Set DistSetting field - /// Nullable field value to be set - public void SetDistSetting(DisplayMeasure? distSetting_) - { - SetFieldValue(14, 0, distSetting_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PowerSetting field - /// Returns nullable DisplayPower enum representing the PowerSetting field - public DisplayPower? GetPowerSetting() - { - object obj = GetFieldValue(16, 0, Fit.SubfieldIndexMainField); - DisplayPower? value = obj == null ? (DisplayPower?)null : (DisplayPower)obj; - return value; - } - - /// - /// Set PowerSetting field - /// Nullable field value to be set - public void SetPowerSetting(DisplayPower? powerSetting_) - { - SetFieldValue(16, 0, powerSetting_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActivityClass field - /// Returns nullable ActivityClass enum representing the ActivityClass field - public ActivityClass? GetActivityClass() - { - object obj = GetFieldValue(17, 0, Fit.SubfieldIndexMainField); - ActivityClass? value = obj == null ? (ActivityClass?)null : (ActivityClass)obj; - return value; - } - - /// - /// Set ActivityClass field - /// Nullable field value to be set - public void SetActivityClass(ActivityClass? activityClass_) - { - SetFieldValue(17, 0, activityClass_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionSetting field - /// Returns nullable DisplayPosition enum representing the PositionSetting field - public DisplayPosition? GetPositionSetting() - { - object obj = GetFieldValue(18, 0, Fit.SubfieldIndexMainField); - DisplayPosition? value = obj == null ? (DisplayPosition?)null : (DisplayPosition)obj; - return value; - } - - /// - /// Set PositionSetting field - /// Nullable field value to be set - public void SetPositionSetting(DisplayPosition? positionSetting_) - { - SetFieldValue(18, 0, positionSetting_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TemperatureSetting field - /// Returns nullable DisplayMeasure enum representing the TemperatureSetting field - public DisplayMeasure? GetTemperatureSetting() - { - object obj = GetFieldValue(21, 0, Fit.SubfieldIndexMainField); - DisplayMeasure? value = obj == null ? (DisplayMeasure?)null : (DisplayMeasure)obj; - return value; - } - - /// - /// Set TemperatureSetting field - /// Nullable field value to be set - public void SetTemperatureSetting(DisplayMeasure? temperatureSetting_) - { - SetFieldValue(21, 0, temperatureSetting_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LocalId field - /// Returns nullable ushort representing the LocalId field - public ushort? GetLocalId() - { - Object val = GetFieldValue(22, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set LocalId field - /// Nullable field value to be set - public void SetLocalId(ushort? localId_) - { - SetFieldValue(22, 0, localId_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field GlobalId - public int GetNumGlobalId() - { - return GetNumFieldValues(23, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GlobalId field - /// 0 based index of GlobalId element to retrieve - /// Returns nullable byte representing the GlobalId field - public byte? GetGlobalId(int index) - { - Object val = GetFieldValue(23, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set GlobalId field - /// 0 based index of global_id - /// Nullable field value to be set - public void SetGlobalId(int index, byte? globalId_) - { - SetFieldValue(23, index, globalId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WakeTime field - /// Comment: Typical wake time - /// Returns nullable uint representing the WakeTime field - public uint? GetWakeTime() - { - Object val = GetFieldValue(28, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set WakeTime field - /// Comment: Typical wake time - /// Nullable field value to be set - public void SetWakeTime(uint? wakeTime_) - { - SetFieldValue(28, 0, wakeTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SleepTime field - /// Comment: Typical bed time - /// Returns nullable uint representing the SleepTime field - public uint? GetSleepTime() - { - Object val = GetFieldValue(29, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set SleepTime field - /// Comment: Typical bed time - /// Nullable field value to be set - public void SetSleepTime(uint? sleepTime_) - { - SetFieldValue(29, 0, sleepTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HeightSetting field - /// Returns nullable DisplayMeasure enum representing the HeightSetting field - public DisplayMeasure? GetHeightSetting() - { - object obj = GetFieldValue(30, 0, Fit.SubfieldIndexMainField); - DisplayMeasure? value = obj == null ? (DisplayMeasure?)null : (DisplayMeasure)obj; - return value; - } - - /// - /// Set HeightSetting field - /// Nullable field value to be set - public void SetHeightSetting(DisplayMeasure? heightSetting_) - { - SetFieldValue(30, 0, heightSetting_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the UserRunningStepLength field - /// Units: m - /// Comment: User defined running step length set to 0 for auto length - /// Returns nullable float representing the UserRunningStepLength field - public float? GetUserRunningStepLength() - { - Object val = GetFieldValue(31, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set UserRunningStepLength field - /// Units: m - /// Comment: User defined running step length set to 0 for auto length - /// Nullable field value to be set - public void SetUserRunningStepLength(float? userRunningStepLength_) - { - SetFieldValue(31, 0, userRunningStepLength_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the UserWalkingStepLength field - /// Units: m - /// Comment: User defined walking step length set to 0 for auto length - /// Returns nullable float representing the UserWalkingStepLength field - public float? GetUserWalkingStepLength() - { - Object val = GetFieldValue(32, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set UserWalkingStepLength field - /// Units: m - /// Comment: User defined walking step length set to 0 for auto length - /// Nullable field value to be set - public void SetUserWalkingStepLength(float? userWalkingStepLength_) - { - SetFieldValue(32, 0, userWalkingStepLength_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DepthSetting field - /// Returns nullable DisplayMeasure enum representing the DepthSetting field - public DisplayMeasure? GetDepthSetting() - { - object obj = GetFieldValue(47, 0, Fit.SubfieldIndexMainField); - DisplayMeasure? value = obj == null ? (DisplayMeasure?)null : (DisplayMeasure)obj; - return value; - } - - /// - /// Set DepthSetting field - /// Nullable field value to be set - public void SetDepthSetting(DisplayMeasure? depthSetting_) - { - SetFieldValue(47, 0, depthSetting_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DiveCount field - /// Returns nullable uint representing the DiveCount field - public uint? GetDiveCount() - { - Object val = GetFieldValue(49, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set DiveCount field - /// Nullable field value to be set - public void SetDiveCount(uint? diveCount_) - { - SetFieldValue(49, 0, diveCount_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/VideoClipMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/VideoClipMesg.cs deleted file mode 100644 index 728a46b1e..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/VideoClipMesg.cs +++ /dev/null @@ -1,229 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the VideoClip profile message. - /// - public class VideoClipMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte ClipNumber = 0; - public const byte StartTimestamp = 1; - public const byte StartTimestampMs = 2; - public const byte EndTimestamp = 3; - public const byte EndTimestampMs = 4; - public const byte ClipStart = 6; - public const byte ClipEnd = 7; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public VideoClipMesg() : base(Profile.GetMesg(MesgNum.VideoClip)) - { - } - - public VideoClipMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the ClipNumber field - /// Returns nullable ushort representing the ClipNumber field - public ushort? GetClipNumber() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ClipNumber field - /// Nullable field value to be set - public void SetClipNumber(ushort? clipNumber_) - { - SetFieldValue(0, 0, clipNumber_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartTimestamp field - /// Returns DateTime representing the StartTimestamp field - public DateTime GetStartTimestamp() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set StartTimestamp field - /// Nullable field value to be set - public void SetStartTimestamp(DateTime startTimestamp_) - { - SetFieldValue(1, 0, startTimestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartTimestampMs field - /// Returns nullable ushort representing the StartTimestampMs field - public ushort? GetStartTimestampMs() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set StartTimestampMs field - /// Nullable field value to be set - public void SetStartTimestampMs(ushort? startTimestampMs_) - { - SetFieldValue(2, 0, startTimestampMs_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EndTimestamp field - /// Returns DateTime representing the EndTimestamp field - public DateTime GetEndTimestamp() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set EndTimestamp field - /// Nullable field value to be set - public void SetEndTimestamp(DateTime endTimestamp_) - { - SetFieldValue(3, 0, endTimestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EndTimestampMs field - /// Returns nullable ushort representing the EndTimestampMs field - public ushort? GetEndTimestampMs() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set EndTimestampMs field - /// Nullable field value to be set - public void SetEndTimestampMs(ushort? endTimestampMs_) - { - SetFieldValue(4, 0, endTimestampMs_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ClipStart field - /// Units: ms - /// Comment: Start of clip in video time - /// Returns nullable uint representing the ClipStart field - public uint? GetClipStart() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set ClipStart field - /// Units: ms - /// Comment: Start of clip in video time - /// Nullable field value to be set - public void SetClipStart(uint? clipStart_) - { - SetFieldValue(6, 0, clipStart_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ClipEnd field - /// Units: ms - /// Comment: End of clip in video time - /// Returns nullable uint representing the ClipEnd field - public uint? GetClipEnd() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set ClipEnd field - /// Units: ms - /// Comment: End of clip in video time - /// Nullable field value to be set - public void SetClipEnd(uint? clipEnd_) - { - SetFieldValue(7, 0, clipEnd_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/VideoDescriptionMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/VideoDescriptionMesg.cs deleted file mode 100644 index a38664d21..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/VideoDescriptionMesg.cs +++ /dev/null @@ -1,144 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the VideoDescription profile message. - /// - public class VideoDescriptionMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte MessageCount = 0; - public const byte Text = 1; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public VideoDescriptionMesg() : base(Profile.GetMesg(MesgNum.VideoDescription)) - { - } - - public VideoDescriptionMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Comment: Long descriptions will be split into multiple parts - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Comment: Long descriptions will be split into multiple parts - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MessageCount field - /// Comment: Total number of description parts - /// Returns nullable ushort representing the MessageCount field - public ushort? GetMessageCount() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageCount field - /// Comment: Total number of description parts - /// Nullable field value to be set - public void SetMessageCount(ushort? messageCount_) - { - SetFieldValue(0, 0, messageCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Text field - /// Returns byte[] representing the Text field - public byte[] GetText() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Text field - /// Returns String representing the Text field - public String GetTextAsString() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Text field - /// field value to be set - public void SetText(String text_) - { - byte[] data = Encoding.UTF8.GetBytes(text_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(1, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Text field - /// field value to be set - public void SetText(byte[] text_) - { - SetFieldValue(1, 0, text_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/VideoFrameMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/VideoFrameMesg.cs deleted file mode 100644 index 5fa73eba6..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/VideoFrameMesg.cs +++ /dev/null @@ -1,135 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the VideoFrame profile message. - /// - public class VideoFrameMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte TimestampMs = 0; - public const byte FrameNumber = 1; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public VideoFrameMesg() : base(Profile.GetMesg(MesgNum.VideoFrame)) - { - } - - public VideoFrameMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Returns nullable ushort representing the TimestampMs field - public ushort? GetTimestampMs() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Nullable field value to be set - public void SetTimestampMs(ushort? timestampMs_) - { - SetFieldValue(0, 0, timestampMs_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FrameNumber field - /// Comment: Number of the frame that the timestamp and timestamp_ms correlate to - /// Returns nullable uint representing the FrameNumber field - public uint? GetFrameNumber() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set FrameNumber field - /// Comment: Number of the frame that the timestamp and timestamp_ms correlate to - /// Nullable field value to be set - public void SetFrameNumber(uint? frameNumber_) - { - SetFieldValue(1, 0, frameNumber_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/VideoMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/VideoMesg.cs deleted file mode 100644 index d03cdef8b..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/VideoMesg.cs +++ /dev/null @@ -1,159 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Video profile message. - /// - public class VideoMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Url = 0; - public const byte HostingProvider = 1; - public const byte Duration = 2; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public VideoMesg() : base(Profile.GetMesg(MesgNum.Video)) - { - } - - public VideoMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Url field - /// Returns byte[] representing the Url field - public byte[] GetUrl() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Url field - /// Returns String representing the Url field - public String GetUrlAsString() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Url field - /// field value to be set - public void SetUrl(String url_) - { - byte[] data = Encoding.UTF8.GetBytes(url_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(0, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Url field - /// field value to be set - public void SetUrl(byte[] url_) - { - SetFieldValue(0, 0, url_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HostingProvider field - /// Returns byte[] representing the HostingProvider field - public byte[] GetHostingProvider() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the HostingProvider field - /// Returns String representing the HostingProvider field - public String GetHostingProviderAsString() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set HostingProvider field - /// field value to be set - public void SetHostingProvider(String hostingProvider_) - { - byte[] data = Encoding.UTF8.GetBytes(hostingProvider_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(1, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set HostingProvider field - /// field value to be set - public void SetHostingProvider(byte[] hostingProvider_) - { - SetFieldValue(1, 0, hostingProvider_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Duration field - /// Units: ms - /// Comment: Playback time of video - /// Returns nullable uint representing the Duration field - public uint? GetDuration() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set Duration field - /// Units: ms - /// Comment: Playback time of video - /// Nullable field value to be set - public void SetDuration(uint? duration_) - { - SetFieldValue(2, 0, duration_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/VideoTitleMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/VideoTitleMesg.cs deleted file mode 100644 index 8916e564a..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/VideoTitleMesg.cs +++ /dev/null @@ -1,144 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the VideoTitle profile message. - /// - public class VideoTitleMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte MessageCount = 0; - public const byte Text = 1; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public VideoTitleMesg() : base(Profile.GetMesg(MesgNum.VideoTitle)) - { - } - - public VideoTitleMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Comment: Long titles will be split into multiple parts - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Comment: Long titles will be split into multiple parts - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MessageCount field - /// Comment: Total number of title parts - /// Returns nullable ushort representing the MessageCount field - public ushort? GetMessageCount() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageCount field - /// Comment: Total number of title parts - /// Nullable field value to be set - public void SetMessageCount(ushort? messageCount_) - { - SetFieldValue(0, 0, messageCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Text field - /// Returns byte[] representing the Text field - public byte[] GetText() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Text field - /// Returns String representing the Text field - public String GetTextAsString() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Text field - /// field value to be set - public void SetText(String text_) - { - byte[] data = Encoding.UTF8.GetBytes(text_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(1, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Text field - /// field value to be set - public void SetText(byte[] text_) - { - SetFieldValue(1, 0, text_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/WatchfaceSettingsMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/WatchfaceSettingsMesg.cs deleted file mode 100644 index 4c988d0b2..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/WatchfaceSettingsMesg.cs +++ /dev/null @@ -1,162 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the WatchfaceSettings profile message. - /// - public class WatchfaceSettingsMesg : Mesg - { - #region Fields - static class LayoutSubfield - { - public static ushort DigitalLayout = 0; - public static ushort AnalogLayout = 1; - public static ushort Subfields = 2; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Mode = 0; - public const byte Layout = 1; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public WatchfaceSettingsMesg() : base(Profile.GetMesg(MesgNum.WatchfaceSettings)) - { - } - - public WatchfaceSettingsMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Mode field - /// Returns nullable WatchfaceMode enum representing the Mode field - public WatchfaceMode? GetMode() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - WatchfaceMode? value = obj == null ? (WatchfaceMode?)null : (WatchfaceMode)obj; - return value; - } - - /// - /// Set Mode field - /// Nullable field value to be set - public void SetMode(WatchfaceMode? mode_) - { - SetFieldValue(0, 0, mode_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Layout field - /// Returns nullable byte representing the Layout field - public byte? GetLayout() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Layout field - /// Nullable field value to be set - public void SetLayout(byte? layout_) - { - SetFieldValue(1, 0, layout_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the DigitalLayout subfield - /// Nullable DigitalWatchfaceLayout enum representing the DigitalLayout subfield - public DigitalWatchfaceLayout? GetDigitalLayout() - { - return (DigitalWatchfaceLayout?)GetFieldValue(1, 0, LayoutSubfield.DigitalLayout); - } - - /// - /// - /// Set DigitalLayout subfield - /// Subfield value to be set - public void SetDigitalLayout(byte? digitalLayout) - { - SetFieldValue(1, 0, digitalLayout, LayoutSubfield.DigitalLayout); - } - - /// - /// Retrieves the AnalogLayout subfield - /// Nullable AnalogWatchfaceLayout enum representing the AnalogLayout subfield - public AnalogWatchfaceLayout? GetAnalogLayout() - { - return (AnalogWatchfaceLayout?)GetFieldValue(1, 0, LayoutSubfield.AnalogLayout); - } - - /// - /// - /// Set AnalogLayout subfield - /// Subfield value to be set - public void SetAnalogLayout(byte? analogLayout) - { - SetFieldValue(1, 0, analogLayout, LayoutSubfield.AnalogLayout); - } - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/WeatherAlertMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/WeatherAlertMesg.cs deleted file mode 100644 index 5c4d66dfb..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/WeatherAlertMesg.cs +++ /dev/null @@ -1,214 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the WeatherAlert profile message. - /// - public class WeatherAlertMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte ReportId = 0; - public const byte IssueTime = 1; - public const byte ExpireTime = 2; - public const byte Severity = 3; - public const byte Type = 4; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public WeatherAlertMesg() : base(Profile.GetMesg(MesgNum.WeatherAlert)) - { - } - - public WeatherAlertMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ReportId field - /// Comment: Unique identifier from GCS report ID string, length is 12 - /// Returns byte[] representing the ReportId field - public byte[] GetReportId() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the ReportId field - /// Comment: Unique identifier from GCS report ID string, length is 12 - /// Returns String representing the ReportId field - public String GetReportIdAsString() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set ReportId field - /// Comment: Unique identifier from GCS report ID string, length is 12 - /// field value to be set - public void SetReportId(String reportId_) - { - byte[] data = Encoding.UTF8.GetBytes(reportId_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(0, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set ReportId field - /// Comment: Unique identifier from GCS report ID string, length is 12 - /// field value to be set - public void SetReportId(byte[] reportId_) - { - SetFieldValue(0, 0, reportId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the IssueTime field - /// Comment: Time alert was issued - /// Returns DateTime representing the IssueTime field - public DateTime GetIssueTime() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set IssueTime field - /// Comment: Time alert was issued - /// Nullable field value to be set - public void SetIssueTime(DateTime issueTime_) - { - SetFieldValue(1, 0, issueTime_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ExpireTime field - /// Comment: Time alert expires - /// Returns DateTime representing the ExpireTime field - public DateTime GetExpireTime() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set ExpireTime field - /// Comment: Time alert expires - /// Nullable field value to be set - public void SetExpireTime(DateTime expireTime_) - { - SetFieldValue(2, 0, expireTime_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Severity field - /// Comment: Warning, Watch, Advisory, Statement - /// Returns nullable WeatherSeverity enum representing the Severity field - public WeatherSeverity? GetSeverity() - { - object obj = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - WeatherSeverity? value = obj == null ? (WeatherSeverity?)null : (WeatherSeverity)obj; - return value; - } - - /// - /// Set Severity field - /// Comment: Warning, Watch, Advisory, Statement - /// Nullable field value to be set - public void SetSeverity(WeatherSeverity? severity_) - { - SetFieldValue(3, 0, severity_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Type field - /// Comment: Tornado, Severe Thunderstorm, etc. - /// Returns nullable WeatherSevereType enum representing the Type field - new public WeatherSevereType? GetType() - { - object obj = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - WeatherSevereType? value = obj == null ? (WeatherSevereType?)null : (WeatherSevereType)obj; - return value; - } - - /// - /// Set Type field - /// Comment: Tornado, Severe Thunderstorm, etc. - /// Nullable field value to be set - public void SetType(WeatherSevereType? type_) - { - SetFieldValue(4, 0, type_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/WeatherConditionsMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/WeatherConditionsMesg.cs deleted file mode 100644 index e3bfe7a7e..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/WeatherConditionsMesg.cs +++ /dev/null @@ -1,467 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the WeatherConditions profile message. - /// - public class WeatherConditionsMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte WeatherReport = 0; - public const byte Temperature = 1; - public const byte Condition = 2; - public const byte WindDirection = 3; - public const byte WindSpeed = 4; - public const byte PrecipitationProbability = 5; - public const byte TemperatureFeelsLike = 6; - public const byte RelativeHumidity = 7; - public const byte Location = 8; - public const byte ObservedAtTime = 9; - public const byte ObservedLocationLat = 10; - public const byte ObservedLocationLong = 11; - public const byte DayOfWeek = 12; - public const byte HighTemperature = 13; - public const byte LowTemperature = 14; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public WeatherConditionsMesg() : base(Profile.GetMesg(MesgNum.WeatherConditions)) - { - } - - public WeatherConditionsMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Comment: time of update for current conditions, else forecast time - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Comment: time of update for current conditions, else forecast time - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WeatherReport field - /// Comment: Current or forecast - /// Returns nullable WeatherReport enum representing the WeatherReport field - public WeatherReport? GetWeatherReport() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - WeatherReport? value = obj == null ? (WeatherReport?)null : (WeatherReport)obj; - return value; - } - - /// - /// Set WeatherReport field - /// Comment: Current or forecast - /// Nullable field value to be set - public void SetWeatherReport(WeatherReport? weatherReport_) - { - SetFieldValue(0, 0, weatherReport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Temperature field - /// Units: C - /// Returns nullable sbyte representing the Temperature field - public sbyte? GetTemperature() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set Temperature field - /// Units: C - /// Nullable field value to be set - public void SetTemperature(sbyte? temperature_) - { - SetFieldValue(1, 0, temperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Condition field - /// Comment: Corresponds to GSC Response weatherIcon field - /// Returns nullable WeatherStatus enum representing the Condition field - public WeatherStatus? GetCondition() - { - object obj = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - WeatherStatus? value = obj == null ? (WeatherStatus?)null : (WeatherStatus)obj; - return value; - } - - /// - /// Set Condition field - /// Comment: Corresponds to GSC Response weatherIcon field - /// Nullable field value to be set - public void SetCondition(WeatherStatus? condition_) - { - SetFieldValue(2, 0, condition_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WindDirection field - /// Units: degrees - /// Returns nullable ushort representing the WindDirection field - public ushort? GetWindDirection() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set WindDirection field - /// Units: degrees - /// Nullable field value to be set - public void SetWindDirection(ushort? windDirection_) - { - SetFieldValue(3, 0, windDirection_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WindSpeed field - /// Units: m/s - /// Returns nullable float representing the WindSpeed field - public float? GetWindSpeed() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set WindSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetWindSpeed(float? windSpeed_) - { - SetFieldValue(4, 0, windSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PrecipitationProbability field - /// Comment: range 0-100 - /// Returns nullable byte representing the PrecipitationProbability field - public byte? GetPrecipitationProbability() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set PrecipitationProbability field - /// Comment: range 0-100 - /// Nullable field value to be set - public void SetPrecipitationProbability(byte? precipitationProbability_) - { - SetFieldValue(5, 0, precipitationProbability_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TemperatureFeelsLike field - /// Units: C - /// Comment: Heat Index if GCS heatIdx above or equal to 90F or wind chill if GCS windChill below or equal to 32F - /// Returns nullable sbyte representing the TemperatureFeelsLike field - public sbyte? GetTemperatureFeelsLike() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set TemperatureFeelsLike field - /// Units: C - /// Comment: Heat Index if GCS heatIdx above or equal to 90F or wind chill if GCS windChill below or equal to 32F - /// Nullable field value to be set - public void SetTemperatureFeelsLike(sbyte? temperatureFeelsLike_) - { - SetFieldValue(6, 0, temperatureFeelsLike_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RelativeHumidity field - /// Returns nullable byte representing the RelativeHumidity field - public byte? GetRelativeHumidity() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set RelativeHumidity field - /// Nullable field value to be set - public void SetRelativeHumidity(byte? relativeHumidity_) - { - SetFieldValue(7, 0, relativeHumidity_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Location field - /// Comment: string corresponding to GCS response location string - /// Returns byte[] representing the Location field - public byte[] GetLocation() - { - byte[] data = (byte[])GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Location field - /// Comment: string corresponding to GCS response location string - /// Returns String representing the Location field - public String GetLocationAsString() - { - byte[] data = (byte[])GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Location field - /// Comment: string corresponding to GCS response location string - /// field value to be set - public void SetLocation(String location_) - { - byte[] data = Encoding.UTF8.GetBytes(location_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(8, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Location field - /// Comment: string corresponding to GCS response location string - /// field value to be set - public void SetLocation(byte[] location_) - { - SetFieldValue(8, 0, location_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ObservedAtTime field - /// Returns DateTime representing the ObservedAtTime field - public DateTime GetObservedAtTime() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set ObservedAtTime field - /// Nullable field value to be set - public void SetObservedAtTime(DateTime observedAtTime_) - { - SetFieldValue(9, 0, observedAtTime_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ObservedLocationLat field - /// Units: semicircles - /// Returns nullable int representing the ObservedLocationLat field - public int? GetObservedLocationLat() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set ObservedLocationLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetObservedLocationLat(int? observedLocationLat_) - { - SetFieldValue(10, 0, observedLocationLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ObservedLocationLong field - /// Units: semicircles - /// Returns nullable int representing the ObservedLocationLong field - public int? GetObservedLocationLong() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set ObservedLocationLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetObservedLocationLong(int? observedLocationLong_) - { - SetFieldValue(11, 0, observedLocationLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DayOfWeek field - /// Returns nullable DayOfWeek enum representing the DayOfWeek field - public DayOfWeek? GetDayOfWeek() - { - object obj = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - DayOfWeek? value = obj == null ? (DayOfWeek?)null : (DayOfWeek)obj; - return value; - } - - /// - /// Set DayOfWeek field - /// Nullable field value to be set - public void SetDayOfWeek(DayOfWeek? dayOfWeek_) - { - SetFieldValue(12, 0, dayOfWeek_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HighTemperature field - /// Units: C - /// Returns nullable sbyte representing the HighTemperature field - public sbyte? GetHighTemperature() - { - Object val = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set HighTemperature field - /// Units: C - /// Nullable field value to be set - public void SetHighTemperature(sbyte? highTemperature_) - { - SetFieldValue(13, 0, highTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LowTemperature field - /// Units: C - /// Returns nullable sbyte representing the LowTemperature field - public sbyte? GetLowTemperature() - { - Object val = GetFieldValue(14, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set LowTemperature field - /// Units: C - /// Nullable field value to be set - public void SetLowTemperature(sbyte? lowTemperature_) - { - SetFieldValue(14, 0, lowTemperature_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/WeightScaleMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/WeightScaleMesg.cs deleted file mode 100644 index bbce976e4..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/WeightScaleMesg.cs +++ /dev/null @@ -1,389 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the WeightScale profile message. - /// - public class WeightScaleMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte Weight = 0; - public const byte PercentFat = 1; - public const byte PercentHydration = 2; - public const byte VisceralFatMass = 3; - public const byte BoneMass = 4; - public const byte MuscleMass = 5; - public const byte BasalMet = 7; - public const byte PhysiqueRating = 8; - public const byte ActiveMet = 9; - public const byte MetabolicAge = 10; - public const byte VisceralFatRating = 11; - public const byte UserProfileIndex = 12; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public WeightScaleMesg() : base(Profile.GetMesg(MesgNum.WeightScale)) - { - } - - public WeightScaleMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Weight field - /// Units: kg - /// Returns nullable float representing the Weight field - public float? GetWeight() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Weight field - /// Units: kg - /// Nullable field value to be set - public void SetWeight(float? weight_) - { - SetFieldValue(0, 0, weight_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PercentFat field - /// Units: % - /// Returns nullable float representing the PercentFat field - public float? GetPercentFat() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set PercentFat field - /// Units: % - /// Nullable field value to be set - public void SetPercentFat(float? percentFat_) - { - SetFieldValue(1, 0, percentFat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PercentHydration field - /// Units: % - /// Returns nullable float representing the PercentHydration field - public float? GetPercentHydration() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set PercentHydration field - /// Units: % - /// Nullable field value to be set - public void SetPercentHydration(float? percentHydration_) - { - SetFieldValue(2, 0, percentHydration_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the VisceralFatMass field - /// Units: kg - /// Returns nullable float representing the VisceralFatMass field - public float? GetVisceralFatMass() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set VisceralFatMass field - /// Units: kg - /// Nullable field value to be set - public void SetVisceralFatMass(float? visceralFatMass_) - { - SetFieldValue(3, 0, visceralFatMass_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BoneMass field - /// Units: kg - /// Returns nullable float representing the BoneMass field - public float? GetBoneMass() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set BoneMass field - /// Units: kg - /// Nullable field value to be set - public void SetBoneMass(float? boneMass_) - { - SetFieldValue(4, 0, boneMass_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MuscleMass field - /// Units: kg - /// Returns nullable float representing the MuscleMass field - public float? GetMuscleMass() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MuscleMass field - /// Units: kg - /// Nullable field value to be set - public void SetMuscleMass(float? muscleMass_) - { - SetFieldValue(5, 0, muscleMass_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BasalMet field - /// Units: kcal/day - /// Returns nullable float representing the BasalMet field - public float? GetBasalMet() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set BasalMet field - /// Units: kcal/day - /// Nullable field value to be set - public void SetBasalMet(float? basalMet_) - { - SetFieldValue(7, 0, basalMet_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PhysiqueRating field - /// Returns nullable byte representing the PhysiqueRating field - public byte? GetPhysiqueRating() - { - Object val = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set PhysiqueRating field - /// Nullable field value to be set - public void SetPhysiqueRating(byte? physiqueRating_) - { - SetFieldValue(8, 0, physiqueRating_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActiveMet field - /// Units: kcal/day - /// Comment: ~4kJ per kcal, 0.25 allows max 16384 kcal - /// Returns nullable float representing the ActiveMet field - public float? GetActiveMet() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set ActiveMet field - /// Units: kcal/day - /// Comment: ~4kJ per kcal, 0.25 allows max 16384 kcal - /// Nullable field value to be set - public void SetActiveMet(float? activeMet_) - { - SetFieldValue(9, 0, activeMet_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MetabolicAge field - /// Units: years - /// Returns nullable byte representing the MetabolicAge field - public byte? GetMetabolicAge() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MetabolicAge field - /// Units: years - /// Nullable field value to be set - public void SetMetabolicAge(byte? metabolicAge_) - { - SetFieldValue(10, 0, metabolicAge_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the VisceralFatRating field - /// Returns nullable byte representing the VisceralFatRating field - public byte? GetVisceralFatRating() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set VisceralFatRating field - /// Nullable field value to be set - public void SetVisceralFatRating(byte? visceralFatRating_) - { - SetFieldValue(11, 0, visceralFatRating_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the UserProfileIndex field - /// Comment: Associates this weight scale message to a user. This corresponds to the index of the user profile message in the weight scale file. - /// Returns nullable ushort representing the UserProfileIndex field - public ushort? GetUserProfileIndex() - { - Object val = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set UserProfileIndex field - /// Comment: Associates this weight scale message to a user. This corresponds to the index of the user profile message in the weight scale file. - /// Nullable field value to be set - public void SetUserProfileIndex(ushort? userProfileIndex_) - { - SetFieldValue(12, 0, userProfileIndex_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/WorkoutMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/WorkoutMesg.cs deleted file mode 100644 index 9363920da..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/WorkoutMesg.cs +++ /dev/null @@ -1,225 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Workout profile message. - /// - public class WorkoutMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Sport = 4; - public const byte Capabilities = 5; - public const byte NumValidSteps = 6; - public const byte WktName = 8; - public const byte SubSport = 11; - public const byte PoolLength = 14; - public const byte PoolLengthUnit = 15; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public WorkoutMesg() : base(Profile.GetMesg(MesgNum.Workout)) - { - } - - public WorkoutMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Sport field - /// Returns nullable Sport enum representing the Sport field - public Sport? GetSport() - { - object obj = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - Sport? value = obj == null ? (Sport?)null : (Sport)obj; - return value; - } - - /// - /// Set Sport field - /// Nullable field value to be set - public void SetSport(Sport? sport_) - { - SetFieldValue(4, 0, sport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Capabilities field - /// Returns nullable uint representing the Capabilities field - public uint? GetCapabilities() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set Capabilities field - /// Nullable field value to be set - public void SetCapabilities(uint? capabilities_) - { - SetFieldValue(5, 0, capabilities_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NumValidSteps field - /// Comment: number of valid steps - /// Returns nullable ushort representing the NumValidSteps field - public ushort? GetNumValidSteps() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NumValidSteps field - /// Comment: number of valid steps - /// Nullable field value to be set - public void SetNumValidSteps(ushort? numValidSteps_) - { - SetFieldValue(6, 0, numValidSteps_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WktName field - /// Returns byte[] representing the WktName field - public byte[] GetWktName() - { - byte[] data = (byte[])GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the WktName field - /// Returns String representing the WktName field - public String GetWktNameAsString() - { - byte[] data = (byte[])GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set WktName field - /// field value to be set - public void SetWktName(String wktName_) - { - byte[] data = Encoding.UTF8.GetBytes(wktName_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(8, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set WktName field - /// field value to be set - public void SetWktName(byte[] wktName_) - { - SetFieldValue(8, 0, wktName_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SubSport field - /// Returns nullable SubSport enum representing the SubSport field - public SubSport? GetSubSport() - { - object obj = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - SubSport? value = obj == null ? (SubSport?)null : (SubSport)obj; - return value; - } - - /// - /// Set SubSport field - /// Nullable field value to be set - public void SetSubSport(SubSport? subSport_) - { - SetFieldValue(11, 0, subSport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PoolLength field - /// Units: m - /// Returns nullable float representing the PoolLength field - public float? GetPoolLength() - { - Object val = GetFieldValue(14, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set PoolLength field - /// Units: m - /// Nullable field value to be set - public void SetPoolLength(float? poolLength_) - { - SetFieldValue(14, 0, poolLength_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PoolLengthUnit field - /// Returns nullable DisplayMeasure enum representing the PoolLengthUnit field - public DisplayMeasure? GetPoolLengthUnit() - { - object obj = GetFieldValue(15, 0, Fit.SubfieldIndexMainField); - DisplayMeasure? value = obj == null ? (DisplayMeasure?)null : (DisplayMeasure)obj; - return value; - } - - /// - /// Set PoolLengthUnit field - /// Nullable field value to be set - public void SetPoolLengthUnit(DisplayMeasure? poolLengthUnit_) - { - SetFieldValue(15, 0, poolLengthUnit_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/WorkoutSessionMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/WorkoutSessionMesg.cs deleted file mode 100644 index 90a4f0022..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/WorkoutSessionMesg.cs +++ /dev/null @@ -1,208 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the WorkoutSession profile message. - /// - public class WorkoutSessionMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Sport = 0; - public const byte SubSport = 1; - public const byte NumValidSteps = 2; - public const byte FirstStepIndex = 3; - public const byte PoolLength = 4; - public const byte PoolLengthUnit = 5; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public WorkoutSessionMesg() : base(Profile.GetMesg(MesgNum.WorkoutSession)) - { - } - - public WorkoutSessionMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sport field - /// Returns nullable Sport enum representing the Sport field - public Sport? GetSport() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Sport? value = obj == null ? (Sport?)null : (Sport)obj; - return value; - } - - /// - /// Set Sport field - /// Nullable field value to be set - public void SetSport(Sport? sport_) - { - SetFieldValue(0, 0, sport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SubSport field - /// Returns nullable SubSport enum representing the SubSport field - public SubSport? GetSubSport() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - SubSport? value = obj == null ? (SubSport?)null : (SubSport)obj; - return value; - } - - /// - /// Set SubSport field - /// Nullable field value to be set - public void SetSubSport(SubSport? subSport_) - { - SetFieldValue(1, 0, subSport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NumValidSteps field - /// Returns nullable ushort representing the NumValidSteps field - public ushort? GetNumValidSteps() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NumValidSteps field - /// Nullable field value to be set - public void SetNumValidSteps(ushort? numValidSteps_) - { - SetFieldValue(2, 0, numValidSteps_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FirstStepIndex field - /// Returns nullable ushort representing the FirstStepIndex field - public ushort? GetFirstStepIndex() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set FirstStepIndex field - /// Nullable field value to be set - public void SetFirstStepIndex(ushort? firstStepIndex_) - { - SetFieldValue(3, 0, firstStepIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PoolLength field - /// Units: m - /// Returns nullable float representing the PoolLength field - public float? GetPoolLength() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set PoolLength field - /// Units: m - /// Nullable field value to be set - public void SetPoolLength(float? poolLength_) - { - SetFieldValue(4, 0, poolLength_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PoolLengthUnit field - /// Returns nullable DisplayMeasure enum representing the PoolLengthUnit field - public DisplayMeasure? GetPoolLengthUnit() - { - object obj = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - DisplayMeasure? value = obj == null ? (DisplayMeasure?)null : (DisplayMeasure)obj; - return value; - } - - /// - /// Set PoolLengthUnit field - /// Nullable field value to be set - public void SetPoolLengthUnit(DisplayMeasure? poolLengthUnit_) - { - SetFieldValue(5, 0, poolLengthUnit_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/WorkoutStepMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/WorkoutStepMesg.cs deleted file mode 100644 index cc31de472..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/WorkoutStepMesg.cs +++ /dev/null @@ -1,1591 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the WorkoutStep profile message. - /// - public class WorkoutStepMesg : Mesg - { - #region Fields - static class DurationValueSubfield - { - public static ushort DurationTime = 0; - public static ushort DurationDistance = 1; - public static ushort DurationHr = 2; - public static ushort DurationCalories = 3; - public static ushort DurationStep = 4; - public static ushort DurationPower = 5; - public static ushort DurationReps = 6; - public static ushort Subfields = 7; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - static class TargetValueSubfield - { - public static ushort TargetSpeedZone = 0; - public static ushort TargetHrZone = 1; - public static ushort TargetCadenceZone = 2; - public static ushort TargetPowerZone = 3; - public static ushort RepeatSteps = 4; - public static ushort RepeatTime = 5; - public static ushort RepeatDistance = 6; - public static ushort RepeatCalories = 7; - public static ushort RepeatHr = 8; - public static ushort RepeatPower = 9; - public static ushort TargetStrokeType = 10; - public static ushort Subfields = 11; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - static class CustomTargetValueLowSubfield - { - public static ushort CustomTargetSpeedLow = 0; - public static ushort CustomTargetHeartRateLow = 1; - public static ushort CustomTargetCadenceLow = 2; - public static ushort CustomTargetPowerLow = 3; - public static ushort Subfields = 4; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - static class CustomTargetValueHighSubfield - { - public static ushort CustomTargetSpeedHigh = 0; - public static ushort CustomTargetHeartRateHigh = 1; - public static ushort CustomTargetCadenceHigh = 2; - public static ushort CustomTargetPowerHigh = 3; - public static ushort Subfields = 4; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - static class SecondaryTargetValueSubfield - { - public static ushort SecondaryTargetSpeedZone = 0; - public static ushort SecondaryTargetHrZone = 1; - public static ushort SecondaryTargetCadenceZone = 2; - public static ushort SecondaryTargetPowerZone = 3; - public static ushort SecondaryTargetStrokeType = 4; - public static ushort Subfields = 5; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - static class SecondaryCustomTargetValueLowSubfield - { - public static ushort SecondaryCustomTargetSpeedLow = 0; - public static ushort SecondaryCustomTargetHeartRateLow = 1; - public static ushort SecondaryCustomTargetCadenceLow = 2; - public static ushort SecondaryCustomTargetPowerLow = 3; - public static ushort Subfields = 4; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - static class SecondaryCustomTargetValueHighSubfield - { - public static ushort SecondaryCustomTargetSpeedHigh = 0; - public static ushort SecondaryCustomTargetHeartRateHigh = 1; - public static ushort SecondaryCustomTargetCadenceHigh = 2; - public static ushort SecondaryCustomTargetPowerHigh = 3; - public static ushort Subfields = 4; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte WktStepName = 0; - public const byte DurationType = 1; - public const byte DurationValue = 2; - public const byte TargetType = 3; - public const byte TargetValue = 4; - public const byte CustomTargetValueLow = 5; - public const byte CustomTargetValueHigh = 6; - public const byte Intensity = 7; - public const byte Notes = 8; - public const byte Equipment = 9; - public const byte ExerciseCategory = 10; - public const byte ExerciseName = 11; - public const byte ExerciseWeight = 12; - public const byte WeightDisplayUnit = 13; - public const byte SecondaryTargetType = 19; - public const byte SecondaryTargetValue = 20; - public const byte SecondaryCustomTargetValueLow = 21; - public const byte SecondaryCustomTargetValueHigh = 22; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public WorkoutStepMesg() : base(Profile.GetMesg(MesgNum.WorkoutStep)) - { - } - - public WorkoutStepMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WktStepName field - /// Returns byte[] representing the WktStepName field - public byte[] GetWktStepName() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the WktStepName field - /// Returns String representing the WktStepName field - public String GetWktStepNameAsString() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set WktStepName field - /// field value to be set - public void SetWktStepName(String wktStepName_) - { - byte[] data = Encoding.UTF8.GetBytes(wktStepName_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(0, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set WktStepName field - /// field value to be set - public void SetWktStepName(byte[] wktStepName_) - { - SetFieldValue(0, 0, wktStepName_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DurationType field - /// Returns nullable WktStepDuration enum representing the DurationType field - public WktStepDuration? GetDurationType() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - WktStepDuration? value = obj == null ? (WktStepDuration?)null : (WktStepDuration)obj; - return value; - } - - /// - /// Set DurationType field - /// Nullable field value to be set - public void SetDurationType(WktStepDuration? durationType_) - { - SetFieldValue(1, 0, durationType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DurationValue field - /// Returns nullable uint representing the DurationValue field - public uint? GetDurationValue() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set DurationValue field - /// Nullable field value to be set - public void SetDurationValue(uint? durationValue_) - { - SetFieldValue(2, 0, durationValue_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the DurationTime subfield - /// Units: s - /// Nullable float representing the DurationTime subfield - public float? GetDurationTime() - { - Object val = GetFieldValue(2, 0, DurationValueSubfield.DurationTime); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set DurationTime subfield - /// Units: s - /// Subfield value to be set - public void SetDurationTime(float? durationTime) - { - SetFieldValue(2, 0, durationTime, DurationValueSubfield.DurationTime); - } - - /// - /// Retrieves the DurationDistance subfield - /// Units: m - /// Nullable float representing the DurationDistance subfield - public float? GetDurationDistance() - { - Object val = GetFieldValue(2, 0, DurationValueSubfield.DurationDistance); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set DurationDistance subfield - /// Units: m - /// Subfield value to be set - public void SetDurationDistance(float? durationDistance) - { - SetFieldValue(2, 0, durationDistance, DurationValueSubfield.DurationDistance); - } - - /// - /// Retrieves the DurationHr subfield - /// Units: % or bpm - /// Nullable uint representing the DurationHr subfield - public uint? GetDurationHr() - { - Object val = GetFieldValue(2, 0, DurationValueSubfield.DurationHr); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set DurationHr subfield - /// Units: % or bpm - /// Subfield value to be set - public void SetDurationHr(uint? durationHr) - { - SetFieldValue(2, 0, durationHr, DurationValueSubfield.DurationHr); - } - - /// - /// Retrieves the DurationCalories subfield - /// Units: calories - /// Nullable uint representing the DurationCalories subfield - public uint? GetDurationCalories() - { - Object val = GetFieldValue(2, 0, DurationValueSubfield.DurationCalories); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set DurationCalories subfield - /// Units: calories - /// Subfield value to be set - public void SetDurationCalories(uint? durationCalories) - { - SetFieldValue(2, 0, durationCalories, DurationValueSubfield.DurationCalories); - } - - /// - /// Retrieves the DurationStep subfield - /// Comment: message_index of step to loop back to. Steps are assumed to be in the order by message_index. custom_name and intensity members are undefined for this duration type. - /// Nullable uint representing the DurationStep subfield - public uint? GetDurationStep() - { - Object val = GetFieldValue(2, 0, DurationValueSubfield.DurationStep); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set DurationStep subfield - /// Comment: message_index of step to loop back to. Steps are assumed to be in the order by message_index. custom_name and intensity members are undefined for this duration type. - /// Subfield value to be set - public void SetDurationStep(uint? durationStep) - { - SetFieldValue(2, 0, durationStep, DurationValueSubfield.DurationStep); - } - - /// - /// Retrieves the DurationPower subfield - /// Units: % or watts - /// Nullable uint representing the DurationPower subfield - public uint? GetDurationPower() - { - Object val = GetFieldValue(2, 0, DurationValueSubfield.DurationPower); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set DurationPower subfield - /// Units: % or watts - /// Subfield value to be set - public void SetDurationPower(uint? durationPower) - { - SetFieldValue(2, 0, durationPower, DurationValueSubfield.DurationPower); - } - - /// - /// Retrieves the DurationReps subfield - /// Nullable uint representing the DurationReps subfield - public uint? GetDurationReps() - { - Object val = GetFieldValue(2, 0, DurationValueSubfield.DurationReps); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set DurationReps subfield - /// Subfield value to be set - public void SetDurationReps(uint? durationReps) - { - SetFieldValue(2, 0, durationReps, DurationValueSubfield.DurationReps); - } - /// - /// Retrieves the TargetType field - /// Returns nullable WktStepTarget enum representing the TargetType field - public WktStepTarget? GetTargetType() - { - object obj = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - WktStepTarget? value = obj == null ? (WktStepTarget?)null : (WktStepTarget)obj; - return value; - } - - /// - /// Set TargetType field - /// Nullable field value to be set - public void SetTargetType(WktStepTarget? targetType_) - { - SetFieldValue(3, 0, targetType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TargetValue field - /// Returns nullable uint representing the TargetValue field - public uint? GetTargetValue() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TargetValue field - /// Nullable field value to be set - public void SetTargetValue(uint? targetValue_) - { - SetFieldValue(4, 0, targetValue_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the TargetSpeedZone subfield - /// Comment: speed zone (1-10);Custom =0; - /// Nullable uint representing the TargetSpeedZone subfield - public uint? GetTargetSpeedZone() - { - Object val = GetFieldValue(4, 0, TargetValueSubfield.TargetSpeedZone); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set TargetSpeedZone subfield - /// Comment: speed zone (1-10);Custom =0; - /// Subfield value to be set - public void SetTargetSpeedZone(uint? targetSpeedZone) - { - SetFieldValue(4, 0, targetSpeedZone, TargetValueSubfield.TargetSpeedZone); - } - - /// - /// Retrieves the TargetHrZone subfield - /// Comment: hr zone (1-5);Custom =0; - /// Nullable uint representing the TargetHrZone subfield - public uint? GetTargetHrZone() - { - Object val = GetFieldValue(4, 0, TargetValueSubfield.TargetHrZone); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set TargetHrZone subfield - /// Comment: hr zone (1-5);Custom =0; - /// Subfield value to be set - public void SetTargetHrZone(uint? targetHrZone) - { - SetFieldValue(4, 0, targetHrZone, TargetValueSubfield.TargetHrZone); - } - - /// - /// Retrieves the TargetCadenceZone subfield - /// Comment: Zone (1-?); Custom = 0; - /// Nullable uint representing the TargetCadenceZone subfield - public uint? GetTargetCadenceZone() - { - Object val = GetFieldValue(4, 0, TargetValueSubfield.TargetCadenceZone); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set TargetCadenceZone subfield - /// Comment: Zone (1-?); Custom = 0; - /// Subfield value to be set - public void SetTargetCadenceZone(uint? targetCadenceZone) - { - SetFieldValue(4, 0, targetCadenceZone, TargetValueSubfield.TargetCadenceZone); - } - - /// - /// Retrieves the TargetPowerZone subfield - /// Comment: Power Zone ( 1-7); Custom = 0; - /// Nullable uint representing the TargetPowerZone subfield - public uint? GetTargetPowerZone() - { - Object val = GetFieldValue(4, 0, TargetValueSubfield.TargetPowerZone); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set TargetPowerZone subfield - /// Comment: Power Zone ( 1-7); Custom = 0; - /// Subfield value to be set - public void SetTargetPowerZone(uint? targetPowerZone) - { - SetFieldValue(4, 0, targetPowerZone, TargetValueSubfield.TargetPowerZone); - } - - /// - /// Retrieves the RepeatSteps subfield - /// Comment: # of repetitions - /// Nullable uint representing the RepeatSteps subfield - public uint? GetRepeatSteps() - { - Object val = GetFieldValue(4, 0, TargetValueSubfield.RepeatSteps); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set RepeatSteps subfield - /// Comment: # of repetitions - /// Subfield value to be set - public void SetRepeatSteps(uint? repeatSteps) - { - SetFieldValue(4, 0, repeatSteps, TargetValueSubfield.RepeatSteps); - } - - /// - /// Retrieves the RepeatTime subfield - /// Units: s - /// Nullable float representing the RepeatTime subfield - public float? GetRepeatTime() - { - Object val = GetFieldValue(4, 0, TargetValueSubfield.RepeatTime); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set RepeatTime subfield - /// Units: s - /// Subfield value to be set - public void SetRepeatTime(float? repeatTime) - { - SetFieldValue(4, 0, repeatTime, TargetValueSubfield.RepeatTime); - } - - /// - /// Retrieves the RepeatDistance subfield - /// Units: m - /// Nullable float representing the RepeatDistance subfield - public float? GetRepeatDistance() - { - Object val = GetFieldValue(4, 0, TargetValueSubfield.RepeatDistance); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set RepeatDistance subfield - /// Units: m - /// Subfield value to be set - public void SetRepeatDistance(float? repeatDistance) - { - SetFieldValue(4, 0, repeatDistance, TargetValueSubfield.RepeatDistance); - } - - /// - /// Retrieves the RepeatCalories subfield - /// Units: calories - /// Nullable uint representing the RepeatCalories subfield - public uint? GetRepeatCalories() - { - Object val = GetFieldValue(4, 0, TargetValueSubfield.RepeatCalories); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set RepeatCalories subfield - /// Units: calories - /// Subfield value to be set - public void SetRepeatCalories(uint? repeatCalories) - { - SetFieldValue(4, 0, repeatCalories, TargetValueSubfield.RepeatCalories); - } - - /// - /// Retrieves the RepeatHr subfield - /// Units: % or bpm - /// Nullable uint representing the RepeatHr subfield - public uint? GetRepeatHr() - { - Object val = GetFieldValue(4, 0, TargetValueSubfield.RepeatHr); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set RepeatHr subfield - /// Units: % or bpm - /// Subfield value to be set - public void SetRepeatHr(uint? repeatHr) - { - SetFieldValue(4, 0, repeatHr, TargetValueSubfield.RepeatHr); - } - - /// - /// Retrieves the RepeatPower subfield - /// Units: % or watts - /// Nullable uint representing the RepeatPower subfield - public uint? GetRepeatPower() - { - Object val = GetFieldValue(4, 0, TargetValueSubfield.RepeatPower); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set RepeatPower subfield - /// Units: % or watts - /// Subfield value to be set - public void SetRepeatPower(uint? repeatPower) - { - SetFieldValue(4, 0, repeatPower, TargetValueSubfield.RepeatPower); - } - - /// - /// Retrieves the TargetStrokeType subfield - /// Nullable SwimStroke enum representing the TargetStrokeType subfield - public SwimStroke? GetTargetStrokeType() - { - return (SwimStroke?)GetFieldValue(4, 0, TargetValueSubfield.TargetStrokeType); - } - - /// - /// - /// Set TargetStrokeType subfield - /// Subfield value to be set - public void SetTargetStrokeType(byte? targetStrokeType) - { - SetFieldValue(4, 0, targetStrokeType, TargetValueSubfield.TargetStrokeType); - } - /// - /// Retrieves the CustomTargetValueLow field - /// Returns nullable uint representing the CustomTargetValueLow field - public uint? GetCustomTargetValueLow() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set CustomTargetValueLow field - /// Nullable field value to be set - public void SetCustomTargetValueLow(uint? customTargetValueLow_) - { - SetFieldValue(5, 0, customTargetValueLow_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the CustomTargetSpeedLow subfield - /// Units: m/s - /// Nullable float representing the CustomTargetSpeedLow subfield - public float? GetCustomTargetSpeedLow() - { - Object val = GetFieldValue(5, 0, CustomTargetValueLowSubfield.CustomTargetSpeedLow); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set CustomTargetSpeedLow subfield - /// Units: m/s - /// Subfield value to be set - public void SetCustomTargetSpeedLow(float? customTargetSpeedLow) - { - SetFieldValue(5, 0, customTargetSpeedLow, CustomTargetValueLowSubfield.CustomTargetSpeedLow); - } - - /// - /// Retrieves the CustomTargetHeartRateLow subfield - /// Units: % or bpm - /// Nullable uint representing the CustomTargetHeartRateLow subfield - public uint? GetCustomTargetHeartRateLow() - { - Object val = GetFieldValue(5, 0, CustomTargetValueLowSubfield.CustomTargetHeartRateLow); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set CustomTargetHeartRateLow subfield - /// Units: % or bpm - /// Subfield value to be set - public void SetCustomTargetHeartRateLow(uint? customTargetHeartRateLow) - { - SetFieldValue(5, 0, customTargetHeartRateLow, CustomTargetValueLowSubfield.CustomTargetHeartRateLow); - } - - /// - /// Retrieves the CustomTargetCadenceLow subfield - /// Units: rpm - /// Nullable uint representing the CustomTargetCadenceLow subfield - public uint? GetCustomTargetCadenceLow() - { - Object val = GetFieldValue(5, 0, CustomTargetValueLowSubfield.CustomTargetCadenceLow); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set CustomTargetCadenceLow subfield - /// Units: rpm - /// Subfield value to be set - public void SetCustomTargetCadenceLow(uint? customTargetCadenceLow) - { - SetFieldValue(5, 0, customTargetCadenceLow, CustomTargetValueLowSubfield.CustomTargetCadenceLow); - } - - /// - /// Retrieves the CustomTargetPowerLow subfield - /// Units: % or watts - /// Nullable uint representing the CustomTargetPowerLow subfield - public uint? GetCustomTargetPowerLow() - { - Object val = GetFieldValue(5, 0, CustomTargetValueLowSubfield.CustomTargetPowerLow); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set CustomTargetPowerLow subfield - /// Units: % or watts - /// Subfield value to be set - public void SetCustomTargetPowerLow(uint? customTargetPowerLow) - { - SetFieldValue(5, 0, customTargetPowerLow, CustomTargetValueLowSubfield.CustomTargetPowerLow); - } - /// - /// Retrieves the CustomTargetValueHigh field - /// Returns nullable uint representing the CustomTargetValueHigh field - public uint? GetCustomTargetValueHigh() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set CustomTargetValueHigh field - /// Nullable field value to be set - public void SetCustomTargetValueHigh(uint? customTargetValueHigh_) - { - SetFieldValue(6, 0, customTargetValueHigh_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the CustomTargetSpeedHigh subfield - /// Units: m/s - /// Nullable float representing the CustomTargetSpeedHigh subfield - public float? GetCustomTargetSpeedHigh() - { - Object val = GetFieldValue(6, 0, CustomTargetValueHighSubfield.CustomTargetSpeedHigh); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set CustomTargetSpeedHigh subfield - /// Units: m/s - /// Subfield value to be set - public void SetCustomTargetSpeedHigh(float? customTargetSpeedHigh) - { - SetFieldValue(6, 0, customTargetSpeedHigh, CustomTargetValueHighSubfield.CustomTargetSpeedHigh); - } - - /// - /// Retrieves the CustomTargetHeartRateHigh subfield - /// Units: % or bpm - /// Nullable uint representing the CustomTargetHeartRateHigh subfield - public uint? GetCustomTargetHeartRateHigh() - { - Object val = GetFieldValue(6, 0, CustomTargetValueHighSubfield.CustomTargetHeartRateHigh); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set CustomTargetHeartRateHigh subfield - /// Units: % or bpm - /// Subfield value to be set - public void SetCustomTargetHeartRateHigh(uint? customTargetHeartRateHigh) - { - SetFieldValue(6, 0, customTargetHeartRateHigh, CustomTargetValueHighSubfield.CustomTargetHeartRateHigh); - } - - /// - /// Retrieves the CustomTargetCadenceHigh subfield - /// Units: rpm - /// Nullable uint representing the CustomTargetCadenceHigh subfield - public uint? GetCustomTargetCadenceHigh() - { - Object val = GetFieldValue(6, 0, CustomTargetValueHighSubfield.CustomTargetCadenceHigh); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set CustomTargetCadenceHigh subfield - /// Units: rpm - /// Subfield value to be set - public void SetCustomTargetCadenceHigh(uint? customTargetCadenceHigh) - { - SetFieldValue(6, 0, customTargetCadenceHigh, CustomTargetValueHighSubfield.CustomTargetCadenceHigh); - } - - /// - /// Retrieves the CustomTargetPowerHigh subfield - /// Units: % or watts - /// Nullable uint representing the CustomTargetPowerHigh subfield - public uint? GetCustomTargetPowerHigh() - { - Object val = GetFieldValue(6, 0, CustomTargetValueHighSubfield.CustomTargetPowerHigh); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set CustomTargetPowerHigh subfield - /// Units: % or watts - /// Subfield value to be set - public void SetCustomTargetPowerHigh(uint? customTargetPowerHigh) - { - SetFieldValue(6, 0, customTargetPowerHigh, CustomTargetValueHighSubfield.CustomTargetPowerHigh); - } - /// - /// Retrieves the Intensity field - /// Returns nullable Intensity enum representing the Intensity field - public Intensity? GetIntensity() - { - object obj = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - Intensity? value = obj == null ? (Intensity?)null : (Intensity)obj; - return value; - } - - /// - /// Set Intensity field - /// Nullable field value to be set - public void SetIntensity(Intensity? intensity_) - { - SetFieldValue(7, 0, intensity_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Notes field - /// Returns byte[] representing the Notes field - public byte[] GetNotes() - { - byte[] data = (byte[])GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Notes field - /// Returns String representing the Notes field - public String GetNotesAsString() - { - byte[] data = (byte[])GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Notes field - /// field value to be set - public void SetNotes(String notes_) - { - byte[] data = Encoding.UTF8.GetBytes(notes_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(8, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Notes field - /// field value to be set - public void SetNotes(byte[] notes_) - { - SetFieldValue(8, 0, notes_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Equipment field - /// Returns nullable WorkoutEquipment enum representing the Equipment field - public WorkoutEquipment? GetEquipment() - { - object obj = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - WorkoutEquipment? value = obj == null ? (WorkoutEquipment?)null : (WorkoutEquipment)obj; - return value; - } - - /// - /// Set Equipment field - /// Nullable field value to be set - public void SetEquipment(WorkoutEquipment? equipment_) - { - SetFieldValue(9, 0, equipment_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ExerciseCategory field - /// Returns nullable ushort representing the ExerciseCategory field - public ushort? GetExerciseCategory() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ExerciseCategory field - /// Nullable field value to be set - public void SetExerciseCategory(ushort? exerciseCategory_) - { - SetFieldValue(10, 0, exerciseCategory_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ExerciseName field - /// Returns nullable ushort representing the ExerciseName field - public ushort? GetExerciseName() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ExerciseName field - /// Nullable field value to be set - public void SetExerciseName(ushort? exerciseName_) - { - SetFieldValue(11, 0, exerciseName_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ExerciseWeight field - /// Units: kg - /// Returns nullable float representing the ExerciseWeight field - public float? GetExerciseWeight() - { - Object val = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set ExerciseWeight field - /// Units: kg - /// Nullable field value to be set - public void SetExerciseWeight(float? exerciseWeight_) - { - SetFieldValue(12, 0, exerciseWeight_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WeightDisplayUnit field - /// Returns nullable ushort representing the WeightDisplayUnit field - public ushort? GetWeightDisplayUnit() - { - Object val = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set WeightDisplayUnit field - /// Nullable field value to be set - public void SetWeightDisplayUnit(ushort? weightDisplayUnit_) - { - SetFieldValue(13, 0, weightDisplayUnit_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SecondaryTargetType field - /// Returns nullable WktStepTarget enum representing the SecondaryTargetType field - public WktStepTarget? GetSecondaryTargetType() - { - object obj = GetFieldValue(19, 0, Fit.SubfieldIndexMainField); - WktStepTarget? value = obj == null ? (WktStepTarget?)null : (WktStepTarget)obj; - return value; - } - - /// - /// Set SecondaryTargetType field - /// Nullable field value to be set - public void SetSecondaryTargetType(WktStepTarget? secondaryTargetType_) - { - SetFieldValue(19, 0, secondaryTargetType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SecondaryTargetValue field - /// Returns nullable uint representing the SecondaryTargetValue field - public uint? GetSecondaryTargetValue() - { - Object val = GetFieldValue(20, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set SecondaryTargetValue field - /// Nullable field value to be set - public void SetSecondaryTargetValue(uint? secondaryTargetValue_) - { - SetFieldValue(20, 0, secondaryTargetValue_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the SecondaryTargetSpeedZone subfield - /// Comment: speed zone (1-10);Custom =0; - /// Nullable uint representing the SecondaryTargetSpeedZone subfield - public uint? GetSecondaryTargetSpeedZone() - { - Object val = GetFieldValue(20, 0, SecondaryTargetValueSubfield.SecondaryTargetSpeedZone); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set SecondaryTargetSpeedZone subfield - /// Comment: speed zone (1-10);Custom =0; - /// Subfield value to be set - public void SetSecondaryTargetSpeedZone(uint? secondaryTargetSpeedZone) - { - SetFieldValue(20, 0, secondaryTargetSpeedZone, SecondaryTargetValueSubfield.SecondaryTargetSpeedZone); - } - - /// - /// Retrieves the SecondaryTargetHrZone subfield - /// Comment: hr zone (1-5);Custom =0; - /// Nullable uint representing the SecondaryTargetHrZone subfield - public uint? GetSecondaryTargetHrZone() - { - Object val = GetFieldValue(20, 0, SecondaryTargetValueSubfield.SecondaryTargetHrZone); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set SecondaryTargetHrZone subfield - /// Comment: hr zone (1-5);Custom =0; - /// Subfield value to be set - public void SetSecondaryTargetHrZone(uint? secondaryTargetHrZone) - { - SetFieldValue(20, 0, secondaryTargetHrZone, SecondaryTargetValueSubfield.SecondaryTargetHrZone); - } - - /// - /// Retrieves the SecondaryTargetCadenceZone subfield - /// Comment: Zone (1-?); Custom = 0; - /// Nullable uint representing the SecondaryTargetCadenceZone subfield - public uint? GetSecondaryTargetCadenceZone() - { - Object val = GetFieldValue(20, 0, SecondaryTargetValueSubfield.SecondaryTargetCadenceZone); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set SecondaryTargetCadenceZone subfield - /// Comment: Zone (1-?); Custom = 0; - /// Subfield value to be set - public void SetSecondaryTargetCadenceZone(uint? secondaryTargetCadenceZone) - { - SetFieldValue(20, 0, secondaryTargetCadenceZone, SecondaryTargetValueSubfield.SecondaryTargetCadenceZone); - } - - /// - /// Retrieves the SecondaryTargetPowerZone subfield - /// Comment: Power Zone ( 1-7); Custom = 0; - /// Nullable uint representing the SecondaryTargetPowerZone subfield - public uint? GetSecondaryTargetPowerZone() - { - Object val = GetFieldValue(20, 0, SecondaryTargetValueSubfield.SecondaryTargetPowerZone); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set SecondaryTargetPowerZone subfield - /// Comment: Power Zone ( 1-7); Custom = 0; - /// Subfield value to be set - public void SetSecondaryTargetPowerZone(uint? secondaryTargetPowerZone) - { - SetFieldValue(20, 0, secondaryTargetPowerZone, SecondaryTargetValueSubfield.SecondaryTargetPowerZone); - } - - /// - /// Retrieves the SecondaryTargetStrokeType subfield - /// Nullable SwimStroke enum representing the SecondaryTargetStrokeType subfield - public SwimStroke? GetSecondaryTargetStrokeType() - { - return (SwimStroke?)GetFieldValue(20, 0, SecondaryTargetValueSubfield.SecondaryTargetStrokeType); - } - - /// - /// - /// Set SecondaryTargetStrokeType subfield - /// Subfield value to be set - public void SetSecondaryTargetStrokeType(byte? secondaryTargetStrokeType) - { - SetFieldValue(20, 0, secondaryTargetStrokeType, SecondaryTargetValueSubfield.SecondaryTargetStrokeType); - } - /// - /// Retrieves the SecondaryCustomTargetValueLow field - /// Returns nullable uint representing the SecondaryCustomTargetValueLow field - public uint? GetSecondaryCustomTargetValueLow() - { - Object val = GetFieldValue(21, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set SecondaryCustomTargetValueLow field - /// Nullable field value to be set - public void SetSecondaryCustomTargetValueLow(uint? secondaryCustomTargetValueLow_) - { - SetFieldValue(21, 0, secondaryCustomTargetValueLow_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the SecondaryCustomTargetSpeedLow subfield - /// Units: m/s - /// Nullable float representing the SecondaryCustomTargetSpeedLow subfield - public float? GetSecondaryCustomTargetSpeedLow() - { - Object val = GetFieldValue(21, 0, SecondaryCustomTargetValueLowSubfield.SecondaryCustomTargetSpeedLow); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set SecondaryCustomTargetSpeedLow subfield - /// Units: m/s - /// Subfield value to be set - public void SetSecondaryCustomTargetSpeedLow(float? secondaryCustomTargetSpeedLow) - { - SetFieldValue(21, 0, secondaryCustomTargetSpeedLow, SecondaryCustomTargetValueLowSubfield.SecondaryCustomTargetSpeedLow); - } - - /// - /// Retrieves the SecondaryCustomTargetHeartRateLow subfield - /// Units: % or bpm - /// Nullable uint representing the SecondaryCustomTargetHeartRateLow subfield - public uint? GetSecondaryCustomTargetHeartRateLow() - { - Object val = GetFieldValue(21, 0, SecondaryCustomTargetValueLowSubfield.SecondaryCustomTargetHeartRateLow); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set SecondaryCustomTargetHeartRateLow subfield - /// Units: % or bpm - /// Subfield value to be set - public void SetSecondaryCustomTargetHeartRateLow(uint? secondaryCustomTargetHeartRateLow) - { - SetFieldValue(21, 0, secondaryCustomTargetHeartRateLow, SecondaryCustomTargetValueLowSubfield.SecondaryCustomTargetHeartRateLow); - } - - /// - /// Retrieves the SecondaryCustomTargetCadenceLow subfield - /// Units: rpm - /// Nullable uint representing the SecondaryCustomTargetCadenceLow subfield - public uint? GetSecondaryCustomTargetCadenceLow() - { - Object val = GetFieldValue(21, 0, SecondaryCustomTargetValueLowSubfield.SecondaryCustomTargetCadenceLow); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set SecondaryCustomTargetCadenceLow subfield - /// Units: rpm - /// Subfield value to be set - public void SetSecondaryCustomTargetCadenceLow(uint? secondaryCustomTargetCadenceLow) - { - SetFieldValue(21, 0, secondaryCustomTargetCadenceLow, SecondaryCustomTargetValueLowSubfield.SecondaryCustomTargetCadenceLow); - } - - /// - /// Retrieves the SecondaryCustomTargetPowerLow subfield - /// Units: % or watts - /// Nullable uint representing the SecondaryCustomTargetPowerLow subfield - public uint? GetSecondaryCustomTargetPowerLow() - { - Object val = GetFieldValue(21, 0, SecondaryCustomTargetValueLowSubfield.SecondaryCustomTargetPowerLow); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set SecondaryCustomTargetPowerLow subfield - /// Units: % or watts - /// Subfield value to be set - public void SetSecondaryCustomTargetPowerLow(uint? secondaryCustomTargetPowerLow) - { - SetFieldValue(21, 0, secondaryCustomTargetPowerLow, SecondaryCustomTargetValueLowSubfield.SecondaryCustomTargetPowerLow); - } - /// - /// Retrieves the SecondaryCustomTargetValueHigh field - /// Returns nullable uint representing the SecondaryCustomTargetValueHigh field - public uint? GetSecondaryCustomTargetValueHigh() - { - Object val = GetFieldValue(22, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set SecondaryCustomTargetValueHigh field - /// Nullable field value to be set - public void SetSecondaryCustomTargetValueHigh(uint? secondaryCustomTargetValueHigh_) - { - SetFieldValue(22, 0, secondaryCustomTargetValueHigh_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the SecondaryCustomTargetSpeedHigh subfield - /// Units: m/s - /// Nullable float representing the SecondaryCustomTargetSpeedHigh subfield - public float? GetSecondaryCustomTargetSpeedHigh() - { - Object val = GetFieldValue(22, 0, SecondaryCustomTargetValueHighSubfield.SecondaryCustomTargetSpeedHigh); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set SecondaryCustomTargetSpeedHigh subfield - /// Units: m/s - /// Subfield value to be set - public void SetSecondaryCustomTargetSpeedHigh(float? secondaryCustomTargetSpeedHigh) - { - SetFieldValue(22, 0, secondaryCustomTargetSpeedHigh, SecondaryCustomTargetValueHighSubfield.SecondaryCustomTargetSpeedHigh); - } - - /// - /// Retrieves the SecondaryCustomTargetHeartRateHigh subfield - /// Units: % or bpm - /// Nullable uint representing the SecondaryCustomTargetHeartRateHigh subfield - public uint? GetSecondaryCustomTargetHeartRateHigh() - { - Object val = GetFieldValue(22, 0, SecondaryCustomTargetValueHighSubfield.SecondaryCustomTargetHeartRateHigh); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set SecondaryCustomTargetHeartRateHigh subfield - /// Units: % or bpm - /// Subfield value to be set - public void SetSecondaryCustomTargetHeartRateHigh(uint? secondaryCustomTargetHeartRateHigh) - { - SetFieldValue(22, 0, secondaryCustomTargetHeartRateHigh, SecondaryCustomTargetValueHighSubfield.SecondaryCustomTargetHeartRateHigh); - } - - /// - /// Retrieves the SecondaryCustomTargetCadenceHigh subfield - /// Units: rpm - /// Nullable uint representing the SecondaryCustomTargetCadenceHigh subfield - public uint? GetSecondaryCustomTargetCadenceHigh() - { - Object val = GetFieldValue(22, 0, SecondaryCustomTargetValueHighSubfield.SecondaryCustomTargetCadenceHigh); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set SecondaryCustomTargetCadenceHigh subfield - /// Units: rpm - /// Subfield value to be set - public void SetSecondaryCustomTargetCadenceHigh(uint? secondaryCustomTargetCadenceHigh) - { - SetFieldValue(22, 0, secondaryCustomTargetCadenceHigh, SecondaryCustomTargetValueHighSubfield.SecondaryCustomTargetCadenceHigh); - } - - /// - /// Retrieves the SecondaryCustomTargetPowerHigh subfield - /// Units: % or watts - /// Nullable uint representing the SecondaryCustomTargetPowerHigh subfield - public uint? GetSecondaryCustomTargetPowerHigh() - { - Object val = GetFieldValue(22, 0, SecondaryCustomTargetValueHighSubfield.SecondaryCustomTargetPowerHigh); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set SecondaryCustomTargetPowerHigh subfield - /// Units: % or watts - /// Subfield value to be set - public void SetSecondaryCustomTargetPowerHigh(uint? secondaryCustomTargetPowerHigh) - { - SetFieldValue(22, 0, secondaryCustomTargetPowerHigh, SecondaryCustomTargetValueHighSubfield.SecondaryCustomTargetPowerHigh); - } - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ZonesTargetMesg.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ZonesTargetMesg.cs deleted file mode 100644 index 74544abfd..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Mesgs/ZonesTargetMesg.cs +++ /dev/null @@ -1,163 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the ZonesTarget profile message. - /// - public class ZonesTargetMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MaxHeartRate = 1; - public const byte ThresholdHeartRate = 2; - public const byte FunctionalThresholdPower = 3; - public const byte HrCalcType = 5; - public const byte PwrCalcType = 7; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public ZonesTargetMesg() : base(Profile.GetMesg(MesgNum.ZonesTarget)) - { - } - - public ZonesTargetMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MaxHeartRate field - /// Returns nullable byte representing the MaxHeartRate field - public byte? GetMaxHeartRate() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxHeartRate field - /// Nullable field value to be set - public void SetMaxHeartRate(byte? maxHeartRate_) - { - SetFieldValue(1, 0, maxHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ThresholdHeartRate field - /// Returns nullable byte representing the ThresholdHeartRate field - public byte? GetThresholdHeartRate() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ThresholdHeartRate field - /// Nullable field value to be set - public void SetThresholdHeartRate(byte? thresholdHeartRate_) - { - SetFieldValue(2, 0, thresholdHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FunctionalThresholdPower field - /// Returns nullable ushort representing the FunctionalThresholdPower field - public ushort? GetFunctionalThresholdPower() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set FunctionalThresholdPower field - /// Nullable field value to be set - public void SetFunctionalThresholdPower(ushort? functionalThresholdPower_) - { - SetFieldValue(3, 0, functionalThresholdPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HrCalcType field - /// Returns nullable HrZoneCalc enum representing the HrCalcType field - public HrZoneCalc? GetHrCalcType() - { - object obj = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - HrZoneCalc? value = obj == null ? (HrZoneCalc?)null : (HrZoneCalc)obj; - return value; - } - - /// - /// Set HrCalcType field - /// Nullable field value to be set - public void SetHrCalcType(HrZoneCalc? hrCalcType_) - { - SetFieldValue(5, 0, hrCalcType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PwrCalcType field - /// Returns nullable PwrZoneCalc enum representing the PwrCalcType field - public PwrZoneCalc? GetPwrCalcType() - { - object obj = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - PwrZoneCalc? value = obj == null ? (PwrZoneCalc?)null : (PwrZoneCalc)obj; - return value; - } - - /// - /// Set PwrCalcType field - /// Nullable field value to be set - public void SetPwrCalcType(PwrZoneCalc? pwrCalcType_) - { - SetFieldValue(7, 0, pwrCalcType_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Activity.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Activity.cs deleted file mode 100644 index 8aa86cc55..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Activity.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Activity type as an enum - /// - public enum Activity : byte - { - Manual = 0, - AutoMultiSport = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ActivityClass.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ActivityClass.cs deleted file mode 100644 index bc5eb6446..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ActivityClass.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ActivityClass type as an enum - /// - public enum ActivityClass : byte - { - Level = 0x7F, - LevelMax = 100, - Athlete = 0x80, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ActivityLevel.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ActivityLevel.cs deleted file mode 100644 index 5f7f969bf..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ActivityLevel.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ActivityLevel type as an enum - /// - public enum ActivityLevel : byte - { - Low = 0, - Medium = 1, - High = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ActivitySubtype.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ActivitySubtype.cs deleted file mode 100644 index 052ebd40f..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ActivitySubtype.cs +++ /dev/null @@ -1,47 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ActivitySubtype type as an enum - /// - public enum ActivitySubtype : byte - { - Generic = 0, - Treadmill = 1, - Street = 2, - Trail = 3, - Track = 4, - Spin = 5, - IndoorCycling = 6, - Road = 7, - Mountain = 8, - Downhill = 9, - Recumbent = 10, - Cyclocross = 11, - HandCycling = 12, - TrackCycling = 13, - IndoorRowing = 14, - Elliptical = 15, - StairClimbing = 16, - LapSwimming = 17, - OpenWater = 18, - All = 254, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ActivityType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ActivityType.cs deleted file mode 100644 index 0012f9656..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ActivityType.cs +++ /dev/null @@ -1,36 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ActivityType type as an enum - /// - public enum ActivityType : byte - { - Generic = 0, - Running = 1, - Cycling = 2, - Transition = 3, - FitnessEquipment = 4, - Swimming = 5, - Walking = 6, - Sedentary = 8, - All = 254, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AnalogWatchfaceLayout.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AnalogWatchfaceLayout.cs deleted file mode 100644 index 64e4e1252..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AnalogWatchfaceLayout.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile AnalogWatchfaceLayout type as an enum - /// - public enum AnalogWatchfaceLayout : byte - { - Minimal = 0, - Traditional = 1, - Modern = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AntChannelId.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AntChannelId.cs deleted file mode 100644 index 34915c315..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AntChannelId.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile AntChannelId type as a class - /// - public static class AntChannelId - { - public const uint AntExtendedDeviceNumberUpperNibble = 0xF0000000; - public const uint AntTransmissionTypeLowerNibble = 0x0F000000; - public const uint AntDeviceType = 0x00FF0000; - public const uint AntDeviceNumber = 0x0000FFFF; - public const uint Invalid = (uint)0x00000000; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AntNetwork.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AntNetwork.cs deleted file mode 100644 index ea7641816..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AntNetwork.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile AntNetwork type as an enum - /// - public enum AntNetwork : byte - { - Public = 0, - Antplus = 1, - Antfs = 2, - Private = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AntplusDeviceType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AntplusDeviceType.cs deleted file mode 100644 index d543d5894..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AntplusDeviceType.cs +++ /dev/null @@ -1,52 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile AntplusDeviceType type as a class - /// - public static class AntplusDeviceType - { - public const byte Antfs = 1; - public const byte BikePower = 11; - public const byte EnvironmentSensorLegacy = 12; - public const byte MultiSportSpeedDistance = 15; - public const byte Control = 16; - public const byte FitnessEquipment = 17; - public const byte BloodPressure = 18; - public const byte GeocacheNode = 19; - public const byte LightElectricVehicle = 20; - public const byte EnvSensor = 25; - public const byte Racquet = 26; - public const byte ControlHub = 27; - public const byte MuscleOxygen = 31; - public const byte Shifting = 34; - public const byte BikeLightMain = 35; - public const byte BikeLightShared = 36; - public const byte Exd = 38; - public const byte BikeRadar = 40; - public const byte BikeAero = 46; - public const byte WeightScale = 119; - public const byte HeartRate = 120; - public const byte BikeSpeedCadence = 121; - public const byte BikeCadence = 122; - public const byte BikeSpeed = 123; - public const byte StrideSpeedDistance = 124; - public const byte Invalid = (byte)0xFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AttitudeStage.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AttitudeStage.cs deleted file mode 100644 index 8e2b019f4..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AttitudeStage.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile AttitudeStage type as an enum - /// - public enum AttitudeStage : byte - { - Failed = 0, - Aligning = 1, - Degraded = 2, - Valid = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AttitudeValidity.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AttitudeValidity.cs deleted file mode 100644 index dc454409a..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AttitudeValidity.cs +++ /dev/null @@ -1,40 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile AttitudeValidity type as a class - /// - public static class AttitudeValidity - { - public const ushort TrackAngleHeadingValid = 0x0001; - public const ushort PitchValid = 0x0002; - public const ushort RollValid = 0x0004; - public const ushort LateralBodyAccelValid = 0x0008; - public const ushort NormalBodyAccelValid = 0x0010; - public const ushort TurnRateValid = 0x0020; - public const ushort HwFail = 0x0040; - public const ushort MagInvalid = 0x0080; - public const ushort NoGps = 0x0100; - public const ushort GpsInvalid = 0x0200; - public const ushort SolutionCoasting = 0x0400; - public const ushort TrueTrackAngle = 0x0800; - public const ushort MagneticHeading = 0x1000; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AutoActivityDetect.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AutoActivityDetect.cs deleted file mode 100644 index 869d7c4b9..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AutoActivityDetect.cs +++ /dev/null @@ -1,34 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile AutoActivityDetect type as a class - /// - public static class AutoActivityDetect - { - public const uint None = 0x00000000; - public const uint Running = 0x00000001; - public const uint Cycling = 0x00000002; - public const uint Swimming = 0x00000004; - public const uint Walking = 0x00000008; - public const uint Elliptical = 0x00000020; - public const uint Sedentary = 0x00000400; - public const uint Invalid = (uint)0xFFFFFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AutoSyncFrequency.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AutoSyncFrequency.cs deleted file mode 100644 index fed158a07..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AutoSyncFrequency.cs +++ /dev/null @@ -1,32 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile AutoSyncFrequency type as an enum - /// - public enum AutoSyncFrequency : byte - { - Never = 0, - Occasionally = 1, - Frequent = 2, - OnceADay = 3, - Remote = 4, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AutolapTrigger.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AutolapTrigger.cs deleted file mode 100644 index 424260eef..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/AutolapTrigger.cs +++ /dev/null @@ -1,34 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile AutolapTrigger type as an enum - /// - public enum AutolapTrigger : byte - { - Time = 0, - Distance = 1, - PositionStart = 2, - PositionLap = 3, - PositionWaypoint = 4, - PositionMarked = 5, - Off = 6, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Autoscroll.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Autoscroll.cs deleted file mode 100644 index 4718a0bf6..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Autoscroll.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Autoscroll type as an enum - /// - public enum Autoscroll : byte - { - None = 0, - Slow = 1, - Medium = 2, - Fast = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BacklightMode.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BacklightMode.cs deleted file mode 100644 index c98f73a47..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BacklightMode.cs +++ /dev/null @@ -1,34 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile BacklightMode type as an enum - /// - public enum BacklightMode : byte - { - Off = 0, - Manual = 1, - KeyAndMessages = 2, - AutoBrightness = 3, - SmartNotifications = 4, - KeyAndMessagesNight = 5, - KeyAndMessagesAndSmartNotifications = 6, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BacklightTimeout.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BacklightTimeout.cs deleted file mode 100644 index 13cc29bf3..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BacklightTimeout.cs +++ /dev/null @@ -1,28 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile BacklightTimeout type as a class - /// - public static class BacklightTimeout - { - public const byte Infinite = 0; // Backlight stays on forever. - public const byte Invalid = (byte)0xFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BatteryStatus.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BatteryStatus.cs deleted file mode 100644 index dbc83990e..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BatteryStatus.cs +++ /dev/null @@ -1,34 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile BatteryStatus type as a class - /// - public static class BatteryStatus - { - public const byte New = 1; - public const byte Good = 2; - public const byte Ok = 3; - public const byte Low = 4; - public const byte Critical = 5; - public const byte Charging = 6; - public const byte Unknown = 7; - public const byte Invalid = (byte)0xFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BenchPressExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BenchPressExerciseName.cs deleted file mode 100644 index 840f09594..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BenchPressExerciseName.cs +++ /dev/null @@ -1,54 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile BenchPressExerciseName type as a class - /// - public static class BenchPressExerciseName - { - public const ushort AlternatingDumbbellChestPressOnSwissBall = 0; - public const ushort BarbellBenchPress = 1; - public const ushort BarbellBoardBenchPress = 2; - public const ushort BarbellFloorPress = 3; - public const ushort CloseGripBarbellBenchPress = 4; - public const ushort DeclineDumbbellBenchPress = 5; - public const ushort DumbbellBenchPress = 6; - public const ushort DumbbellFloorPress = 7; - public const ushort InclineBarbellBenchPress = 8; - public const ushort InclineDumbbellBenchPress = 9; - public const ushort InclineSmithMachineBenchPress = 10; - public const ushort IsometricBarbellBenchPress = 11; - public const ushort KettlebellChestPress = 12; - public const ushort NeutralGripDumbbellBenchPress = 13; - public const ushort NeutralGripDumbbellInclineBenchPress = 14; - public const ushort OneArmFloorPress = 15; - public const ushort WeightedOneArmFloorPress = 16; - public const ushort PartialLockout = 17; - public const ushort ReverseGripBarbellBenchPress = 18; - public const ushort ReverseGripInclineBenchPress = 19; - public const ushort SingleArmCableChestPress = 20; - public const ushort SingleArmDumbbellBenchPress = 21; - public const ushort SmithMachineBenchPress = 22; - public const ushort SwissBallDumbbellChestPress = 23; - public const ushort TripleStopBarbellBenchPress = 24; - public const ushort WideGripBarbellBenchPress = 25; - public const ushort AlternatingDumbbellChestPress = 26; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BikeLightBeamAngleMode.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BikeLightBeamAngleMode.cs deleted file mode 100644 index e9b50ce33..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BikeLightBeamAngleMode.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile BikeLightBeamAngleMode type as a class - /// - public static class BikeLightBeamAngleMode - { - public const byte Manual = 0; - public const byte Auto = 1; - public const byte Invalid = (byte)0xFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BikeLightNetworkConfigType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BikeLightNetworkConfigType.cs deleted file mode 100644 index ed5d4c4d1..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BikeLightNetworkConfigType.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile BikeLightNetworkConfigType type as an enum - /// - public enum BikeLightNetworkConfigType : byte - { - Auto = 0, - Individual = 4, - HighVisibility = 5, - Trail = 6, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BleDeviceType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BleDeviceType.cs deleted file mode 100644 index 9d75bf93e..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BleDeviceType.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile BleDeviceType type as a class - /// - public static class BleDeviceType - { - public const byte ConnectedGps = 0; // GPS that is provided over a proprietary bluetooth service - public const byte HeartRate = 1; - public const byte BikePower = 2; - public const byte BikeSpeedCadence = 3; - public const byte BikeSpeed = 4; - public const byte BikeCadence = 5; - public const byte Footpod = 6; - public const byte BikeTrainer = 7; // Indoor-Bike FTMS protocol - public const byte Invalid = (byte)0xFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BodyLocation.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BodyLocation.cs deleted file mode 100644 index 5eae3bef0..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BodyLocation.cs +++ /dev/null @@ -1,67 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile BodyLocation type as an enum - /// - public enum BodyLocation : byte - { - LeftLeg = 0, - LeftCalf = 1, - LeftShin = 2, - LeftHamstring = 3, - LeftQuad = 4, - LeftGlute = 5, - RightLeg = 6, - RightCalf = 7, - RightShin = 8, - RightHamstring = 9, - RightQuad = 10, - RightGlute = 11, - TorsoBack = 12, - LeftLowerBack = 13, - LeftUpperBack = 14, - RightLowerBack = 15, - RightUpperBack = 16, - TorsoFront = 17, - LeftAbdomen = 18, - LeftChest = 19, - RightAbdomen = 20, - RightChest = 21, - LeftArm = 22, - LeftShoulder = 23, - LeftBicep = 24, - LeftTricep = 25, - LeftBrachioradialis = 26, - LeftForearmExtensors = 27, - RightArm = 28, - RightShoulder = 29, - RightBicep = 30, - RightTricep = 31, - RightBrachioradialis = 32, - RightForearmExtensors = 33, - Neck = 34, - Throat = 35, - WaistMidBack = 36, - WaistFront = 37, - WaistLeft = 38, - WaistRight = 39, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Bool.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Bool.cs deleted file mode 100644 index c65789b55..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Bool.cs +++ /dev/null @@ -1,26 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Bool type as an enum - /// - public enum Bool : byte - { - False = 0, - True = 1, - Invalid = 0xFF - } // enum -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BpStatus.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BpStatus.cs deleted file mode 100644 index f49b00faf..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/BpStatus.cs +++ /dev/null @@ -1,32 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile BpStatus type as an enum - /// - public enum BpStatus : byte - { - NoError = 0, - ErrorIncompleteData = 1, - ErrorNoMeasurement = 2, - ErrorDataOutOfRange = 3, - ErrorIrregularHeartRate = 4, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CalfRaiseExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CalfRaiseExerciseName.cs deleted file mode 100644 index 588b62a87..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CalfRaiseExerciseName.cs +++ /dev/null @@ -1,48 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile CalfRaiseExerciseName type as a class - /// - public static class CalfRaiseExerciseName - { - public const ushort _3WayCalfRaise = 0; - public const ushort _3WayWeightedCalfRaise = 1; - public const ushort _3WaySingleLegCalfRaise = 2; - public const ushort _3WayWeightedSingleLegCalfRaise = 3; - public const ushort DonkeyCalfRaise = 4; - public const ushort WeightedDonkeyCalfRaise = 5; - public const ushort SeatedCalfRaise = 6; - public const ushort WeightedSeatedCalfRaise = 7; - public const ushort SeatedDumbbellToeRaise = 8; - public const ushort SingleLegBentKneeCalfRaise = 9; - public const ushort WeightedSingleLegBentKneeCalfRaise = 10; - public const ushort SingleLegDeclinePushUp = 11; - public const ushort SingleLegDonkeyCalfRaise = 12; - public const ushort WeightedSingleLegDonkeyCalfRaise = 13; - public const ushort SingleLegHipRaiseWithKneeHold = 14; - public const ushort SingleLegStandingCalfRaise = 15; - public const ushort SingleLegStandingDumbbellCalfRaise = 16; - public const ushort StandingBarbellCalfRaise = 17; - public const ushort StandingCalfRaise = 18; - public const ushort WeightedStandingCalfRaise = 19; - public const ushort StandingDumbbellCalfRaise = 20; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CameraEventType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CameraEventType.cs deleted file mode 100644 index 6fee9cd02..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CameraEventType.cs +++ /dev/null @@ -1,40 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile CameraEventType type as an enum - /// - public enum CameraEventType : byte - { - VideoStart = 0, - VideoSplit = 1, - VideoEnd = 2, - PhotoTaken = 3, - VideoSecondStreamStart = 4, - VideoSecondStreamSplit = 5, - VideoSecondStreamEnd = 6, - VideoSplitStart = 7, - VideoSecondStreamSplitStart = 8, - VideoPause = 11, - VideoSecondStreamPause = 12, - VideoResume = 13, - VideoSecondStreamResume = 14, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CameraOrientationType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CameraOrientationType.cs deleted file mode 100644 index f94f74767..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CameraOrientationType.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile CameraOrientationType type as an enum - /// - public enum CameraOrientationType : byte - { - CameraOrientation0 = 0, - CameraOrientation90 = 1, - CameraOrientation180 = 2, - CameraOrientation270 = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CardioExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CardioExerciseName.cs deleted file mode 100644 index 880add2bd..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CardioExerciseName.cs +++ /dev/null @@ -1,49 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile CardioExerciseName type as a class - /// - public static class CardioExerciseName - { - public const ushort BobAndWeaveCircle = 0; - public const ushort WeightedBobAndWeaveCircle = 1; - public const ushort CardioCoreCrawl = 2; - public const ushort WeightedCardioCoreCrawl = 3; - public const ushort DoubleUnder = 4; - public const ushort WeightedDoubleUnder = 5; - public const ushort JumpRope = 6; - public const ushort WeightedJumpRope = 7; - public const ushort JumpRopeCrossover = 8; - public const ushort WeightedJumpRopeCrossover = 9; - public const ushort JumpRopeJog = 10; - public const ushort WeightedJumpRopeJog = 11; - public const ushort JumpingJacks = 12; - public const ushort WeightedJumpingJacks = 13; - public const ushort SkiMoguls = 14; - public const ushort WeightedSkiMoguls = 15; - public const ushort SplitJacks = 16; - public const ushort WeightedSplitJacks = 17; - public const ushort SquatJacks = 18; - public const ushort WeightedSquatJacks = 19; - public const ushort TripleUnder = 20; - public const ushort WeightedTripleUnder = 21; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CarryExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CarryExerciseName.cs deleted file mode 100644 index ca86d7b7f..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CarryExerciseName.cs +++ /dev/null @@ -1,32 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile CarryExerciseName type as a class - /// - public static class CarryExerciseName - { - public const ushort BarHolds = 0; - public const ushort FarmersWalk = 1; - public const ushort FarmersWalkOnToes = 2; - public const ushort HexDumbbellHold = 3; - public const ushort OverheadCarry = 4; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CcrSetpointSwitchMode.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CcrSetpointSwitchMode.cs deleted file mode 100644 index bb6a11059..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CcrSetpointSwitchMode.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile CcrSetpointSwitchMode type as an enum - /// - public enum CcrSetpointSwitchMode : byte - { - Manual = 0, - Automatic = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Checksum.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Checksum.cs deleted file mode 100644 index ad0680dd9..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Checksum.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Checksum type as a class - /// - public static class Checksum - { - public const byte Clear = 0; // Allows clear of checksum for flash memory where can only write 1 to 0 without erasing sector. - public const byte Ok = 1; // 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. - public const byte Invalid = (byte)0xFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ChopExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ChopExerciseName.cs deleted file mode 100644 index 226441a91..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ChopExerciseName.cs +++ /dev/null @@ -1,50 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ChopExerciseName type as a class - /// - public static class ChopExerciseName - { - public const ushort CablePullThrough = 0; - public const ushort CableRotationalLift = 1; - public const ushort CableWoodchop = 2; - public const ushort CrossChopToKnee = 3; - public const ushort WeightedCrossChopToKnee = 4; - public const ushort DumbbellChop = 5; - public const ushort HalfKneelingRotation = 6; - public const ushort WeightedHalfKneelingRotation = 7; - public const ushort HalfKneelingRotationalChop = 8; - public const ushort HalfKneelingRotationalReverseChop = 9; - public const ushort HalfKneelingStabilityChop = 10; - public const ushort HalfKneelingStabilityReverseChop = 11; - public const ushort KneelingRotationalChop = 12; - public const ushort KneelingRotationalReverseChop = 13; - public const ushort KneelingStabilityChop = 14; - public const ushort KneelingWoodchopper = 15; - public const ushort MedicineBallWoodChops = 16; - public const ushort PowerSquatChops = 17; - public const ushort WeightedPowerSquatChops = 18; - public const ushort StandingRotationalChop = 19; - public const ushort StandingSplitRotationalChop = 20; - public const ushort StandingSplitRotationalReverseChop = 21; - public const ushort StandingStabilityReverseChop = 22; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ClimbProEvent.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ClimbProEvent.cs deleted file mode 100644 index f05f07bf3..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ClimbProEvent.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ClimbProEvent type as an enum - /// - public enum ClimbProEvent : byte - { - Approach = 0, - Start = 1, - Complete = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CommTimeoutType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CommTimeoutType.cs deleted file mode 100644 index ef25b5230..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CommTimeoutType.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile CommTimeoutType type as a class - /// - public static class CommTimeoutType - { - public const ushort WildcardPairingTimeout = 0; // Timeout pairing to any device - public const ushort PairingTimeout = 1; // Timeout pairing to previously paired device - public const ushort ConnectionLost = 2; // Temporary loss of communications - public const ushort ConnectionTimeout = 3; // Connection closed due to extended bad communications - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ConnectivityCapabilities.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ConnectivityCapabilities.cs deleted file mode 100644 index 1accafcde..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ConnectivityCapabilities.cs +++ /dev/null @@ -1,59 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ConnectivityCapabilities type as a class - /// - public static class ConnectivityCapabilities - { - public const uint Bluetooth = 0x00000001; - public const uint BluetoothLe = 0x00000002; - public const uint Ant = 0x00000004; - public const uint ActivityUpload = 0x00000008; - public const uint CourseDownload = 0x00000010; - public const uint WorkoutDownload = 0x00000020; - public const uint LiveTrack = 0x00000040; - public const uint WeatherConditions = 0x00000080; - public const uint WeatherAlerts = 0x00000100; - public const uint GpsEphemerisDownload = 0x00000200; - public const uint ExplicitArchive = 0x00000400; - public const uint SetupIncomplete = 0x00000800; - public const uint ContinueSyncAfterSoftwareUpdate = 0x00001000; - public const uint ConnectIqAppDownload = 0x00002000; - public const uint GolfCourseDownload = 0x00004000; - public const uint DeviceInitiatesSync = 0x00008000; // Indicates device is in control of initiating all syncs - public const uint ConnectIqWatchAppDownload = 0x00010000; - public const uint ConnectIqWidgetDownload = 0x00020000; - public const uint ConnectIqWatchFaceDownload = 0x00040000; - public const uint ConnectIqDataFieldDownload = 0x00080000; - public const uint ConnectIqAppManagment = 0x00100000; // Device supports delete and reorder of apps via GCM - public const uint SwingSensor = 0x00200000; - public const uint SwingSensorRemote = 0x00400000; - public const uint IncidentDetection = 0x00800000; // Device supports incident detection - public const uint AudioPrompts = 0x01000000; - public const uint WifiVerification = 0x02000000; // Device supports reporting wifi verification via GCM - public const uint TrueUp = 0x04000000; // Device supports True Up - public const uint FindMyWatch = 0x08000000; // Device supports Find My Watch - public const uint RemoteManualSync = 0x10000000; - public const uint LiveTrackAutoStart = 0x20000000; // Device supports LiveTrack auto start - public const uint LiveTrackMessaging = 0x40000000; // Device supports LiveTrack Messaging - public const uint InstantInput = 0x80000000; // Device supports instant input feature - public const uint Invalid = (uint)0x00000000; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CoreExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CoreExerciseName.cs deleted file mode 100644 index 2f615cfa6..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CoreExerciseName.cs +++ /dev/null @@ -1,100 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile CoreExerciseName type as a class - /// - public static class CoreExerciseName - { - public const ushort AbsJabs = 0; - public const ushort WeightedAbsJabs = 1; - public const ushort AlternatingPlateReach = 2; - public const ushort BarbellRollout = 3; - public const ushort WeightedBarbellRollout = 4; - public const ushort BodyBarObliqueTwist = 5; - public const ushort CableCorePress = 6; - public const ushort CableSideBend = 7; - public const ushort SideBend = 8; - public const ushort WeightedSideBend = 9; - public const ushort CrescentCircle = 10; - public const ushort WeightedCrescentCircle = 11; - public const ushort CyclingRussianTwist = 12; - public const ushort WeightedCyclingRussianTwist = 13; - public const ushort ElevatedFeetRussianTwist = 14; - public const ushort WeightedElevatedFeetRussianTwist = 15; - public const ushort HalfTurkishGetUp = 16; - public const ushort KettlebellWindmill = 17; - public const ushort KneelingAbWheel = 18; - public const ushort WeightedKneelingAbWheel = 19; - public const ushort ModifiedFrontLever = 20; - public const ushort OpenKneeTucks = 21; - public const ushort WeightedOpenKneeTucks = 22; - public const ushort SideAbsLegLift = 23; - public const ushort WeightedSideAbsLegLift = 24; - public const ushort SwissBallJackknife = 25; - public const ushort WeightedSwissBallJackknife = 26; - public const ushort SwissBallPike = 27; - public const ushort WeightedSwissBallPike = 28; - public const ushort SwissBallRollout = 29; - public const ushort WeightedSwissBallRollout = 30; - public const ushort TriangleHipPress = 31; - public const ushort WeightedTriangleHipPress = 32; - public const ushort TrxSuspendedJackknife = 33; - public const ushort WeightedTrxSuspendedJackknife = 34; - public const ushort UBoat = 35; - public const ushort WeightedUBoat = 36; - public const ushort WindmillSwitches = 37; - public const ushort WeightedWindmillSwitches = 38; - public const ushort AlternatingSlideOut = 39; - public const ushort WeightedAlternatingSlideOut = 40; - public const ushort GhdBackExtensions = 41; - public const ushort WeightedGhdBackExtensions = 42; - public const ushort OverheadWalk = 43; - public const ushort Inchworm = 44; - public const ushort WeightedModifiedFrontLever = 45; - public const ushort RussianTwist = 46; - public const ushort AbdominalLegRotations = 47; // Deprecated do not use - public const ushort ArmAndLegExtensionOnKnees = 48; - public const ushort Bicycle = 49; - public const ushort BicepCurlWithLegExtension = 50; - public const ushort CatCow = 51; - public const ushort Corkscrew = 52; - public const ushort CrissCross = 53; - public const ushort CrissCrossWithBall = 54; // Deprecated do not use - public const ushort DoubleLegStretch = 55; - public const ushort KneeFolds = 56; - public const ushort LowerLift = 57; - public const ushort NeckPull = 58; - public const ushort PelvicClocks = 59; - public const ushort RollOver = 60; - public const ushort RollUp = 61; - public const ushort Rolling = 62; - public const ushort Rowing1 = 63; - public const ushort Rowing2 = 64; - public const ushort Scissors = 65; - public const ushort SingleLegCircles = 66; - public const ushort SingleLegStretch = 67; - public const ushort SnakeTwist1And2 = 68; // Deprecated do not use - public const ushort Swan = 69; - public const ushort Swimming = 70; - public const ushort Teaser = 71; - public const ushort TheHundred = 72; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CourseCapabilities.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CourseCapabilities.cs deleted file mode 100644 index 44554bffd..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CourseCapabilities.cs +++ /dev/null @@ -1,39 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile CourseCapabilities type as a class - /// - public static class CourseCapabilities - { - public const uint Processed = 0x00000001; - public const uint Valid = 0x00000002; - public const uint Time = 0x00000004; - public const uint Distance = 0x00000008; - public const uint Position = 0x00000010; - public const uint HeartRate = 0x00000020; - public const uint Power = 0x00000040; - public const uint Cadence = 0x00000080; - public const uint Training = 0x00000100; - public const uint Navigation = 0x00000200; - public const uint Bikeway = 0x00000400; - public const uint Aviation = 0x00001000; // Denote course files to be used as flight plans - public const uint Invalid = (uint)0x00000000; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CoursePoint.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CoursePoint.cs deleted file mode 100644 index 1a51d2cbf..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CoursePoint.cs +++ /dev/null @@ -1,80 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile CoursePoint type as an enum - /// - public enum CoursePoint : byte - { - Generic = 0, - Summit = 1, - Valley = 2, - Water = 3, - Food = 4, - Danger = 5, - Left = 6, - Right = 7, - Straight = 8, - FirstAid = 9, - FourthCategory = 10, - ThirdCategory = 11, - SecondCategory = 12, - FirstCategory = 13, - HorsCategory = 14, - Sprint = 15, - LeftFork = 16, - RightFork = 17, - MiddleFork = 18, - SlightLeft = 19, - SharpLeft = 20, - SlightRight = 21, - SharpRight = 22, - UTurn = 23, - SegmentStart = 24, - SegmentEnd = 25, - Campsite = 27, - AidStation = 28, - RestArea = 29, - GeneralDistance = 30, - Service = 31, - EnergyGel = 32, - SportsDrink = 33, - MileMarker = 34, - Checkpoint = 35, - Shelter = 36, - MeetingSpot = 37, - Overlook = 38, - Toilet = 39, - Shower = 40, - Gear = 41, - SharpCurve = 42, - SteepIncline = 43, - Tunnel = 44, - Bridge = 45, - Obstacle = 46, - Crossing = 47, - Store = 48, - Transition = 49, - Navaid = 50, - Transport = 51, - Alert = 52, - Info = 53, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CrunchExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CrunchExerciseName.cs deleted file mode 100644 index 2e1ddb642..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CrunchExerciseName.cs +++ /dev/null @@ -1,112 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile CrunchExerciseName type as a class - /// - public static class CrunchExerciseName - { - public const ushort BicycleCrunch = 0; - public const ushort CableCrunch = 1; - public const ushort CircularArmCrunch = 2; - public const ushort CrossedArmsCrunch = 3; - public const ushort WeightedCrossedArmsCrunch = 4; - public const ushort CrossLegReverseCrunch = 5; - public const ushort WeightedCrossLegReverseCrunch = 6; - public const ushort CrunchChop = 7; - public const ushort WeightedCrunchChop = 8; - public const ushort DoubleCrunch = 9; - public const ushort WeightedDoubleCrunch = 10; - public const ushort ElbowToKneeCrunch = 11; - public const ushort WeightedElbowToKneeCrunch = 12; - public const ushort FlutterKicks = 13; - public const ushort WeightedFlutterKicks = 14; - public const ushort FoamRollerReverseCrunchOnBench = 15; - public const ushort WeightedFoamRollerReverseCrunchOnBench = 16; - public const ushort FoamRollerReverseCrunchWithDumbbell = 17; - public const ushort FoamRollerReverseCrunchWithMedicineBall = 18; - public const ushort FrogPress = 19; - public const ushort HangingKneeRaiseObliqueCrunch = 20; - public const ushort WeightedHangingKneeRaiseObliqueCrunch = 21; - public const ushort HipCrossover = 22; - public const ushort WeightedHipCrossover = 23; - public const ushort HollowRock = 24; - public const ushort WeightedHollowRock = 25; - public const ushort InclineReverseCrunch = 26; - public const ushort WeightedInclineReverseCrunch = 27; - public const ushort KneelingCableCrunch = 28; - public const ushort KneelingCrossCrunch = 29; - public const ushort WeightedKneelingCrossCrunch = 30; - public const ushort KneelingObliqueCableCrunch = 31; - public const ushort KneesToElbow = 32; - public const ushort LegExtensions = 33; - public const ushort WeightedLegExtensions = 34; - public const ushort LegLevers = 35; - public const ushort McgillCurlUp = 36; - public const ushort WeightedMcgillCurlUp = 37; - public const ushort ModifiedPilatesRollUpWithBall = 38; - public const ushort WeightedModifiedPilatesRollUpWithBall = 39; - public const ushort PilatesCrunch = 40; - public const ushort WeightedPilatesCrunch = 41; - public const ushort PilatesRollUpWithBall = 42; - public const ushort WeightedPilatesRollUpWithBall = 43; - public const ushort RaisedLegsCrunch = 44; - public const ushort WeightedRaisedLegsCrunch = 45; - public const ushort ReverseCrunch = 46; - public const ushort WeightedReverseCrunch = 47; - public const ushort ReverseCrunchOnABench = 48; - public const ushort WeightedReverseCrunchOnABench = 49; - public const ushort ReverseCurlAndLift = 50; - public const ushort WeightedReverseCurlAndLift = 51; - public const ushort RotationalLift = 52; - public const ushort WeightedRotationalLift = 53; - public const ushort SeatedAlternatingReverseCrunch = 54; - public const ushort WeightedSeatedAlternatingReverseCrunch = 55; - public const ushort SeatedLegU = 56; - public const ushort WeightedSeatedLegU = 57; - public const ushort SideToSideCrunchAndWeave = 58; - public const ushort WeightedSideToSideCrunchAndWeave = 59; - public const ushort SingleLegReverseCrunch = 60; - public const ushort WeightedSingleLegReverseCrunch = 61; - public const ushort SkaterCrunchCross = 62; - public const ushort WeightedSkaterCrunchCross = 63; - public const ushort StandingCableCrunch = 64; - public const ushort StandingSideCrunch = 65; - public const ushort StepClimb = 66; - public const ushort WeightedStepClimb = 67; - public const ushort SwissBallCrunch = 68; - public const ushort SwissBallReverseCrunch = 69; - public const ushort WeightedSwissBallReverseCrunch = 70; - public const ushort SwissBallRussianTwist = 71; - public const ushort WeightedSwissBallRussianTwist = 72; - public const ushort SwissBallSideCrunch = 73; - public const ushort WeightedSwissBallSideCrunch = 74; - public const ushort ThoracicCrunchesOnFoamRoller = 75; - public const ushort WeightedThoracicCrunchesOnFoamRoller = 76; - public const ushort TricepsCrunch = 77; - public const ushort WeightedBicycleCrunch = 78; - public const ushort WeightedCrunch = 79; - public const ushort WeightedSwissBallCrunch = 80; - public const ushort ToesToBar = 81; - public const ushort WeightedToesToBar = 82; - public const ushort Crunch = 83; - public const ushort StraightLegCrunchWithBall = 84; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CurlExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CurlExerciseName.cs deleted file mode 100644 index bc5195367..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/CurlExerciseName.cs +++ /dev/null @@ -1,71 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile CurlExerciseName type as a class - /// - public static class CurlExerciseName - { - public const ushort AlternatingDumbbellBicepsCurl = 0; - public const ushort AlternatingDumbbellBicepsCurlOnSwissBall = 1; - public const ushort AlternatingInclineDumbbellBicepsCurl = 2; - public const ushort BarbellBicepsCurl = 3; - public const ushort BarbellReverseWristCurl = 4; - public const ushort BarbellWristCurl = 5; - public const ushort BehindTheBackBarbellReverseWristCurl = 6; - public const ushort BehindTheBackOneArmCableCurl = 7; - public const ushort CableBicepsCurl = 8; - public const ushort CableHammerCurl = 9; - public const ushort CheatingBarbellBicepsCurl = 10; - public const ushort CloseGripEzBarBicepsCurl = 11; - public const ushort CrossBodyDumbbellHammerCurl = 12; - public const ushort DeadHangBicepsCurl = 13; - public const ushort DeclineHammerCurl = 14; - public const ushort DumbbellBicepsCurlWithStaticHold = 15; - public const ushort DumbbellHammerCurl = 16; - public const ushort DumbbellReverseWristCurl = 17; - public const ushort DumbbellWristCurl = 18; - public const ushort EzBarPreacherCurl = 19; - public const ushort ForwardBendBicepsCurl = 20; - public const ushort HammerCurlToPress = 21; - public const ushort InclineDumbbellBicepsCurl = 22; - public const ushort InclineOffsetThumbDumbbellCurl = 23; - public const ushort KettlebellBicepsCurl = 24; - public const ushort LyingConcentrationCableCurl = 25; - public const ushort OneArmPreacherCurl = 26; - public const ushort PlatePinchCurl = 27; - public const ushort PreacherCurlWithCable = 28; - public const ushort ReverseEzBarCurl = 29; - public const ushort ReverseGripWristCurl = 30; - public const ushort ReverseGripBarbellBicepsCurl = 31; - public const ushort SeatedAlternatingDumbbellBicepsCurl = 32; - public const ushort SeatedDumbbellBicepsCurl = 33; - public const ushort SeatedReverseDumbbellCurl = 34; - public const ushort SplitStanceOffsetPinkyDumbbellCurl = 35; - public const ushort StandingAlternatingDumbbellCurls = 36; - public const ushort StandingDumbbellBicepsCurl = 37; - public const ushort StandingEzBarBicepsCurl = 38; - public const ushort StaticCurl = 39; - public const ushort SwissBallDumbbellOverheadTricepsExtension = 40; - public const ushort SwissBallEzBarPreacherCurl = 41; - public const ushort TwistingStandingDumbbellBicepsCurl = 42; - public const ushort WideGripEzBarBicepsCurl = 43; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DateMode.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DateMode.cs deleted file mode 100644 index 8767137fa..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DateMode.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DateMode type as an enum - /// - public enum DateMode : byte - { - DayMonth = 0, - MonthDay = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DateTime.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DateTime.cs deleted file mode 100644 index 603d6f1f9..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DateTime.cs +++ /dev/null @@ -1,146 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - /// - /// The DateTime class implements the Fit date_time type which references - /// UTC 00:00 Dec 31 1989 in second resolution - /// - public class DateTime - { - #region Fields - private double fractionalTimeStamp; - private uint timeStamp; - // if date_time is < 0x10000000 then it is system time (seconds from device power on) - // 0x10000000 => uptime of 8years => earliest date you can express ~1997 - private uint min = 0x10000000; - // .NET datetime uses 100ns ticks starting 12:00:00 midnight, January 1, 0001 - public System.DateTime offset = new System.DateTime(1989, 12, 31, 0, 0, 0, System.DateTimeKind.Utc); - #endregion // Fields - - #region Properties - - #endregion // Properties - - #region Constructors - public DateTime(uint timeStamp) - { - this.timeStamp = timeStamp; - this.fractionalTimeStamp = 0.0; - } - - public DateTime(System.DateTime dateTime) - { - timeStamp = (uint)((dateTime.Ticks - offset.Ticks) / 10000000); - fractionalTimeStamp = (((dateTime.Ticks - offset.Ticks) % 10000000) / 10000000.0); - } - - public DateTime(Dynastream.Fit.DateTime dateTime) - : this(dateTime.GetTimeStamp(), dateTime.GetFractionalTimeStamp()) - { - - } - - public DateTime(uint timeStamp, double fractionalTimeStamp) - { - this.timeStamp = timeStamp + (uint)Math.Floor(fractionalTimeStamp); - this.fractionalTimeStamp = fractionalTimeStamp - (double)Math.Floor(fractionalTimeStamp); - } - #endregion // Constructors - - #region Methods - public bool Equals(DateTime dateTime) - { - return (this.GetTimeStamp().Equals(dateTime.GetTimeStamp()) && (this.GetFractionalTimeStamp().Equals(dateTime.GetFractionalTimeStamp()))); - } - - public uint GetTimeStamp() - { - return timeStamp; - } - - public double GetFractionalTimeStamp() - { - return fractionalTimeStamp; - } - - public void ConvertSystemTimeToUTC(uint systemTimeOffset) - { - if (timeStamp < min) - { - timeStamp += systemTimeOffset; - } - } - - public System.DateTime GetDateTime() - { - return System.DateTime.SpecifyKind(new System.DateTime(timeStamp * 10000000L + offset.Ticks + (long)(fractionalTimeStamp * 10000000L)), DateTimeKind.Utc); - } - - new public string ToString() - { - return GetDateTime().ToString(); - } - - public void Add(DateTime dateTime) - { - this.timeStamp += dateTime.GetTimeStamp(); - this.fractionalTimeStamp += dateTime.GetFractionalTimeStamp(); - - // Adjust fractional part to be less that 1 - this.timeStamp += (uint)Math.Floor(this.fractionalTimeStamp); - this.fractionalTimeStamp -= (float)Math.Floor(this.fractionalTimeStamp); - } - - public void Add(uint timeStamp) - { - this.Add(new DateTime(timeStamp)); - } - - public void Add(double fractionalTimeStamp) - { - this.Add(new DateTime(0, fractionalTimeStamp)); - } - - //Returns 0 if DateTimes are equal - //Returns -1 if t1 > target object (this) - //Returns 1 if target object (this) > t1 - //If timeStamps are equal, fractional timestamps are compared - public int CompareTo(DateTime t1) - { - // fractional_timestamp is guaranteed to be less that 1 which allows simplified comparison below - if (this.timeStamp == t1.GetTimeStamp()) - { - // Timestamps are equal; must compare fractional part. - return this.fractionalTimeStamp.CompareTo(t1.GetFractionalTimeStamp()); - } - else if (this.timeStamp > t1.GetTimeStamp()) - { - return 1; - } - else - { - return -1; - } - } - #endregion // Methods - } // class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DayOfWeek.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DayOfWeek.cs deleted file mode 100644 index 7cf9dbfe4..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DayOfWeek.cs +++ /dev/null @@ -1,34 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DayOfWeek type as an enum - /// - public enum DayOfWeek : byte - { - Sunday = 0, - Monday = 1, - Tuesday = 2, - Wednesday = 3, - Thursday = 4, - Friday = 5, - Saturday = 6, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DeadliftExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DeadliftExerciseName.cs deleted file mode 100644 index 64cc6d4a1..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DeadliftExerciseName.cs +++ /dev/null @@ -1,46 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DeadliftExerciseName type as a class - /// - public static class DeadliftExerciseName - { - public const ushort BarbellDeadlift = 0; - public const ushort BarbellStraightLegDeadlift = 1; - public const ushort DumbbellDeadlift = 2; - public const ushort DumbbellSingleLegDeadliftToRow = 3; - public const ushort DumbbellStraightLegDeadlift = 4; - public const ushort KettlebellFloorToShelf = 5; - public const ushort OneArmOneLegDeadlift = 6; - public const ushort RackPull = 7; - public const ushort RotationalDumbbellStraightLegDeadlift = 8; - public const ushort SingleArmDeadlift = 9; - public const ushort SingleLegBarbellDeadlift = 10; - public const ushort SingleLegBarbellStraightLegDeadlift = 11; - public const ushort SingleLegDeadliftWithBarbell = 12; - public const ushort SingleLegRdlCircuit = 13; - public const ushort SingleLegRomanianDeadliftWithDumbbell = 14; - public const ushort SumoDeadlift = 15; - public const ushort SumoDeadliftHighPull = 16; - public const ushort TrapBarDeadlift = 17; - public const ushort WideGripBarbellDeadlift = 18; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DeviceIndex.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DeviceIndex.cs deleted file mode 100644 index f01b96235..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DeviceIndex.cs +++ /dev/null @@ -1,28 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DeviceIndex type as a class - /// - public static class DeviceIndex - { - public const byte Creator = 0; // Creator of the file is always device index 0. - public const byte Invalid = (byte)0xFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DigitalWatchfaceLayout.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DigitalWatchfaceLayout.cs deleted file mode 100644 index 5e52119a2..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DigitalWatchfaceLayout.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DigitalWatchfaceLayout type as an enum - /// - public enum DigitalWatchfaceLayout : byte - { - Traditional = 0, - Modern = 1, - Bold = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DisplayHeart.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DisplayHeart.cs deleted file mode 100644 index 1ae577379..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DisplayHeart.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DisplayHeart type as an enum - /// - public enum DisplayHeart : byte - { - Bpm = 0, - Max = 1, - Reserve = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DisplayMeasure.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DisplayMeasure.cs deleted file mode 100644 index e38417fa9..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DisplayMeasure.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DisplayMeasure type as an enum - /// - public enum DisplayMeasure : byte - { - Metric = 0, - Statute = 1, - Nautical = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DisplayOrientation.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DisplayOrientation.cs deleted file mode 100644 index 126604590..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DisplayOrientation.cs +++ /dev/null @@ -1,32 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DisplayOrientation type as an enum - /// - public enum DisplayOrientation : byte - { - Auto = 0, - Portrait = 1, - Landscape = 2, - PortraitFlipped = 3, - LandscapeFlipped = 4, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DisplayPosition.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DisplayPosition.cs deleted file mode 100644 index 7c1adc4f1..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DisplayPosition.cs +++ /dev/null @@ -1,69 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DisplayPosition type as an enum - /// - public enum DisplayPosition : byte - { - Degree = 0, - DegreeMinute = 1, - DegreeMinuteSecond = 2, - AustrianGrid = 3, - BritishGrid = 4, - DutchGrid = 5, - HungarianGrid = 6, - FinnishGrid = 7, - GermanGrid = 8, - IcelandicGrid = 9, - IndonesianEquatorial = 10, - IndonesianIrian = 11, - IndonesianSouthern = 12, - IndiaZone0 = 13, - IndiaZoneIA = 14, - IndiaZoneIB = 15, - IndiaZoneIIA = 16, - IndiaZoneIIB = 17, - IndiaZoneIIIA = 18, - IndiaZoneIIIB = 19, - IndiaZoneIVA = 20, - IndiaZoneIVB = 21, - IrishTransverse = 22, - IrishGrid = 23, - Loran = 24, - MaidenheadGrid = 25, - MgrsGrid = 26, - NewZealandGrid = 27, - NewZealandTransverse = 28, - QatarGrid = 29, - ModifiedSwedishGrid = 30, - SwedishGrid = 31, - SouthAfricanGrid = 32, - SwissGrid = 33, - TaiwanGrid = 34, - UnitedStatesGrid = 35, - UtmUpsGrid = 36, - WestMalayan = 37, - BorneoRso = 38, - EstonianGrid = 39, - LatvianGrid = 40, - SwedishRef99Grid = 41, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DisplayPower.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DisplayPower.cs deleted file mode 100644 index 6c8dd8c4b..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DisplayPower.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DisplayPower type as an enum - /// - public enum DisplayPower : byte - { - Watts = 0, - PercentFtp = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DiveAlarmType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DiveAlarmType.cs deleted file mode 100644 index 0b8b2199a..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DiveAlarmType.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DiveAlarmType type as an enum - /// - public enum DiveAlarmType : byte - { - Depth = 0, - Time = 1, - Speed = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DiveAlert.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DiveAlert.cs deleted file mode 100644 index 6b71b220e..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DiveAlert.cs +++ /dev/null @@ -1,66 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DiveAlert type as an enum - /// - public enum DiveAlert : byte - { - NdlReached = 0, - GasSwitchPrompted = 1, - NearSurface = 2, - ApproachingNdl = 3, - Po2Warn = 4, - Po2CritHigh = 5, - Po2CritLow = 6, - TimeAlert = 7, - DepthAlert = 8, - DecoCeilingBroken = 9, - DecoComplete = 10, - SafetyStopBroken = 11, - SafetyStopComplete = 12, - CnsWarning = 13, - CnsCritical = 14, - OtuWarning = 15, - OtuCritical = 16, - AscentCritical = 17, - AlertDismissedByKey = 18, - AlertDismissedByTimeout = 19, - BatteryLow = 20, - BatteryCritical = 21, - SafetyStopStarted = 22, - ApproachingFirstDecoStop = 23, - SetpointSwitchAutoLow = 24, - SetpointSwitchAutoHigh = 25, - SetpointSwitchManualLow = 26, - SetpointSwitchManualHigh = 27, - AutoSetpointSwitchIgnored = 28, - SwitchedToOpenCircuit = 29, - SwitchedToClosedCircuit = 30, - TankBatteryLow = 32, - Po2CcrDilLow = 33, - DecoStopCleared = 34, - ApneaNeutralBuoyancy = 35, - ApneaTargetDepth = 36, - ApneaSurface = 37, - ApneaHighSpeed = 38, - ApneaLowSpeed = 39, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DiveBacklightMode.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DiveBacklightMode.cs deleted file mode 100644 index ae1aaf7e8..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DiveBacklightMode.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DiveBacklightMode type as an enum - /// - public enum DiveBacklightMode : byte - { - AtDepth = 0, - AlwaysOn = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DiveGasMode.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DiveGasMode.cs deleted file mode 100644 index 25b7a5a83..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DiveGasMode.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DiveGasMode type as an enum - /// - public enum DiveGasMode : byte - { - OpenCircuit = 0, - ClosedCircuitDiluent = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DiveGasStatus.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DiveGasStatus.cs deleted file mode 100644 index b965e24ec..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/DiveGasStatus.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DiveGasStatus type as an enum - /// - public enum DiveGasStatus : byte - { - Disabled = 0, - Enabled = 1, - BackupOnly = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Event.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Event.cs deleted file mode 100644 index a220f69c5..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Event.cs +++ /dev/null @@ -1,72 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Event type as an enum - /// - public enum Event : byte - { - Timer = 0, - Workout = 3, - WorkoutStep = 4, - PowerDown = 5, - PowerUp = 6, - OffCourse = 7, - Session = 8, - Lap = 9, - CoursePoint = 10, - Battery = 11, - VirtualPartnerPace = 12, - HrHighAlert = 13, - HrLowAlert = 14, - SpeedHighAlert = 15, - SpeedLowAlert = 16, - CadHighAlert = 17, - CadLowAlert = 18, - PowerHighAlert = 19, - PowerLowAlert = 20, - RecoveryHr = 21, - BatteryLow = 22, - TimeDurationAlert = 23, - DistanceDurationAlert = 24, - CalorieDurationAlert = 25, - Activity = 26, - FitnessEquipment = 27, - Length = 28, - UserMarker = 32, - SportPoint = 33, - Calibration = 36, - FrontGearChange = 42, - RearGearChange = 43, - RiderPositionChange = 44, - ElevHighAlert = 45, - ElevLowAlert = 46, - CommTimeout = 47, - DiveAlert = 56, - DiveGasSwitched = 57, - TankPressureReserve = 71, - TankPressureCritical = 72, - TankLost = 73, - RadarThreatAlert = 75, - TankBatteryLow = 76, - TankPodConnected = 81, - TankPodDisconnected = 82, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/EventType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/EventType.cs deleted file mode 100644 index 0618bd5f4..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/EventType.cs +++ /dev/null @@ -1,37 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile EventType type as an enum - /// - public enum EventType : byte - { - Start = 0, - Stop = 1, - ConsecutiveDepreciated = 2, - Marker = 3, - StopAll = 4, - BeginDepreciated = 5, - EndDepreciated = 6, - EndAllDepreciated = 7, - StopDisable = 8, - StopDisableAll = 9, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ExdDataUnits.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ExdDataUnits.cs deleted file mode 100644 index 15a5db61c..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ExdDataUnits.cs +++ /dev/null @@ -1,77 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ExdDataUnits type as an enum - /// - public enum ExdDataUnits : byte - { - NoUnits = 0, - Laps = 1, - MilesPerHour = 2, - KilometersPerHour = 3, - FeetPerHour = 4, - MetersPerHour = 5, - DegreesCelsius = 6, - DegreesFarenheit = 7, - Zone = 8, - Gear = 9, - Rpm = 10, - Bpm = 11, - Degrees = 12, - Millimeters = 13, - Meters = 14, - Kilometers = 15, - Feet = 16, - Yards = 17, - Kilofeet = 18, - Miles = 19, - Time = 20, - EnumTurnType = 21, - Percent = 22, - Watts = 23, - WattsPerKilogram = 24, - EnumBatteryStatus = 25, - EnumBikeLightBeamAngleMode = 26, - EnumBikeLightBatteryStatus = 27, - EnumBikeLightNetworkConfigType = 28, - Lights = 29, - Seconds = 30, - Minutes = 31, - Hours = 32, - Calories = 33, - Kilojoules = 34, - Milliseconds = 35, - SecondPerMile = 36, - SecondPerKilometer = 37, - Centimeter = 38, - EnumCoursePoint = 39, - Bradians = 40, - EnumSport = 41, - InchesHg = 42, - MmHg = 43, - Mbars = 44, - HectoPascals = 45, - FeetPerMin = 46, - MetersPerMin = 47, - MetersPerSec = 48, - EightCardinal = 49, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ExdDescriptors.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ExdDescriptors.cs deleted file mode 100644 index 8c44b2bbb..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ExdDescriptors.cs +++ /dev/null @@ -1,124 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ExdDescriptors type as an enum - /// - public enum ExdDescriptors : byte - { - BikeLightBatteryStatus = 0, - BeamAngleStatus = 1, - BateryLevel = 2, - LightNetworkMode = 3, - NumberLightsConnected = 4, - Cadence = 5, - Distance = 6, - EstimatedTimeOfArrival = 7, - Heading = 8, - Time = 9, - BatteryLevel = 10, - TrainerResistance = 11, - TrainerTargetPower = 12, - TimeSeated = 13, - TimeStanding = 14, - Elevation = 15, - Grade = 16, - Ascent = 17, - Descent = 18, - VerticalSpeed = 19, - Di2BatteryLevel = 20, - FrontGear = 21, - RearGear = 22, - GearRatio = 23, - HeartRate = 24, - HeartRateZone = 25, - TimeInHeartRateZone = 26, - HeartRateReserve = 27, - Calories = 28, - GpsAccuracy = 29, - GpsSignalStrength = 30, - Temperature = 31, - TimeOfDay = 32, - Balance = 33, - PedalSmoothness = 34, - Power = 35, - FunctionalThresholdPower = 36, - IntensityFactor = 37, - Work = 38, - PowerRatio = 39, - NormalizedPower = 40, - TrainingStressScore = 41, - TimeOnZone = 42, - Speed = 43, - Laps = 44, - Reps = 45, - WorkoutStep = 46, - CourseDistance = 47, - NavigationDistance = 48, - CourseEstimatedTimeOfArrival = 49, - NavigationEstimatedTimeOfArrival = 50, - CourseTime = 51, - NavigationTime = 52, - CourseHeading = 53, - NavigationHeading = 54, - PowerZone = 55, - TorqueEffectiveness = 56, - TimerTime = 57, - PowerWeightRatio = 58, - LeftPlatformCenterOffset = 59, - RightPlatformCenterOffset = 60, - LeftPowerPhaseStartAngle = 61, - RightPowerPhaseStartAngle = 62, - LeftPowerPhaseFinishAngle = 63, - RightPowerPhaseFinishAngle = 64, - Gears = 65, - Pace = 66, - TrainingEffect = 67, - VerticalOscillation = 68, - VerticalRatio = 69, - GroundContactTime = 70, - LeftGroundContactTimeBalance = 71, - RightGroundContactTimeBalance = 72, - StrideLength = 73, - RunningCadence = 74, - PerformanceCondition = 75, - CourseType = 76, - TimeInPowerZone = 77, - NavigationTurn = 78, - CourseLocation = 79, - NavigationLocation = 80, - Compass = 81, - GearCombo = 82, - MuscleOxygen = 83, - Icon = 84, - CompassHeading = 85, - GpsHeading = 86, - GpsElevation = 87, - AnaerobicTrainingEffect = 88, - Course = 89, - OffCourse = 90, - GlideRatio = 91, - VerticalDistance = 92, - Vmg = 93, - AmbientPressure = 94, - Pressure = 95, - Vam = 96, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ExdDisplayType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ExdDisplayType.cs deleted file mode 100644 index dd44c919c..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ExdDisplayType.cs +++ /dev/null @@ -1,38 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ExdDisplayType type as an enum - /// - public enum ExdDisplayType : byte - { - Numerical = 0, - Simple = 1, - Graph = 2, - Bar = 3, - CircleGraph = 4, - VirtualPartner = 5, - Balance = 6, - StringList = 7, - String = 8, - SimpleDynamicIcon = 9, - Gauge = 10, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ExdLayout.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ExdLayout.cs deleted file mode 100644 index 8250c79c8..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ExdLayout.cs +++ /dev/null @@ -1,36 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ExdLayout type as an enum - /// - public enum ExdLayout : byte - { - FullScreen = 0, - HalfVertical = 1, - HalfHorizontal = 2, - HalfVerticalRightSplit = 3, - HalfHorizontalBottomSplit = 4, - FullQuarterSplit = 5, - HalfVerticalLeftSplit = 6, - HalfHorizontalTopSplit = 7, - Dynamic = 8, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ExdQualifiers.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ExdQualifiers.cs deleted file mode 100644 index f8800226e..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ExdQualifiers.cs +++ /dev/null @@ -1,71 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ExdQualifiers type as an enum - /// - public enum ExdQualifiers : byte - { - NoQualifier = 0, - Instantaneous = 1, - Average = 2, - Lap = 3, - Maximum = 4, - MaximumAverage = 5, - MaximumLap = 6, - LastLap = 7, - AverageLap = 8, - ToDestination = 9, - ToGo = 10, - ToNext = 11, - NextCoursePoint = 12, - Total = 13, - ThreeSecondAverage = 14, - TenSecondAverage = 15, - ThirtySecondAverage = 16, - PercentMaximum = 17, - PercentMaximumAverage = 18, - LapPercentMaximum = 19, - Elapsed = 20, - Sunrise = 21, - Sunset = 22, - ComparedToVirtualPartner = 23, - Maximum24h = 24, - Minimum24h = 25, - Minimum = 26, - First = 27, - Second = 28, - Third = 29, - Shifter = 30, - LastSport = 31, - Moving = 32, - Stopped = 33, - EstimatedTotal = 34, - Zone9 = 242, - Zone8 = 243, - Zone7 = 244, - Zone6 = 245, - Zone5 = 246, - Zone4 = 247, - Zone3 = 248, - Zone2 = 249, - Zone1 = 250, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ExerciseCategory.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ExerciseCategory.cs deleted file mode 100644 index 511d0b6dc..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ExerciseCategory.cs +++ /dev/null @@ -1,61 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ExerciseCategory type as a class - /// - public static class ExerciseCategory - { - public const ushort BenchPress = 0; - public const ushort CalfRaise = 1; - public const ushort Cardio = 2; - public const ushort Carry = 3; - public const ushort Chop = 4; - public const ushort Core = 5; - public const ushort Crunch = 6; - public const ushort Curl = 7; - public const ushort Deadlift = 8; - public const ushort Flye = 9; - public const ushort HipRaise = 10; - public const ushort HipStability = 11; - public const ushort HipSwing = 12; - public const ushort Hyperextension = 13; - public const ushort LateralRaise = 14; - public const ushort LegCurl = 15; - public const ushort LegRaise = 16; - public const ushort Lunge = 17; - public const ushort OlympicLift = 18; - public const ushort Plank = 19; - public const ushort Plyo = 20; - public const ushort PullUp = 21; - public const ushort PushUp = 22; - public const ushort Row = 23; - public const ushort ShoulderPress = 24; - public const ushort ShoulderStability = 25; - public const ushort Shrug = 26; - public const ushort SitUp = 27; - public const ushort Squat = 28; - public const ushort TotalBody = 29; - public const ushort TricepsExtension = 30; - public const ushort WarmUp = 31; - public const ushort Run = 32; - public const ushort Unknown = 65534; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/FaveroProduct.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/FaveroProduct.cs deleted file mode 100644 index 39eabfad7..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/FaveroProduct.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile FaveroProduct type as a class - /// - public static class FaveroProduct - { - public const ushort AssiomaUno = 10; - public const ushort AssiomaDuo = 12; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/File.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/File.cs deleted file mode 100644 index b1ede409a..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/File.cs +++ /dev/null @@ -1,47 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile File type as an enum - /// - public enum File : byte - { - Device = 1, - Settings = 2, - Sport = 3, - Activity = 4, - Workout = 5, - Course = 6, - Schedules = 7, - Weight = 9, - Totals = 10, - Goals = 11, - BloodPressure = 14, - MonitoringA = 15, - ActivitySummary = 20, - MonitoringDaily = 28, - MonitoringB = 32, - Segment = 34, - SegmentList = 35, - ExdConfiguration = 40, - MfgRangeMin = 0xF7, - MfgRangeMax = 0xFE, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/FileFlags.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/FileFlags.cs deleted file mode 100644 index cd278e416..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/FileFlags.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile FileFlags type as a class - /// - public static class FileFlags - { - public const byte Read = 0x02; - public const byte Write = 0x04; - public const byte Erase = 0x08; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/FitBaseType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/FitBaseType.cs deleted file mode 100644 index 886437c73..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/FitBaseType.cs +++ /dev/null @@ -1,118 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile FitBaseType type as a class - /// - public static class FitBaseType - { - public const byte Enum = 0; - public const byte Sint8 = 1; - public const byte Uint8 = 2; - public const byte Sint16 = 131; - public const byte Uint16 = 132; - public const byte Sint32 = 133; - public const byte Uint32 = 134; - public const byte String = 7; - public const byte Float32 = 136; - public const byte Float64 = 137; - public const byte Uint8z = 10; - public const byte Uint16z = 139; - public const byte Uint32z = 140; - public const byte Byte = 13; - public const byte Sint64 = 142; - public const byte Uint64 = 143; - public const byte Uint64z = 144; - public const byte Invalid = (byte)0xFF; - - - public static bool IsNumericInvalid(long value, byte type) - { - bool isInvalid = false; - - switch(type) - { - case Enum: - case Byte: - case Uint8: - case Uint8z: - { - byte val = (byte)Fit.BaseType[type & Fit.BaseTypeNumMask].invalidValue; - if ((byte)value == val) - isInvalid = true; - break; - } - case Sint8: - { - sbyte val = (sbyte)Fit.BaseType[type & Fit.BaseTypeNumMask].invalidValue; - if ((sbyte)value == val) - isInvalid = true; - break; - } - case Sint16: - { - short val = (short)Fit.BaseType[type & Fit.BaseTypeNumMask].invalidValue; - if ((short)value == val) - isInvalid = true; - break; - } - case Uint16: - case Uint16z: - { - ushort val = (ushort)Fit.BaseType[type & Fit.BaseTypeNumMask].invalidValue; - if ((ushort)value == val) - isInvalid = true; - break; - } - case Sint32: - { - int val = (int)Fit.BaseType[type & Fit.BaseTypeNumMask].invalidValue; - if ((int)value == val) - isInvalid = true; - break; - } - case Uint32: - case Uint32z: - { - uint val = (uint)Fit.BaseType[type & Fit.BaseTypeNumMask].invalidValue; - if (((uint)value) == val) - isInvalid = true; - break; - } - case Float32: - { - float val = (float)Fit.BaseType[type & Fit.BaseTypeNumMask].invalidValue; - if ((float)value == val) - isInvalid = true; - break; - } - case Float64: - { - double val = (double)Fit.BaseType[type & Fit.BaseTypeNumMask].invalidValue; - if ((double)value == val) - isInvalid = true; - break; - } - default: - isInvalid = true; - break; - } - - return isInvalid; - } - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/FitBaseUnit.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/FitBaseUnit.cs deleted file mode 100644 index 18e3cf343..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/FitBaseUnit.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile FitBaseUnit type as a class - /// - public static class FitBaseUnit - { - public const ushort Other = 0; - public const ushort Kilogram = 1; - public const ushort Pound = 2; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/FitnessEquipmentState.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/FitnessEquipmentState.cs deleted file mode 100644 index 201f7c60c..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/FitnessEquipmentState.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile FitnessEquipmentState type as an enum - /// - public enum FitnessEquipmentState : byte - { - Ready = 0, - InUse = 1, - Paused = 2, - Unknown = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/FlyeExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/FlyeExerciseName.cs deleted file mode 100644 index ae863d5f1..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/FlyeExerciseName.cs +++ /dev/null @@ -1,37 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile FlyeExerciseName type as a class - /// - public static class FlyeExerciseName - { - public const ushort CableCrossover = 0; - public const ushort DeclineDumbbellFlye = 1; - public const ushort DumbbellFlye = 2; - public const ushort InclineDumbbellFlye = 3; - public const ushort KettlebellFlye = 4; - public const ushort KneelingRearFlye = 5; - public const ushort SingleArmStandingCableReverseFlye = 6; - public const ushort SwissBallDumbbellFlye = 7; - public const ushort ArmRotations = 8; - public const ushort HugATree = 9; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/GarminProduct.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/GarminProduct.cs deleted file mode 100644 index ccef9309a..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/GarminProduct.cs +++ /dev/null @@ -1,432 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile GarminProduct type as a class - /// - public static class GarminProduct - { - public const ushort Hrm1 = 1; - public const ushort Axh01 = 2; // AXH01 HRM chipset - public const ushort Axb01 = 3; - public const ushort Axb02 = 4; - public const ushort Hrm2ss = 5; - public const ushort DsiAlf02 = 6; - public const ushort Hrm3ss = 7; - public const ushort HrmRunSingleByteProductId = 8; // hrm_run model for HRM ANT+ messaging - public const ushort Bsm = 9; // BSM model for ANT+ messaging - public const ushort Bcm = 10; // BCM model for ANT+ messaging - public const ushort Axs01 = 11; // AXS01 HRM Bike Chipset model for ANT+ messaging - public const ushort HrmTriSingleByteProductId = 12; // hrm_tri model for HRM ANT+ messaging - public const ushort Hrm4RunSingleByteProductId = 13; // hrm4 run model for HRM ANT+ messaging - public const ushort Fr225SingleByteProductId = 14; // fr225 model for HRM ANT+ messaging - public const ushort Gen3BsmSingleByteProductId = 15; // gen3_bsm model for Bike Speed ANT+ messaging - public const ushort Gen3BcmSingleByteProductId = 16; // gen3_bcm model for Bike Cadence ANT+ messaging - public const ushort OHR = 255; // Garmin Wearable Optical Heart Rate Sensor for ANT+ HR Profile Broadcasting - public const ushort Fr301China = 473; - public const ushort Fr301Japan = 474; - public const ushort Fr301Korea = 475; - public const ushort Fr301Taiwan = 494; - public const ushort Fr405 = 717; // Forerunner 405 - public const ushort Fr50 = 782; // Forerunner 50 - public const ushort Fr405Japan = 987; - public const ushort Fr60 = 988; // Forerunner 60 - public const ushort DsiAlf01 = 1011; - public const ushort Fr310xt = 1018; // Forerunner 310 - public const ushort Edge500 = 1036; - public const ushort Fr110 = 1124; // Forerunner 110 - public const ushort Edge800 = 1169; - public const ushort Edge500Taiwan = 1199; - public const ushort Edge500Japan = 1213; - public const ushort Chirp = 1253; - public const ushort Fr110Japan = 1274; - public const ushort Edge200 = 1325; - public const ushort Fr910xt = 1328; - public const ushort Edge800Taiwan = 1333; - public const ushort Edge800Japan = 1334; - public const ushort Alf04 = 1341; - public const ushort Fr610 = 1345; - public const ushort Fr210Japan = 1360; - public const ushort VectorSs = 1380; - public const ushort VectorCp = 1381; - public const ushort Edge800China = 1386; - public const ushort Edge500China = 1387; - public const ushort ApproachG10 = 1405; - public const ushort Fr610Japan = 1410; - public const ushort Edge500Korea = 1422; - public const ushort Fr70 = 1436; - public const ushort Fr310xt4t = 1446; - public const ushort Amx = 1461; - public const ushort Fr10 = 1482; - public const ushort Edge800Korea = 1497; - public const ushort Swim = 1499; - public const ushort Fr910xtChina = 1537; - public const ushort Fenix = 1551; - public const ushort Edge200Taiwan = 1555; - public const ushort Edge510 = 1561; - public const ushort Edge810 = 1567; - public const ushort Tempe = 1570; - public const ushort Fr910xtJapan = 1600; - public const ushort Fr620 = 1623; - public const ushort Fr220 = 1632; - public const ushort Fr910xtKorea = 1664; - public const ushort Fr10Japan = 1688; - public const ushort Edge810Japan = 1721; - public const ushort VirbElite = 1735; - public const ushort EdgeTouring = 1736; // Also Edge Touring Plus - public const ushort Edge510Japan = 1742; - public const ushort HrmTri = 1743; // Also HRM-Swim - public const ushort HrmRun = 1752; - public const ushort Fr920xt = 1765; - public const ushort Edge510Asia = 1821; - public const ushort Edge810China = 1822; - public const ushort Edge810Taiwan = 1823; - public const ushort Edge1000 = 1836; - public const ushort VivoFit = 1837; - public const ushort VirbRemote = 1853; - public const ushort VivoKi = 1885; - public const ushort Fr15 = 1903; - public const ushort VivoActive = 1907; - public const ushort Edge510Korea = 1918; - public const ushort Fr620Japan = 1928; - public const ushort Fr620China = 1929; - public const ushort Fr220Japan = 1930; - public const ushort Fr220China = 1931; - public const ushort ApproachS6 = 1936; - public const ushort VivoSmart = 1956; - public const ushort Fenix2 = 1967; - public const ushort Epix = 1988; - public const ushort Fenix3 = 2050; - public const ushort Edge1000Taiwan = 2052; - public const ushort Edge1000Japan = 2053; - public const ushort Fr15Japan = 2061; - public const ushort Edge520 = 2067; - public const ushort Edge1000China = 2070; - public const ushort Fr620Russia = 2072; - public const ushort Fr220Russia = 2073; - public const ushort VectorS = 2079; - public const ushort Edge1000Korea = 2100; - public const ushort Fr920xtTaiwan = 2130; - public const ushort Fr920xtChina = 2131; - public const ushort Fr920xtJapan = 2132; - public const ushort Virbx = 2134; - public const ushort VivoSmartApac = 2135; - public const ushort EtrexTouch = 2140; - public const ushort Edge25 = 2147; - public const ushort Fr25 = 2148; - public const ushort VivoFit2 = 2150; - public const ushort Fr225 = 2153; - public const ushort Fr630 = 2156; - public const ushort Fr230 = 2157; - public const ushort Fr735xt = 2158; - public const ushort VivoActiveApac = 2160; - public const ushort Vector2 = 2161; - public const ushort Vector2s = 2162; - public const ushort Virbxe = 2172; - public const ushort Fr620Taiwan = 2173; - public const ushort Fr220Taiwan = 2174; - public const ushort Truswing = 2175; - public const ushort D2airvenu = 2187; - public const ushort Fenix3China = 2188; - public const ushort Fenix3Twn = 2189; - public const ushort VariaHeadlight = 2192; - public const ushort VariaTaillightOld = 2193; - public const ushort EdgeExplore1000 = 2204; - public const ushort Fr225Asia = 2219; - public const ushort VariaRadarTaillight = 2225; - public const ushort VariaRadarDisplay = 2226; - public const ushort Edge20 = 2238; - public const ushort Edge520Asia = 2260; - public const ushort Edge520Japan = 2261; - public const ushort D2Bravo = 2262; - public const ushort ApproachS20 = 2266; - public const ushort VivoSmart2 = 2271; - public const ushort Edge1000Thai = 2274; - public const ushort VariaRemote = 2276; - public const ushort Edge25Asia = 2288; - public const ushort Edge25Jpn = 2289; - public const ushort Edge20Asia = 2290; - public const ushort ApproachX40 = 2292; - public const ushort Fenix3Japan = 2293; - public const ushort VivoSmartEmea = 2294; - public const ushort Fr630Asia = 2310; - public const ushort Fr630Jpn = 2311; - public const ushort Fr230Jpn = 2313; - public const ushort Hrm4Run = 2327; - public const ushort EpixJapan = 2332; - public const ushort VivoActiveHr = 2337; - public const ushort VivoSmartGpsHr = 2347; - public const ushort VivoSmartHr = 2348; - public const ushort VivoSmartHrAsia = 2361; - public const ushort VivoSmartGpsHrAsia = 2362; - public const ushort VivoMove = 2368; - public const ushort VariaTaillight = 2379; - public const ushort Fr235Asia = 2396; - public const ushort Fr235Japan = 2397; - public const ushort VariaVision = 2398; - public const ushort VivoFit3 = 2406; - public const ushort Fenix3Korea = 2407; - public const ushort Fenix3Sea = 2408; - public const ushort Fenix3Hr = 2413; - public const ushort VirbUltra30 = 2417; - public const ushort IndexSmartScale = 2429; - public const ushort Fr235 = 2431; - public const ushort Fenix3Chronos = 2432; - public const ushort Oregon7xx = 2441; - public const ushort Rino7xx = 2444; - public const ushort EpixKorea = 2457; - public const ushort Fenix3HrChn = 2473; - public const ushort Fenix3HrTwn = 2474; - public const ushort Fenix3HrJpn = 2475; - public const ushort Fenix3HrSea = 2476; - public const ushort Fenix3HrKor = 2477; - public const ushort Nautix = 2496; - public const ushort VivoActiveHrApac = 2497; - public const ushort Fr35 = 2503; - public const ushort Oregon7xxWw = 2512; - public const ushort Edge820 = 2530; - public const ushort EdgeExplore820 = 2531; - public const ushort Fr735xtApac = 2533; - public const ushort Fr735xtJapan = 2534; - public const ushort Fenix5s = 2544; - public const ushort D2BravoTitanium = 2547; - public const ushort VariaUt800 = 2567; // Varia UT 800 SW - public const ushort RunningDynamicsPod = 2593; - public const ushort Edge820China = 2599; - public const ushort Edge820Japan = 2600; - public const ushort Fenix5x = 2604; - public const ushort VivoFitJr = 2606; - public const ushort VivoSmart3 = 2622; - public const ushort VivoSport = 2623; - public const ushort Edge820Taiwan = 2628; - public const ushort Edge820Korea = 2629; - public const ushort Edge820Sea = 2630; - public const ushort Fr35Hebrew = 2650; - public const ushort ApproachS60 = 2656; - public const ushort Fr35Apac = 2667; - public const ushort Fr35Japan = 2668; - public const ushort Fenix3ChronosAsia = 2675; - public const ushort Virb360 = 2687; - public const ushort Fr935 = 2691; - public const ushort Fenix5 = 2697; - public const ushort Vivoactive3 = 2700; - public const ushort Fr235ChinaNfc = 2733; - public const ushort Foretrex601_701 = 2769; - public const ushort VivoMoveHr = 2772; - public const ushort Edge1030 = 2713; - public const ushort Fr35Sea = 2727; - public const ushort Vector3 = 2787; - public const ushort Fenix5Asia = 2796; - public const ushort Fenix5sAsia = 2797; - public const ushort Fenix5xAsia = 2798; - public const ushort ApproachZ80 = 2806; - public const ushort Fr35Korea = 2814; - public const ushort D2charlie = 2819; - public const ushort VivoSmart3Apac = 2831; - public const ushort VivoSportApac = 2832; - public const ushort Fr935Asia = 2833; - public const ushort Descent = 2859; - public const ushort VivoFit4 = 2878; - public const ushort Fr645 = 2886; - public const ushort Fr645m = 2888; - public const ushort Fr30 = 2891; - public const ushort Fenix5sPlus = 2900; - public const ushort Edge130 = 2909; - public const ushort Edge1030Asia = 2924; - public const ushort Vivosmart4 = 2927; - public const ushort VivoMoveHrAsia = 2945; - public const ushort ApproachX10 = 2962; - public const ushort Fr30Asia = 2977; - public const ushort Vivoactive3mW = 2988; - public const ushort Fr645Asia = 3003; - public const ushort Fr645mAsia = 3004; - public const ushort EdgeExplore = 3011; - public const ushort Gpsmap66 = 3028; - public const ushort ApproachS10 = 3049; - public const ushort Vivoactive3mL = 3066; - public const ushort ApproachG80 = 3085; - public const ushort Edge130Asia = 3092; - public const ushort Edge1030Bontrager = 3095; - public const ushort Fenix5Plus = 3110; - public const ushort Fenix5xPlus = 3111; - public const ushort Edge520Plus = 3112; - public const ushort Fr945 = 3113; - public const ushort Edge530 = 3121; - public const ushort Edge830 = 3122; - public const ushort InstinctEsports = 3126; - public const ushort Fenix5sPlusApac = 3134; - public const ushort Fenix5xPlusApac = 3135; - public const ushort Edge520PlusApac = 3142; - public const ushort Fr235lAsia = 3144; - public const ushort Fr245Asia = 3145; - public const ushort VivoActive3mApac = 3163; - public const ushort Gen3Bsm = 3192; // gen3 bike speed sensor - public const ushort Gen3Bcm = 3193; // gen3 bike cadence sensor - public const ushort VivoSmart4Asia = 3218; - public const ushort Vivoactive4Small = 3224; - public const ushort Vivoactive4Large = 3225; - public const ushort Venu = 3226; - public const ushort MarqDriver = 3246; - public const ushort MarqAviator = 3247; - public const ushort MarqCaptain = 3248; - public const ushort MarqCommander = 3249; - public const ushort MarqExpedition = 3250; - public const ushort MarqAthlete = 3251; - public const ushort DescentMk2 = 3258; - public const ushort Gpsmap66i = 3284; - public const ushort Fenix6SSport = 3287; - public const ushort Fenix6S = 3288; - public const ushort Fenix6Sport = 3289; - public const ushort Fenix6 = 3290; - public const ushort Fenix6x = 3291; - public const ushort HrmDual = 3299; // HRM-Dual - public const ushort HrmPro = 3300; // HRM-Pro - public const ushort VivoMove3Premium = 3308; - public const ushort ApproachS40 = 3314; - public const ushort Fr245mAsia = 3321; - public const ushort Edge530Apac = 3349; - public const ushort Edge830Apac = 3350; - public const ushort VivoMove3 = 3378; - public const ushort VivoActive4SmallAsia = 3387; - public const ushort VivoActive4LargeAsia = 3388; - public const ushort VivoActive4OledAsia = 3389; - public const ushort Swim2 = 3405; - public const ushort MarqDriverAsia = 3420; - public const ushort MarqAviatorAsia = 3421; - public const ushort VivoMove3Asia = 3422; - public const ushort Fr945Asia = 3441; - public const ushort VivoActive3tChn = 3446; - public const ushort MarqCaptainAsia = 3448; - public const ushort MarqCommanderAsia = 3449; - public const ushort MarqExpeditionAsia = 3450; - public const ushort MarqAthleteAsia = 3451; - public const ushort InstinctSolar = 3466; - public const ushort Fr45Asia = 3469; - public const ushort Vivoactive3Daimler = 3473; - public const ushort LegacyRey = 3498; - public const ushort LegacyDarthVader = 3499; - public const ushort LegacyCaptainMarvel = 3500; - public const ushort LegacyFirstAvenger = 3501; - public const ushort Fenix6sSportAsia = 3512; - public const ushort Fenix6sAsia = 3513; - public const ushort Fenix6SportAsia = 3514; - public const ushort Fenix6Asia = 3515; - public const ushort Fenix6xAsia = 3516; - public const ushort LegacyCaptainMarvelAsia = 3535; - public const ushort LegacyFirstAvengerAsia = 3536; - public const ushort LegacyReyAsia = 3537; - public const ushort LegacyDarthVaderAsia = 3538; - public const ushort DescentMk2s = 3542; - public const ushort Edge130Plus = 3558; - public const ushort Edge1030Plus = 3570; - public const ushort Rally200 = 3578; // Rally 100/200 Power Meter Series - public const ushort Fr745 = 3589; - public const ushort Venusq = 3600; - public const ushort Lily = 3615; - public const ushort MarqAdventurer = 3624; - public const ushort Enduro = 3638; - public const ushort Swim2Apac = 3639; - public const ushort MarqAdventurerAsia = 3648; - public const ushort Fr945Lte = 3652; - public const ushort DescentMk2Asia = 3702; // Mk2 and Mk2i - public const ushort Venu2 = 3703; - public const ushort Venu2s = 3704; - public const ushort VenuDaimlerAsia = 3737; - public const ushort MarqGolfer = 3739; - public const ushort VenuDaimler = 3740; - public const ushort Fr745Asia = 3794; - public const ushort LilyAsia = 3809; - public const ushort Edge1030PlusAsia = 3812; - public const ushort Edge130PlusAsia = 3813; - public const ushort ApproachS12 = 3823; - public const ushort EnduroAsia = 3872; - public const ushort VenusqAsia = 3837; - public const ushort Edge1040 = 3843; - public const ushort MarqGolferAsia = 3850; - public const ushort Venu2Plus = 3851; - public const ushort Fr55 = 3869; - public const ushort Instinct2 = 3888; - public const ushort Fenix7s = 3905; - public const ushort Fenix7 = 3906; - public const ushort Fenix7x = 3907; - public const ushort Fenix7sApac = 3908; - public const ushort Fenix7Apac = 3909; - public const ushort Fenix7xApac = 3910; - public const ushort ApproachG12 = 3927; - public const ushort DescentMk2sAsia = 3930; - public const ushort ApproachS42 = 3934; - public const ushort EpixGen2 = 3943; - public const ushort EpixGen2Apac = 3944; - public const ushort Venu2sAsia = 3949; - public const ushort Venu2Asia = 3950; - public const ushort Fr945LteAsia = 3978; - public const ushort VivoMoveSport = 3982; - public const ushort VivomoveTrend = 3983; - public const ushort ApproachS12Asia = 3986; - public const ushort Fr255Music = 3990; - public const ushort Fr255SmallMusic = 3991; - public const ushort Fr255 = 3992; - public const ushort Fr255Small = 3993; - public const ushort ApproachG12Asia = 4001; - public const ushort ApproachS42Asia = 4002; - public const ushort DescentG1 = 4005; - public const ushort Venu2PlusAsia = 4017; - public const ushort Fr955 = 4024; - public const ushort Fr55Asia = 4033; - public const ushort Vivosmart5 = 4063; - public const ushort Instinct2Asia = 4071; - public const ushort MarqGen2 = 4105; // Adventurer, Athlete, Captain, Golfer - public const ushort Venusq2 = 4115; - public const ushort Venusq2music = 4116; - public const ushort MarqGen2Aviator = 4124; - public const ushort D2AirX10 = 4125; - public const ushort HrmProPlus = 4130; - public const ushort DescentG1Asia = 4132; - public const ushort Tactix7 = 4135; - public const ushort InstinctCrossover = 4155; - public const ushort EdgeExplore2 = 4169; - public const ushort TacxNeoSmart = 4265; // Neo Smart, Tacx - public const ushort TacxNeo2Smart = 4266; // Neo 2 Smart, Tacx - public const ushort TacxNeo2TSmart = 4267; // Neo 2T Smart, Tacx - public const ushort TacxNeoSmartBike = 4268; // Neo Smart Bike, Tacx - public const ushort TacxSatoriSmart = 4269; // Satori Smart, Tacx - public const ushort TacxFlowSmart = 4270; // Flow Smart, Tacx - public const ushort TacxVortexSmart = 4271; // Vortex Smart, Tacx - public const ushort TacxBushidoSmart = 4272; // Bushido Smart, Tacx - public const ushort TacxGeniusSmart = 4273; // Genius Smart, Tacx - public const ushort TacxFluxFluxSSmart = 4274; // Flux/Flux S Smart, Tacx - public const ushort TacxFlux2Smart = 4275; // Flux 2 Smart, Tacx - public const ushort TacxMagnum = 4276; // Magnum, Tacx - public const ushort Edge1040Asia = 4305; - public const ushort Enduro2 = 4341; - public const ushort Sdm4 = 10007; // SDM4 footpod - public const ushort EdgeRemote = 10014; - public const ushort TacxTrainingAppWin = 20533; - public const ushort TacxTrainingAppMac = 20534; - public const ushort TacxTrainingAppMacCatalyst = 20565; - public const ushort TrainingCenter = 20119; - public const ushort TacxTrainingAppAndroid = 30045; - public const ushort TacxTrainingAppIos = 30046; - public const ushort TacxTrainingAppLegacy = 30047; - public const ushort ConnectiqSimulator = 65531; - public const ushort AndroidAntplusPlugin = 65532; - public const ushort Connect = 65534; // Garmin Connect website - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/GasConsumptionRateType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/GasConsumptionRateType.cs deleted file mode 100644 index 8d2782670..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/GasConsumptionRateType.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile GasConsumptionRateType type as an enum - /// - public enum GasConsumptionRateType : byte - { - PressureSac = 0, - VolumeSac = 1, - Rmv = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Gender.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Gender.cs deleted file mode 100644 index da27c1726..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Gender.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Gender type as an enum - /// - public enum Gender : byte - { - Female = 0, - Male = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Goal.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Goal.cs deleted file mode 100644 index 3160ef5a0..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Goal.cs +++ /dev/null @@ -1,34 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Goal type as an enum - /// - public enum Goal : byte - { - Time = 0, - Distance = 1, - Calories = 2, - Frequency = 3, - Steps = 4, - Ascent = 5, - ActiveMinutes = 6, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/GoalRecurrence.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/GoalRecurrence.cs deleted file mode 100644 index ead936faa..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/GoalRecurrence.cs +++ /dev/null @@ -1,33 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile GoalRecurrence type as an enum - /// - public enum GoalRecurrence : byte - { - Off = 0, - Daily = 1, - Weekly = 2, - Monthly = 3, - Yearly = 4, - Custom = 5, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/GoalSource.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/GoalSource.cs deleted file mode 100644 index df3d4443f..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/GoalSource.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile GoalSource type as an enum - /// - public enum GoalSource : byte - { - Auto = 0, - Community = 1, - User = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/HipRaiseExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/HipRaiseExerciseName.cs deleted file mode 100644 index 6ea124872..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/HipRaiseExerciseName.cs +++ /dev/null @@ -1,77 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile HipRaiseExerciseName type as a class - /// - public static class HipRaiseExerciseName - { - public const ushort BarbellHipThrustOnFloor = 0; - public const ushort BarbellHipThrustWithBench = 1; - public const ushort BentKneeSwissBallReverseHipRaise = 2; - public const ushort WeightedBentKneeSwissBallReverseHipRaise = 3; - public const ushort BridgeWithLegExtension = 4; - public const ushort WeightedBridgeWithLegExtension = 5; - public const ushort ClamBridge = 6; - public const ushort FrontKickTabletop = 7; - public const ushort WeightedFrontKickTabletop = 8; - public const ushort HipExtensionAndCross = 9; - public const ushort WeightedHipExtensionAndCross = 10; - public const ushort HipRaise = 11; - public const ushort WeightedHipRaise = 12; - public const ushort HipRaiseWithFeetOnSwissBall = 13; - public const ushort WeightedHipRaiseWithFeetOnSwissBall = 14; - public const ushort HipRaiseWithHeadOnBosuBall = 15; - public const ushort WeightedHipRaiseWithHeadOnBosuBall = 16; - public const ushort HipRaiseWithHeadOnSwissBall = 17; - public const ushort WeightedHipRaiseWithHeadOnSwissBall = 18; - public const ushort HipRaiseWithKneeSqueeze = 19; - public const ushort WeightedHipRaiseWithKneeSqueeze = 20; - public const ushort InclineRearLegExtension = 21; - public const ushort WeightedInclineRearLegExtension = 22; - public const ushort KettlebellSwing = 23; - public const ushort MarchingHipRaise = 24; - public const ushort WeightedMarchingHipRaise = 25; - public const ushort MarchingHipRaiseWithFeetOnASwissBall = 26; - public const ushort WeightedMarchingHipRaiseWithFeetOnASwissBall = 27; - public const ushort ReverseHipRaise = 28; - public const ushort WeightedReverseHipRaise = 29; - public const ushort SingleLegHipRaise = 30; - public const ushort WeightedSingleLegHipRaise = 31; - public const ushort SingleLegHipRaiseWithFootOnBench = 32; - public const ushort WeightedSingleLegHipRaiseWithFootOnBench = 33; - public const ushort SingleLegHipRaiseWithFootOnBosuBall = 34; - public const ushort WeightedSingleLegHipRaiseWithFootOnBosuBall = 35; - public const ushort SingleLegHipRaiseWithFootOnFoamRoller = 36; - public const ushort WeightedSingleLegHipRaiseWithFootOnFoamRoller = 37; - public const ushort SingleLegHipRaiseWithFootOnMedicineBall = 38; - public const ushort WeightedSingleLegHipRaiseWithFootOnMedicineBall = 39; - public const ushort SingleLegHipRaiseWithHeadOnBosuBall = 40; - public const ushort WeightedSingleLegHipRaiseWithHeadOnBosuBall = 41; - public const ushort WeightedClamBridge = 42; - public const ushort SingleLegSwissBallHipRaiseAndLegCurl = 43; - public const ushort Clams = 44; - public const ushort InnerThighCircles = 45; // Deprecated do not use - public const ushort InnerThighSideLift = 46; // Deprecated do not use - public const ushort LegCircles = 47; - public const ushort LegLift = 48; - public const ushort LegLiftInExternalRotation = 49; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/HipStabilityExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/HipStabilityExerciseName.cs deleted file mode 100644 index a44e940e3..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/HipStabilityExerciseName.cs +++ /dev/null @@ -1,61 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile HipStabilityExerciseName type as a class - /// - public static class HipStabilityExerciseName - { - public const ushort BandSideLyingLegRaise = 0; - public const ushort DeadBug = 1; - public const ushort WeightedDeadBug = 2; - public const ushort ExternalHipRaise = 3; - public const ushort WeightedExternalHipRaise = 4; - public const ushort FireHydrantKicks = 5; - public const ushort WeightedFireHydrantKicks = 6; - public const ushort HipCircles = 7; - public const ushort WeightedHipCircles = 8; - public const ushort InnerThighLift = 9; - public const ushort WeightedInnerThighLift = 10; - public const ushort LateralWalksWithBandAtAnkles = 11; - public const ushort PretzelSideKick = 12; - public const ushort WeightedPretzelSideKick = 13; - public const ushort ProneHipInternalRotation = 14; - public const ushort WeightedProneHipInternalRotation = 15; - public const ushort Quadruped = 16; - public const ushort QuadrupedHipExtension = 17; - public const ushort WeightedQuadrupedHipExtension = 18; - public const ushort QuadrupedWithLegLift = 19; - public const ushort WeightedQuadrupedWithLegLift = 20; - public const ushort SideLyingLegRaise = 21; - public const ushort WeightedSideLyingLegRaise = 22; - public const ushort SlidingHipAdduction = 23; - public const ushort WeightedSlidingHipAdduction = 24; - public const ushort StandingAdduction = 25; - public const ushort WeightedStandingAdduction = 26; - public const ushort StandingCableHipAbduction = 27; - public const ushort StandingHipAbduction = 28; - public const ushort WeightedStandingHipAbduction = 29; - public const ushort StandingRearLegRaise = 30; - public const ushort WeightedStandingRearLegRaise = 31; - public const ushort SupineHipInternalRotation = 32; - public const ushort WeightedSupineHipInternalRotation = 33; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/HipSwingExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/HipSwingExerciseName.cs deleted file mode 100644 index 0135d795c..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/HipSwingExerciseName.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile HipSwingExerciseName type as a class - /// - public static class HipSwingExerciseName - { - public const ushort SingleArmKettlebellSwing = 0; - public const ushort SingleArmDumbbellSwing = 1; - public const ushort StepOutSwing = 2; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/HrType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/HrType.cs deleted file mode 100644 index 4c052f721..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/HrType.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile HrType type as an enum - /// - public enum HrType : byte - { - Normal = 0, - Irregular = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/HrZoneCalc.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/HrZoneCalc.cs deleted file mode 100644 index bb356ffeb..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/HrZoneCalc.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile HrZoneCalc type as an enum - /// - public enum HrZoneCalc : byte - { - Custom = 0, - PercentMaxHr = 1, - PercentHrr = 2, - PercentLthr = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/HyperextensionExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/HyperextensionExerciseName.cs deleted file mode 100644 index d3701f951..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/HyperextensionExerciseName.cs +++ /dev/null @@ -1,67 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile HyperextensionExerciseName type as a class - /// - public static class HyperextensionExerciseName - { - public const ushort BackExtensionWithOppositeArmAndLegReach = 0; - public const ushort WeightedBackExtensionWithOppositeArmAndLegReach = 1; - public const ushort BaseRotations = 2; - public const ushort WeightedBaseRotations = 3; - public const ushort BentKneeReverseHyperextension = 4; - public const ushort WeightedBentKneeReverseHyperextension = 5; - public const ushort HollowHoldAndRoll = 6; - public const ushort WeightedHollowHoldAndRoll = 7; - public const ushort Kicks = 8; - public const ushort WeightedKicks = 9; - public const ushort KneeRaises = 10; - public const ushort WeightedKneeRaises = 11; - public const ushort KneelingSuperman = 12; - public const ushort WeightedKneelingSuperman = 13; - public const ushort LatPullDownWithRow = 14; - public const ushort MedicineBallDeadliftToReach = 15; - public const ushort OneArmOneLegRow = 16; - public const ushort OneArmRowWithBand = 17; - public const ushort OverheadLungeWithMedicineBall = 18; - public const ushort PlankKneeTucks = 19; - public const ushort WeightedPlankKneeTucks = 20; - public const ushort SideStep = 21; - public const ushort WeightedSideStep = 22; - public const ushort SingleLegBackExtension = 23; - public const ushort WeightedSingleLegBackExtension = 24; - public const ushort SpineExtension = 25; - public const ushort WeightedSpineExtension = 26; - public const ushort StaticBackExtension = 27; - public const ushort WeightedStaticBackExtension = 28; - public const ushort SupermanFromFloor = 29; - public const ushort WeightedSupermanFromFloor = 30; - public const ushort SwissBallBackExtension = 31; - public const ushort WeightedSwissBallBackExtension = 32; - public const ushort SwissBallHyperextension = 33; - public const ushort WeightedSwissBallHyperextension = 34; - public const ushort SwissBallOppositeArmAndLegLift = 35; - public const ushort WeightedSwissBallOppositeArmAndLegLift = 36; - public const ushort SupermanOnSwissBall = 37; - public const ushort Cobra = 38; - public const ushort SupineFloorBarre = 39; // Deprecated do not use - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Intensity.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Intensity.cs deleted file mode 100644 index 661b52688..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Intensity.cs +++ /dev/null @@ -1,34 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Intensity type as an enum - /// - public enum Intensity : byte - { - Active = 0, - Rest = 1, - Warmup = 2, - Cooldown = 3, - Recovery = 4, - Interval = 5, - Other = 6, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Language.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Language.cs deleted file mode 100644 index 2421b1924..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Language.cs +++ /dev/null @@ -1,66 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Language type as an enum - /// - public enum Language : byte - { - English = 0, - French = 1, - Italian = 2, - German = 3, - Spanish = 4, - Croatian = 5, - Czech = 6, - Danish = 7, - Dutch = 8, - Finnish = 9, - Greek = 10, - Hungarian = 11, - Norwegian = 12, - Polish = 13, - Portuguese = 14, - Slovakian = 15, - Slovenian = 16, - Swedish = 17, - Russian = 18, - Turkish = 19, - Latvian = 20, - Ukrainian = 21, - Arabic = 22, - Farsi = 23, - Bulgarian = 24, - Romanian = 25, - Chinese = 26, - Japanese = 27, - Korean = 28, - Taiwanese = 29, - Thai = 30, - Hebrew = 31, - BrazilianPortuguese = 32, - Indonesian = 33, - Malaysian = 34, - Vietnamese = 35, - Burmese = 36, - Mongolian = 37, - Custom = 254, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LanguageBits0.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LanguageBits0.cs deleted file mode 100644 index 70f4cd357..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LanguageBits0.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LanguageBits0 type as a class - /// - public static class LanguageBits0 - { - public const byte English = 0x01; - public const byte French = 0x02; - public const byte Italian = 0x04; - public const byte German = 0x08; - public const byte Spanish = 0x10; - public const byte Croatian = 0x20; - public const byte Czech = 0x40; - public const byte Danish = 0x80; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LanguageBits1.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LanguageBits1.cs deleted file mode 100644 index a816b9ca3..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LanguageBits1.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LanguageBits1 type as a class - /// - public static class LanguageBits1 - { - public const byte Dutch = 0x01; - public const byte Finnish = 0x02; - public const byte Greek = 0x04; - public const byte Hungarian = 0x08; - public const byte Norwegian = 0x10; - public const byte Polish = 0x20; - public const byte Portuguese = 0x40; - public const byte Slovakian = 0x80; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LanguageBits2.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LanguageBits2.cs deleted file mode 100644 index 0ac9813bf..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LanguageBits2.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LanguageBits2 type as a class - /// - public static class LanguageBits2 - { - public const byte Slovenian = 0x01; - public const byte Swedish = 0x02; - public const byte Russian = 0x04; - public const byte Turkish = 0x08; - public const byte Latvian = 0x10; - public const byte Ukrainian = 0x20; - public const byte Arabic = 0x40; - public const byte Farsi = 0x80; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LanguageBits3.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LanguageBits3.cs deleted file mode 100644 index 344b39555..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LanguageBits3.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LanguageBits3 type as a class - /// - public static class LanguageBits3 - { - public const byte Bulgarian = 0x01; - public const byte Romanian = 0x02; - public const byte Chinese = 0x04; - public const byte Japanese = 0x08; - public const byte Korean = 0x10; - public const byte Taiwanese = 0x20; - public const byte Thai = 0x40; - public const byte Hebrew = 0x80; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LanguageBits4.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LanguageBits4.cs deleted file mode 100644 index 1ea5e3431..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LanguageBits4.cs +++ /dev/null @@ -1,33 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LanguageBits4 type as a class - /// - public static class LanguageBits4 - { - public const byte BrazilianPortuguese = 0x01; - public const byte Indonesian = 0x02; - public const byte Malaysian = 0x04; - public const byte Vietnamese = 0x08; - public const byte Burmese = 0x10; - public const byte Mongolian = 0x20; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LapTrigger.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LapTrigger.cs deleted file mode 100644 index 43b9318c2..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LapTrigger.cs +++ /dev/null @@ -1,36 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LapTrigger type as an enum - /// - public enum LapTrigger : byte - { - Manual = 0, - Time = 1, - Distance = 2, - PositionStart = 3, - PositionLap = 4, - PositionWaypoint = 5, - PositionMarked = 6, - SessionEnd = 7, - FitnessEquipment = 8, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LateralRaiseExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LateralRaiseExerciseName.cs deleted file mode 100644 index c2fa876a9..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LateralRaiseExerciseName.cs +++ /dev/null @@ -1,61 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LateralRaiseExerciseName type as a class - /// - public static class LateralRaiseExerciseName - { - public const ushort _45DegreeCableExternalRotation = 0; - public const ushort AlternatingLateralRaiseWithStaticHold = 1; - public const ushort BarMuscleUp = 2; - public const ushort BentOverLateralRaise = 3; - public const ushort CableDiagonalRaise = 4; - public const ushort CableFrontRaise = 5; - public const ushort CalorieRow = 6; - public const ushort ComboShoulderRaise = 7; - public const ushort DumbbellDiagonalRaise = 8; - public const ushort DumbbellVRaise = 9; - public const ushort FrontRaise = 10; - public const ushort LeaningDumbbellLateralRaise = 11; - public const ushort LyingDumbbellRaise = 12; - public const ushort MuscleUp = 13; - public const ushort OneArmCableLateralRaise = 14; - public const ushort OverhandGripRearLateralRaise = 15; - public const ushort PlateRaises = 16; - public const ushort RingDip = 17; - public const ushort WeightedRingDip = 18; - public const ushort RingMuscleUp = 19; - public const ushort WeightedRingMuscleUp = 20; - public const ushort RopeClimb = 21; - public const ushort WeightedRopeClimb = 22; - public const ushort Scaption = 23; - public const ushort SeatedLateralRaise = 24; - public const ushort SeatedRearLateralRaise = 25; - public const ushort SideLyingLateralRaise = 26; - public const ushort StandingLift = 27; - public const ushort SuspendedRow = 28; - public const ushort UnderhandGripRearLateralRaise = 29; - public const ushort WallSlide = 30; - public const ushort WeightedWallSlide = 31; - public const ushort ArmCircles = 32; - public const ushort ShavingTheHead = 33; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LeftRightBalance.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LeftRightBalance.cs deleted file mode 100644 index 7579b4472..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LeftRightBalance.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LeftRightBalance type as a class - /// - public static class LeftRightBalance - { - public const byte Mask = 0x7F; // % contribution - public const byte Right = 0x80; // data corresponds to right if set, otherwise unknown - public const byte Invalid = (byte)0xFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LeftRightBalance100.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LeftRightBalance100.cs deleted file mode 100644 index 9ac99840f..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LeftRightBalance100.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LeftRightBalance100 type as a class - /// - public static class LeftRightBalance100 - { - public const ushort Mask = 0x3FFF; // % contribution scaled by 100 - public const ushort Right = 0x8000; // data corresponds to right if set, otherwise unknown - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LegCurlExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LegCurlExerciseName.cs deleted file mode 100644 index 46e7b8777..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LegCurlExerciseName.cs +++ /dev/null @@ -1,39 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LegCurlExerciseName type as a class - /// - public static class LegCurlExerciseName - { - public const ushort LegCurl = 0; - public const ushort WeightedLegCurl = 1; - public const ushort GoodMorning = 2; - public const ushort SeatedBarbellGoodMorning = 3; - public const ushort SingleLegBarbellGoodMorning = 4; - public const ushort SingleLegSlidingLegCurl = 5; - public const ushort SlidingLegCurl = 6; - public const ushort SplitBarbellGoodMorning = 7; - public const ushort SplitStanceExtension = 8; - public const ushort StaggeredStanceGoodMorning = 9; - public const ushort SwissBallHipRaiseAndLegCurl = 10; - public const ushort ZercherGoodMorning = 11; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LegRaiseExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LegRaiseExerciseName.cs deleted file mode 100644 index 04010cd12..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LegRaiseExerciseName.cs +++ /dev/null @@ -1,49 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LegRaiseExerciseName type as a class - /// - public static class LegRaiseExerciseName - { - public const ushort HangingKneeRaise = 0; - public const ushort HangingLegRaise = 1; - public const ushort WeightedHangingLegRaise = 2; - public const ushort HangingSingleLegRaise = 3; - public const ushort WeightedHangingSingleLegRaise = 4; - public const ushort KettlebellLegRaises = 5; - public const ushort LegLoweringDrill = 6; - public const ushort WeightedLegLoweringDrill = 7; - public const ushort LyingStraightLegRaise = 8; - public const ushort WeightedLyingStraightLegRaise = 9; - public const ushort MedicineBallLegDrops = 10; - public const ushort QuadrupedLegRaise = 11; - public const ushort WeightedQuadrupedLegRaise = 12; - public const ushort ReverseLegRaise = 13; - public const ushort WeightedReverseLegRaise = 14; - public const ushort ReverseLegRaiseOnSwissBall = 15; - public const ushort WeightedReverseLegRaiseOnSwissBall = 16; - public const ushort SingleLegLoweringDrill = 17; - public const ushort WeightedSingleLegLoweringDrill = 18; - public const ushort WeightedHangingKneeRaise = 19; - public const ushort LateralStepover = 20; - public const ushort WeightedLateralStepover = 21; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LengthType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LengthType.cs deleted file mode 100644 index 3b1de631a..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LengthType.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LengthType type as an enum - /// - public enum LengthType : byte - { - Idle = 0, - Active = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LocalDateTime.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LocalDateTime.cs deleted file mode 100644 index 30534f20c..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LocalDateTime.cs +++ /dev/null @@ -1,28 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LocalDateTime type as a class - /// - public static class LocalDateTime - { - public const uint Min = 0x10000000; // if date_time is < 0x10000000 then it is system time (seconds from device power on) - public const uint Invalid = (uint)0xFFFFFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LocalDeviceType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LocalDeviceType.cs deleted file mode 100644 index 63fdc898b..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LocalDeviceType.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LocalDeviceType type as a class - /// - public static class LocalDeviceType - { - public const byte Gps = 0; // Onboard gps receiver - public const byte Glonass = 1; // Onboard glonass receiver - public const byte GpsGlonass = 2; // Onboard gps glonass receiver - public const byte Accelerometer = 3; // Onboard sensor - public const byte Barometer = 4; // Onboard sensor - public const byte Temperature = 5; // Onboard sensor - public const byte Whr = 10; // Onboard wrist HR sensor - public const byte SensorHub = 12; // Onboard software package - public const byte Invalid = (byte)0xFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LocaltimeIntoDay.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LocaltimeIntoDay.cs deleted file mode 100644 index e94ff422d..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LocaltimeIntoDay.cs +++ /dev/null @@ -1,27 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LocaltimeIntoDay type as a class - /// - public static class LocaltimeIntoDay - { - public const uint Invalid = (uint)0xFFFFFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LungeExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LungeExerciseName.cs deleted file mode 100644 index e61bd0c60..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/LungeExerciseName.cs +++ /dev/null @@ -1,108 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LungeExerciseName type as a class - /// - public static class LungeExerciseName - { - public const ushort OverheadLunge = 0; - public const ushort LungeMatrix = 1; - public const ushort WeightedLungeMatrix = 2; - public const ushort AlternatingBarbellForwardLunge = 3; - public const ushort AlternatingDumbbellLungeWithReach = 4; - public const ushort BackFootElevatedDumbbellSplitSquat = 5; - public const ushort BarbellBoxLunge = 6; - public const ushort BarbellBulgarianSplitSquat = 7; - public const ushort BarbellCrossoverLunge = 8; - public const ushort BarbellFrontSplitSquat = 9; - public const ushort BarbellLunge = 10; - public const ushort BarbellReverseLunge = 11; - public const ushort BarbellSideLunge = 12; - public const ushort BarbellSplitSquat = 13; - public const ushort CoreControlRearLunge = 14; - public const ushort DiagonalLunge = 15; - public const ushort DropLunge = 16; - public const ushort DumbbellBoxLunge = 17; - public const ushort DumbbellBulgarianSplitSquat = 18; - public const ushort DumbbellCrossoverLunge = 19; - public const ushort DumbbellDiagonalLunge = 20; - public const ushort DumbbellLunge = 21; - public const ushort DumbbellLungeAndRotation = 22; - public const ushort DumbbellOverheadBulgarianSplitSquat = 23; - public const ushort DumbbellReverseLungeToHighKneeAndPress = 24; - public const ushort DumbbellSideLunge = 25; - public const ushort ElevatedFrontFootBarbellSplitSquat = 26; - public const ushort FrontFootElevatedDumbbellSplitSquat = 27; - public const ushort GunslingerLunge = 28; - public const ushort LawnmowerLunge = 29; - public const ushort LowLungeWithIsometricAdduction = 30; - public const ushort LowSideToSideLunge = 31; - public const ushort Lunge = 32; - public const ushort WeightedLunge = 33; - public const ushort LungeWithArmReach = 34; - public const ushort LungeWithDiagonalReach = 35; - public const ushort LungeWithSideBend = 36; - public const ushort OffsetDumbbellLunge = 37; - public const ushort OffsetDumbbellReverseLunge = 38; - public const ushort OverheadBulgarianSplitSquat = 39; - public const ushort OverheadDumbbellReverseLunge = 40; - public const ushort OverheadDumbbellSplitSquat = 41; - public const ushort OverheadLungeWithRotation = 42; - public const ushort ReverseBarbellBoxLunge = 43; - public const ushort ReverseBoxLunge = 44; - public const ushort ReverseDumbbellBoxLunge = 45; - public const ushort ReverseDumbbellCrossoverLunge = 46; - public const ushort ReverseDumbbellDiagonalLunge = 47; - public const ushort ReverseLungeWithReachBack = 48; - public const ushort WeightedReverseLungeWithReachBack = 49; - public const ushort ReverseLungeWithTwistAndOverheadReach = 50; - public const ushort WeightedReverseLungeWithTwistAndOverheadReach = 51; - public const ushort ReverseSlidingBoxLunge = 52; - public const ushort WeightedReverseSlidingBoxLunge = 53; - public const ushort ReverseSlidingLunge = 54; - public const ushort WeightedReverseSlidingLunge = 55; - public const ushort RunnersLungeToBalance = 56; - public const ushort WeightedRunnersLungeToBalance = 57; - public const ushort ShiftingSideLunge = 58; - public const ushort SideAndCrossoverLunge = 59; - public const ushort WeightedSideAndCrossoverLunge = 60; - public const ushort SideLunge = 61; - public const ushort WeightedSideLunge = 62; - public const ushort SideLungeAndPress = 63; - public const ushort SideLungeJumpOff = 64; - public const ushort SideLungeSweep = 65; - public const ushort WeightedSideLungeSweep = 66; - public const ushort SideLungeToCrossoverTap = 67; - public const ushort WeightedSideLungeToCrossoverTap = 68; - public const ushort SideToSideLungeChops = 69; - public const ushort WeightedSideToSideLungeChops = 70; - public const ushort SiffJumpLunge = 71; - public const ushort WeightedSiffJumpLunge = 72; - public const ushort SingleArmReverseLungeAndPress = 73; - public const ushort SlidingLateralLunge = 74; - public const ushort WeightedSlidingLateralLunge = 75; - public const ushort WalkingBarbellLunge = 76; - public const ushort WalkingDumbbellLunge = 77; - public const ushort WalkingLunge = 78; - public const ushort WeightedWalkingLunge = 79; - public const ushort WideGripOverheadBarbellSplitSquat = 80; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Manufacturer.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Manufacturer.cs deleted file mode 100644 index 0e7d37838..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Manufacturer.cs +++ /dev/null @@ -1,238 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Manufacturer type as a class - /// - public static class Manufacturer - { - public const ushort Garmin = 1; - public const ushort GarminFr405Antfs = 2; // Do not use. Used by FR405 for ANTFS man id. - public const ushort Zephyr = 3; - public const ushort Dayton = 4; - public const ushort Idt = 5; - public const ushort Srm = 6; - public const ushort Quarq = 7; - public const ushort Ibike = 8; - public const ushort Saris = 9; - public const ushort SparkHk = 10; - public const ushort Tanita = 11; - public const ushort Echowell = 12; - public const ushort DynastreamOem = 13; - public const ushort Nautilus = 14; - public const ushort Dynastream = 15; - public const ushort Timex = 16; - public const ushort Metrigear = 17; - public const ushort Xelic = 18; - public const ushort Beurer = 19; - public const ushort Cardiosport = 20; - public const ushort AAndD = 21; - public const ushort Hmm = 22; - public const ushort Suunto = 23; - public const ushort ThitaElektronik = 24; - public const ushort Gpulse = 25; - public const ushort CleanMobile = 26; - public const ushort PedalBrain = 27; - public const ushort Peaksware = 28; - public const ushort Saxonar = 29; - public const ushort LemondFitness = 30; - public const ushort Dexcom = 31; - public const ushort WahooFitness = 32; - public const ushort OctaneFitness = 33; - public const ushort Archinoetics = 34; - public const ushort TheHurtBox = 35; - public const ushort CitizenSystems = 36; - public const ushort Magellan = 37; - public const ushort Osynce = 38; - public const ushort Holux = 39; - public const ushort Concept2 = 40; - public const ushort Shimano = 41; - public const ushort OneGiantLeap = 42; - public const ushort AceSensor = 43; - public const ushort BrimBrothers = 44; - public const ushort Xplova = 45; - public const ushort PerceptionDigital = 46; - public const ushort Bf1systems = 47; - public const ushort Pioneer = 48; - public const ushort Spantec = 49; - public const ushort Metalogics = 50; - public const ushort _4iiiis = 51; - public const ushort SeikoEpson = 52; - public const ushort SeikoEpsonOem = 53; - public const ushort IforPowell = 54; - public const ushort MaxwellGuider = 55; - public const ushort StarTrac = 56; - public const ushort Breakaway = 57; - public const ushort AlatechTechnologyLtd = 58; - public const ushort MioTechnologyEurope = 59; - public const ushort Rotor = 60; - public const ushort Geonaute = 61; - public const ushort IdBike = 62; - public const ushort Specialized = 63; - public const ushort Wtek = 64; - public const ushort PhysicalEnterprises = 65; - public const ushort NorthPoleEngineering = 66; - public const ushort Bkool = 67; - public const ushort Cateye = 68; - public const ushort StagesCycling = 69; - public const ushort Sigmasport = 70; - public const ushort Tomtom = 71; - public const ushort Peripedal = 72; - public const ushort Wattbike = 73; - public const ushort Moxy = 76; - public const ushort Ciclosport = 77; - public const ushort Powerbahn = 78; - public const ushort AcornProjectsAps = 79; - public const ushort Lifebeam = 80; - public const ushort Bontrager = 81; - public const ushort Wellgo = 82; - public const ushort Scosche = 83; - public const ushort Magura = 84; - public const ushort Woodway = 85; - public const ushort Elite = 86; - public const ushort NielsenKellerman = 87; - public const ushort DkCity = 88; - public const ushort Tacx = 89; - public const ushort DirectionTechnology = 90; - public const ushort Magtonic = 91; - public const ushort _1partcarbon = 92; - public const ushort InsideRideTechnologies = 93; - public const ushort SoundOfMotion = 94; - public const ushort Stryd = 95; - public const ushort Icg = 96; // Indoorcycling Group - public const ushort MiPulse = 97; - public const ushort BsxAthletics = 98; - public const ushort Look = 99; - public const ushort CampagnoloSrl = 100; - public const ushort BodyBikeSmart = 101; - public const ushort Praxisworks = 102; - public const ushort LimitsTechnology = 103; // Limits Technology Ltd. - public const ushort TopactionTechnology = 104; // TopAction Technology Inc. - public const ushort Cosinuss = 105; - public const ushort Fitcare = 106; - public const ushort Magene = 107; - public const ushort GiantManufacturingCo = 108; - public const ushort Tigrasport = 109; // Tigrasport - public const ushort Salutron = 110; - public const ushort Technogym = 111; - public const ushort BrytonSensors = 112; - public const ushort LatitudeLimited = 113; - public const ushort SoaringTechnology = 114; - public const ushort Igpsport = 115; - public const ushort Thinkrider = 116; - public const ushort GopherSport = 117; - public const ushort Waterrower = 118; - public const ushort Orangetheory = 119; - public const ushort Inpeak = 120; - public const ushort Kinetic = 121; - public const ushort JohnsonHealthTech = 122; - public const ushort PolarElectro = 123; - public const ushort Seesense = 124; - public const ushort NciTechnology = 125; - public const ushort Iqsquare = 126; - public const ushort Leomo = 127; - public const ushort IfitCom = 128; - public const ushort CorosByte = 129; - public const ushort VersaDesign = 130; - public const ushort Chileaf = 131; - public const ushort Cycplus = 132; - public const ushort GravaaByte = 133; - public const ushort Sigeyi = 134; - public const ushort Coospo = 135; - public const ushort Geoid = 136; - public const ushort Bosch = 137; - public const ushort Kyto = 138; - public const ushort KineticSports = 139; - public const ushort DecathlonByte = 140; - public const ushort TqSystems = 141; - public const ushort TagHeuer = 142; - public const ushort KeiserFitness = 143; - public const ushort ZwiftByte = 144; - public const ushort PorscheEp = 145; - public const ushort Development = 255; - public const ushort Healthandlife = 257; - public const ushort Lezyne = 258; - public const ushort ScribeLabs = 259; - public const ushort Zwift = 260; - public const ushort Watteam = 261; - public const ushort Recon = 262; - public const ushort FaveroElectronics = 263; - public const ushort Dynovelo = 264; - public const ushort Strava = 265; - public const ushort Precor = 266; // Amer Sports - public const ushort Bryton = 267; - public const ushort Sram = 268; - public const ushort Navman = 269; // MiTAC Global Corporation (Mio Technology) - public const ushort Cobi = 270; // COBI GmbH - public const ushort Spivi = 271; - public const ushort MioMagellan = 272; - public const ushort Evesports = 273; - public const ushort SensitivusGauge = 274; - public const ushort Podoon = 275; - public const ushort LifeTimeFitness = 276; - public const ushort FalcoEMotors = 277; // Falco eMotors Inc. - public const ushort Minoura = 278; - public const ushort Cycliq = 279; - public const ushort Luxottica = 280; - public const ushort TrainerRoad = 281; - public const ushort TheSufferfest = 282; - public const ushort Fullspeedahead = 283; - public const ushort Virtualtraining = 284; - public const ushort Feedbacksports = 285; - public const ushort Omata = 286; - public const ushort Vdo = 287; - public const ushort Magneticdays = 288; - public const ushort Hammerhead = 289; - public const ushort KineticByKurt = 290; - public const ushort Shapelog = 291; - public const ushort Dabuziduo = 292; - public const ushort Jetblack = 293; - public const ushort Coros = 294; - public const ushort Virtugo = 295; - public const ushort Velosense = 296; - public const ushort Cycligentinc = 297; - public const ushort Trailforks = 298; - public const ushort MahleEbikemotion = 299; - public const ushort Nurvv = 300; - public const ushort Microprogram = 301; - public const ushort Zone5cloud = 302; - public const ushort Greenteg = 303; - public const ushort YamahaMotors = 304; - public const ushort Whoop = 305; - public const ushort Gravaa = 306; - public const ushort Onelap = 307; - public const ushort MonarkExercise = 308; - public const ushort Form = 309; - public const ushort Decathlon = 310; - public const ushort Syncros = 311; - public const ushort Heatup = 312; - public const ushort Cannondale = 313; - public const ushort TrueFitness = 314; - public const ushort RGTCycling = 315; - public const ushort Vasa = 316; - public const ushort RaceRepublic = 317; - public const ushort Fazua = 318; - public const ushort OrekaTraining = 319; - public const ushort Lsec = 320; // Lishun Electric & Communication - public const ushort LululemonStudio = 321; - public const ushort Shanyue = 322; - public const ushort Actigraphcorp = 5759; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/MesgCount.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/MesgCount.cs deleted file mode 100644 index 8d236ac2a..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/MesgCount.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile MesgCount type as an enum - /// - public enum MesgCount : byte - { - NumPerFile = 0, - MaxPerFile = 1, - MaxPerFileType = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/MesgNum.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/MesgNum.cs deleted file mode 100644 index 69e9564ee..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/MesgNum.cs +++ /dev/null @@ -1,123 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile MesgNum type as a class - /// - public static class MesgNum - { - public const ushort FileId = 0; - public const ushort Capabilities = 1; - public const ushort DeviceSettings = 2; - public const ushort UserProfile = 3; - public const ushort HrmProfile = 4; - public const ushort SdmProfile = 5; - public const ushort BikeProfile = 6; - public const ushort ZonesTarget = 7; - public const ushort HrZone = 8; - public const ushort PowerZone = 9; - public const ushort MetZone = 10; - public const ushort Sport = 12; - public const ushort Goal = 15; - public const ushort Session = 18; - public const ushort Lap = 19; - public const ushort Record = 20; - public const ushort Event = 21; - public const ushort DeviceInfo = 23; - public const ushort Workout = 26; - public const ushort WorkoutStep = 27; - public const ushort Schedule = 28; - public const ushort WeightScale = 30; - public const ushort Course = 31; - public const ushort CoursePoint = 32; - public const ushort Totals = 33; - public const ushort Activity = 34; - public const ushort Software = 35; - public const ushort FileCapabilities = 37; - public const ushort MesgCapabilities = 38; - public const ushort FieldCapabilities = 39; - public const ushort FileCreator = 49; - public const ushort BloodPressure = 51; - public const ushort SpeedZone = 53; - public const ushort Monitoring = 55; - public const ushort TrainingFile = 72; - public const ushort Hrv = 78; - public const ushort AntRx = 80; - public const ushort AntTx = 81; - public const ushort AntChannelId = 82; - public const ushort Length = 101; - public const ushort MonitoringInfo = 103; - public const ushort Pad = 105; - public const ushort SlaveDevice = 106; - public const ushort Connectivity = 127; - public const ushort WeatherConditions = 128; - public const ushort WeatherAlert = 129; - public const ushort CadenceZone = 131; - public const ushort Hr = 132; - public const ushort SegmentLap = 142; - public const ushort MemoGlob = 145; - public const ushort SegmentId = 148; - public const ushort SegmentLeaderboardEntry = 149; - public const ushort SegmentPoint = 150; - public const ushort SegmentFile = 151; - public const ushort WorkoutSession = 158; - public const ushort WatchfaceSettings = 159; - public const ushort GpsMetadata = 160; - public const ushort CameraEvent = 161; - public const ushort TimestampCorrelation = 162; - public const ushort GyroscopeData = 164; - public const ushort AccelerometerData = 165; - public const ushort ThreeDSensorCalibration = 167; - public const ushort VideoFrame = 169; - public const ushort ObdiiData = 174; - public const ushort NmeaSentence = 177; - public const ushort AviationAttitude = 178; - public const ushort Video = 184; - public const ushort VideoTitle = 185; - public const ushort VideoDescription = 186; - public const ushort VideoClip = 187; - public const ushort OhrSettings = 188; - public const ushort ExdScreenConfiguration = 200; - public const ushort ExdDataFieldConfiguration = 201; - public const ushort ExdDataConceptConfiguration = 202; - public const ushort FieldDescription = 206; - public const ushort DeveloperDataId = 207; - public const ushort MagnetometerData = 208; - public const ushort BarometerData = 209; - public const ushort OneDSensorCalibration = 210; - public const ushort TimeInZone = 216; - public const ushort Set = 225; - public const ushort StressLevel = 227; - public const ushort DiveSettings = 258; - public const ushort DiveGas = 259; - public const ushort DiveAlarm = 262; - public const ushort ExerciseTitle = 264; - public const ushort DiveSummary = 268; - public const ushort Jump = 285; - public const ushort Split = 312; - public const ushort ClimbPro = 317; - public const ushort TankUpdate = 319; - public const ushort TankSummary = 323; - public const ushort DeviceAuxBatteryInfo = 375; - public const ushort DiveApneaAlarm = 393; - public const ushort MfgRangeMin = 0xFF00; // 0xFF00 - 0xFFFE reserved for manufacturer specific messages - public const ushort MfgRangeMax = 0xFFFE; // 0xFF00 - 0xFFFE reserved for manufacturer specific messages - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/MessageIndex.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/MessageIndex.cs deleted file mode 100644 index 776e96ab3..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/MessageIndex.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile MessageIndex type as a class - /// - public static class MessageIndex - { - public const ushort Selected = 0x8000; // message is selected if set - public const ushort Reserved = 0x7000; // reserved (default 0) - public const ushort Mask = 0x0FFF; // index - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/NoFlyTimeMode.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/NoFlyTimeMode.cs deleted file mode 100644 index 8bf8146e2..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/NoFlyTimeMode.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile NoFlyTimeMode type as an enum - /// - public enum NoFlyTimeMode : byte - { - Standard = 0, - Flat24Hours = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/OlympicLiftExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/OlympicLiftExerciseName.cs deleted file mode 100644 index 1402e2f05..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/OlympicLiftExerciseName.cs +++ /dev/null @@ -1,48 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile OlympicLiftExerciseName type as a class - /// - public static class OlympicLiftExerciseName - { - public const ushort BarbellHangPowerClean = 0; - public const ushort BarbellHangSquatClean = 1; - public const ushort BarbellPowerClean = 2; - public const ushort BarbellPowerSnatch = 3; - public const ushort BarbellSquatClean = 4; - public const ushort CleanAndJerk = 5; - public const ushort BarbellHangPowerSnatch = 6; - public const ushort BarbellHangPull = 7; - public const ushort BarbellHighPull = 8; - public const ushort BarbellSnatch = 9; - public const ushort BarbellSplitJerk = 10; - public const ushort Clean = 11; - public const ushort DumbbellClean = 12; - public const ushort DumbbellHangPull = 13; - public const ushort OneHandDumbbellSplitSnatch = 14; - public const ushort PushJerk = 15; - public const ushort SingleArmDumbbellSnatch = 16; - public const ushort SingleArmHangSnatch = 17; - public const ushort SingleArmKettlebellSnatch = 18; - public const ushort SplitJerk = 19; - public const ushort SquatCleanAndJerk = 20; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/PlankExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/PlankExerciseName.cs deleted file mode 100644 index 7aeb43f7b..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/PlankExerciseName.cs +++ /dev/null @@ -1,162 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile PlankExerciseName type as a class - /// - public static class PlankExerciseName - { - public const ushort _45DegreePlank = 0; - public const ushort Weighted45DegreePlank = 1; - public const ushort _90DegreeStaticHold = 2; - public const ushort Weighted90DegreeStaticHold = 3; - public const ushort BearCrawl = 4; - public const ushort WeightedBearCrawl = 5; - public const ushort CrossBodyMountainClimber = 6; - public const ushort WeightedCrossBodyMountainClimber = 7; - public const ushort ElbowPlankPikeJacks = 8; - public const ushort WeightedElbowPlankPikeJacks = 9; - public const ushort ElevatedFeetPlank = 10; - public const ushort WeightedElevatedFeetPlank = 11; - public const ushort ElevatorAbs = 12; - public const ushort WeightedElevatorAbs = 13; - public const ushort ExtendedPlank = 14; - public const ushort WeightedExtendedPlank = 15; - public const ushort FullPlankPasseTwist = 16; - public const ushort WeightedFullPlankPasseTwist = 17; - public const ushort InchingElbowPlank = 18; - public const ushort WeightedInchingElbowPlank = 19; - public const ushort InchwormToSidePlank = 20; - public const ushort WeightedInchwormToSidePlank = 21; - public const ushort KneelingPlank = 22; - public const ushort WeightedKneelingPlank = 23; - public const ushort KneelingSidePlankWithLegLift = 24; - public const ushort WeightedKneelingSidePlankWithLegLift = 25; - public const ushort LateralRoll = 26; - public const ushort WeightedLateralRoll = 27; - public const ushort LyingReversePlank = 28; - public const ushort WeightedLyingReversePlank = 29; - public const ushort MedicineBallMountainClimber = 30; - public const ushort WeightedMedicineBallMountainClimber = 31; - public const ushort ModifiedMountainClimberAndExtension = 32; - public const ushort WeightedModifiedMountainClimberAndExtension = 33; - public const ushort MountainClimber = 34; - public const ushort WeightedMountainClimber = 35; - public const ushort MountainClimberOnSlidingDiscs = 36; - public const ushort WeightedMountainClimberOnSlidingDiscs = 37; - public const ushort MountainClimberWithFeetOnBosuBall = 38; - public const ushort WeightedMountainClimberWithFeetOnBosuBall = 39; - public const ushort MountainClimberWithHandsOnBench = 40; - public const ushort MountainClimberWithHandsOnSwissBall = 41; - public const ushort WeightedMountainClimberWithHandsOnSwissBall = 42; - public const ushort Plank = 43; - public const ushort PlankJacksWithFeetOnSlidingDiscs = 44; - public const ushort WeightedPlankJacksWithFeetOnSlidingDiscs = 45; - public const ushort PlankKneeTwist = 46; - public const ushort WeightedPlankKneeTwist = 47; - public const ushort PlankPikeJumps = 48; - public const ushort WeightedPlankPikeJumps = 49; - public const ushort PlankPikes = 50; - public const ushort WeightedPlankPikes = 51; - public const ushort PlankToStandUp = 52; - public const ushort WeightedPlankToStandUp = 53; - public const ushort PlankWithArmRaise = 54; - public const ushort WeightedPlankWithArmRaise = 55; - public const ushort PlankWithKneeToElbow = 56; - public const ushort WeightedPlankWithKneeToElbow = 57; - public const ushort PlankWithObliqueCrunch = 58; - public const ushort WeightedPlankWithObliqueCrunch = 59; - public const ushort PlyometricSidePlank = 60; - public const ushort WeightedPlyometricSidePlank = 61; - public const ushort RollingSidePlank = 62; - public const ushort WeightedRollingSidePlank = 63; - public const ushort SideKickPlank = 64; - public const ushort WeightedSideKickPlank = 65; - public const ushort SidePlank = 66; - public const ushort WeightedSidePlank = 67; - public const ushort SidePlankAndRow = 68; - public const ushort WeightedSidePlankAndRow = 69; - public const ushort SidePlankLift = 70; - public const ushort WeightedSidePlankLift = 71; - public const ushort SidePlankWithElbowOnBosuBall = 72; - public const ushort WeightedSidePlankWithElbowOnBosuBall = 73; - public const ushort SidePlankWithFeetOnBench = 74; - public const ushort WeightedSidePlankWithFeetOnBench = 75; - public const ushort SidePlankWithKneeCircle = 76; - public const ushort WeightedSidePlankWithKneeCircle = 77; - public const ushort SidePlankWithKneeTuck = 78; - public const ushort WeightedSidePlankWithKneeTuck = 79; - public const ushort SidePlankWithLegLift = 80; - public const ushort WeightedSidePlankWithLegLift = 81; - public const ushort SidePlankWithReachUnder = 82; - public const ushort WeightedSidePlankWithReachUnder = 83; - public const ushort SingleLegElevatedFeetPlank = 84; - public const ushort WeightedSingleLegElevatedFeetPlank = 85; - public const ushort SingleLegFlexAndExtend = 86; - public const ushort WeightedSingleLegFlexAndExtend = 87; - public const ushort SingleLegSidePlank = 88; - public const ushort WeightedSingleLegSidePlank = 89; - public const ushort SpidermanPlank = 90; - public const ushort WeightedSpidermanPlank = 91; - public const ushort StraightArmPlank = 92; - public const ushort WeightedStraightArmPlank = 93; - public const ushort StraightArmPlankWithShoulderTouch = 94; - public const ushort WeightedStraightArmPlankWithShoulderTouch = 95; - public const ushort SwissBallPlank = 96; - public const ushort WeightedSwissBallPlank = 97; - public const ushort SwissBallPlankLegLift = 98; - public const ushort WeightedSwissBallPlankLegLift = 99; - public const ushort SwissBallPlankLegLiftAndHold = 100; - public const ushort SwissBallPlankWithFeetOnBench = 101; - public const ushort WeightedSwissBallPlankWithFeetOnBench = 102; - public const ushort SwissBallProneJackknife = 103; - public const ushort WeightedSwissBallProneJackknife = 104; - public const ushort SwissBallSidePlank = 105; - public const ushort WeightedSwissBallSidePlank = 106; - public const ushort ThreeWayPlank = 107; - public const ushort WeightedThreeWayPlank = 108; - public const ushort TowelPlankAndKneeIn = 109; - public const ushort WeightedTowelPlankAndKneeIn = 110; - public const ushort TStabilization = 111; - public const ushort WeightedTStabilization = 112; - public const ushort TurkishGetUpToSidePlank = 113; - public const ushort WeightedTurkishGetUpToSidePlank = 114; - public const ushort TwoPointPlank = 115; - public const ushort WeightedTwoPointPlank = 116; - public const ushort WeightedPlank = 117; - public const ushort WideStancePlankWithDiagonalArmLift = 118; - public const ushort WeightedWideStancePlankWithDiagonalArmLift = 119; - public const ushort WideStancePlankWithDiagonalLegLift = 120; - public const ushort WeightedWideStancePlankWithDiagonalLegLift = 121; - public const ushort WideStancePlankWithLegLift = 122; - public const ushort WeightedWideStancePlankWithLegLift = 123; - public const ushort WideStancePlankWithOppositeArmAndLegLift = 124; - public const ushort WeightedMountainClimberWithHandsOnBench = 125; - public const ushort WeightedSwissBallPlankLegLiftAndHold = 126; - public const ushort WeightedWideStancePlankWithOppositeArmAndLegLift = 127; - public const ushort PlankWithFeetOnSwissBall = 128; - public const ushort SidePlankToPlankWithReachUnder = 129; - public const ushort BridgeWithGluteLowerLift = 130; - public const ushort BridgeOneLegBridge = 131; - public const ushort PlankWithArmVariations = 132; - public const ushort PlankWithLegLift = 133; - public const ushort ReversePlankWithLegPull = 134; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/PlyoExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/PlyoExerciseName.cs deleted file mode 100644 index 2454db976..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/PlyoExerciseName.cs +++ /dev/null @@ -1,60 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile PlyoExerciseName type as a class - /// - public static class PlyoExerciseName - { - public const ushort AlternatingJumpLunge = 0; - public const ushort WeightedAlternatingJumpLunge = 1; - public const ushort BarbellJumpSquat = 2; - public const ushort BodyWeightJumpSquat = 3; - public const ushort WeightedJumpSquat = 4; - public const ushort CrossKneeStrike = 5; - public const ushort WeightedCrossKneeStrike = 6; - public const ushort DepthJump = 7; - public const ushort WeightedDepthJump = 8; - public const ushort DumbbellJumpSquat = 9; - public const ushort DumbbellSplitJump = 10; - public const ushort FrontKneeStrike = 11; - public const ushort WeightedFrontKneeStrike = 12; - public const ushort HighBoxJump = 13; - public const ushort WeightedHighBoxJump = 14; - public const ushort IsometricExplosiveBodyWeightJumpSquat = 15; - public const ushort WeightedIsometricExplosiveJumpSquat = 16; - public const ushort LateralLeapAndHop = 17; - public const ushort WeightedLateralLeapAndHop = 18; - public const ushort LateralPlyoSquats = 19; - public const ushort WeightedLateralPlyoSquats = 20; - public const ushort LateralSlide = 21; - public const ushort WeightedLateralSlide = 22; - public const ushort MedicineBallOverheadThrows = 23; - public const ushort MedicineBallSideThrow = 24; - public const ushort MedicineBallSlam = 25; - public const ushort SideToSideMedicineBallThrows = 26; - public const ushort SideToSideShuffleJump = 27; - public const ushort WeightedSideToSideShuffleJump = 28; - public const ushort SquatJumpOntoBox = 29; - public const ushort WeightedSquatJumpOntoBox = 30; - public const ushort SquatJumpsInAndOut = 31; - public const ushort WeightedSquatJumpsInAndOut = 32; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/PowerPhaseType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/PowerPhaseType.cs deleted file mode 100644 index 056bf7a62..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/PowerPhaseType.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile PowerPhaseType type as an enum - /// - public enum PowerPhaseType : byte - { - PowerPhaseStartAngle = 0, - PowerPhaseEndAngle = 1, - PowerPhaseArcLength = 2, - PowerPhaseCenter = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/PullUpExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/PullUpExerciseName.cs deleted file mode 100644 index ecd1534f1..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/PullUpExerciseName.cs +++ /dev/null @@ -1,66 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile PullUpExerciseName type as a class - /// - public static class PullUpExerciseName - { - public const ushort BandedPullUps = 0; - public const ushort _30DegreeLatPulldown = 1; - public const ushort BandAssistedChinUp = 2; - public const ushort CloseGripChinUp = 3; - public const ushort WeightedCloseGripChinUp = 4; - public const ushort CloseGripLatPulldown = 5; - public const ushort CrossoverChinUp = 6; - public const ushort WeightedCrossoverChinUp = 7; - public const ushort EzBarPullover = 8; - public const ushort HangingHurdle = 9; - public const ushort WeightedHangingHurdle = 10; - public const ushort KneelingLatPulldown = 11; - public const ushort KneelingUnderhandGripLatPulldown = 12; - public const ushort LatPulldown = 13; - public const ushort MixedGripChinUp = 14; - public const ushort WeightedMixedGripChinUp = 15; - public const ushort MixedGripPullUp = 16; - public const ushort WeightedMixedGripPullUp = 17; - public const ushort ReverseGripPulldown = 18; - public const ushort StandingCablePullover = 19; - public const ushort StraightArmPulldown = 20; - public const ushort SwissBallEzBarPullover = 21; - public const ushort TowelPullUp = 22; - public const ushort WeightedTowelPullUp = 23; - public const ushort WeightedPullUp = 24; - public const ushort WideGripLatPulldown = 25; - public const ushort WideGripPullUp = 26; - public const ushort WeightedWideGripPullUp = 27; - public const ushort BurpeePullUp = 28; - public const ushort WeightedBurpeePullUp = 29; - public const ushort JumpingPullUps = 30; - public const ushort WeightedJumpingPullUps = 31; - public const ushort KippingPullUp = 32; - public const ushort WeightedKippingPullUp = 33; - public const ushort LPullUp = 34; - public const ushort WeightedLPullUp = 35; - public const ushort SuspendedChinUp = 36; - public const ushort WeightedSuspendedChinUp = 37; - public const ushort PullUp = 38; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/PushUpExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/PushUpExerciseName.cs deleted file mode 100644 index ea91fc483..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/PushUpExerciseName.cs +++ /dev/null @@ -1,106 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile PushUpExerciseName type as a class - /// - public static class PushUpExerciseName - { - public const ushort ChestPressWithBand = 0; - public const ushort AlternatingStaggeredPushUp = 1; - public const ushort WeightedAlternatingStaggeredPushUp = 2; - public const ushort AlternatingHandsMedicineBallPushUp = 3; - public const ushort WeightedAlternatingHandsMedicineBallPushUp = 4; - public const ushort BosuBallPushUp = 5; - public const ushort WeightedBosuBallPushUp = 6; - public const ushort ClappingPushUp = 7; - public const ushort WeightedClappingPushUp = 8; - public const ushort CloseGripMedicineBallPushUp = 9; - public const ushort WeightedCloseGripMedicineBallPushUp = 10; - public const ushort CloseHandsPushUp = 11; - public const ushort WeightedCloseHandsPushUp = 12; - public const ushort DeclinePushUp = 13; - public const ushort WeightedDeclinePushUp = 14; - public const ushort DiamondPushUp = 15; - public const ushort WeightedDiamondPushUp = 16; - public const ushort ExplosiveCrossoverPushUp = 17; - public const ushort WeightedExplosiveCrossoverPushUp = 18; - public const ushort ExplosivePushUp = 19; - public const ushort WeightedExplosivePushUp = 20; - public const ushort FeetElevatedSideToSidePushUp = 21; - public const ushort WeightedFeetElevatedSideToSidePushUp = 22; - public const ushort HandReleasePushUp = 23; - public const ushort WeightedHandReleasePushUp = 24; - public const ushort HandstandPushUp = 25; - public const ushort WeightedHandstandPushUp = 26; - public const ushort InclinePushUp = 27; - public const ushort WeightedInclinePushUp = 28; - public const ushort IsometricExplosivePushUp = 29; - public const ushort WeightedIsometricExplosivePushUp = 30; - public const ushort JudoPushUp = 31; - public const ushort WeightedJudoPushUp = 32; - public const ushort KneelingPushUp = 33; - public const ushort WeightedKneelingPushUp = 34; - public const ushort MedicineBallChestPass = 35; - public const ushort MedicineBallPushUp = 36; - public const ushort WeightedMedicineBallPushUp = 37; - public const ushort OneArmPushUp = 38; - public const ushort WeightedOneArmPushUp = 39; - public const ushort WeightedPushUp = 40; - public const ushort PushUpAndRow = 41; - public const ushort WeightedPushUpAndRow = 42; - public const ushort PushUpPlus = 43; - public const ushort WeightedPushUpPlus = 44; - public const ushort PushUpWithFeetOnSwissBall = 45; - public const ushort WeightedPushUpWithFeetOnSwissBall = 46; - public const ushort PushUpWithOneHandOnMedicineBall = 47; - public const ushort WeightedPushUpWithOneHandOnMedicineBall = 48; - public const ushort ShoulderPushUp = 49; - public const ushort WeightedShoulderPushUp = 50; - public const ushort SingleArmMedicineBallPushUp = 51; - public const ushort WeightedSingleArmMedicineBallPushUp = 52; - public const ushort SpidermanPushUp = 53; - public const ushort WeightedSpidermanPushUp = 54; - public const ushort StackedFeetPushUp = 55; - public const ushort WeightedStackedFeetPushUp = 56; - public const ushort StaggeredHandsPushUp = 57; - public const ushort WeightedStaggeredHandsPushUp = 58; - public const ushort SuspendedPushUp = 59; - public const ushort WeightedSuspendedPushUp = 60; - public const ushort SwissBallPushUp = 61; - public const ushort WeightedSwissBallPushUp = 62; - public const ushort SwissBallPushUpPlus = 63; - public const ushort WeightedSwissBallPushUpPlus = 64; - public const ushort TPushUp = 65; - public const ushort WeightedTPushUp = 66; - public const ushort TripleStopPushUp = 67; - public const ushort WeightedTripleStopPushUp = 68; - public const ushort WideHandsPushUp = 69; - public const ushort WeightedWideHandsPushUp = 70; - public const ushort ParalletteHandstandPushUp = 71; - public const ushort WeightedParalletteHandstandPushUp = 72; - public const ushort RingHandstandPushUp = 73; - public const ushort WeightedRingHandstandPushUp = 74; - public const ushort RingPushUp = 75; - public const ushort WeightedRingPushUp = 76; - public const ushort PushUp = 77; - public const ushort PilatesPushup = 78; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/PwrZoneCalc.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/PwrZoneCalc.cs deleted file mode 100644 index 63bad1ff5..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/PwrZoneCalc.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile PwrZoneCalc type as an enum - /// - public enum PwrZoneCalc : byte - { - Custom = 0, - PercentFtp = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/RadarThreatLevelType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/RadarThreatLevelType.cs deleted file mode 100644 index 5f985d512..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/RadarThreatLevelType.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile RadarThreatLevelType type as an enum - /// - public enum RadarThreatLevelType : byte - { - ThreatUnknown = 0, - ThreatNone = 1, - ThreatApproaching = 2, - ThreatApproachingFast = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/RiderPositionType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/RiderPositionType.cs deleted file mode 100644 index 8add7747a..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/RiderPositionType.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile RiderPositionType type as an enum - /// - public enum RiderPositionType : byte - { - Seated = 0, - Standing = 1, - TransitionToSeated = 2, - TransitionToStanding = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/RowExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/RowExerciseName.cs deleted file mode 100644 index fe2431874..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/RowExerciseName.cs +++ /dev/null @@ -1,61 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile RowExerciseName type as a class - /// - public static class RowExerciseName - { - public const ushort BarbellStraightLegDeadliftToRow = 0; - public const ushort CableRowStanding = 1; - public const ushort DumbbellRow = 2; - public const ushort ElevatedFeetInvertedRow = 3; - public const ushort WeightedElevatedFeetInvertedRow = 4; - public const ushort FacePull = 5; - public const ushort FacePullWithExternalRotation = 6; - public const ushort InvertedRowWithFeetOnSwissBall = 7; - public const ushort WeightedInvertedRowWithFeetOnSwissBall = 8; - public const ushort KettlebellRow = 9; - public const ushort ModifiedInvertedRow = 10; - public const ushort WeightedModifiedInvertedRow = 11; - public const ushort NeutralGripAlternatingDumbbellRow = 12; - public const ushort OneArmBentOverRow = 13; - public const ushort OneLeggedDumbbellRow = 14; - public const ushort RenegadeRow = 15; - public const ushort ReverseGripBarbellRow = 16; - public const ushort RopeHandleCableRow = 17; - public const ushort SeatedCableRow = 18; - public const ushort SeatedDumbbellRow = 19; - public const ushort SingleArmCableRow = 20; - public const ushort SingleArmCableRowAndRotation = 21; - public const ushort SingleArmInvertedRow = 22; - public const ushort WeightedSingleArmInvertedRow = 23; - public const ushort SingleArmNeutralGripDumbbellRow = 24; - public const ushort SingleArmNeutralGripDumbbellRowAndRotation = 25; - public const ushort SuspendedInvertedRow = 26; - public const ushort WeightedSuspendedInvertedRow = 27; - public const ushort TBarRow = 28; - public const ushort TowelGripInvertedRow = 29; - public const ushort WeightedTowelGripInvertedRow = 30; - public const ushort UnderhandGripCableRow = 31; - public const ushort VGripCableRow = 32; - public const ushort WideGripSeatedCableRow = 33; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/RunExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/RunExerciseName.cs deleted file mode 100644 index 8e7fb4de5..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/RunExerciseName.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile RunExerciseName type as a class - /// - public static class RunExerciseName - { - public const ushort Run = 0; - public const ushort Walk = 1; - public const ushort Jog = 2; - public const ushort Sprint = 3; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Schedule.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Schedule.cs deleted file mode 100644 index dea584514..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Schedule.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Schedule type as an enum - /// - public enum Schedule : byte - { - Workout = 0, - Course = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SegmentDeleteStatus.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SegmentDeleteStatus.cs deleted file mode 100644 index 6fa8a3d8a..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SegmentDeleteStatus.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SegmentDeleteStatus type as an enum - /// - public enum SegmentDeleteStatus : byte - { - DoNotDelete = 0, - DeleteOne = 1, - DeleteAll = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SegmentLapStatus.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SegmentLapStatus.cs deleted file mode 100644 index 4bb36ae86..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SegmentLapStatus.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SegmentLapStatus type as an enum - /// - public enum SegmentLapStatus : byte - { - End = 0, - Fail = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SegmentLeaderboardType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SegmentLeaderboardType.cs deleted file mode 100644 index edb0afa9e..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SegmentLeaderboardType.cs +++ /dev/null @@ -1,38 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SegmentLeaderboardType type as an enum - /// - public enum SegmentLeaderboardType : byte - { - Overall = 0, - PersonalBest = 1, - Connections = 2, - Group = 3, - Challenger = 4, - Kom = 5, - Qom = 6, - Pr = 7, - Goal = 8, - Rival = 9, - ClubLeader = 10, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SegmentSelectionType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SegmentSelectionType.cs deleted file mode 100644 index ed2098dac..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SegmentSelectionType.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SegmentSelectionType type as an enum - /// - public enum SegmentSelectionType : byte - { - Starred = 0, - Suggested = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SensorType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SensorType.cs deleted file mode 100644 index 703c8f1e3..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SensorType.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SensorType type as an enum - /// - public enum SensorType : byte - { - Accelerometer = 0, - Gyroscope = 1, - Compass = 2, - Barometer = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SessionTrigger.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SessionTrigger.cs deleted file mode 100644 index d192e77e1..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SessionTrigger.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SessionTrigger type as an enum - /// - public enum SessionTrigger : byte - { - ActivityEnd = 0, - Manual = 1, - AutoMultiSport = 2, - FitnessEquipment = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SetType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SetType.cs deleted file mode 100644 index ddb4b8f7a..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SetType.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SetType type as a class - /// - public static class SetType - { - public const byte Rest = 0; - public const byte Active = 1; - public const byte Invalid = (byte)0xFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ShoulderPressExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ShoulderPressExerciseName.cs deleted file mode 100644 index c908e04a5..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ShoulderPressExerciseName.cs +++ /dev/null @@ -1,51 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ShoulderPressExerciseName type as a class - /// - public static class ShoulderPressExerciseName - { - public const ushort AlternatingDumbbellShoulderPress = 0; - public const ushort ArnoldPress = 1; - public const ushort BarbellFrontSquatToPushPress = 2; - public const ushort BarbellPushPress = 3; - public const ushort BarbellShoulderPress = 4; - public const ushort DeadCurlPress = 5; - public const ushort DumbbellAlternatingShoulderPressAndTwist = 6; - public const ushort DumbbellHammerCurlToLungeToPress = 7; - public const ushort DumbbellPushPress = 8; - public const ushort FloorInvertedShoulderPress = 9; - public const ushort WeightedFloorInvertedShoulderPress = 10; - public const ushort InvertedShoulderPress = 11; - public const ushort WeightedInvertedShoulderPress = 12; - public const ushort OneArmPushPress = 13; - public const ushort OverheadBarbellPress = 14; - public const ushort OverheadDumbbellPress = 15; - public const ushort SeatedBarbellShoulderPress = 16; - public const ushort SeatedDumbbellShoulderPress = 17; - public const ushort SingleArmDumbbellShoulderPress = 18; - public const ushort SingleArmStepUpAndPress = 19; - public const ushort SmithMachineOverheadPress = 20; - public const ushort SplitStanceHammerCurlToPress = 21; - public const ushort SwissBallDumbbellShoulderPress = 22; - public const ushort WeightPlateFrontRaise = 23; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ShoulderStabilityExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ShoulderStabilityExerciseName.cs deleted file mode 100644 index 4383219cf..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ShoulderStabilityExerciseName.cs +++ /dev/null @@ -1,60 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ShoulderStabilityExerciseName type as a class - /// - public static class ShoulderStabilityExerciseName - { - public const ushort _90DegreeCableExternalRotation = 0; - public const ushort BandExternalRotation = 1; - public const ushort BandInternalRotation = 2; - public const ushort BentArmLateralRaiseAndExternalRotation = 3; - public const ushort CableExternalRotation = 4; - public const ushort DumbbellFacePullWithExternalRotation = 5; - public const ushort FloorIRaise = 6; - public const ushort WeightedFloorIRaise = 7; - public const ushort FloorTRaise = 8; - public const ushort WeightedFloorTRaise = 9; - public const ushort FloorYRaise = 10; - public const ushort WeightedFloorYRaise = 11; - public const ushort InclineIRaise = 12; - public const ushort WeightedInclineIRaise = 13; - public const ushort InclineLRaise = 14; - public const ushort WeightedInclineLRaise = 15; - public const ushort InclineTRaise = 16; - public const ushort WeightedInclineTRaise = 17; - public const ushort InclineWRaise = 18; - public const ushort WeightedInclineWRaise = 19; - public const ushort InclineYRaise = 20; - public const ushort WeightedInclineYRaise = 21; - public const ushort LyingExternalRotation = 22; - public const ushort SeatedDumbbellExternalRotation = 23; - public const ushort StandingLRaise = 24; - public const ushort SwissBallIRaise = 25; - public const ushort WeightedSwissBallIRaise = 26; - public const ushort SwissBallTRaise = 27; - public const ushort WeightedSwissBallTRaise = 28; - public const ushort SwissBallWRaise = 29; - public const ushort WeightedSwissBallWRaise = 30; - public const ushort SwissBallYRaise = 31; - public const ushort WeightedSwissBallYRaise = 32; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ShrugExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ShrugExerciseName.cs deleted file mode 100644 index 28b5db923..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/ShrugExerciseName.cs +++ /dev/null @@ -1,44 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ShrugExerciseName type as a class - /// - public static class ShrugExerciseName - { - public const ushort BarbellJumpShrug = 0; - public const ushort BarbellShrug = 1; - public const ushort BarbellUprightRow = 2; - public const ushort BehindTheBackSmithMachineShrug = 3; - public const ushort DumbbellJumpShrug = 4; - public const ushort DumbbellShrug = 5; - public const ushort DumbbellUprightRow = 6; - public const ushort InclineDumbbellShrug = 7; - public const ushort OverheadBarbellShrug = 8; - public const ushort OverheadDumbbellShrug = 9; - public const ushort ScaptionAndShrug = 10; - public const ushort ScapularRetraction = 11; - public const ushort SerratusChairShrug = 12; - public const ushort WeightedSerratusChairShrug = 13; - public const ushort SerratusShrug = 14; - public const ushort WeightedSerratusShrug = 15; - public const ushort WideGripJumpShrug = 16; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Side.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Side.cs deleted file mode 100644 index ccd715bf9..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Side.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Side type as an enum - /// - public enum Side : byte - { - Right = 0, - Left = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SitUpExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SitUpExerciseName.cs deleted file mode 100644 index 22e74dd8a..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SitUpExerciseName.cs +++ /dev/null @@ -1,65 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SitUpExerciseName type as a class - /// - public static class SitUpExerciseName - { - public const ushort AlternatingSitUp = 0; - public const ushort WeightedAlternatingSitUp = 1; - public const ushort BentKneeVUp = 2; - public const ushort WeightedBentKneeVUp = 3; - public const ushort ButterflySitUp = 4; - public const ushort WeightedButterflySitup = 5; - public const ushort CrossPunchRollUp = 6; - public const ushort WeightedCrossPunchRollUp = 7; - public const ushort CrossedArmsSitUp = 8; - public const ushort WeightedCrossedArmsSitUp = 9; - public const ushort GetUpSitUp = 10; - public const ushort WeightedGetUpSitUp = 11; - public const ushort HoveringSitUp = 12; - public const ushort WeightedHoveringSitUp = 13; - public const ushort KettlebellSitUp = 14; - public const ushort MedicineBallAlternatingVUp = 15; - public const ushort MedicineBallSitUp = 16; - public const ushort MedicineBallVUp = 17; - public const ushort ModifiedSitUp = 18; - public const ushort NegativeSitUp = 19; - public const ushort OneArmFullSitUp = 20; - public const ushort RecliningCircle = 21; - public const ushort WeightedRecliningCircle = 22; - public const ushort ReverseCurlUp = 23; - public const ushort WeightedReverseCurlUp = 24; - public const ushort SingleLegSwissBallJackknife = 25; - public const ushort WeightedSingleLegSwissBallJackknife = 26; - public const ushort TheTeaser = 27; - public const ushort TheTeaserWeighted = 28; - public const ushort ThreePartRollDown = 29; - public const ushort WeightedThreePartRollDown = 30; - public const ushort VUp = 31; - public const ushort WeightedVUp = 32; - public const ushort WeightedRussianTwistOnSwissBall = 33; - public const ushort WeightedSitUp = 34; - public const ushort XAbs = 35; - public const ushort WeightedXAbs = 36; - public const ushort SitUp = 37; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SourceType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SourceType.cs deleted file mode 100644 index b74b44809..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SourceType.cs +++ /dev/null @@ -1,33 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SourceType type as an enum - /// - public enum SourceType : byte - { - Ant = 0, - Antplus = 1, - Bluetooth = 2, - BluetoothLowEnergy = 3, - Wifi = 4, - Local = 5, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SplitType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SplitType.cs deleted file mode 100644 index e59992b83..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SplitType.cs +++ /dev/null @@ -1,48 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SplitType type as an enum - /// - public enum SplitType : byte - { - AscentSplit = 1, - DescentSplit = 2, - IntervalActive = 3, - IntervalRest = 4, - IntervalWarmup = 5, - IntervalCooldown = 6, - IntervalRecovery = 7, - IntervalOther = 8, - ClimbActive = 9, - ClimbRest = 10, - SurfActive = 11, - RunActive = 12, - RunRest = 13, - WorkoutRound = 14, - RwdRun = 17, - RwdWalk = 18, - WindsurfActive = 21, - RwdStand = 22, - Transition = 23, - SkiLiftSplit = 28, - SkiRunSplit = 29, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Sport.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Sport.cs deleted file mode 100644 index 2af5e1644..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Sport.cs +++ /dev/null @@ -1,82 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Sport type as an enum - /// - public enum Sport : byte - { - Generic = 0, - Running = 1, - Cycling = 2, - Transition = 3, - FitnessEquipment = 4, - Swimming = 5, - Basketball = 6, - Soccer = 7, - Tennis = 8, - AmericanFootball = 9, - Training = 10, - Walking = 11, - CrossCountrySkiing = 12, - AlpineSkiing = 13, - Snowboarding = 14, - Rowing = 15, - Mountaineering = 16, - Hiking = 17, - Multisport = 18, - Paddling = 19, - Flying = 20, - EBiking = 21, - Motorcycling = 22, - Boating = 23, - Driving = 24, - Golf = 25, - HangGliding = 26, - HorsebackRiding = 27, - Hunting = 28, - Fishing = 29, - InlineSkating = 30, - RockClimbing = 31, - Sailing = 32, - IceSkating = 33, - SkyDiving = 34, - Snowshoeing = 35, - Snowmobiling = 36, - StandUpPaddleboarding = 37, - Surfing = 38, - Wakeboarding = 39, - WaterSkiing = 40, - Kayaking = 41, - Rafting = 42, - Windsurfing = 43, - Kitesurfing = 44, - Tactical = 45, - Jumpmaster = 46, - Boxing = 47, - FloorClimbing = 48, - Diving = 53, - Hiit = 62, - Racket = 64, - WaterTubing = 76, - Wakesurfing = 77, - All = 254, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportBits0.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportBits0.cs deleted file mode 100644 index f9ff87b95..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportBits0.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SportBits0 type as a class - /// - public static class SportBits0 - { - public const byte Generic = 0x01; - public const byte Running = 0x02; - public const byte Cycling = 0x04; - public const byte Transition = 0x08; // Mulitsport transition - public const byte FitnessEquipment = 0x10; - public const byte Swimming = 0x20; - public const byte Basketball = 0x40; - public const byte Soccer = 0x80; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportBits1.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportBits1.cs deleted file mode 100644 index b0a141d44..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportBits1.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SportBits1 type as a class - /// - public static class SportBits1 - { - public const byte Tennis = 0x01; - public const byte AmericanFootball = 0x02; - public const byte Training = 0x04; - public const byte Walking = 0x08; - public const byte CrossCountrySkiing = 0x10; - public const byte AlpineSkiing = 0x20; - public const byte Snowboarding = 0x40; - public const byte Rowing = 0x80; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportBits2.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportBits2.cs deleted file mode 100644 index ba91d34f7..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportBits2.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SportBits2 type as a class - /// - public static class SportBits2 - { - public const byte Mountaineering = 0x01; - public const byte Hiking = 0x02; - public const byte Multisport = 0x04; - public const byte Paddling = 0x08; - public const byte Flying = 0x10; - public const byte EBiking = 0x20; - public const byte Motorcycling = 0x40; - public const byte Boating = 0x80; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportBits3.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportBits3.cs deleted file mode 100644 index a63fcf67d..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportBits3.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SportBits3 type as a class - /// - public static class SportBits3 - { - public const byte Driving = 0x01; - public const byte Golf = 0x02; - public const byte HangGliding = 0x04; - public const byte HorsebackRiding = 0x08; - public const byte Hunting = 0x10; - public const byte Fishing = 0x20; - public const byte InlineSkating = 0x40; - public const byte RockClimbing = 0x80; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportBits4.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportBits4.cs deleted file mode 100644 index 2503de78f..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportBits4.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SportBits4 type as a class - /// - public static class SportBits4 - { - public const byte Sailing = 0x01; - public const byte IceSkating = 0x02; - public const byte SkyDiving = 0x04; - public const byte Snowshoeing = 0x08; - public const byte Snowmobiling = 0x10; - public const byte StandUpPaddleboarding = 0x20; - public const byte Surfing = 0x40; - public const byte Wakeboarding = 0x80; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportBits5.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportBits5.cs deleted file mode 100644 index 62b8b9e5f..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportBits5.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SportBits5 type as a class - /// - public static class SportBits5 - { - public const byte WaterSkiing = 0x01; - public const byte Kayaking = 0x02; - public const byte Rafting = 0x04; - public const byte Windsurfing = 0x08; - public const byte Kitesurfing = 0x10; - public const byte Tactical = 0x20; - public const byte Jumpmaster = 0x40; - public const byte Boxing = 0x80; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportBits6.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportBits6.cs deleted file mode 100644 index acb0994fa..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportBits6.cs +++ /dev/null @@ -1,28 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SportBits6 type as a class - /// - public static class SportBits6 - { - public const byte FloorClimbing = 0x01; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportEvent.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportEvent.cs deleted file mode 100644 index f0006ad85..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SportEvent.cs +++ /dev/null @@ -1,36 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SportEvent type as an enum - /// - public enum SportEvent : byte - { - Uncategorized = 0, - Geocaching = 1, - Fitness = 2, - Recreation = 3, - Race = 4, - SpecialEvent = 5, - Training = 6, - Transportation = 7, - Touring = 8, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SquatExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SquatExerciseName.cs deleted file mode 100644 index f12860d10..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SquatExerciseName.cs +++ /dev/null @@ -1,119 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SquatExerciseName type as a class - /// - public static class SquatExerciseName - { - public const ushort LegPress = 0; - public const ushort BackSquatWithBodyBar = 1; - public const ushort BackSquats = 2; - public const ushort WeightedBackSquats = 3; - public const ushort BalancingSquat = 4; - public const ushort WeightedBalancingSquat = 5; - public const ushort BarbellBackSquat = 6; - public const ushort BarbellBoxSquat = 7; - public const ushort BarbellFrontSquat = 8; - public const ushort BarbellHackSquat = 9; - public const ushort BarbellHangSquatSnatch = 10; - public const ushort BarbellLateralStepUp = 11; - public const ushort BarbellQuarterSquat = 12; - public const ushort BarbellSiffSquat = 13; - public const ushort BarbellSquatSnatch = 14; - public const ushort BarbellSquatWithHeelsRaised = 15; - public const ushort BarbellStepover = 16; - public const ushort BarbellStepUp = 17; - public const ushort BenchSquatWithRotationalChop = 18; - public const ushort WeightedBenchSquatWithRotationalChop = 19; - public const ushort BodyWeightWallSquat = 20; - public const ushort WeightedWallSquat = 21; - public const ushort BoxStepSquat = 22; - public const ushort WeightedBoxStepSquat = 23; - public const ushort BracedSquat = 24; - public const ushort CrossedArmBarbellFrontSquat = 25; - public const ushort CrossoverDumbbellStepUp = 26; - public const ushort DumbbellFrontSquat = 27; - public const ushort DumbbellSplitSquat = 28; - public const ushort DumbbellSquat = 29; - public const ushort DumbbellSquatClean = 30; - public const ushort DumbbellStepover = 31; - public const ushort DumbbellStepUp = 32; - public const ushort ElevatedSingleLegSquat = 33; - public const ushort WeightedElevatedSingleLegSquat = 34; - public const ushort FigureFourSquats = 35; - public const ushort WeightedFigureFourSquats = 36; - public const ushort GobletSquat = 37; - public const ushort KettlebellSquat = 38; - public const ushort KettlebellSwingOverhead = 39; - public const ushort KettlebellSwingWithFlipToSquat = 40; - public const ushort LateralDumbbellStepUp = 41; - public const ushort OneLeggedSquat = 42; - public const ushort OverheadDumbbellSquat = 43; - public const ushort OverheadSquat = 44; - public const ushort PartialSingleLegSquat = 45; - public const ushort WeightedPartialSingleLegSquat = 46; - public const ushort PistolSquat = 47; - public const ushort WeightedPistolSquat = 48; - public const ushort PlieSlides = 49; - public const ushort WeightedPlieSlides = 50; - public const ushort PlieSquat = 51; - public const ushort WeightedPlieSquat = 52; - public const ushort PrisonerSquat = 53; - public const ushort WeightedPrisonerSquat = 54; - public const ushort SingleLegBenchGetUp = 55; - public const ushort WeightedSingleLegBenchGetUp = 56; - public const ushort SingleLegBenchSquat = 57; - public const ushort WeightedSingleLegBenchSquat = 58; - public const ushort SingleLegSquatOnSwissBall = 59; - public const ushort WeightedSingleLegSquatOnSwissBall = 60; - public const ushort Squat = 61; - public const ushort WeightedSquat = 62; - public const ushort SquatsWithBand = 63; - public const ushort StaggeredSquat = 64; - public const ushort WeightedStaggeredSquat = 65; - public const ushort StepUp = 66; - public const ushort WeightedStepUp = 67; - public const ushort SuitcaseSquats = 68; - public const ushort SumoSquat = 69; - public const ushort SumoSquatSlideIn = 70; - public const ushort WeightedSumoSquatSlideIn = 71; - public const ushort SumoSquatToHighPull = 72; - public const ushort SumoSquatToStand = 73; - public const ushort WeightedSumoSquatToStand = 74; - public const ushort SumoSquatWithRotation = 75; - public const ushort WeightedSumoSquatWithRotation = 76; - public const ushort SwissBallBodyWeightWallSquat = 77; - public const ushort WeightedSwissBallWallSquat = 78; - public const ushort Thrusters = 79; - public const ushort UnevenSquat = 80; - public const ushort WeightedUnevenSquat = 81; - public const ushort WaistSlimmingSquat = 82; - public const ushort WallBall = 83; - public const ushort WideStanceBarbellSquat = 84; - public const ushort WideStanceGobletSquat = 85; - public const ushort ZercherSquat = 86; - public const ushort KbsOverhead = 87; // Deprecated do not use - public const ushort SquatAndSideKick = 88; - public const ushort SquatJumpsInNOut = 89; - public const ushort PilatesPlieSquatsParallelTurnedOutFlatAndHeels = 90; - public const ushort ReleveStraightLegAndKneeBentWithOneLegVariation = 91; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/StrokeType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/StrokeType.cs deleted file mode 100644 index c5f1f8f1c..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/StrokeType.cs +++ /dev/null @@ -1,33 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile StrokeType type as an enum - /// - public enum StrokeType : byte - { - NoEvent = 0, - Other = 1, - Serve = 2, - Forehand = 3, - Backhand = 4, - Smash = 5, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SubSport.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SubSport.cs deleted file mode 100644 index 7cfe8c667..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SubSport.cs +++ /dev/null @@ -1,99 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SubSport type as an enum - /// - public enum SubSport : byte - { - Generic = 0, - Treadmill = 1, - Street = 2, - Trail = 3, - Track = 4, - Spin = 5, - IndoorCycling = 6, - Road = 7, - Mountain = 8, - Downhill = 9, - Recumbent = 10, - Cyclocross = 11, - HandCycling = 12, - TrackCycling = 13, - IndoorRowing = 14, - Elliptical = 15, - StairClimbing = 16, - LapSwimming = 17, - OpenWater = 18, - FlexibilityTraining = 19, - StrengthTraining = 20, - WarmUp = 21, - Match = 22, - Exercise = 23, - Challenge = 24, - IndoorSkiing = 25, - CardioTraining = 26, - IndoorWalking = 27, - EBikeFitness = 28, - Bmx = 29, - CasualWalking = 30, - SpeedWalking = 31, - BikeToRunTransition = 32, - RunToBikeTransition = 33, - SwimToBikeTransition = 34, - Atv = 35, - Motocross = 36, - Backcountry = 37, - Resort = 38, - RcDrone = 39, - Wingsuit = 40, - Whitewater = 41, - SkateSkiing = 42, - Yoga = 43, - Pilates = 44, - IndoorRunning = 45, - GravelCycling = 46, - EBikeMountain = 47, - Commuting = 48, - MixedSurface = 49, - Navigate = 50, - TrackMe = 51, - Map = 52, - SingleGasDiving = 53, - MultiGasDiving = 54, - GaugeDiving = 55, - ApneaDiving = 56, - ApneaHunting = 57, - VirtualActivity = 58, - Obstacle = 59, - Breathing = 62, - SailRace = 65, - Ultra = 67, - IndoorClimbing = 68, - Bouldering = 69, - Hiit = 70, - Amrap = 73, - Emom = 74, - Tabata = 75, - Pickleball = 84, - Padel = 85, - All = 254, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SupportedExdScreenLayouts.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SupportedExdScreenLayouts.cs deleted file mode 100644 index 1a0bc995e..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SupportedExdScreenLayouts.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SupportedExdScreenLayouts type as a class - /// - public static class SupportedExdScreenLayouts - { - public const uint FullScreen = 0x00000001; - public const uint HalfVertical = 0x00000002; - public const uint HalfHorizontal = 0x00000004; - public const uint HalfVerticalRightSplit = 0x00000008; - public const uint HalfHorizontalBottomSplit = 0x00000010; - public const uint FullQuarterSplit = 0x00000020; - public const uint HalfVerticalLeftSplit = 0x00000040; - public const uint HalfHorizontalTopSplit = 0x00000080; - public const uint Invalid = (uint)0x00000000; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SwimStroke.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SwimStroke.cs deleted file mode 100644 index bd2e231ad..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/SwimStroke.cs +++ /dev/null @@ -1,34 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SwimStroke type as an enum - /// - public enum SwimStroke : byte - { - Freestyle = 0, - Backstroke = 1, - Breaststroke = 2, - Butterfly = 3, - Drill = 4, - Mixed = 5, - Im = 6, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Switch.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Switch.cs deleted file mode 100644 index eed37abca..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Switch.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Switch type as an enum - /// - public enum Switch : byte - { - Off = 0, - On = 1, - Auto = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TapSensitivity.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TapSensitivity.cs deleted file mode 100644 index a3803315e..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TapSensitivity.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile TapSensitivity type as an enum - /// - public enum TapSensitivity : byte - { - High = 0, - Medium = 1, - Low = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TimeIntoDay.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TimeIntoDay.cs deleted file mode 100644 index 45f17ed4d..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TimeIntoDay.cs +++ /dev/null @@ -1,27 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile TimeIntoDay type as a class - /// - public static class TimeIntoDay - { - public const uint Invalid = (uint)0xFFFFFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TimeMode.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TimeMode.cs deleted file mode 100644 index 04a68d917..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TimeMode.cs +++ /dev/null @@ -1,33 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile TimeMode type as an enum - /// - public enum TimeMode : byte - { - Hour12 = 0, - Hour24 = 1, - Military = 2, - Hour12WithSeconds = 3, - Hour24WithSeconds = 4, - Utc = 5, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TimeZone.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TimeZone.cs deleted file mode 100644 index 4e1a2fbfe..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TimeZone.cs +++ /dev/null @@ -1,133 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile TimeZone type as an enum - /// - public enum TimeZone : byte - { - Almaty = 0, - Bangkok = 1, - Bombay = 2, - Brasilia = 3, - Cairo = 4, - CapeVerdeIs = 5, - Darwin = 6, - Eniwetok = 7, - Fiji = 8, - HongKong = 9, - Islamabad = 10, - Kabul = 11, - Magadan = 12, - MidAtlantic = 13, - Moscow = 14, - Muscat = 15, - Newfoundland = 16, - Samoa = 17, - Sydney = 18, - Tehran = 19, - Tokyo = 20, - UsAlaska = 21, - UsAtlantic = 22, - UsCentral = 23, - UsEastern = 24, - UsHawaii = 25, - UsMountain = 26, - UsPacific = 27, - Other = 28, - Auckland = 29, - Kathmandu = 30, - EuropeWesternWet = 31, - EuropeCentralCet = 32, - EuropeEasternEet = 33, - Jakarta = 34, - Perth = 35, - Adelaide = 36, - Brisbane = 37, - Tasmania = 38, - Iceland = 39, - Amsterdam = 40, - Athens = 41, - Barcelona = 42, - Berlin = 43, - Brussels = 44, - Budapest = 45, - Copenhagen = 46, - Dublin = 47, - Helsinki = 48, - Lisbon = 49, - London = 50, - Madrid = 51, - Munich = 52, - Oslo = 53, - Paris = 54, - Prague = 55, - Reykjavik = 56, - Rome = 57, - Stockholm = 58, - Vienna = 59, - Warsaw = 60, - Zurich = 61, - Quebec = 62, - Ontario = 63, - Manitoba = 64, - Saskatchewan = 65, - Alberta = 66, - BritishColumbia = 67, - Boise = 68, - Boston = 69, - Chicago = 70, - Dallas = 71, - Denver = 72, - KansasCity = 73, - LasVegas = 74, - LosAngeles = 75, - Miami = 76, - Minneapolis = 77, - NewYork = 78, - NewOrleans = 79, - Phoenix = 80, - SantaFe = 81, - Seattle = 82, - WashingtonDc = 83, - UsArizona = 84, - Chita = 85, - Ekaterinburg = 86, - Irkutsk = 87, - Kaliningrad = 88, - Krasnoyarsk = 89, - Novosibirsk = 90, - PetropavlovskKamchatskiy = 91, - Samara = 92, - Vladivostok = 93, - MexicoCentral = 94, - MexicoMountain = 95, - MexicoPacific = 96, - CapeTown = 97, - Winkhoek = 98, - Lagos = 99, - Riyahd = 100, - Venezuela = 101, - AustraliaLh = 102, - Santiago = 103, - Manual = 253, - Automatic = 254, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TimerTrigger.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TimerTrigger.cs deleted file mode 100644 index 15537f54e..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TimerTrigger.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile TimerTrigger type as an enum - /// - public enum TimerTrigger : byte - { - Manual = 0, - Auto = 1, - FitnessEquipment = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TissueModelType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TissueModelType.cs deleted file mode 100644 index 721fa1589..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TissueModelType.cs +++ /dev/null @@ -1,28 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile TissueModelType type as an enum - /// - public enum TissueModelType : byte - { - Zhl16c = 0, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Tone.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Tone.cs deleted file mode 100644 index b61e8ee64..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Tone.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Tone type as an enum - /// - public enum Tone : byte - { - Off = 0, - Tone = 1, - Vibrate = 2, - ToneAndVibrate = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TotalBodyExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TotalBodyExerciseName.cs deleted file mode 100644 index 4861ba72a..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TotalBodyExerciseName.cs +++ /dev/null @@ -1,40 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile TotalBodyExerciseName type as a class - /// - public static class TotalBodyExerciseName - { - public const ushort Burpee = 0; - public const ushort WeightedBurpee = 1; - public const ushort BurpeeBoxJump = 2; - public const ushort WeightedBurpeeBoxJump = 3; - public const ushort HighPullBurpee = 4; - public const ushort ManMakers = 5; - public const ushort OneArmBurpee = 6; - public const ushort SquatThrusts = 7; - public const ushort WeightedSquatThrusts = 8; - public const ushort SquatPlankPushUp = 9; - public const ushort WeightedSquatPlankPushUp = 10; - public const ushort StandingTRotationBalance = 11; - public const ushort WeightedStandingTRotationBalance = 12; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TricepsExtensionExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TricepsExtensionExerciseName.cs deleted file mode 100644 index 896214009..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TricepsExtensionExerciseName.cs +++ /dev/null @@ -1,68 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile TricepsExtensionExerciseName type as a class - /// - public static class TricepsExtensionExerciseName - { - public const ushort BenchDip = 0; - public const ushort WeightedBenchDip = 1; - public const ushort BodyWeightDip = 2; - public const ushort CableKickback = 3; - public const ushort CableLyingTricepsExtension = 4; - public const ushort CableOverheadTricepsExtension = 5; - public const ushort DumbbellKickback = 6; - public const ushort DumbbellLyingTricepsExtension = 7; - public const ushort EzBarOverheadTricepsExtension = 8; - public const ushort InclineDip = 9; - public const ushort WeightedInclineDip = 10; - public const ushort InclineEzBarLyingTricepsExtension = 11; - public const ushort LyingDumbbellPulloverToExtension = 12; - public const ushort LyingEzBarTricepsExtension = 13; - public const ushort LyingTricepsExtensionToCloseGripBenchPress = 14; - public const ushort OverheadDumbbellTricepsExtension = 15; - public const ushort RecliningTricepsPress = 16; - public const ushort ReverseGripPressdown = 17; - public const ushort ReverseGripTricepsPressdown = 18; - public const ushort RopePressdown = 19; - public const ushort SeatedBarbellOverheadTricepsExtension = 20; - public const ushort SeatedDumbbellOverheadTricepsExtension = 21; - public const ushort SeatedEzBarOverheadTricepsExtension = 22; - public const ushort SeatedSingleArmOverheadDumbbellExtension = 23; - public const ushort SingleArmDumbbellOverheadTricepsExtension = 24; - public const ushort SingleDumbbellSeatedOverheadTricepsExtension = 25; - public const ushort SingleLegBenchDipAndKick = 26; - public const ushort WeightedSingleLegBenchDipAndKick = 27; - public const ushort SingleLegDip = 28; - public const ushort WeightedSingleLegDip = 29; - public const ushort StaticLyingTricepsExtension = 30; - public const ushort SuspendedDip = 31; - public const ushort WeightedSuspendedDip = 32; - public const ushort SwissBallDumbbellLyingTricepsExtension = 33; - public const ushort SwissBallEzBarLyingTricepsExtension = 34; - public const ushort SwissBallEzBarOverheadTricepsExtension = 35; - public const ushort TabletopDip = 36; - public const ushort WeightedTabletopDip = 37; - public const ushort TricepsExtensionOnFloor = 38; - public const ushort TricepsPressdown = 39; - public const ushort WeightedDip = 40; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TurnType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TurnType.cs deleted file mode 100644 index 6d6c57bae..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/TurnType.cs +++ /dev/null @@ -1,65 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile TurnType type as an enum - /// - public enum TurnType : byte - { - ArrivingIdx = 0, - ArrivingLeftIdx = 1, - ArrivingRightIdx = 2, - ArrivingViaIdx = 3, - ArrivingViaLeftIdx = 4, - ArrivingViaRightIdx = 5, - BearKeepLeftIdx = 6, - BearKeepRightIdx = 7, - ContinueIdx = 8, - ExitLeftIdx = 9, - ExitRightIdx = 10, - FerryIdx = 11, - Roundabout45Idx = 12, - Roundabout90Idx = 13, - Roundabout135Idx = 14, - Roundabout180Idx = 15, - Roundabout225Idx = 16, - Roundabout270Idx = 17, - Roundabout315Idx = 18, - Roundabout360Idx = 19, - RoundaboutNeg45Idx = 20, - RoundaboutNeg90Idx = 21, - RoundaboutNeg135Idx = 22, - RoundaboutNeg180Idx = 23, - RoundaboutNeg225Idx = 24, - RoundaboutNeg270Idx = 25, - RoundaboutNeg315Idx = 26, - RoundaboutNeg360Idx = 27, - RoundaboutGenericIdx = 28, - RoundaboutNegGenericIdx = 29, - SharpTurnLeftIdx = 30, - SharpTurnRightIdx = 31, - TurnLeftIdx = 32, - TurnRightIdx = 33, - UturnLeftIdx = 34, - UturnRightIdx = 35, - IconInvIdx = 36, - IconIdxCnt = 37, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/UserLocalId.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/UserLocalId.cs deleted file mode 100644 index ec43be1ce..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/UserLocalId.cs +++ /dev/null @@ -1,33 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile UserLocalId type as a class - /// - public static class UserLocalId - { - public const ushort LocalMin = 0x0000; - public const ushort LocalMax = 0x000F; - public const ushort StationaryMin = 0x0010; - public const ushort StationaryMax = 0x00FF; - public const ushort PortableMin = 0x0100; - public const ushort PortableMax = 0xFFFE; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WarmUpExerciseName.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WarmUpExerciseName.cs deleted file mode 100644 index f5cf20dd2..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WarmUpExerciseName.cs +++ /dev/null @@ -1,58 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WarmUpExerciseName type as a class - /// - public static class WarmUpExerciseName - { - public const ushort QuadrupedRocking = 0; - public const ushort NeckTilts = 1; - public const ushort AnkleCircles = 2; - public const ushort AnkleDorsiflexionWithBand = 3; - public const ushort AnkleInternalRotation = 4; - public const ushort ArmCircles = 5; - public const ushort BentOverReachToSky = 6; - public const ushort CatCamel = 7; - public const ushort ElbowToFootLunge = 8; - public const ushort ForwardAndBackwardLegSwings = 9; - public const ushort Groiners = 10; - public const ushort InvertedHamstringStretch = 11; - public const ushort LateralDuckUnder = 12; - public const ushort NeckRotations = 13; - public const ushort OppositeArmAndLegBalance = 14; - public const ushort ReachRollAndLift = 15; - public const ushort Scorpion = 16; // Deprecated do not use - public const ushort ShoulderCircles = 17; - public const ushort SideToSideLegSwings = 18; - public const ushort SleeperStretch = 19; - public const ushort SlideOut = 20; - public const ushort SwissBallHipCrossover = 21; - public const ushort SwissBallReachRollAndLift = 22; - public const ushort SwissBallWindshieldWipers = 23; - public const ushort ThoracicRotation = 24; - public const ushort WalkingHighKicks = 25; - public const ushort WalkingHighKnees = 26; - public const ushort WalkingKneeHugs = 27; - public const ushort WalkingLegCradles = 28; - public const ushort Walkout = 29; - public const ushort WalkoutFromPushUpPosition = 30; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WatchfaceMode.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WatchfaceMode.cs deleted file mode 100644 index 58dc3403c..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WatchfaceMode.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WatchfaceMode type as an enum - /// - public enum WatchfaceMode : byte - { - Digital = 0, - Analog = 1, - ConnectIq = 2, - Disabled = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WaterType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WaterType.cs deleted file mode 100644 index f54e56ca4..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WaterType.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WaterType type as an enum - /// - public enum WaterType : byte - { - Fresh = 0, - Salt = 1, - En13319 = 2, - Custom = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WeatherReport.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WeatherReport.cs deleted file mode 100644 index 8997f5a78..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WeatherReport.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WeatherReport type as an enum - /// - public enum WeatherReport : byte - { - Current = 0, - Forecast = 1, - HourlyForecast = 1, - DailyForecast = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WeatherSevereType.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WeatherSevereType.cs deleted file mode 100644 index 88d14d9e2..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WeatherSevereType.cs +++ /dev/null @@ -1,112 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WeatherSevereType type as an enum - /// - public enum WeatherSevereType : byte - { - Unspecified = 0, - Tornado = 1, - Tsunami = 2, - Hurricane = 3, - ExtremeWind = 4, - Typhoon = 5, - InlandHurricane = 6, - HurricaneForceWind = 7, - Waterspout = 8, - SevereThunderstorm = 9, - WreckhouseWinds = 10, - LesSuetesWind = 11, - Avalanche = 12, - FlashFlood = 13, - TropicalStorm = 14, - InlandTropicalStorm = 15, - Blizzard = 16, - IceStorm = 17, - FreezingRain = 18, - DebrisFlow = 19, - FlashFreeze = 20, - DustStorm = 21, - HighWind = 22, - WinterStorm = 23, - HeavyFreezingSpray = 24, - ExtremeCold = 25, - WindChill = 26, - ColdWave = 27, - HeavySnowAlert = 28, - LakeEffectBlowingSnow = 29, - SnowSquall = 30, - LakeEffectSnow = 31, - WinterWeather = 32, - Sleet = 33, - Snowfall = 34, - SnowAndBlowingSnow = 35, - BlowingSnow = 36, - SnowAlert = 37, - ArcticOutflow = 38, - FreezingDrizzle = 39, - Storm = 40, - StormSurge = 41, - Rainfall = 42, - ArealFlood = 43, - CoastalFlood = 44, - LakeshoreFlood = 45, - ExcessiveHeat = 46, - Heat = 47, - Weather = 48, - HighHeatAndHumidity = 49, - HumidexAndHealth = 50, - Humidex = 51, - Gale = 52, - FreezingSpray = 53, - SpecialMarine = 54, - Squall = 55, - StrongWind = 56, - LakeWind = 57, - MarineWeather = 58, - Wind = 59, - SmallCraftHazardousSeas = 60, - HazardousSeas = 61, - SmallCraft = 62, - SmallCraftWinds = 63, - SmallCraftRoughBar = 64, - HighWaterLevel = 65, - Ashfall = 66, - FreezingFog = 67, - DenseFog = 68, - DenseSmoke = 69, - BlowingDust = 70, - HardFreeze = 71, - Freeze = 72, - Frost = 73, - FireWeather = 74, - Flood = 75, - RipTide = 76, - HighSurf = 77, - Smog = 78, - AirQuality = 79, - BriskWind = 80, - AirStagnation = 81, - LowWater = 82, - Hydrological = 83, - SpecialWeather = 84, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WeatherSeverity.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WeatherSeverity.cs deleted file mode 100644 index 59b69c452..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WeatherSeverity.cs +++ /dev/null @@ -1,32 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WeatherSeverity type as an enum - /// - public enum WeatherSeverity : byte - { - Unknown = 0, - Warning = 1, - Watch = 2, - Advisory = 3, - Statement = 4, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WeatherStatus.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WeatherStatus.cs deleted file mode 100644 index 4e1257d8b..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WeatherStatus.cs +++ /dev/null @@ -1,48 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WeatherStatus type as an enum - /// - public enum WeatherStatus : byte - { - Clear = 0, - PartlyCloudy = 1, - MostlyCloudy = 2, - Rain = 3, - Snow = 4, - Windy = 5, - Thunderstorms = 6, - WintryMix = 7, - Fog = 8, - Hazy = 11, - Hail = 12, - ScatteredShowers = 13, - ScatteredThunderstorms = 14, - UnknownPrecipitation = 15, - LightRain = 16, - HeavyRain = 17, - LightSnow = 18, - HeavySnow = 19, - LightRainSnow = 20, - HeavyRainSnow = 21, - Cloudy = 22, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Weight.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Weight.cs deleted file mode 100644 index 13ae19cab..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/Weight.cs +++ /dev/null @@ -1,28 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Weight type as a class - /// - public static class Weight - { - public const ushort Calculating = 0xFFFE; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WktStepDuration.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WktStepDuration.cs deleted file mode 100644 index c673e7c0a..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WktStepDuration.cs +++ /dev/null @@ -1,58 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WktStepDuration type as an enum - /// - public enum WktStepDuration : byte - { - Time = 0, - Distance = 1, - HrLessThan = 2, - HrGreaterThan = 3, - Calories = 4, - Open = 5, - RepeatUntilStepsCmplt = 6, - RepeatUntilTime = 7, - RepeatUntilDistance = 8, - RepeatUntilCalories = 9, - RepeatUntilHrLessThan = 10, - RepeatUntilHrGreaterThan = 11, - RepeatUntilPowerLessThan = 12, - RepeatUntilPowerGreaterThan = 13, - PowerLessThan = 14, - PowerGreaterThan = 15, - TrainingPeaksTss = 16, - RepeatUntilPowerLastLapLessThan = 17, - RepeatUntilMaxPowerLastLapLessThan = 18, - Power3sLessThan = 19, - Power10sLessThan = 20, - Power30sLessThan = 21, - Power3sGreaterThan = 22, - Power10sGreaterThan = 23, - Power30sGreaterThan = 24, - PowerLapLessThan = 25, - PowerLapGreaterThan = 26, - RepeatUntilTrainingPeaksTss = 27, - RepetitionTime = 28, - Reps = 29, - TimeOnly = 31, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WktStepTarget.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WktStepTarget.cs deleted file mode 100644 index edefa7017..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WktStepTarget.cs +++ /dev/null @@ -1,41 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WktStepTarget type as an enum - /// - public enum WktStepTarget : byte - { - Speed = 0, - HeartRate = 1, - Open = 2, - Cadence = 3, - Power = 4, - Grade = 5, - Resistance = 6, - Power3s = 7, - Power10s = 8, - Power30s = 9, - PowerLap = 10, - SwimStroke = 11, - SpeedLap = 12, - HeartRateLap = 13, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WorkoutCapabilities.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WorkoutCapabilities.cs deleted file mode 100644 index 8de6b1b05..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WorkoutCapabilities.cs +++ /dev/null @@ -1,41 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WorkoutCapabilities type as a class - /// - public static class WorkoutCapabilities - { - public const uint Interval = 0x00000001; - public const uint Custom = 0x00000002; - public const uint FitnessEquipment = 0x00000004; - public const uint Firstbeat = 0x00000008; - public const uint NewLeaf = 0x00000010; - public const uint Tcx = 0x00000020; // For backwards compatibility. Watch should add missing id fields then clear flag. - public const uint Speed = 0x00000080; // Speed source required for workout step. - public const uint HeartRate = 0x00000100; // Heart rate source required for workout step. - public const uint Distance = 0x00000200; // Distance source required for workout step. - public const uint Cadence = 0x00000400; // Cadence source required for workout step. - public const uint Power = 0x00000800; // Power source required for workout step. - public const uint Grade = 0x00001000; // Grade source required for workout step. - public const uint Resistance = 0x00002000; // Resistance source required for workout step. - public const uint Protected = 0x00004000; - public const uint Invalid = (uint)0x00000000; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WorkoutEquipment.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WorkoutEquipment.cs deleted file mode 100644 index 7b3e8c59b..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WorkoutEquipment.cs +++ /dev/null @@ -1,33 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WorkoutEquipment type as an enum - /// - public enum WorkoutEquipment : byte - { - None = 0, - SwimFins = 1, - SwimKickboard = 2, - SwimPaddles = 3, - SwimPullBuoy = 4, - SwimSnorkel = 5, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WorkoutHr.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WorkoutHr.cs deleted file mode 100644 index 09a7d4438..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WorkoutHr.cs +++ /dev/null @@ -1,28 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WorkoutHr type as a class - /// - public static class WorkoutHr - { - public const uint BpmOffset = 100; - public const uint Invalid = (uint)0xFFFFFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WorkoutPower.cs b/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WorkoutPower.cs deleted file mode 100644 index 62838f841..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Profile/Types/WorkoutPower.cs +++ /dev/null @@ -1,28 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WorkoutPower type as a class - /// - public static class WorkoutPower - { - public const uint WattsOffset = 1000; - public const uint Invalid = (uint)0xFFFFFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk/Dynastream/Fit/ProtocolValidator.cs b/src/Garmin/FitSdk/Dynastream/Fit/ProtocolValidator.cs deleted file mode 100644 index f930079a8..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/ProtocolValidator.cs +++ /dev/null @@ -1,138 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System.Linq; - -namespace Dynastream.Fit -{ - internal interface IValidator - { - /// - /// Validate if a Message is compatible with a protocol version - /// - /// Message to validate - /// true if message is compatible. false otherwise - bool ValidateMesg(Mesg mesg); - - /// - /// Validate if a MessageDefinition is compatible with a protocol version - /// - /// Definition to validate - /// true if definition is compatible. false otherwise - bool ValidateMesgDefn(MesgDefinition defn); - } - - /// - /// Validates Protocol Features for a given give version - /// - internal class ProtocolValidator - : IValidator - { - private readonly IValidator m_validator; - - public ProtocolValidator(ProtocolVersion version) - { - switch (version) - { - case ProtocolVersion.V10: - m_validator = new V1Validator(); - break; - - default: - m_validator = null; - break; - } - } - - /// - /// Validate if a Message is compatible with a protocol version - /// - /// Message to validate - /// true if message is compatible. false otherwise - public bool ValidateMesg(Mesg mesg) - { - if (m_validator == null) - return true; - - return m_validator.ValidateMesg(mesg); - } - - /// - /// Validate if a MessageDefinition is compatible with a protocol version - /// - /// Definition to validate - /// true if definition is compatible. false otherwise - public bool ValidateMesgDefn(MesgDefinition defn) - { - if (m_validator == null) - return true; - - return m_validator.ValidateMesgDefn(defn); - } - } // Class - - internal class V1Validator - : IValidator - { - /// - /// Validate if a Message is compatible with a protocol version - /// - /// Message to validate - /// true if message is compatible. false otherwise - public bool ValidateMesg(Mesg mesg) - { - if (mesg.DeveloperFields.Any()) - { - return false; - } - - foreach (var fld in mesg.Fields) - { - int typeNum = fld.Type & Fit.BaseTypeNumMask; - - if (typeNum > Fit.Byte) - { - return false; - } - } - - return true; - } - - /// - /// Validate if a MessageDefinition is compatible with a protocol version - /// - /// Definition to validate - /// true if definition is compatible. false otherwise - public bool ValidateMesgDefn(MesgDefinition defn) - { - if (defn.DeveloperFieldDefinitions.Any()) - { - return false; - } - - foreach (var fld in defn.GetFields()) - { - int typeNum = fld.Type & Fit.BaseTypeNumMask; - - if (typeNum > Fit.Byte) - { - return false; - } - } - - return true; - } - } -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Fit/Subfield.cs b/src/Garmin/FitSdk/Dynastream/Fit/Subfield.cs deleted file mode 100644 index 35ad34e33..000000000 --- a/src/Garmin/FitSdk/Dynastream/Fit/Subfield.cs +++ /dev/null @@ -1,211 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - /// - /// The Subfield class represents an alternative field definition used - /// by dynamic fields. They can only be associated with a containing - /// field object. - /// - public class Subfield - { - #region Internal Classes - /// - /// The SubfieldMap class tracks the reference field/value pairs which indicate a field - /// should use the alternate subfield definition rather than the usual defn (allows Dynamic Fields) - /// - private class SubfieldMap - { - private byte refFieldNum; - private object refFieldValue; - - internal SubfieldMap(byte refFieldNum, object refFieldValue) - { - this.refFieldNum = refFieldNum; - this.refFieldValue = refFieldValue; - } - - internal SubfieldMap(SubfieldMap subfieldMap) - { - this.refFieldNum = subfieldMap.refFieldNum; - this.refFieldValue = subfieldMap.refFieldValue; - } - - /// - /// Checks if the reference fields in a given message indicate the subfield (alternate) - /// definition should be used - /// - /// message of interest - /// true if the subfield is active - internal bool CanMesgSupport(Mesg mesg) - { - Field field = mesg.GetField(refFieldNum); - - if (field != null) - { - object value = field.GetValue(0, Fit.SubfieldIndexMainField); - // Float refvalues are not supported - if (Convert.ToInt64(value) == Convert.ToInt64(refFieldValue)) - { - return true; - } - } - return false; - } - } - #endregion Internal Classes - - #region Fields - private string name; - private byte type; - private float scale; - private float offset; - private string units; - private List maps; - private List components; - #endregion // Fields - - #region Properties - internal string Name - { - get - { - return name; - } - } - - internal byte Type - { - get - { - return type; - } - } - - internal float Scale - { - get - { - return scale; - } - } - - internal float Offset - { - get - { - return offset; - } - } - - internal string Units - { - get - { - return units; - } - } - - internal List Components - { - get - { - return components; - } - } - #endregion // Properties - - #region Constructors - internal Subfield(Subfield subfield) - { - if (subfield == null) - { - this.name = "unknown"; - this.type = 0; - this.scale = 1f; - this.offset = 0f; - this.units = ""; - this.maps = new List(); - this.components = new List(); - return; - } - - this.name = subfield.name; - this.type = subfield.type; - this.scale = subfield.scale; - this.offset = subfield.offset; - this.units = subfield.units; - - this.maps = new List(); - foreach (SubfieldMap map in subfield.maps) - { - this.maps.Add(new SubfieldMap(map)); - } - this.components = new List(); - foreach (FieldComponent comp in subfield.components) - { - this.components.Add(new FieldComponent(comp)); - } - } - - internal Subfield(string name, byte type, float scale, float offset, string units) - { - this.name = name; - this.type = type; - this.scale = scale; - this.offset = offset; - this.units = units; - this.maps = new List(); - this.components = new List(); - } - #endregion // Constructors - - #region Methods - internal void AddMap(byte refFieldNum, object refFieldValue) - { - maps.Add(new SubfieldMap(refFieldNum, refFieldValue)); - } - - internal void AddComponent(FieldComponent newComponent) - { - components.Add(newComponent); - } - - /// - /// Checks if the reference fields in a given message indicate the subfield (alternate) - /// definition should be used - /// - /// message of interest - /// true if the subfield is active - public bool CanMesgSupport(Mesg mesg) - { - foreach (SubfieldMap map in maps) - { - if (map.CanMesgSupport(mesg)) - { - return true; - } - } - return false; - } - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Utility/EndianBinaryReader.cs b/src/Garmin/FitSdk/Dynastream/Utility/EndianBinaryReader.cs deleted file mode 100644 index c7d6ba00e..000000000 --- a/src/Garmin/FitSdk/Dynastream/Utility/EndianBinaryReader.cs +++ /dev/null @@ -1,160 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Utility -{ - /// - /// Extend framework BinaryReader to support BigEndian datasources. - /// When reading multibyte values, the bytes are reordered appropriately. - /// - public class EndianBinaryReader : BinaryReader - { - #region Fields - private bool isBigEndian = false; - #endregion - - #region Properties - public bool IsBigEndian - { - get { return isBigEndian; } - set { isBigEndian = value; } - } - #endregion - - #region Constructors - public EndianBinaryReader(Stream input, Encoding encoding, bool isBigEndian) - : base(input, encoding) - { - this.isBigEndian = isBigEndian; - } - - public EndianBinaryReader(Stream input, bool isBigEndian) - : this(input, Encoding.UTF8, isBigEndian) - { - } - #endregion - - #region Methods - public override short ReadInt16() - { - if (!IsBigEndian) - { - return base.ReadInt16(); - } - byte[] buffer = new byte[2]; - Read(buffer, 0, 2); - Array.Reverse(buffer); - - return BitConverter.ToInt16(buffer, 0); - } - - public override ushort ReadUInt16() - { - if (!IsBigEndian) - { - return base.ReadUInt16(); - } - byte[] buffer = new byte[2]; - Read(buffer, 0, 2); - Array.Reverse(buffer); - - return BitConverter.ToUInt16(buffer, 0); - } - - public override int ReadInt32() - { - if (!IsBigEndian) - { - return base.ReadInt32(); - } - byte[] buffer = new byte[4]; - Read(buffer, 0, 4); - Array.Reverse(buffer); - - return BitConverter.ToInt32(buffer, 0); - } - - public override uint ReadUInt32() - { - if (!IsBigEndian) - { - return base.ReadUInt32(); - } - byte[] buffer = new byte[4]; - Read(buffer, 0, 4); - Array.Reverse(buffer); - - return BitConverter.ToUInt32(buffer, 0); - } - - public override long ReadInt64() - { - if (!IsBigEndian) - { - return base.ReadInt64(); - } - byte[] buffer = new byte[8]; - Read(buffer, 0, 8); - Array.Reverse(buffer); - - return BitConverter.ToInt64(buffer, 0); - } - - public override ulong ReadUInt64() - { - if (!IsBigEndian) - { - return base.ReadUInt64(); - } - byte[] buffer = new byte[8]; - Read(buffer, 0, 8); - Array.Reverse(buffer); - - return BitConverter.ToUInt64(buffer, 0); - } - - public override float ReadSingle() - { - if (!IsBigEndian) - { - return base.ReadSingle(); - } - byte[] buffer = new byte[4]; - Read(buffer, 0, 4); - Array.Reverse(buffer); - - return BitConverter.ToSingle(buffer, 0); - } - - public override double ReadDouble() - { - if (!IsBigEndian) - { - return base.ReadDouble(); - } - byte[] buffer = new byte[8]; - Read(buffer, 0, 8); - Array.Reverse(buffer); - - return BitConverter.ToDouble(buffer, 0); - } - #endregion - } -} // namespace diff --git a/src/Garmin/FitSdk/Dynastream/Utility/EndianBinaryWriter.cs b/src/Garmin/FitSdk/Dynastream/Utility/EndianBinaryWriter.cs deleted file mode 100644 index 00a90d7f0..000000000 --- a/src/Garmin/FitSdk/Dynastream/Utility/EndianBinaryWriter.cs +++ /dev/null @@ -1,152 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.105Release -// Tag = production/release/21.105.00-0-gdc65d24 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Utility -{ - /// - /// Extend framework BinaryWriter to support BigEndian destinations. - /// When writing multibyte values, the bytes are reordered appropriately. - /// - public class EndianBinaryWriter : BinaryWriter - { - #region Fields - private bool isBigEndian = false; - #endregion - - #region Properties - public bool IsBigEndian - { - get { return isBigEndian; } - set { isBigEndian = value; } - } - #endregion - - #region Constructors - public EndianBinaryWriter(Stream output, Encoding encoding, bool isBigEndian) - : base(output, encoding) - { - this.isBigEndian = isBigEndian; - } - - public EndianBinaryWriter(Stream output, bool isBigEndian) - : this(output, Encoding.UTF8, isBigEndian) - { - } - #endregion - - #region Methods - public override void Write(short value) - { - if (!IsBigEndian) - { - base.Write(value); - return; - } - byte[] buffer = BitConverter.GetBytes(value); - Array.Reverse(buffer); - base.Write(buffer, 0, 2); - } - - public override void Write(ushort value) - { - if (!IsBigEndian) - { - base.Write(value); - return; - } - byte[] buffer = BitConverter.GetBytes(value); - Array.Reverse(buffer); - base.Write(buffer, 0, 2); - } - - public override void Write(int value) - { - if (!IsBigEndian) - { - base.Write(value); - return; - } - byte[] buffer = BitConverter.GetBytes(value); - Array.Reverse(buffer); - base.Write(buffer, 0, 4); - } - - public override void Write(uint value) - { - if (!IsBigEndian) - { - base.Write(value); - return; - } - byte[] buffer = BitConverter.GetBytes(value); - Array.Reverse(buffer); - base.Write(buffer, 0, 4); - } - - public override void Write(long value) - { - if (!IsBigEndian) - { - base.Write(value); - return; - } - byte[] buffer = BitConverter.GetBytes(value); - Array.Reverse(buffer); - base.Write(buffer, 0, 8); - } - - public override void Write(ulong value) - { - if (!IsBigEndian) - { - base.Write(value); - return; - } - byte[] buffer = BitConverter.GetBytes(value); - Array.Reverse(buffer); - base.Write(buffer, 0, 8); - } - - public override void Write(float value) - { - if (!IsBigEndian) - { - base.Write(value); - return; - } - byte[] buffer = BitConverter.GetBytes(value); - Array.Reverse(buffer); - base.Write(buffer, 0, 4); - } - - public override void Write(double value) - { - if (!IsBigEndian) - { - base.Write(value); - return; - } - byte[] buffer = BitConverter.GetBytes(value); - Array.Reverse(buffer); - base.Write(buffer, 0, 8); - } - #endregion - } -} // namespace diff --git a/src/Garmin/FitSdk/Examples/ClassLib/ClassLib.csproj b/src/Garmin/FitSdk/Examples/ClassLib/ClassLib.csproj deleted file mode 100644 index af0241e93..000000000 --- a/src/Garmin/FitSdk/Examples/ClassLib/ClassLib.csproj +++ /dev/null @@ -1,103 +0,0 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {F9D616B2-8333-4556-8FBB-1F5C6907FB44} - Library - Properties - Fit - Fit - v4.5 - 512 - - - - - 3.5 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - - true - full - false - ..\..\ - DEBUG;TRACE - prompt - 4 - Fit.xml - 1591 - MinimumRecommendedRules.ruleset - false - true - - - pdbonly - true - ..\..\ - TRACE - prompt - 4 - Fit.xml - 1591 - false - true - - - - - 3.5 - - - 3.5 - - - 3.5 - - - - - - - %(FileName) - - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - - - diff --git a/src/Garmin/FitSdk/Examples/ClassLib/Fit.xml b/src/Garmin/FitSdk/Examples/ClassLib/Fit.xml deleted file mode 100644 index 545e263f8..000000000 --- a/src/Garmin/FitSdk/Examples/ClassLib/Fit.xml +++ /dev/null @@ -1,19477 +0,0 @@ - - - - Fit - - - - - - BufferedMesgBroadcaster intercepts the incoming messages - from the given decode stream, buffers them, and offers - an opportunity to edit the messages before broadcasting - the messages to all registered listeners. - - - To edit the messages, an IMesgBroadcastPlugin must be - registered. All registered IMesgBroadcastPlugins are given - the opportunity to see each message as they are decoded, - as well as to see and edit the final list of - messages before broadcast to listeners - - - - - - Implements Dynastream CRC16 function - - - - - Event Args Class associated with the DeveloperFieldDescrtiption Event - - - - - This class will decode a .fit file reading the file header and any definition or data messages. - - - - - Reads the file header to check if the file is FIT. - Does not check CRC. - Returns true if file is FIT. - - Seekable (file)stream to parse - - - - Reads the FIT binary file header and crc to check compatibility and integrity. - Also checks data reords size. - Returns true if file is ok (not corrupt). - - Seekable (file)stream to parse. - - - - Reads a FIT binary file. - - Seekable (file)stream to parse. - - Returns true if reading finishes successfully. - - - - - Reads a FIT binary file. - - Seekable (file)stream to parse. - When true, skip file header. Also CRC will not be calculated. - - Returns true if reading finishes successfully. - - - - - Reads a FIT binary File - - Seekable (file)stream to parse. - Decode Mode to use for reading the file - - Returns true if reading finishes successfully. - - - - - - - - - - - - Mode used for Read Operations - - - - - Indicates that file contains valid Header and CRC data - - - - - Indicates that the Stream Contains a Header that is Corrupt - - - - - Indicates that the Stream does not contain a Header or CRC - - - - - Determines whether the specified is equal to the current . - - - true if the specified is equal to the current ; otherwise, false. - - The to compare with the current . - - - - Determines whether the specified is equal to the current . - - - true if the specified is equal to the current ; otherwise, false. - - - The to compare with the current . - - - - - Serves as a hash function for a particular type. - - - A hash code for the current . - - - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - - - A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: Value Meaning Less than zero This instance precedes in the sort order. Zero This instance occurs in the same position in the sort order as . Greater than zero This instance follows in the sort order. - - An object to compare with this instance. is not the same type as this instance. - - - - Retrieve the Native Field Number that this Developer Field Overrides - - - Native Field Number that is overridden if applicable, - otherwise - - - - - Represents a Developer Field Definition - - - - - Gets a boolean indicating if the Field Definition has associated meta - data - - - - - Gets the Field Number associated with the Developer Field - - - - - Gets the Number of bytes associated with the Developer Field - - - - - Gets the developer index of the Developer Field - - - - - Gets the current description message for the field - - - - - Gets the Associated Developer Id for the message - - - - - - - - - - - If description parameter is invalid - - - - - Gets the Value of the Application Version for the Field Description - - - - - Gets the Value of the Application Id for the Field Description - - - - - Gets the Value of the Field Definition Number for thbe Field Description - - - - - Supports generating binary .FIT files. Header, Message Definition and Message - data may be written. - - - - - If default ctor is used Header object may be manipulated if desired before Open is called. - - - - - Updates the data size and CRC in the file header - Updates file CRC - - - - - - - - - - - - - - - Extends System.Exception to provide application specific exceptions. - - - - - Implements .FIT header encode/decode. - - - - - Build a standard header with CRC. The CRC will be - precomputed and it is assumed no data is present yet. - - - - - Build a standard header with CRC. The CRC will be - precomputed and it is assumed no data is present yet. - - - - - Build header by decoding callers stream. - - - - - - Verify Header format is valid. - - - - - - Populate header object by decoding callers stream - - Readable stream - - - - Output header object to beginning of callers writeable stream. Crc should - be recalculated before calling. - - Writeable, Seekable stream. Position set to end of header - - - - Recompute the header CRC based on the current contents of the header object - - - - - - - - - - Replace an existing field, otherwise add a reference to fields list - - Caller allocated field - - - - Insert a field at the desired index. If the field already exists in the mesg it is first removed. - - Index to insert the field, if index is out of range, the field is added to the end of the list - Caller allocated field - - - - Removes the specified field from this message. - - The Field to be removed from this message. - - - - Removes all fields from this message that have been generated through - component expansion while decoding the source .FIT file. - - - - - The MesgBroadcaster manages Mesg and MesgDefinition events. Its - handlers should be connected to the source of Mesg and MesgDef events - (such as a file decoder). - Clients may subscribe to the Broadcasters events (Mesg, Mesg Def - or specofic Profile Mesg) - - - - - Architecture defaults to Little Endian (unless decoded from an binary defn as Big Endian) - This could be exposed in the future to programatically create BE streams. - - - - - Represents the Fit Profile including message, field and type definition. - - - - - Implements the AccelerometerData profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - - - returns number of elements in field SampleTimeOffset - - - - Retrieves the SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the accelerometer sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in accel_x and accel_y and accel_z - 0 based index of SampleTimeOffset element to retrieve - Returns nullable ushort representing the SampleTimeOffset field - - - - Set SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the accelerometer sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in accel_x and accel_y and accel_z - 0 based index of sample_time_offset - Nullable field value to be set - - - - - - returns number of elements in field AccelX - - - - Retrieves the AccelX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of AccelX element to retrieve - Returns nullable ushort representing the AccelX field - - - - Set AccelX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of accel_x - Nullable field value to be set - - - - - - returns number of elements in field AccelY - - - - Retrieves the AccelY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of AccelY element to retrieve - Returns nullable ushort representing the AccelY field - - - - Set AccelY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of accel_y - Nullable field value to be set - - - - - - returns number of elements in field AccelZ - - - - Retrieves the AccelZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of AccelZ element to retrieve - Returns nullable ushort representing the AccelZ field - - - - Set AccelZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of accel_z - Nullable field value to be set - - - - - - returns number of elements in field CalibratedAccelX - - - - Retrieves the CalibratedAccelX field - Units: g - Comment: Calibrated accel reading - 0 based index of CalibratedAccelX element to retrieve - Returns nullable float representing the CalibratedAccelX field - - - - Set CalibratedAccelX field - Units: g - Comment: Calibrated accel reading - 0 based index of calibrated_accel_x - Nullable field value to be set - - - - - - returns number of elements in field CalibratedAccelY - - - - Retrieves the CalibratedAccelY field - Units: g - Comment: Calibrated accel reading - 0 based index of CalibratedAccelY element to retrieve - Returns nullable float representing the CalibratedAccelY field - - - - Set CalibratedAccelY field - Units: g - Comment: Calibrated accel reading - 0 based index of calibrated_accel_y - Nullable field value to be set - - - - - - returns number of elements in field CalibratedAccelZ - - - - Retrieves the CalibratedAccelZ field - Units: g - Comment: Calibrated accel reading - 0 based index of CalibratedAccelZ element to retrieve - Returns nullable float representing the CalibratedAccelZ field - - - - Set CalibratedAccelZ field - Units: g - Comment: Calibrated accel reading - 0 based index of calibrated_accel_z - Nullable field value to be set - - - - - - returns number of elements in field CompressedCalibratedAccelX - - - - Retrieves the CompressedCalibratedAccelX field - Units: mG - Comment: Calibrated accel reading - 0 based index of CompressedCalibratedAccelX element to retrieve - Returns nullable short representing the CompressedCalibratedAccelX field - - - - Set CompressedCalibratedAccelX field - Units: mG - Comment: Calibrated accel reading - 0 based index of compressed_calibrated_accel_x - Nullable field value to be set - - - - - - returns number of elements in field CompressedCalibratedAccelY - - - - Retrieves the CompressedCalibratedAccelY field - Units: mG - Comment: Calibrated accel reading - 0 based index of CompressedCalibratedAccelY element to retrieve - Returns nullable short representing the CompressedCalibratedAccelY field - - - - Set CompressedCalibratedAccelY field - Units: mG - Comment: Calibrated accel reading - 0 based index of compressed_calibrated_accel_y - Nullable field value to be set - - - - - - returns number of elements in field CompressedCalibratedAccelZ - - - - Retrieves the CompressedCalibratedAccelZ field - Units: mG - Comment: Calibrated accel reading - 0 based index of CompressedCalibratedAccelZ element to retrieve - Returns nullable short representing the CompressedCalibratedAccelZ field - - - - Set CompressedCalibratedAccelZ field - Units: mG - Comment: Calibrated accel reading - 0 based index of compressed_calibrated_accel_z - Nullable field value to be set - - - - Implements the Activity profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Comment: Exclude pauses - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Comment: Exclude pauses - Nullable field value to be set - - - - Retrieves the NumSessions field - Returns nullable ushort representing the NumSessions field - - - - Set NumSessions field - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable Activity enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Event field - Returns nullable Event enum representing the Event field - - - - Set Event field - Nullable field value to be set - - - - Retrieves the EventType field - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Nullable field value to be set - - - - Retrieves the LocalTimestamp field - Comment: timestamp epoch expressed in local time, used to convert activity timestamps to local time - Returns nullable uint representing the LocalTimestamp field - - - - Set LocalTimestamp field - Comment: timestamp epoch expressed in local time, used to convert activity timestamps to local time - Nullable field value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Implements the AntChannelId profile message. - - - - - Field Numbers for - - - - - Retrieves the ChannelNumber field - Returns nullable byte representing the ChannelNumber field - - - - Set ChannelNumber field - Nullable field value to be set - - - - Retrieves the DeviceType field - Returns nullable byte representing the DeviceType field - - - - Set DeviceType field - Nullable field value to be set - - - - Retrieves the DeviceNumber field - Returns nullable ushort representing the DeviceNumber field - - - - Set DeviceNumber field - Nullable field value to be set - - - - Retrieves the TransmissionType field - Returns nullable byte representing the TransmissionType field - - - - Set TransmissionType field - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Nullable field value to be set - - - - Implements the AntRx profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the FractionalTimestamp field - Units: s - Returns nullable float representing the FractionalTimestamp field - - - - Set FractionalTimestamp field - Units: s - Nullable field value to be set - - - - Retrieves the MesgId field - Returns nullable byte representing the MesgId field - - - - Set MesgId field - Nullable field value to be set - - - - - - returns number of elements in field MesgData - - - - Retrieves the MesgData field - 0 based index of MesgData element to retrieve - Returns nullable byte representing the MesgData field - - - - Set MesgData field - 0 based index of mesg_data - Nullable field value to be set - - - - Retrieves the ChannelNumber field - Returns nullable byte representing the ChannelNumber field - - - - Set ChannelNumber field - Nullable field value to be set - - - - - - returns number of elements in field Data - - - - Retrieves the Data field - 0 based index of Data element to retrieve - Returns nullable byte representing the Data field - - - - Set Data field - 0 based index of data - Nullable field value to be set - - - - Implements the AntTx profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the FractionalTimestamp field - Units: s - Returns nullable float representing the FractionalTimestamp field - - - - Set FractionalTimestamp field - Units: s - Nullable field value to be set - - - - Retrieves the MesgId field - Returns nullable byte representing the MesgId field - - - - Set MesgId field - Nullable field value to be set - - - - - - returns number of elements in field MesgData - - - - Retrieves the MesgData field - 0 based index of MesgData element to retrieve - Returns nullable byte representing the MesgData field - - - - Set MesgData field - 0 based index of mesg_data - Nullable field value to be set - - - - Retrieves the ChannelNumber field - Returns nullable byte representing the ChannelNumber field - - - - Set ChannelNumber field - Nullable field value to be set - - - - - - returns number of elements in field Data - - - - Retrieves the Data field - 0 based index of Data element to retrieve - Returns nullable byte representing the Data field - - - - Set Data field - 0 based index of data - Nullable field value to be set - - - - Implements the AviationAttitude profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Timestamp message was output - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Timestamp message was output - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Nullable field value to be set - - - - - - returns number of elements in field SystemTime - - - - Retrieves the SystemTime field - Units: ms - Comment: System time associated with sample expressed in ms. - 0 based index of SystemTime element to retrieve - Returns nullable uint representing the SystemTime field - - - - Set SystemTime field - Units: ms - Comment: System time associated with sample expressed in ms. - 0 based index of system_time - Nullable field value to be set - - - - - - returns number of elements in field Pitch - - - - Retrieves the Pitch field - Units: radians - Comment: Range -PI/2 to +PI/2 - 0 based index of Pitch element to retrieve - Returns nullable float representing the Pitch field - - - - Set Pitch field - Units: radians - Comment: Range -PI/2 to +PI/2 - 0 based index of pitch - Nullable field value to be set - - - - - - returns number of elements in field Roll - - - - Retrieves the Roll field - Units: radians - Comment: Range -PI to +PI - 0 based index of Roll element to retrieve - Returns nullable float representing the Roll field - - - - Set Roll field - Units: radians - Comment: Range -PI to +PI - 0 based index of roll - Nullable field value to be set - - - - - - returns number of elements in field AccelLateral - - - - Retrieves the AccelLateral field - Units: m/s^2 - Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - 0 based index of AccelLateral element to retrieve - Returns nullable float representing the AccelLateral field - - - - Set AccelLateral field - Units: m/s^2 - Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - 0 based index of accel_lateral - Nullable field value to be set - - - - - - returns number of elements in field AccelNormal - - - - Retrieves the AccelNormal field - Units: m/s^2 - Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - 0 based index of AccelNormal element to retrieve - Returns nullable float representing the AccelNormal field - - - - Set AccelNormal field - Units: m/s^2 - Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - 0 based index of accel_normal - Nullable field value to be set - - - - - - returns number of elements in field TurnRate - - - - Retrieves the TurnRate field - Units: radians/second - Comment: Range -8.727 to +8.727 (-500 degs/sec to +500 degs/sec) - 0 based index of TurnRate element to retrieve - Returns nullable float representing the TurnRate field - - - - Set TurnRate field - Units: radians/second - Comment: Range -8.727 to +8.727 (-500 degs/sec to +500 degs/sec) - 0 based index of turn_rate - Nullable field value to be set - - - - - - returns number of elements in field Stage - - - - Retrieves the Stage field - 0 based index of Stage element to retrieve - Returns nullable AttitudeStage enum representing the Stage field - - - - Set Stage field - 0 based index of stage - Nullable field value to be set - - - - - - returns number of elements in field AttitudeStageComplete - - - - Retrieves the AttitudeStageComplete field - Units: % - Comment: The percent complete of the current attitude stage. Set to 0 for attitude stages 0, 1 and 2 and to 100 for attitude stage 3 by AHRS modules that do not support it. Range - 100 - 0 based index of AttitudeStageComplete element to retrieve - Returns nullable byte representing the AttitudeStageComplete field - - - - Set AttitudeStageComplete field - Units: % - Comment: The percent complete of the current attitude stage. Set to 0 for attitude stages 0, 1 and 2 and to 100 for attitude stage 3 by AHRS modules that do not support it. Range - 100 - 0 based index of attitude_stage_complete - Nullable field value to be set - - - - - - returns number of elements in field Track - - - - Retrieves the Track field - Units: radians - Comment: Track Angle/Heading Range 0 - 2pi - 0 based index of Track element to retrieve - Returns nullable float representing the Track field - - - - Set Track field - Units: radians - Comment: Track Angle/Heading Range 0 - 2pi - 0 based index of track - Nullable field value to be set - - - - - - returns number of elements in field Validity - - - - Retrieves the Validity field - 0 based index of Validity element to retrieve - Returns nullable ushort representing the Validity field - - - - Set Validity field - 0 based index of validity - Nullable field value to be set - - - - Implements the BarometerData profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - - - returns number of elements in field SampleTimeOffset - - - - Retrieves the SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the barometer sample with the corrosponding index was taken. The samples may span across seconds. Array size must match the number of samples in baro_cal - 0 based index of SampleTimeOffset element to retrieve - Returns nullable ushort representing the SampleTimeOffset field - - - - Set SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the barometer sample with the corrosponding index was taken. The samples may span across seconds. Array size must match the number of samples in baro_cal - 0 based index of sample_time_offset - Nullable field value to be set - - - - - - returns number of elements in field BaroPres - - - - Retrieves the BaroPres field - Units: Pa - Comment: These are the raw ADC reading. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of BaroPres element to retrieve - Returns nullable uint representing the BaroPres field - - - - Set BaroPres field - Units: Pa - Comment: These are the raw ADC reading. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of baro_pres - Nullable field value to be set - - - - Implements the BikeProfile profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the Odometer field - Units: m - Returns nullable float representing the Odometer field - - - - Set Odometer field - Units: m - Nullable field value to be set - - - - Retrieves the BikeSpdAntId field - Returns nullable ushort representing the BikeSpdAntId field - - - - Set BikeSpdAntId field - Nullable field value to be set - - - - Retrieves the BikeCadAntId field - Returns nullable ushort representing the BikeCadAntId field - - - - Set BikeCadAntId field - Nullable field value to be set - - - - Retrieves the BikeSpdcadAntId field - Returns nullable ushort representing the BikeSpdcadAntId field - - - - Set BikeSpdcadAntId field - Nullable field value to be set - - - - Retrieves the BikePowerAntId field - Returns nullable ushort representing the BikePowerAntId field - - - - Set BikePowerAntId field - Nullable field value to be set - - - - Retrieves the CustomWheelsize field - Units: m - Returns nullable float representing the CustomWheelsize field - - - - Set CustomWheelsize field - Units: m - Nullable field value to be set - - - - Retrieves the AutoWheelsize field - Units: m - Returns nullable float representing the AutoWheelsize field - - - - Set AutoWheelsize field - Units: m - Nullable field value to be set - - - - Retrieves the BikeWeight field - Units: kg - Returns nullable float representing the BikeWeight field - - - - Set BikeWeight field - Units: kg - Nullable field value to be set - - - - Retrieves the PowerCalFactor field - Units: % - Returns nullable float representing the PowerCalFactor field - - - - Set PowerCalFactor field - Units: % - Nullable field value to be set - - - - Retrieves the AutoWheelCal field - Returns nullable Bool enum representing the AutoWheelCal field - - - - Set AutoWheelCal field - Nullable field value to be set - - - - Retrieves the AutoPowerZero field - Returns nullable Bool enum representing the AutoPowerZero field - - - - Set AutoPowerZero field - Nullable field value to be set - - - - Retrieves the Id field - Returns nullable byte representing the Id field - - - - Set Id field - Nullable field value to be set - - - - Retrieves the SpdEnabled field - Returns nullable Bool enum representing the SpdEnabled field - - - - Set SpdEnabled field - Nullable field value to be set - - - - Retrieves the CadEnabled field - Returns nullable Bool enum representing the CadEnabled field - - - - Set CadEnabled field - Nullable field value to be set - - - - Retrieves the SpdcadEnabled field - Returns nullable Bool enum representing the SpdcadEnabled field - - - - Set SpdcadEnabled field - Nullable field value to be set - - - - Retrieves the PowerEnabled field - Returns nullable Bool enum representing the PowerEnabled field - - - - Set PowerEnabled field - Nullable field value to be set - - - - Retrieves the CrankLength field - Units: mm - Returns nullable float representing the CrankLength field - - - - Set CrankLength field - Units: mm - Nullable field value to be set - - - - Retrieves the Enabled field - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Nullable field value to be set - - - - Retrieves the BikeSpdAntIdTransType field - Returns nullable byte representing the BikeSpdAntIdTransType field - - - - Set BikeSpdAntIdTransType field - Nullable field value to be set - - - - Retrieves the BikeCadAntIdTransType field - Returns nullable byte representing the BikeCadAntIdTransType field - - - - Set BikeCadAntIdTransType field - Nullable field value to be set - - - - Retrieves the BikeSpdcadAntIdTransType field - Returns nullable byte representing the BikeSpdcadAntIdTransType field - - - - Set BikeSpdcadAntIdTransType field - Nullable field value to be set - - - - Retrieves the BikePowerAntIdTransType field - Returns nullable byte representing the BikePowerAntIdTransType field - - - - Set BikePowerAntIdTransType field - Nullable field value to be set - - - - Retrieves the OdometerRollover field - Comment: Rollover counter that can be used to extend the odometer - Returns nullable byte representing the OdometerRollover field - - - - Set OdometerRollover field - Comment: Rollover counter that can be used to extend the odometer - Nullable field value to be set - - - - Retrieves the FrontGearNum field - Comment: Number of front gears - Returns nullable byte representing the FrontGearNum field - - - - Set FrontGearNum field - Comment: Number of front gears - Nullable field value to be set - - - - - - returns number of elements in field FrontGear - - - - Retrieves the FrontGear field - Comment: Number of teeth on each gear 0 is innermost - 0 based index of FrontGear element to retrieve - Returns nullable byte representing the FrontGear field - - - - Set FrontGear field - Comment: Number of teeth on each gear 0 is innermost - 0 based index of front_gear - Nullable field value to be set - - - - Retrieves the RearGearNum field - Comment: Number of rear gears - Returns nullable byte representing the RearGearNum field - - - - Set RearGearNum field - Comment: Number of rear gears - Nullable field value to be set - - - - - - returns number of elements in field RearGear - - - - Retrieves the RearGear field - Comment: Number of teeth on each gear 0 is innermost - 0 based index of RearGear element to retrieve - Returns nullable byte representing the RearGear field - - - - Set RearGear field - Comment: Number of teeth on each gear 0 is innermost - 0 based index of rear_gear - Nullable field value to be set - - - - Retrieves the ShimanoDi2Enabled field - Returns nullable Bool enum representing the ShimanoDi2Enabled field - - - - Set ShimanoDi2Enabled field - Nullable field value to be set - - - - Implements the BloodPressure profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the SystolicPressure field - Units: mmHg - Returns nullable ushort representing the SystolicPressure field - - - - Set SystolicPressure field - Units: mmHg - Nullable field value to be set - - - - Retrieves the DiastolicPressure field - Units: mmHg - Returns nullable ushort representing the DiastolicPressure field - - - - Set DiastolicPressure field - Units: mmHg - Nullable field value to be set - - - - Retrieves the MeanArterialPressure field - Units: mmHg - Returns nullable ushort representing the MeanArterialPressure field - - - - Set MeanArterialPressure field - Units: mmHg - Nullable field value to be set - - - - Retrieves the Map3SampleMean field - Units: mmHg - Returns nullable ushort representing the Map3SampleMean field - - - - Set Map3SampleMean field - Units: mmHg - Nullable field value to be set - - - - Retrieves the MapMorningValues field - Units: mmHg - Returns nullable ushort representing the MapMorningValues field - - - - Set MapMorningValues field - Units: mmHg - Nullable field value to be set - - - - Retrieves the MapEveningValues field - Units: mmHg - Returns nullable ushort representing the MapEveningValues field - - - - Set MapEveningValues field - Units: mmHg - Nullable field value to be set - - - - Retrieves the HeartRate field - Units: bpm - Returns nullable byte representing the HeartRate field - - - - Set HeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the HeartRateType field - Returns nullable HrType enum representing the HeartRateType field - - - - Set HeartRateType field - Nullable field value to be set - - - - Retrieves the Status field - Returns nullable BpStatus enum representing the Status field - - - - Set Status field - Nullable field value to be set - - - - Retrieves the UserProfileIndex field - Comment: Associates this blood pressure message to a user. This corresponds to the index of the user profile message in the blood pressure file. - Returns nullable ushort representing the UserProfileIndex field - - - - Set UserProfileIndex field - Comment: Associates this blood pressure message to a user. This corresponds to the index of the user profile message in the blood pressure file. - Nullable field value to be set - - - - Implements the CadenceZone profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HighValue field - Units: rpm - Returns nullable byte representing the HighValue field - - - - Set HighValue field - Units: rpm - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Implements the CameraEvent profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp. - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - Retrieves the CameraEventType field - Returns nullable CameraEventType enum representing the CameraEventType field - - - - Set CameraEventType field - Nullable field value to be set - - - - Retrieves the CameraFileUuid field - Returns byte[] representing the CameraFileUuid field - - - - Retrieves the CameraFileUuid field - Returns String representing the CameraFileUuid field - - - - Set CameraFileUuid field - field value to be set - - - - Set CameraFileUuid field - field value to be set - - - - Retrieves the CameraOrientation field - Returns nullable CameraOrientationType enum representing the CameraOrientation field - - - - Set CameraOrientation field - Nullable field value to be set - - - - Implements the Capabilities profile message. - - - - - Field Numbers for - - - - - - - returns number of elements in field Languages - - - - Retrieves the Languages field - Comment: Use language_bits_x types where x is index of array. - 0 based index of Languages element to retrieve - Returns nullable byte representing the Languages field - - - - Set Languages field - Comment: Use language_bits_x types where x is index of array. - 0 based index of languages - Nullable field value to be set - - - - - - returns number of elements in field Sports - - - - Retrieves the Sports field - Comment: Use sport_bits_x types where x is index of array. - 0 based index of Sports element to retrieve - Returns nullable byte representing the Sports field - - - - Set Sports field - Comment: Use sport_bits_x types where x is index of array. - 0 based index of sports - Nullable field value to be set - - - - Retrieves the WorkoutsSupported field - Returns nullable uint representing the WorkoutsSupported field - - - - Set WorkoutsSupported field - Nullable field value to be set - - - - Retrieves the ConnectivitySupported field - Returns nullable uint representing the ConnectivitySupported field - - - - Set ConnectivitySupported field - Nullable field value to be set - - - - Implements the ClimbPro profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the ClimbProEvent field - Returns nullable ClimbProEvent enum representing the ClimbProEvent field - - - - Set ClimbProEvent field - Nullable field value to be set - - - - Retrieves the ClimbNumber field - Returns nullable ushort representing the ClimbNumber field - - - - Set ClimbNumber field - Nullable field value to be set - - - - Retrieves the ClimbCategory field - Returns nullable byte representing the ClimbCategory field - - - - Set ClimbCategory field - Nullable field value to be set - - - - Retrieves the CurrentDist field - Units: m - Returns nullable float representing the CurrentDist field - - - - Set CurrentDist field - Units: m - Nullable field value to be set - - - - Implements the Connectivity profile message. - - - - - Field Numbers for - - - - - Retrieves the BluetoothEnabled field - Comment: Use Bluetooth for connectivity features - Returns nullable Bool enum representing the BluetoothEnabled field - - - - Set BluetoothEnabled field - Comment: Use Bluetooth for connectivity features - Nullable field value to be set - - - - Retrieves the BluetoothLeEnabled field - Comment: Use Bluetooth Low Energy for connectivity features - Returns nullable Bool enum representing the BluetoothLeEnabled field - - - - Set BluetoothLeEnabled field - Comment: Use Bluetooth Low Energy for connectivity features - Nullable field value to be set - - - - Retrieves the AntEnabled field - Comment: Use ANT for connectivity features - Returns nullable Bool enum representing the AntEnabled field - - - - Set AntEnabled field - Comment: Use ANT for connectivity features - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the LiveTrackingEnabled field - Returns nullable Bool enum representing the LiveTrackingEnabled field - - - - Set LiveTrackingEnabled field - Nullable field value to be set - - - - Retrieves the WeatherConditionsEnabled field - Returns nullable Bool enum representing the WeatherConditionsEnabled field - - - - Set WeatherConditionsEnabled field - Nullable field value to be set - - - - Retrieves the WeatherAlertsEnabled field - Returns nullable Bool enum representing the WeatherAlertsEnabled field - - - - Set WeatherAlertsEnabled field - Nullable field value to be set - - - - Retrieves the AutoActivityUploadEnabled field - Returns nullable Bool enum representing the AutoActivityUploadEnabled field - - - - Set AutoActivityUploadEnabled field - Nullable field value to be set - - - - Retrieves the CourseDownloadEnabled field - Returns nullable Bool enum representing the CourseDownloadEnabled field - - - - Set CourseDownloadEnabled field - Nullable field value to be set - - - - Retrieves the WorkoutDownloadEnabled field - Returns nullable Bool enum representing the WorkoutDownloadEnabled field - - - - Set WorkoutDownloadEnabled field - Nullable field value to be set - - - - Retrieves the GpsEphemerisDownloadEnabled field - Returns nullable Bool enum representing the GpsEphemerisDownloadEnabled field - - - - Set GpsEphemerisDownloadEnabled field - Nullable field value to be set - - - - Retrieves the IncidentDetectionEnabled field - Returns nullable Bool enum representing the IncidentDetectionEnabled field - - - - Set IncidentDetectionEnabled field - Nullable field value to be set - - - - Retrieves the GrouptrackEnabled field - Returns nullable Bool enum representing the GrouptrackEnabled field - - - - Set GrouptrackEnabled field - Nullable field value to be set - - - - Implements the Course profile message. - - - - - Field Numbers for - - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the Capabilities field - Returns nullable uint representing the Capabilities field - - - - Set Capabilities field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Implements the CoursePoint profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Returns nullable float representing the Distance field - - - - Set Distance field - Units: m - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable CoursePoint enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the Favorite field - Returns nullable Bool enum representing the Favorite field - - - - Set Favorite field - Nullable field value to be set - - - - Implements the DeveloperDataId profile message. - - - - - Field Numbers for - - - - - - - returns number of elements in field DeveloperId - - - - Retrieves the DeveloperId field - 0 based index of DeveloperId element to retrieve - Returns nullable byte representing the DeveloperId field - - - - Set DeveloperId field - 0 based index of developer_id - Nullable field value to be set - - - - - - returns number of elements in field ApplicationId - - - - Retrieves the ApplicationId field - 0 based index of ApplicationId element to retrieve - Returns nullable byte representing the ApplicationId field - - - - Set ApplicationId field - 0 based index of application_id - Nullable field value to be set - - - - Retrieves the ManufacturerId field - Returns nullable ushort representing the ManufacturerId field - - - - Set ManufacturerId field - Nullable field value to be set - - - - Retrieves the DeveloperDataIndex field - Returns nullable byte representing the DeveloperDataIndex field - - - - Set DeveloperDataIndex field - Nullable field value to be set - - - - Retrieves the ApplicationVersion field - Returns nullable uint representing the ApplicationVersion field - - - - Set ApplicationVersion field - Nullable field value to be set - - - - Implements the DeviceAuxBatteryInfo profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Nullable field value to be set - - - - Retrieves the BatteryVoltage field - Units: V - Returns nullable float representing the BatteryVoltage field - - - - Set BatteryVoltage field - Units: V - Nullable field value to be set - - - - Retrieves the BatteryStatus field - Returns nullable byte representing the BatteryStatus field - - - - Set BatteryStatus field - Nullable field value to be set - - - - Retrieves the BatteryIdentifier field - Returns nullable byte representing the BatteryIdentifier field - - - - Set BatteryIdentifier field - Nullable field value to be set - - - - Implements the DeviceInfo profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Nullable field value to be set - - - - Retrieves the DeviceType field - Returns nullable byte representing the DeviceType field - - - - Set DeviceType field - Nullable field value to be set - - - - Retrieves the BleDeviceType subfield - Nullable byte representing the BleDeviceType subfield - - - - - Set BleDeviceType subfield - Subfield value to be set - - - - Retrieves the AntplusDeviceType subfield - Nullable byte representing the AntplusDeviceType subfield - - - - - Set AntplusDeviceType subfield - Subfield value to be set - - - - Retrieves the AntDeviceType subfield - Nullable byte representing the AntDeviceType subfield - - - - - Set AntDeviceType subfield - Subfield value to be set - - - - Retrieves the LocalDeviceType subfield - Nullable byte representing the LocalDeviceType subfield - - - - - Set LocalDeviceType subfield - Subfield value to be set - - - - Retrieves the Manufacturer field - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Nullable field value to be set - - - - Retrieves the SerialNumber field - Returns nullable uint representing the SerialNumber field - - - - Set SerialNumber field - Nullable field value to be set - - - - Retrieves the Product field - Returns nullable ushort representing the Product field - - - - Set Product field - Nullable field value to be set - - - - Retrieves the FaveroProduct subfield - Nullable ushort representing the FaveroProduct subfield - - - - - Set FaveroProduct subfield - Subfield value to be set - - - - Retrieves the GarminProduct subfield - Nullable ushort representing the GarminProduct subfield - - - - - Set GarminProduct subfield - Subfield value to be set - - - - Retrieves the SoftwareVersion field - Returns nullable float representing the SoftwareVersion field - - - - Set SoftwareVersion field - Nullable field value to be set - - - - Retrieves the HardwareVersion field - Returns nullable byte representing the HardwareVersion field - - - - Set HardwareVersion field - Nullable field value to be set - - - - Retrieves the CumOperatingTime field - Units: s - Comment: Reset by new battery or charge. - Returns nullable uint representing the CumOperatingTime field - - - - Set CumOperatingTime field - Units: s - Comment: Reset by new battery or charge. - Nullable field value to be set - - - - Retrieves the BatteryVoltage field - Units: V - Returns nullable float representing the BatteryVoltage field - - - - Set BatteryVoltage field - Units: V - Nullable field value to be set - - - - Retrieves the BatteryStatus field - Returns nullable byte representing the BatteryStatus field - - - - Set BatteryStatus field - Nullable field value to be set - - - - Retrieves the SensorPosition field - Comment: Indicates the location of the sensor - Returns nullable BodyLocation enum representing the SensorPosition field - - - - Set SensorPosition field - Comment: Indicates the location of the sensor - Nullable field value to be set - - - - Retrieves the Descriptor field - Comment: Used to describe the sensor or location - Returns byte[] representing the Descriptor field - - - - Retrieves the Descriptor field - Comment: Used to describe the sensor or location - Returns String representing the Descriptor field - - - - Set Descriptor field - Comment: Used to describe the sensor or location - field value to be set - - - - Set Descriptor field - Comment: Used to describe the sensor or location - field value to be set - - - - Retrieves the AntTransmissionType field - Returns nullable byte representing the AntTransmissionType field - - - - Set AntTransmissionType field - Nullable field value to be set - - - - Retrieves the AntDeviceNumber field - Returns nullable ushort representing the AntDeviceNumber field - - - - Set AntDeviceNumber field - Nullable field value to be set - - - - Retrieves the AntNetwork field - Returns nullable AntNetwork enum representing the AntNetwork field - - - - Set AntNetwork field - Nullable field value to be set - - - - Retrieves the SourceType field - Returns nullable SourceType enum representing the SourceType field - - - - Set SourceType field - Nullable field value to be set - - - - Retrieves the ProductName field - Comment: Optional free form string to indicate the devices name or model - Returns byte[] representing the ProductName field - - - - Retrieves the ProductName field - Comment: Optional free form string to indicate the devices name or model - Returns String representing the ProductName field - - - - Set ProductName field - Comment: Optional free form string to indicate the devices name or model - field value to be set - - - - Set ProductName field - Comment: Optional free form string to indicate the devices name or model - field value to be set - - - - Retrieves the BatteryLevel field - Units: % - Returns nullable byte representing the BatteryLevel field - - - - Set BatteryLevel field - Units: % - Nullable field value to be set - - - - Implements the DeviceSettings profile message. - - - - - Field Numbers for - - - - - Retrieves the ActiveTimeZone field - Comment: Index into time zone arrays. - Returns nullable byte representing the ActiveTimeZone field - - - - Set ActiveTimeZone field - Comment: Index into time zone arrays. - Nullable field value to be set - - - - Retrieves the UtcOffset field - Comment: Offset from system time. Required to convert timestamp from system time to UTC. - Returns nullable uint representing the UtcOffset field - - - - Set UtcOffset field - Comment: Offset from system time. Required to convert timestamp from system time to UTC. - Nullable field value to be set - - - - - - returns number of elements in field TimeOffset - - - - Retrieves the TimeOffset field - Units: s - Comment: Offset from system time. - 0 based index of TimeOffset element to retrieve - Returns nullable uint representing the TimeOffset field - - - - Set TimeOffset field - Units: s - Comment: Offset from system time. - 0 based index of time_offset - Nullable field value to be set - - - - - - returns number of elements in field TimeMode - - - - Retrieves the TimeMode field - Comment: Display mode for the time - 0 based index of TimeMode element to retrieve - Returns nullable TimeMode enum representing the TimeMode field - - - - Set TimeMode field - Comment: Display mode for the time - 0 based index of time_mode - Nullable field value to be set - - - - - - returns number of elements in field TimeZoneOffset - - - - Retrieves the TimeZoneOffset field - Units: hr - Comment: timezone offset in 1/4 hour increments - 0 based index of TimeZoneOffset element to retrieve - Returns nullable float representing the TimeZoneOffset field - - - - Set TimeZoneOffset field - Units: hr - Comment: timezone offset in 1/4 hour increments - 0 based index of time_zone_offset - Nullable field value to be set - - - - Retrieves the BacklightMode field - Comment: Mode for backlight - Returns nullable BacklightMode enum representing the BacklightMode field - - - - Set BacklightMode field - Comment: Mode for backlight - Nullable field value to be set - - - - Retrieves the ActivityTrackerEnabled field - Comment: Enabled state of the activity tracker functionality - Returns nullable Bool enum representing the ActivityTrackerEnabled field - - - - Set ActivityTrackerEnabled field - Comment: Enabled state of the activity tracker functionality - Nullable field value to be set - - - - Retrieves the ClockTime field - Comment: UTC timestamp used to set the devices clock and date - Returns DateTime representing the ClockTime field - - - - Set ClockTime field - Comment: UTC timestamp used to set the devices clock and date - Nullable field value to be set - - - - - - returns number of elements in field PagesEnabled - - - - Retrieves the PagesEnabled field - Comment: Bitfield to configure enabled screens for each supported loop - 0 based index of PagesEnabled element to retrieve - Returns nullable ushort representing the PagesEnabled field - - - - Set PagesEnabled field - Comment: Bitfield to configure enabled screens for each supported loop - 0 based index of pages_enabled - Nullable field value to be set - - - - Retrieves the MoveAlertEnabled field - Comment: Enabled state of the move alert - Returns nullable Bool enum representing the MoveAlertEnabled field - - - - Set MoveAlertEnabled field - Comment: Enabled state of the move alert - Nullable field value to be set - - - - Retrieves the DateMode field - Comment: Display mode for the date - Returns nullable DateMode enum representing the DateMode field - - - - Set DateMode field - Comment: Display mode for the date - Nullable field value to be set - - - - Retrieves the DisplayOrientation field - Returns nullable DisplayOrientation enum representing the DisplayOrientation field - - - - Set DisplayOrientation field - Nullable field value to be set - - - - Retrieves the MountingSide field - Returns nullable Side enum representing the MountingSide field - - - - Set MountingSide field - Nullable field value to be set - - - - - - returns number of elements in field DefaultPage - - - - Retrieves the DefaultPage field - Comment: Bitfield to indicate one page as default for each supported loop - 0 based index of DefaultPage element to retrieve - Returns nullable ushort representing the DefaultPage field - - - - Set DefaultPage field - Comment: Bitfield to indicate one page as default for each supported loop - 0 based index of default_page - Nullable field value to be set - - - - Retrieves the AutosyncMinSteps field - Units: steps - Comment: Minimum steps before an autosync can occur - Returns nullable ushort representing the AutosyncMinSteps field - - - - Set AutosyncMinSteps field - Units: steps - Comment: Minimum steps before an autosync can occur - Nullable field value to be set - - - - Retrieves the AutosyncMinTime field - Units: minutes - Comment: Minimum minutes before an autosync can occur - Returns nullable ushort representing the AutosyncMinTime field - - - - Set AutosyncMinTime field - Units: minutes - Comment: Minimum minutes before an autosync can occur - Nullable field value to be set - - - - Retrieves the LactateThresholdAutodetectEnabled field - Comment: Enable auto-detect setting for the lactate threshold feature. - Returns nullable Bool enum representing the LactateThresholdAutodetectEnabled field - - - - Set LactateThresholdAutodetectEnabled field - Comment: Enable auto-detect setting for the lactate threshold feature. - Nullable field value to be set - - - - Retrieves the BleAutoUploadEnabled field - Comment: Automatically upload using BLE - Returns nullable Bool enum representing the BleAutoUploadEnabled field - - - - Set BleAutoUploadEnabled field - Comment: Automatically upload using BLE - Nullable field value to be set - - - - Retrieves the AutoSyncFrequency field - Comment: Helps to conserve battery by changing modes - Returns nullable AutoSyncFrequency enum representing the AutoSyncFrequency field - - - - Set AutoSyncFrequency field - Comment: Helps to conserve battery by changing modes - Nullable field value to be set - - - - Retrieves the AutoActivityDetect field - Comment: Allows setting specific activities auto-activity detect enabled/disabled settings - Returns nullable uint representing the AutoActivityDetect field - - - - Set AutoActivityDetect field - Comment: Allows setting specific activities auto-activity detect enabled/disabled settings - Nullable field value to be set - - - - Retrieves the NumberOfScreens field - Comment: Number of screens configured to display - Returns nullable byte representing the NumberOfScreens field - - - - Set NumberOfScreens field - Comment: Number of screens configured to display - Nullable field value to be set - - - - Retrieves the SmartNotificationDisplayOrientation field - Comment: Smart Notification display orientation - Returns nullable DisplayOrientation enum representing the SmartNotificationDisplayOrientation field - - - - Set SmartNotificationDisplayOrientation field - Comment: Smart Notification display orientation - Nullable field value to be set - - - - Retrieves the TapInterface field - Returns nullable Switch enum representing the TapInterface field - - - - Set TapInterface field - Nullable field value to be set - - - - Retrieves the TapSensitivity field - Comment: Used to hold the tap threshold setting - Returns nullable TapSensitivity enum representing the TapSensitivity field - - - - Set TapSensitivity field - Comment: Used to hold the tap threshold setting - Nullable field value to be set - - - - Implements the DiveAlarm profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Comment: Index of the alarm - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Comment: Index of the alarm - Nullable field value to be set - - - - Retrieves the Depth field - Units: m - Comment: Depth setting (m) for depth type alarms - Returns nullable float representing the Depth field - - - - Set Depth field - Units: m - Comment: Depth setting (m) for depth type alarms - Nullable field value to be set - - - - Retrieves the Time field - Units: s - Comment: Time setting (s) for time type alarms - Returns nullable int representing the Time field - - - - Set Time field - Units: s - Comment: Time setting (s) for time type alarms - Nullable field value to be set - - - - Retrieves the Enabled field - Comment: Enablement flag - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Comment: Enablement flag - Nullable field value to be set - - - - Retrieves the AlarmType field - Comment: Alarm type setting - Returns nullable DiveAlarmType enum representing the AlarmType field - - - - Set AlarmType field - Comment: Alarm type setting - Nullable field value to be set - - - - Retrieves the Sound field - Comment: Tone and Vibe setting for the alarm - Returns nullable Tone enum representing the Sound field - - - - Set Sound field - Comment: Tone and Vibe setting for the alarm - Nullable field value to be set - - - - - - returns number of elements in field DiveTypes - - - - Retrieves the DiveTypes field - Comment: Dive types the alarm will trigger on - 0 based index of DiveTypes element to retrieve - Returns nullable SubSport enum representing the DiveTypes field - - - - Set DiveTypes field - Comment: Dive types the alarm will trigger on - 0 based index of dive_types - Nullable field value to be set - - - - Retrieves the Id field - Comment: Alarm ID - Returns nullable uint representing the Id field - - - - Set Id field - Comment: Alarm ID - Nullable field value to be set - - - - Retrieves the PopupEnabled field - Comment: Show a visible pop-up for this alarm - Returns nullable Bool enum representing the PopupEnabled field - - - - Set PopupEnabled field - Comment: Show a visible pop-up for this alarm - Nullable field value to be set - - - - Retrieves the TriggerOnDescent field - Comment: Trigger the alarm on descent - Returns nullable Bool enum representing the TriggerOnDescent field - - - - Set TriggerOnDescent field - Comment: Trigger the alarm on descent - Nullable field value to be set - - - - Retrieves the TriggerOnAscent field - Comment: Trigger the alarm on ascent - Returns nullable Bool enum representing the TriggerOnAscent field - - - - Set TriggerOnAscent field - Comment: Trigger the alarm on ascent - Nullable field value to be set - - - - Retrieves the Repeating field - Comment: Repeat alarm each time threshold is crossed? - Returns nullable Bool enum representing the Repeating field - - - - Set Repeating field - Comment: Repeat alarm each time threshold is crossed? - Nullable field value to be set - - - - Retrieves the Speed field - Units: mps - Comment: Ascent/descent rate (mps) setting for speed type alarms - Returns nullable float representing the Speed field - - - - Set Speed field - Units: mps - Comment: Ascent/descent rate (mps) setting for speed type alarms - Nullable field value to be set - - - - Implements the DiveApneaAlarm profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Comment: Index of the alarm - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Comment: Index of the alarm - Nullable field value to be set - - - - Retrieves the Depth field - Units: m - Comment: Depth setting (m) for depth type alarms - Returns nullable float representing the Depth field - - - - Set Depth field - Units: m - Comment: Depth setting (m) for depth type alarms - Nullable field value to be set - - - - Retrieves the Time field - Units: s - Comment: Time setting (s) for time type alarms - Returns nullable int representing the Time field - - - - Set Time field - Units: s - Comment: Time setting (s) for time type alarms - Nullable field value to be set - - - - Retrieves the Enabled field - Comment: Enablement flag - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Comment: Enablement flag - Nullable field value to be set - - - - Retrieves the AlarmType field - Comment: Alarm type setting - Returns nullable DiveAlarmType enum representing the AlarmType field - - - - Set AlarmType field - Comment: Alarm type setting - Nullable field value to be set - - - - Retrieves the Sound field - Comment: Tone and Vibe setting for the alarm. - Returns nullable Tone enum representing the Sound field - - - - Set Sound field - Comment: Tone and Vibe setting for the alarm. - Nullable field value to be set - - - - - - returns number of elements in field DiveTypes - - - - Retrieves the DiveTypes field - Comment: Dive types the alarm will trigger on - 0 based index of DiveTypes element to retrieve - Returns nullable SubSport enum representing the DiveTypes field - - - - Set DiveTypes field - Comment: Dive types the alarm will trigger on - 0 based index of dive_types - Nullable field value to be set - - - - Retrieves the Id field - Comment: Alarm ID - Returns nullable uint representing the Id field - - - - Set Id field - Comment: Alarm ID - Nullable field value to be set - - - - Retrieves the PopupEnabled field - Comment: Show a visible pop-up for this alarm - Returns nullable Bool enum representing the PopupEnabled field - - - - Set PopupEnabled field - Comment: Show a visible pop-up for this alarm - Nullable field value to be set - - - - Retrieves the TriggerOnDescent field - Comment: Trigger the alarm on descent - Returns nullable Bool enum representing the TriggerOnDescent field - - - - Set TriggerOnDescent field - Comment: Trigger the alarm on descent - Nullable field value to be set - - - - Retrieves the TriggerOnAscent field - Comment: Trigger the alarm on ascent - Returns nullable Bool enum representing the TriggerOnAscent field - - - - Set TriggerOnAscent field - Comment: Trigger the alarm on ascent - Nullable field value to be set - - - - Retrieves the Repeating field - Comment: Repeat alarm each time threshold is crossed? - Returns nullable Bool enum representing the Repeating field - - - - Set Repeating field - Comment: Repeat alarm each time threshold is crossed? - Nullable field value to be set - - - - Retrieves the Speed field - Units: mps - Comment: Ascent/descent rate (mps) setting for speed type alarms - Returns nullable float representing the Speed field - - - - Set Speed field - Units: mps - Comment: Ascent/descent rate (mps) setting for speed type alarms - Nullable field value to be set - - - - Implements the DiveGas profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HeliumContent field - Units: percent - Returns nullable byte representing the HeliumContent field - - - - Set HeliumContent field - Units: percent - Nullable field value to be set - - - - Retrieves the OxygenContent field - Units: percent - Returns nullable byte representing the OxygenContent field - - - - Set OxygenContent field - Units: percent - Nullable field value to be set - - - - Retrieves the Status field - Returns nullable DiveGasStatus enum representing the Status field - - - - Set Status field - Nullable field value to be set - - - - Retrieves the Mode field - Returns nullable DiveGasMode enum representing the Mode field - - - - Set Mode field - Nullable field value to be set - - - - Implements the DiveSettings profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the Model field - Returns nullable TissueModelType enum representing the Model field - - - - Set Model field - Nullable field value to be set - - - - Retrieves the GfLow field - Units: percent - Returns nullable byte representing the GfLow field - - - - Set GfLow field - Units: percent - Nullable field value to be set - - - - Retrieves the GfHigh field - Units: percent - Returns nullable byte representing the GfHigh field - - - - Set GfHigh field - Units: percent - Nullable field value to be set - - - - Retrieves the WaterType field - Returns nullable WaterType enum representing the WaterType field - - - - Set WaterType field - Nullable field value to be set - - - - Retrieves the WaterDensity field - Units: kg/m^3 - Comment: Fresh water is usually 1000; salt water is usually 1025 - Returns nullable float representing the WaterDensity field - - - - Set WaterDensity field - Units: kg/m^3 - Comment: Fresh water is usually 1000; salt water is usually 1025 - Nullable field value to be set - - - - Retrieves the Po2Warn field - Units: percent - Comment: Typically 1.40 - Returns nullable float representing the Po2Warn field - - - - Set Po2Warn field - Units: percent - Comment: Typically 1.40 - Nullable field value to be set - - - - Retrieves the Po2Critical field - Units: percent - Comment: Typically 1.60 - Returns nullable float representing the Po2Critical field - - - - Set Po2Critical field - Units: percent - Comment: Typically 1.60 - Nullable field value to be set - - - - Retrieves the Po2Deco field - Units: percent - Returns nullable float representing the Po2Deco field - - - - Set Po2Deco field - Units: percent - Nullable field value to be set - - - - Retrieves the SafetyStopEnabled field - Returns nullable Bool enum representing the SafetyStopEnabled field - - - - Set SafetyStopEnabled field - Nullable field value to be set - - - - Retrieves the BottomDepth field - Returns nullable float representing the BottomDepth field - - - - Set BottomDepth field - Nullable field value to be set - - - - Retrieves the BottomTime field - Returns nullable uint representing the BottomTime field - - - - Set BottomTime field - Nullable field value to be set - - - - Retrieves the ApneaCountdownEnabled field - Returns nullable Bool enum representing the ApneaCountdownEnabled field - - - - Set ApneaCountdownEnabled field - Nullable field value to be set - - - - Retrieves the ApneaCountdownTime field - Returns nullable uint representing the ApneaCountdownTime field - - - - Set ApneaCountdownTime field - Nullable field value to be set - - - - Retrieves the BacklightMode field - Returns nullable DiveBacklightMode enum representing the BacklightMode field - - - - Set BacklightMode field - Nullable field value to be set - - - - Retrieves the BacklightBrightness field - Returns nullable byte representing the BacklightBrightness field - - - - Set BacklightBrightness field - Nullable field value to be set - - - - Retrieves the BacklightTimeout field - Returns nullable byte representing the BacklightTimeout field - - - - Set BacklightTimeout field - Nullable field value to be set - - - - Retrieves the RepeatDiveInterval field - Units: s - Comment: Time between surfacing and ending the activity - Returns nullable ushort representing the RepeatDiveInterval field - - - - Set RepeatDiveInterval field - Units: s - Comment: Time between surfacing and ending the activity - Nullable field value to be set - - - - Retrieves the SafetyStopTime field - Units: s - Comment: Time at safety stop (if enabled) - Returns nullable ushort representing the SafetyStopTime field - - - - Set SafetyStopTime field - Units: s - Comment: Time at safety stop (if enabled) - Nullable field value to be set - - - - Retrieves the HeartRateSourceType field - Returns nullable SourceType enum representing the HeartRateSourceType field - - - - Set HeartRateSourceType field - Nullable field value to be set - - - - Retrieves the HeartRateSource field - Returns nullable byte representing the HeartRateSource field - - - - Set HeartRateSource field - Nullable field value to be set - - - - Retrieves the HeartRateAntplusDeviceType subfield - Nullable byte representing the HeartRateAntplusDeviceType subfield - - - - - Set HeartRateAntplusDeviceType subfield - Subfield value to be set - - - - Retrieves the HeartRateLocalDeviceType subfield - Nullable byte representing the HeartRateLocalDeviceType subfield - - - - - Set HeartRateLocalDeviceType subfield - Subfield value to be set - - - - Retrieves the TravelGas field - Comment: Index of travel dive_gas message - Returns nullable ushort representing the TravelGas field - - - - Set TravelGas field - Comment: Index of travel dive_gas message - Nullable field value to be set - - - - Retrieves the CcrLowSetpointSwitchMode field - Comment: If low PO2 should be switched to automatically - Returns nullable CcrSetpointSwitchMode enum representing the CcrLowSetpointSwitchMode field - - - - Set CcrLowSetpointSwitchMode field - Comment: If low PO2 should be switched to automatically - Nullable field value to be set - - - - Retrieves the CcrLowSetpoint field - Units: percent - Comment: Target PO2 when using low setpoint - Returns nullable float representing the CcrLowSetpoint field - - - - Set CcrLowSetpoint field - Units: percent - Comment: Target PO2 when using low setpoint - Nullable field value to be set - - - - Retrieves the CcrLowSetpointDepth field - Units: m - Comment: Depth to switch to low setpoint in automatic mode - Returns nullable float representing the CcrLowSetpointDepth field - - - - Set CcrLowSetpointDepth field - Units: m - Comment: Depth to switch to low setpoint in automatic mode - Nullable field value to be set - - - - Retrieves the CcrHighSetpointSwitchMode field - Comment: If high PO2 should be switched to automatically - Returns nullable CcrSetpointSwitchMode enum representing the CcrHighSetpointSwitchMode field - - - - Set CcrHighSetpointSwitchMode field - Comment: If high PO2 should be switched to automatically - Nullable field value to be set - - - - Retrieves the CcrHighSetpoint field - Units: percent - Comment: Target PO2 when using high setpoint - Returns nullable float representing the CcrHighSetpoint field - - - - Set CcrHighSetpoint field - Units: percent - Comment: Target PO2 when using high setpoint - Nullable field value to be set - - - - Retrieves the CcrHighSetpointDepth field - Units: m - Comment: Depth to switch to high setpoint in automatic mode - Returns nullable float representing the CcrHighSetpointDepth field - - - - Set CcrHighSetpointDepth field - Units: m - Comment: Depth to switch to high setpoint in automatic mode - Nullable field value to be set - - - - Retrieves the GasConsumptionDisplay field - Comment: Type of gas consumption rate to display. Some values are only valid if tank volume is known. - Returns nullable GasConsumptionRateType enum representing the GasConsumptionDisplay field - - - - Set GasConsumptionDisplay field - Comment: Type of gas consumption rate to display. Some values are only valid if tank volume is known. - Nullable field value to be set - - - - Retrieves the UpKeyEnabled field - Comment: Indicates whether the up key is enabled during dives - Returns nullable Bool enum representing the UpKeyEnabled field - - - - Set UpKeyEnabled field - Comment: Indicates whether the up key is enabled during dives - Nullable field value to be set - - - - Retrieves the DiveSounds field - Comment: Sounds and vibration enabled or disabled in-dive - Returns nullable Tone enum representing the DiveSounds field - - - - Set DiveSounds field - Comment: Sounds and vibration enabled or disabled in-dive - Nullable field value to be set - - - - Retrieves the LastStopMultiple field - Comment: Usually 1.0/1.5/2.0 representing 3/4.5/6m or 10/15/20ft - Returns nullable float representing the LastStopMultiple field - - - - Set LastStopMultiple field - Comment: Usually 1.0/1.5/2.0 representing 3/4.5/6m or 10/15/20ft - Nullable field value to be set - - - - Retrieves the NoFlyTimeMode field - Comment: Indicates which guidelines to use for no-fly surface interval. - Returns nullable NoFlyTimeMode enum representing the NoFlyTimeMode field - - - - Set NoFlyTimeMode field - Comment: Indicates which guidelines to use for no-fly surface interval. - Nullable field value to be set - - - - Implements the DiveSummary profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the ReferenceMesg field - Returns nullable ushort representing the ReferenceMesg field - - - - Set ReferenceMesg field - Nullable field value to be set - - - - Retrieves the ReferenceIndex field - Returns nullable ushort representing the ReferenceIndex field - - - - Set ReferenceIndex field - Nullable field value to be set - - - - Retrieves the AvgDepth field - Units: m - Comment: 0 if above water - Returns nullable float representing the AvgDepth field - - - - Set AvgDepth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the MaxDepth field - Units: m - Comment: 0 if above water - Returns nullable float representing the MaxDepth field - - - - Set MaxDepth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the SurfaceInterval field - Units: s - Comment: Time since end of last dive - Returns nullable uint representing the SurfaceInterval field - - - - Set SurfaceInterval field - Units: s - Comment: Time since end of last dive - Nullable field value to be set - - - - Retrieves the StartCns field - Units: percent - Returns nullable byte representing the StartCns field - - - - Set StartCns field - Units: percent - Nullable field value to be set - - - - Retrieves the EndCns field - Units: percent - Returns nullable byte representing the EndCns field - - - - Set EndCns field - Units: percent - Nullable field value to be set - - - - Retrieves the StartN2 field - Units: percent - Returns nullable ushort representing the StartN2 field - - - - Set StartN2 field - Units: percent - Nullable field value to be set - - - - Retrieves the EndN2 field - Units: percent - Returns nullable ushort representing the EndN2 field - - - - Set EndN2 field - Units: percent - Nullable field value to be set - - - - Retrieves the O2Toxicity field - Units: OTUs - Returns nullable ushort representing the O2Toxicity field - - - - Set O2Toxicity field - Units: OTUs - Nullable field value to be set - - - - Retrieves the DiveNumber field - Returns nullable uint representing the DiveNumber field - - - - Set DiveNumber field - Nullable field value to be set - - - - Retrieves the BottomTime field - Units: s - Returns nullable float representing the BottomTime field - - - - Set BottomTime field - Units: s - Nullable field value to be set - - - - Retrieves the AvgPressureSac field - Units: bar/min - Comment: Average pressure-based surface air consumption - Returns nullable float representing the AvgPressureSac field - - - - Set AvgPressureSac field - Units: bar/min - Comment: Average pressure-based surface air consumption - Nullable field value to be set - - - - Retrieves the AvgVolumeSac field - Units: L/min - Comment: Average volumetric surface air consumption - Returns nullable float representing the AvgVolumeSac field - - - - Set AvgVolumeSac field - Units: L/min - Comment: Average volumetric surface air consumption - Nullable field value to be set - - - - Retrieves the AvgRmv field - Units: L/min - Comment: Average respiratory minute volume - Returns nullable float representing the AvgRmv field - - - - Set AvgRmv field - Units: L/min - Comment: Average respiratory minute volume - Nullable field value to be set - - - - Retrieves the DescentTime field - Units: s - Comment: Time to reach deepest level stop - Returns nullable float representing the DescentTime field - - - - Set DescentTime field - Units: s - Comment: Time to reach deepest level stop - Nullable field value to be set - - - - Retrieves the AscentTime field - Units: s - Comment: Time after leaving bottom until reaching surface - Returns nullable float representing the AscentTime field - - - - Set AscentTime field - Units: s - Comment: Time after leaving bottom until reaching surface - Nullable field value to be set - - - - Retrieves the AvgAscentRate field - Units: m/s - Comment: Average ascent rate, not including descents or stops - Returns nullable float representing the AvgAscentRate field - - - - Set AvgAscentRate field - Units: m/s - Comment: Average ascent rate, not including descents or stops - Nullable field value to be set - - - - Retrieves the AvgDescentRate field - Units: m/s - Comment: Average descent rate, not including ascents or stops - Returns nullable float representing the AvgDescentRate field - - - - Set AvgDescentRate field - Units: m/s - Comment: Average descent rate, not including ascents or stops - Nullable field value to be set - - - - Retrieves the MaxAscentRate field - Units: m/s - Comment: Maximum ascent rate - Returns nullable float representing the MaxAscentRate field - - - - Set MaxAscentRate field - Units: m/s - Comment: Maximum ascent rate - Nullable field value to be set - - - - Retrieves the MaxDescentRate field - Units: m/s - Comment: Maximum descent rate - Returns nullable float representing the MaxDescentRate field - - - - Set MaxDescentRate field - Units: m/s - Comment: Maximum descent rate - Nullable field value to be set - - - - Retrieves the HangTime field - Units: s - Comment: Time spent neither ascending nor descending - Returns nullable float representing the HangTime field - - - - Set HangTime field - Units: s - Comment: Time spent neither ascending nor descending - Nullable field value to be set - - - - Implements the Event profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Event field - Returns nullable Event enum representing the Event field - - - - Set Event field - Nullable field value to be set - - - - Retrieves the EventType field - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Nullable field value to be set - - - - Retrieves the Data16 field - Returns nullable ushort representing the Data16 field - - - - Set Data16 field - Nullable field value to be set - - - - Retrieves the Data field - Returns nullable uint representing the Data field - - - - Set Data field - Nullable field value to be set - - - - Retrieves the TimerTrigger subfield - Nullable TimerTrigger enum representing the TimerTrigger subfield - - - - - Set TimerTrigger subfield - Subfield value to be set - - - - Retrieves the CoursePointIndex subfield - Nullable ushort representing the CoursePointIndex subfield - - - - - Set CoursePointIndex subfield - Subfield value to be set - - - - Retrieves the BatteryLevel subfield - Units: V - Nullable float representing the BatteryLevel subfield - - - - - Set BatteryLevel subfield - Units: V - Subfield value to be set - - - - Retrieves the VirtualPartnerSpeed subfield - Units: m/s - Nullable float representing the VirtualPartnerSpeed subfield - - - - - Set VirtualPartnerSpeed subfield - Units: m/s - Subfield value to be set - - - - Retrieves the HrHighAlert subfield - Units: bpm - Nullable byte representing the HrHighAlert subfield - - - - - Set HrHighAlert subfield - Units: bpm - Subfield value to be set - - - - Retrieves the HrLowAlert subfield - Units: bpm - Nullable byte representing the HrLowAlert subfield - - - - - Set HrLowAlert subfield - Units: bpm - Subfield value to be set - - - - Retrieves the SpeedHighAlert subfield - Units: m/s - Nullable float representing the SpeedHighAlert subfield - - - - - Set SpeedHighAlert subfield - Units: m/s - Subfield value to be set - - - - Retrieves the SpeedLowAlert subfield - Units: m/s - Nullable float representing the SpeedLowAlert subfield - - - - - Set SpeedLowAlert subfield - Units: m/s - Subfield value to be set - - - - Retrieves the CadHighAlert subfield - Units: rpm - Nullable ushort representing the CadHighAlert subfield - - - - - Set CadHighAlert subfield - Units: rpm - Subfield value to be set - - - - Retrieves the CadLowAlert subfield - Units: rpm - Nullable ushort representing the CadLowAlert subfield - - - - - Set CadLowAlert subfield - Units: rpm - Subfield value to be set - - - - Retrieves the PowerHighAlert subfield - Units: watts - Nullable ushort representing the PowerHighAlert subfield - - - - - Set PowerHighAlert subfield - Units: watts - Subfield value to be set - - - - Retrieves the PowerLowAlert subfield - Units: watts - Nullable ushort representing the PowerLowAlert subfield - - - - - Set PowerLowAlert subfield - Units: watts - Subfield value to be set - - - - Retrieves the TimeDurationAlert subfield - Units: s - Nullable float representing the TimeDurationAlert subfield - - - - - Set TimeDurationAlert subfield - Units: s - Subfield value to be set - - - - Retrieves the DistanceDurationAlert subfield - Units: m - Nullable float representing the DistanceDurationAlert subfield - - - - - Set DistanceDurationAlert subfield - Units: m - Subfield value to be set - - - - Retrieves the CalorieDurationAlert subfield - Units: calories - Nullable uint representing the CalorieDurationAlert subfield - - - - - Set CalorieDurationAlert subfield - Units: calories - Subfield value to be set - - - - Retrieves the FitnessEquipmentState subfield - Nullable FitnessEquipmentState enum representing the FitnessEquipmentState subfield - - - - - Set FitnessEquipmentState subfield - Subfield value to be set - - - - Retrieves the SportPoint subfield - Nullable uint representing the SportPoint subfield - - - - - Set SportPoint subfield - Subfield value to be set - - - - Retrieves the GearChangeData subfield - Nullable uint representing the GearChangeData subfield - - - - - Set GearChangeData subfield - Subfield value to be set - - - - Retrieves the RiderPosition subfield - Comment: Indicates the rider position value. - Nullable RiderPositionType enum representing the RiderPosition subfield - - - - - Set RiderPosition subfield - Comment: Indicates the rider position value. - Subfield value to be set - - - - Retrieves the CommTimeout subfield - Nullable ushort representing the CommTimeout subfield - - - - - Set CommTimeout subfield - Subfield value to be set - - - - Retrieves the DiveAlert subfield - Nullable DiveAlert enum representing the DiveAlert subfield - - - - - Set DiveAlert subfield - Subfield value to be set - - - - Retrieves the RadarThreatAlert subfield - Comment: The first byte is the radar_threat_level_max, the second byte is the radar_threat_count, third bytes is the average approach speed, and the 4th byte is the max approach speed - Nullable uint representing the RadarThreatAlert subfield - - - - - Set RadarThreatAlert subfield - Comment: The first byte is the radar_threat_level_max, the second byte is the radar_threat_count, third bytes is the average approach speed, and the 4th byte is the max approach speed - Subfield value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Retrieves the Score field - Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - Returns nullable ushort representing the Score field - - - - Set Score field - Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - Nullable field value to be set - - - - Retrieves the OpponentScore field - Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - Returns nullable ushort representing the OpponentScore field - - - - Set OpponentScore field - Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - Nullable field value to be set - - - - Retrieves the FrontGearNum field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Front gear number. 1 is innermost. - Returns nullable byte representing the FrontGearNum field - - - - Set FrontGearNum field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Front gear number. 1 is innermost. - Nullable field value to be set - - - - Retrieves the FrontGear field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of front teeth. - Returns nullable byte representing the FrontGear field - - - - Set FrontGear field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of front teeth. - Nullable field value to be set - - - - Retrieves the RearGearNum field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Rear gear number. 1 is innermost. - Returns nullable byte representing the RearGearNum field - - - - Set RearGearNum field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Rear gear number. 1 is innermost. - Nullable field value to be set - - - - Retrieves the RearGear field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of rear teeth. - Returns nullable byte representing the RearGear field - - - - Set RearGear field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of rear teeth. - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Nullable field value to be set - - - - Retrieves the RadarThreatLevelMax field - Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - Returns nullable RadarThreatLevelType enum representing the RadarThreatLevelMax field - - - - Set RadarThreatLevelMax field - Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - Nullable field value to be set - - - - Retrieves the RadarThreatCount field - Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - Returns nullable byte representing the RadarThreatCount field - - - - Set RadarThreatCount field - Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - Nullable field value to be set - - - - Retrieves the RadarThreatAvgApproachSpeed field - Units: m/s - Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - Returns nullable float representing the RadarThreatAvgApproachSpeed field - - - - Set RadarThreatAvgApproachSpeed field - Units: m/s - Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - Nullable field value to be set - - - - Retrieves the RadarThreatMaxApproachSpeed field - Units: m/s - Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - Returns nullable float representing the RadarThreatMaxApproachSpeed field - - - - Set RadarThreatMaxApproachSpeed field - Units: m/s - Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - Nullable field value to be set - - - - Implements the ExdDataConceptConfiguration profile message. - - - - - Field Numbers for - - - - - Retrieves the ScreenIndex field - Returns nullable byte representing the ScreenIndex field - - - - Set ScreenIndex field - Nullable field value to be set - - - - Retrieves the ConceptField field - Returns nullable byte representing the ConceptField field - - - - Set ConceptField field - Nullable field value to be set - - - - Retrieves the FieldId field - Returns nullable byte representing the FieldId field - - - - Set FieldId field - Nullable field value to be set - - - - Retrieves the ConceptIndex field - Returns nullable byte representing the ConceptIndex field - - - - Set ConceptIndex field - Nullable field value to be set - - - - Retrieves the DataPage field - Returns nullable byte representing the DataPage field - - - - Set DataPage field - Nullable field value to be set - - - - Retrieves the ConceptKey field - Returns nullable byte representing the ConceptKey field - - - - Set ConceptKey field - Nullable field value to be set - - - - Retrieves the Scaling field - Returns nullable byte representing the Scaling field - - - - Set Scaling field - Nullable field value to be set - - - - Retrieves the DataUnits field - Returns nullable ExdDataUnits enum representing the DataUnits field - - - - Set DataUnits field - Nullable field value to be set - - - - Retrieves the Qualifier field - Returns nullable ExdQualifiers enum representing the Qualifier field - - - - Set Qualifier field - Nullable field value to be set - - - - Retrieves the Descriptor field - Returns nullable ExdDescriptors enum representing the Descriptor field - - - - Set Descriptor field - Nullable field value to be set - - - - Retrieves the IsSigned field - Returns nullable Bool enum representing the IsSigned field - - - - Set IsSigned field - Nullable field value to be set - - - - Implements the ExdDataFieldConfiguration profile message. - - - - - Field Numbers for - - - - - Retrieves the ScreenIndex field - Returns nullable byte representing the ScreenIndex field - - - - Set ScreenIndex field - Nullable field value to be set - - - - Retrieves the ConceptField field - Returns nullable byte representing the ConceptField field - - - - Set ConceptField field - Nullable field value to be set - - - - Retrieves the FieldId field - Returns nullable byte representing the FieldId field - - - - Set FieldId field - Nullable field value to be set - - - - Retrieves the ConceptCount field - Returns nullable byte representing the ConceptCount field - - - - Set ConceptCount field - Nullable field value to be set - - - - Retrieves the DisplayType field - Returns nullable ExdDisplayType enum representing the DisplayType field - - - - Set DisplayType field - Nullable field value to be set - - - - - - returns number of elements in field Title - - - - Retrieves the Title field - 0 based index of Title element to retrieve - Returns byte[] representing the Title field - - - - Retrieves the Title field - 0 based index of Title element to retrieve - Returns String representing the Title field - - - - Set Title field - 0 based index of Title element to retrieve - field value to be set - - - - Set Title field - 0 based index of title - field value to be set - - - - Implements the ExdScreenConfiguration profile message. - - - - - Field Numbers for - - - - - Retrieves the ScreenIndex field - Returns nullable byte representing the ScreenIndex field - - - - Set ScreenIndex field - Nullable field value to be set - - - - Retrieves the FieldCount field - Comment: number of fields in screen - Returns nullable byte representing the FieldCount field - - - - Set FieldCount field - Comment: number of fields in screen - Nullable field value to be set - - - - Retrieves the Layout field - Returns nullable ExdLayout enum representing the Layout field - - - - Set Layout field - Nullable field value to be set - - - - Retrieves the ScreenEnabled field - Returns nullable Bool enum representing the ScreenEnabled field - - - - Set ScreenEnabled field - Nullable field value to be set - - - - Implements the ExerciseTitle profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the ExerciseCategory field - Returns nullable ushort representing the ExerciseCategory field - - - - Set ExerciseCategory field - Nullable field value to be set - - - - Retrieves the ExerciseName field - Returns nullable ushort representing the ExerciseName field - - - - Set ExerciseName field - Nullable field value to be set - - - - - - returns number of elements in field WktStepName - - - - Retrieves the WktStepName field - 0 based index of WktStepName element to retrieve - Returns byte[] representing the WktStepName field - - - - Retrieves the WktStepName field - 0 based index of WktStepName element to retrieve - Returns String representing the WktStepName field - - - - Set WktStepName field - 0 based index of WktStepName element to retrieve - field value to be set - - - - Set WktStepName field - 0 based index of wkt_step_name - field value to be set - - - - Implements the FieldCapabilities profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the File field - Returns nullable File enum representing the File field - - - - Set File field - Nullable field value to be set - - - - Retrieves the MesgNum field - Returns nullable ushort representing the MesgNum field - - - - Set MesgNum field - Nullable field value to be set - - - - Retrieves the FieldNum field - Returns nullable byte representing the FieldNum field - - - - Set FieldNum field - Nullable field value to be set - - - - Retrieves the Count field - Returns nullable ushort representing the Count field - - - - Set Count field - Nullable field value to be set - - - - Implements the FieldDescription profile message. - - - - - Field Numbers for - - - - - Retrieves the DeveloperDataIndex field - Returns nullable byte representing the DeveloperDataIndex field - - - - Set DeveloperDataIndex field - Nullable field value to be set - - - - Retrieves the FieldDefinitionNumber field - Returns nullable byte representing the FieldDefinitionNumber field - - - - Set FieldDefinitionNumber field - Nullable field value to be set - - - - Retrieves the FitBaseTypeId field - Returns nullable byte representing the FitBaseTypeId field - - - - Set FitBaseTypeId field - Nullable field value to be set - - - - - - returns number of elements in field FieldName - - - - Retrieves the FieldName field - 0 based index of FieldName element to retrieve - Returns byte[] representing the FieldName field - - - - Retrieves the FieldName field - 0 based index of FieldName element to retrieve - Returns String representing the FieldName field - - - - Set FieldName field - 0 based index of FieldName element to retrieve - field value to be set - - - - Set FieldName field - 0 based index of field_name - field value to be set - - - - Retrieves the Array field - Returns nullable byte representing the Array field - - - - Set Array field - Nullable field value to be set - - - - Retrieves the Components field - Returns byte[] representing the Components field - - - - Retrieves the Components field - Returns String representing the Components field - - - - Set Components field - field value to be set - - - - Set Components field - field value to be set - - - - Retrieves the Scale field - Returns nullable byte representing the Scale field - - - - Set Scale field - Nullable field value to be set - - - - Retrieves the Offset field - Returns nullable sbyte representing the Offset field - - - - Set Offset field - Nullable field value to be set - - - - - - returns number of elements in field Units - - - - Retrieves the Units field - 0 based index of Units element to retrieve - Returns byte[] representing the Units field - - - - Retrieves the Units field - 0 based index of Units element to retrieve - Returns String representing the Units field - - - - Set Units field - 0 based index of Units element to retrieve - field value to be set - - - - Set Units field - 0 based index of units - field value to be set - - - - Retrieves the Bits field - Returns byte[] representing the Bits field - - - - Retrieves the Bits field - Returns String representing the Bits field - - - - Set Bits field - field value to be set - - - - Set Bits field - field value to be set - - - - Retrieves the Accumulate field - Returns byte[] representing the Accumulate field - - - - Retrieves the Accumulate field - Returns String representing the Accumulate field - - - - Set Accumulate field - field value to be set - - - - Set Accumulate field - field value to be set - - - - Retrieves the FitBaseUnitId field - Returns nullable ushort representing the FitBaseUnitId field - - - - Set FitBaseUnitId field - Nullable field value to be set - - - - Retrieves the NativeMesgNum field - Returns nullable ushort representing the NativeMesgNum field - - - - Set NativeMesgNum field - Nullable field value to be set - - - - Retrieves the NativeFieldNum field - Returns nullable byte representing the NativeFieldNum field - - - - Set NativeFieldNum field - Nullable field value to be set - - - - Implements the FileCapabilities profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable File enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Flags field - Returns nullable byte representing the Flags field - - - - Set Flags field - Nullable field value to be set - - - - Retrieves the Directory field - Returns byte[] representing the Directory field - - - - Retrieves the Directory field - Returns String representing the Directory field - - - - Set Directory field - field value to be set - - - - Set Directory field - field value to be set - - - - Retrieves the MaxCount field - Returns nullable ushort representing the MaxCount field - - - - Set MaxCount field - Nullable field value to be set - - - - Retrieves the MaxSize field - Units: bytes - Returns nullable uint representing the MaxSize field - - - - Set MaxSize field - Units: bytes - Nullable field value to be set - - - - Implements the FileCreator profile message. - - - - - Field Numbers for - - - - - Retrieves the SoftwareVersion field - Returns nullable ushort representing the SoftwareVersion field - - - - Set SoftwareVersion field - Nullable field value to be set - - - - Retrieves the HardwareVersion field - Returns nullable byte representing the HardwareVersion field - - - - Set HardwareVersion field - Nullable field value to be set - - - - Implements the FileId profile message. - - - - - Field Numbers for - - - - - Retrieves the Type field - Returns nullable File enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Manufacturer field - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Nullable field value to be set - - - - Retrieves the Product field - Returns nullable ushort representing the Product field - - - - Set Product field - Nullable field value to be set - - - - Retrieves the FaveroProduct subfield - Nullable ushort representing the FaveroProduct subfield - - - - - Set FaveroProduct subfield - Subfield value to be set - - - - Retrieves the GarminProduct subfield - Nullable ushort representing the GarminProduct subfield - - - - - Set GarminProduct subfield - Subfield value to be set - - - - Retrieves the SerialNumber field - Returns nullable uint representing the SerialNumber field - - - - Set SerialNumber field - Nullable field value to be set - - - - Retrieves the TimeCreated field - Comment: Only set for files that are can be created/erased. - Returns DateTime representing the TimeCreated field - - - - Set TimeCreated field - Comment: Only set for files that are can be created/erased. - Nullable field value to be set - - - - Retrieves the Number field - Comment: Only set for files that are not created/erased. - Returns nullable ushort representing the Number field - - - - Set Number field - Comment: Only set for files that are not created/erased. - Nullable field value to be set - - - - Retrieves the ProductName field - Comment: Optional free form string to indicate the devices name or model - Returns byte[] representing the ProductName field - - - - Retrieves the ProductName field - Comment: Optional free form string to indicate the devices name or model - Returns String representing the ProductName field - - - - Set ProductName field - Comment: Optional free form string to indicate the devices name or model - field value to be set - - - - Set ProductName field - Comment: Optional free form string to indicate the devices name or model - field value to be set - - - - Implements the Goal profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the StartDate field - Returns DateTime representing the StartDate field - - - - Set StartDate field - Nullable field value to be set - - - - Retrieves the EndDate field - Returns DateTime representing the EndDate field - - - - Set EndDate field - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable Goal enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Value field - Returns nullable uint representing the Value field - - - - Set Value field - Nullable field value to be set - - - - Retrieves the Repeat field - Returns nullable Bool enum representing the Repeat field - - - - Set Repeat field - Nullable field value to be set - - - - Retrieves the TargetValue field - Returns nullable uint representing the TargetValue field - - - - Set TargetValue field - Nullable field value to be set - - - - Retrieves the Recurrence field - Returns nullable GoalRecurrence enum representing the Recurrence field - - - - Set Recurrence field - Nullable field value to be set - - - - Retrieves the RecurrenceValue field - Returns nullable ushort representing the RecurrenceValue field - - - - Set RecurrenceValue field - Nullable field value to be set - - - - Retrieves the Enabled field - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Nullable field value to be set - - - - Retrieves the Source field - Returns nullable GoalSource enum representing the Source field - - - - Set Source field - Nullable field value to be set - - - - Implements the GpsMetadata profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp. - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the EnhancedAltitude field - Units: m - Returns nullable float representing the EnhancedAltitude field - - - - Set EnhancedAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedSpeed field - Units: m/s - Returns nullable float representing the EnhancedSpeed field - - - - Set EnhancedSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the Heading field - Units: degrees - Returns nullable float representing the Heading field - - - - Set Heading field - Units: degrees - Nullable field value to be set - - - - Retrieves the UtcTimestamp field - Units: s - Comment: Used to correlate UTC to system time if the timestamp of the message is in system time. This UTC time is derived from the GPS data. - Returns DateTime representing the UtcTimestamp field - - - - Set UtcTimestamp field - Units: s - Comment: Used to correlate UTC to system time if the timestamp of the message is in system time. This UTC time is derived from the GPS data. - Nullable field value to be set - - - - - - returns number of elements in field Velocity - - - - Retrieves the Velocity field - Units: m/s - Comment: velocity[0] is lon velocity. Velocity[1] is lat velocity. Velocity[2] is altitude velocity. - 0 based index of Velocity element to retrieve - Returns nullable float representing the Velocity field - - - - Set Velocity field - Units: m/s - Comment: velocity[0] is lon velocity. Velocity[1] is lat velocity. Velocity[2] is altitude velocity. - 0 based index of velocity - Nullable field value to be set - - - - Implements the GyroscopeData profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - - - returns number of elements in field SampleTimeOffset - - - - Retrieves the SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the gyro sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in gyro_x and gyro_y and gyro_z - 0 based index of SampleTimeOffset element to retrieve - Returns nullable ushort representing the SampleTimeOffset field - - - - Set SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the gyro sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in gyro_x and gyro_y and gyro_z - 0 based index of sample_time_offset - Nullable field value to be set - - - - - - returns number of elements in field GyroX - - - - Retrieves the GyroX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of GyroX element to retrieve - Returns nullable ushort representing the GyroX field - - - - Set GyroX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of gyro_x - Nullable field value to be set - - - - - - returns number of elements in field GyroY - - - - Retrieves the GyroY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of GyroY element to retrieve - Returns nullable ushort representing the GyroY field - - - - Set GyroY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of gyro_y - Nullable field value to be set - - - - - - returns number of elements in field GyroZ - - - - Retrieves the GyroZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of GyroZ element to retrieve - Returns nullable ushort representing the GyroZ field - - - - Set GyroZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of gyro_z - Nullable field value to be set - - - - - - returns number of elements in field CalibratedGyroX - - - - Retrieves the CalibratedGyroX field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of CalibratedGyroX element to retrieve - Returns nullable float representing the CalibratedGyroX field - - - - Set CalibratedGyroX field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of calibrated_gyro_x - Nullable field value to be set - - - - - - returns number of elements in field CalibratedGyroY - - - - Retrieves the CalibratedGyroY field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of CalibratedGyroY element to retrieve - Returns nullable float representing the CalibratedGyroY field - - - - Set CalibratedGyroY field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of calibrated_gyro_y - Nullable field value to be set - - - - - - returns number of elements in field CalibratedGyroZ - - - - Retrieves the CalibratedGyroZ field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of CalibratedGyroZ element to retrieve - Returns nullable float representing the CalibratedGyroZ field - - - - Set CalibratedGyroZ field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of calibrated_gyro_z - Nullable field value to be set - - - - Implements the Hr profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the FractionalTimestamp field - Units: s - Returns nullable float representing the FractionalTimestamp field - - - - Set FractionalTimestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Time256 field - Units: s - Returns nullable float representing the Time256 field - - - - Set Time256 field - Units: s - Nullable field value to be set - - - - - - returns number of elements in field FilteredBpm - - - - Retrieves the FilteredBpm field - Units: bpm - 0 based index of FilteredBpm element to retrieve - Returns nullable byte representing the FilteredBpm field - - - - Set FilteredBpm field - Units: bpm - 0 based index of filtered_bpm - Nullable field value to be set - - - - - - returns number of elements in field EventTimestamp - - - - Retrieves the EventTimestamp field - Units: s - 0 based index of EventTimestamp element to retrieve - Returns nullable float representing the EventTimestamp field - - - - Set EventTimestamp field - Units: s - 0 based index of event_timestamp - Nullable field value to be set - - - - - - returns number of elements in field EventTimestamp12 - - - - Retrieves the EventTimestamp12 field - 0 based index of EventTimestamp12 element to retrieve - Returns nullable byte representing the EventTimestamp12 field - - - - Set EventTimestamp12 field - 0 based index of event_timestamp_12 - Nullable field value to be set - - - - Implements the HrmProfile profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Enabled field - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Nullable field value to be set - - - - Retrieves the HrmAntId field - Returns nullable ushort representing the HrmAntId field - - - - Set HrmAntId field - Nullable field value to be set - - - - Retrieves the LogHrv field - Returns nullable Bool enum representing the LogHrv field - - - - Set LogHrv field - Nullable field value to be set - - - - Retrieves the HrmAntIdTransType field - Returns nullable byte representing the HrmAntIdTransType field - - - - Set HrmAntIdTransType field - Nullable field value to be set - - - - Implements the Hrv profile message. - - - - - Field Numbers for - - - - - - - returns number of elements in field Time - - - - Retrieves the Time field - Units: s - Comment: Time between beats - 0 based index of Time element to retrieve - Returns nullable float representing the Time field - - - - Set Time field - Units: s - Comment: Time between beats - 0 based index of time - Nullable field value to be set - - - - Implements the HrZone profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HighBpm field - Units: bpm - Returns nullable byte representing the HighBpm field - - - - Set HighBpm field - Units: bpm - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Implements the Jump profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Returns nullable float representing the Distance field - - - - Set Distance field - Units: m - Nullable field value to be set - - - - Retrieves the Height field - Units: m - Returns nullable float representing the Height field - - - - Set Height field - Units: m - Nullable field value to be set - - - - Retrieves the Rotations field - Returns nullable byte representing the Rotations field - - - - Set Rotations field - Nullable field value to be set - - - - Retrieves the HangTime field - Units: s - Returns nullable float representing the HangTime field - - - - Set HangTime field - Units: s - Nullable field value to be set - - - - Retrieves the Score field - Comment: A score for a jump calculated based on hang time, rotations, and distance. - Returns nullable float representing the Score field - - - - Set Score field - Comment: A score for a jump calculated based on hang time, rotations, and distance. - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the Speed field - Units: m/s - Returns nullable float representing the Speed field - - - - Set Speed field - Units: m/s - Nullable field value to be set - - - - Retrieves the EnhancedSpeed field - Units: m/s - Returns nullable float representing the EnhancedSpeed field - - - - Set EnhancedSpeed field - Units: m/s - Nullable field value to be set - - - - Implements the Lap profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Timestamp field - Units: s - Comment: Lap end time. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Lap end time. - Nullable field value to be set - - - - Retrieves the Event field - Returns nullable Event enum representing the Event field - - - - Set Event field - Nullable field value to be set - - - - Retrieves the EventType field - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Nullable field value to be set - - - - Retrieves the StartTime field - Returns DateTime representing the StartTime field - - - - Set StartTime field - Nullable field value to be set - - - - Retrieves the StartPositionLat field - Units: semicircles - Returns nullable int representing the StartPositionLat field - - - - Set StartPositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the StartPositionLong field - Units: semicircles - Returns nullable int representing the StartPositionLong field - - - - Set StartPositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the EndPositionLat field - Units: semicircles - Returns nullable int representing the EndPositionLat field - - - - Set EndPositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the EndPositionLong field - Units: semicircles - Returns nullable int representing the EndPositionLong field - - - - Set EndPositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Returns nullable float representing the TotalElapsedTime field - - - - Set TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Nullable field value to be set - - - - Retrieves the TotalDistance field - Units: m - Returns nullable float representing the TotalDistance field - - - - Set TotalDistance field - Units: m - Nullable field value to be set - - - - Retrieves the TotalCycles field - Units: cycles - Returns nullable uint representing the TotalCycles field - - - - Set TotalCycles field - Units: cycles - Nullable field value to be set - - - - Retrieves the TotalStrides subfield - Units: strides - Nullable uint representing the TotalStrides subfield - - - - - Set TotalStrides subfield - Units: strides - Subfield value to be set - - - - Retrieves the TotalStrokes subfield - Units: strokes - Nullable uint representing the TotalStrokes subfield - - - - - Set TotalStrokes subfield - Units: strokes - Subfield value to be set - - - - Retrieves the TotalCalories field - Units: kcal - Returns nullable ushort representing the TotalCalories field - - - - Set TotalCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the TotalFatCalories field - Units: kcal - Comment: If New Leaf - Returns nullable ushort representing the TotalFatCalories field - - - - Set TotalFatCalories field - Units: kcal - Comment: If New Leaf - Nullable field value to be set - - - - Retrieves the AvgSpeed field - Units: m/s - Returns nullable float representing the AvgSpeed field - - - - Set AvgSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxSpeed field - Units: m/s - Returns nullable float representing the MaxSpeed field - - - - Set MaxSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgHeartRate field - Units: bpm - Returns nullable byte representing the AvgHeartRate field - - - - Set AvgHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the MaxHeartRate field - Units: bpm - Returns nullable byte representing the MaxHeartRate field - - - - Set MaxHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Returns nullable byte representing the AvgCadence field - - - - Set AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Nullable field value to be set - - - - Retrieves the AvgRunningCadence subfield - Units: strides/min - Nullable byte representing the AvgRunningCadence subfield - - - - - Set AvgRunningCadence subfield - Units: strides/min - Subfield value to be set - - - - Retrieves the MaxCadence field - Units: rpm - Returns nullable byte representing the MaxCadence field - - - - Set MaxCadence field - Units: rpm - Nullable field value to be set - - - - Retrieves the MaxRunningCadence subfield - Units: strides/min - Nullable byte representing the MaxRunningCadence subfield - - - - - Set MaxRunningCadence subfield - Units: strides/min - Subfield value to be set - - - - Retrieves the AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Returns nullable ushort representing the AvgPower field - - - - Set AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Nullable field value to be set - - - - Retrieves the MaxPower field - Units: watts - Returns nullable ushort representing the MaxPower field - - - - Set MaxPower field - Units: watts - Nullable field value to be set - - - - Retrieves the TotalAscent field - Units: m - Returns nullable ushort representing the TotalAscent field - - - - Set TotalAscent field - Units: m - Nullable field value to be set - - - - Retrieves the TotalDescent field - Units: m - Returns nullable ushort representing the TotalDescent field - - - - Set TotalDescent field - Units: m - Nullable field value to be set - - - - Retrieves the Intensity field - Returns nullable Intensity enum representing the Intensity field - - - - Set Intensity field - Nullable field value to be set - - - - Retrieves the LapTrigger field - Returns nullable LapTrigger enum representing the LapTrigger field - - - - Set LapTrigger field - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Retrieves the NumLengths field - Units: lengths - Comment: # of lengths of swim pool - Returns nullable ushort representing the NumLengths field - - - - Set NumLengths field - Units: lengths - Comment: # of lengths of swim pool - Nullable field value to be set - - - - Retrieves the NormalizedPower field - Units: watts - Returns nullable ushort representing the NormalizedPower field - - - - Set NormalizedPower field - Units: watts - Nullable field value to be set - - - - Retrieves the LeftRightBalance field - Returns nullable ushort representing the LeftRightBalance field - - - - Set LeftRightBalance field - Nullable field value to be set - - - - Retrieves the FirstLengthIndex field - Returns nullable ushort representing the FirstLengthIndex field - - - - Set FirstLengthIndex field - Nullable field value to be set - - - - Retrieves the AvgStrokeDistance field - Units: m - Returns nullable float representing the AvgStrokeDistance field - - - - Set AvgStrokeDistance field - Units: m - Nullable field value to be set - - - - Retrieves the SwimStroke field - Returns nullable SwimStroke enum representing the SwimStroke field - - - - Set SwimStroke field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the NumActiveLengths field - Units: lengths - Comment: # of active lengths of swim pool - Returns nullable ushort representing the NumActiveLengths field - - - - Set NumActiveLengths field - Units: lengths - Comment: # of active lengths of swim pool - Nullable field value to be set - - - - Retrieves the TotalWork field - Units: J - Returns nullable uint representing the TotalWork field - - - - Set TotalWork field - Units: J - Nullable field value to be set - - - - Retrieves the AvgAltitude field - Units: m - Returns nullable float representing the AvgAltitude field - - - - Set AvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the MaxAltitude field - Units: m - Returns nullable float representing the MaxAltitude field - - - - Set MaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the GpsAccuracy field - Units: m - Returns nullable byte representing the GpsAccuracy field - - - - Set GpsAccuracy field - Units: m - Nullable field value to be set - - - - Retrieves the AvgGrade field - Units: % - Returns nullable float representing the AvgGrade field - - - - Set AvgGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgPosGrade field - Units: % - Returns nullable float representing the AvgPosGrade field - - - - Set AvgPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgNegGrade field - Units: % - Returns nullable float representing the AvgNegGrade field - - - - Set AvgNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxPosGrade field - Units: % - Returns nullable float representing the MaxPosGrade field - - - - Set MaxPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxNegGrade field - Units: % - Returns nullable float representing the MaxNegGrade field - - - - Set MaxNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgTemperature field - Units: C - Returns nullable sbyte representing the AvgTemperature field - - - - Set AvgTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MaxTemperature field - Units: C - Returns nullable sbyte representing the MaxTemperature field - - - - Set MaxTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the TotalMovingTime field - Units: s - Returns nullable float representing the TotalMovingTime field - - - - Set TotalMovingTime field - Units: s - Nullable field value to be set - - - - Retrieves the AvgPosVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgPosVerticalSpeed field - - - - Set AvgPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgNegVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgNegVerticalSpeed field - - - - Set AvgNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxPosVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxPosVerticalSpeed field - - - - Set MaxPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxNegVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxNegVerticalSpeed field - - - - Set MaxNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - - - returns number of elements in field TimeInHrZone - - - - Retrieves the TimeInHrZone field - Units: s - 0 based index of TimeInHrZone element to retrieve - Returns nullable float representing the TimeInHrZone field - - - - Set TimeInHrZone field - Units: s - 0 based index of time_in_hr_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInSpeedZone - - - - Retrieves the TimeInSpeedZone field - Units: s - 0 based index of TimeInSpeedZone element to retrieve - Returns nullable float representing the TimeInSpeedZone field - - - - Set TimeInSpeedZone field - Units: s - 0 based index of time_in_speed_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInCadenceZone - - - - Retrieves the TimeInCadenceZone field - Units: s - 0 based index of TimeInCadenceZone element to retrieve - Returns nullable float representing the TimeInCadenceZone field - - - - Set TimeInCadenceZone field - Units: s - 0 based index of time_in_cadence_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInPowerZone - - - - Retrieves the TimeInPowerZone field - Units: s - 0 based index of TimeInPowerZone element to retrieve - Returns nullable float representing the TimeInPowerZone field - - - - Set TimeInPowerZone field - Units: s - 0 based index of time_in_power_zone - Nullable field value to be set - - - - Retrieves the RepetitionNum field - Returns nullable ushort representing the RepetitionNum field - - - - Set RepetitionNum field - Nullable field value to be set - - - - Retrieves the MinAltitude field - Units: m - Returns nullable float representing the MinAltitude field - - - - Set MinAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the MinHeartRate field - Units: bpm - Returns nullable byte representing the MinHeartRate field - - - - Set MinHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the WktStepIndex field - Returns nullable ushort representing the WktStepIndex field - - - - Set WktStepIndex field - Nullable field value to be set - - - - Retrieves the OpponentScore field - Returns nullable ushort representing the OpponentScore field - - - - Set OpponentScore field - Nullable field value to be set - - - - - - returns number of elements in field StrokeCount - - - - Retrieves the StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of StrokeCount element to retrieve - Returns nullable ushort representing the StrokeCount field - - - - Set StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of stroke_count - Nullable field value to be set - - - - - - returns number of elements in field ZoneCount - - - - Retrieves the ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of ZoneCount element to retrieve - Returns nullable ushort representing the ZoneCount field - - - - Set ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of zone_count - Nullable field value to be set - - - - Retrieves the AvgVerticalOscillation field - Units: mm - Returns nullable float representing the AvgVerticalOscillation field - - - - Set AvgVerticalOscillation field - Units: mm - Nullable field value to be set - - - - Retrieves the AvgStanceTimePercent field - Units: percent - Returns nullable float representing the AvgStanceTimePercent field - - - - Set AvgStanceTimePercent field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStanceTime field - Units: ms - Returns nullable float representing the AvgStanceTime field - - - - Set AvgStanceTime field - Units: ms - Nullable field value to be set - - - - Retrieves the AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Returns nullable float representing the AvgFractionalCadence field - - - - Set AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Nullable field value to be set - - - - Retrieves the MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Returns nullable float representing the MaxFractionalCadence field - - - - Set MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Nullable field value to be set - - - - Retrieves the TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Returns nullable float representing the TotalFractionalCycles field - - - - Set TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Nullable field value to be set - - - - Retrieves the PlayerScore field - Returns nullable ushort representing the PlayerScore field - - - - Set PlayerScore field - Nullable field value to be set - - - - - - returns number of elements in field AvgTotalHemoglobinConc - - - - Retrieves the AvgTotalHemoglobinConc field - Units: g/dL - Comment: Avg saturated and unsaturated hemoglobin - 0 based index of AvgTotalHemoglobinConc element to retrieve - Returns nullable float representing the AvgTotalHemoglobinConc field - - - - Set AvgTotalHemoglobinConc field - Units: g/dL - Comment: Avg saturated and unsaturated hemoglobin - 0 based index of avg_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field MinTotalHemoglobinConc - - - - Retrieves the MinTotalHemoglobinConc field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - 0 based index of MinTotalHemoglobinConc element to retrieve - Returns nullable float representing the MinTotalHemoglobinConc field - - - - Set MinTotalHemoglobinConc field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - 0 based index of min_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field MaxTotalHemoglobinConc - - - - Retrieves the MaxTotalHemoglobinConc field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - 0 based index of MaxTotalHemoglobinConc element to retrieve - Returns nullable float representing the MaxTotalHemoglobinConc field - - - - Set MaxTotalHemoglobinConc field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - 0 based index of max_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field AvgSaturatedHemoglobinPercent - - - - Retrieves the AvgSaturatedHemoglobinPercent field - Units: % - Comment: Avg percentage of hemoglobin saturated with oxygen - 0 based index of AvgSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the AvgSaturatedHemoglobinPercent field - - - - Set AvgSaturatedHemoglobinPercent field - Units: % - Comment: Avg percentage of hemoglobin saturated with oxygen - 0 based index of avg_saturated_hemoglobin_percent - Nullable field value to be set - - - - - - returns number of elements in field MinSaturatedHemoglobinPercent - - - - Retrieves the MinSaturatedHemoglobinPercent field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - 0 based index of MinSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the MinSaturatedHemoglobinPercent field - - - - Set MinSaturatedHemoglobinPercent field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - 0 based index of min_saturated_hemoglobin_percent - Nullable field value to be set - - - - - - returns number of elements in field MaxSaturatedHemoglobinPercent - - - - Retrieves the MaxSaturatedHemoglobinPercent field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - 0 based index of MaxSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the MaxSaturatedHemoglobinPercent field - - - - Set MaxSaturatedHemoglobinPercent field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - 0 based index of max_saturated_hemoglobin_percent - Nullable field value to be set - - - - Retrieves the AvgLeftTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgLeftTorqueEffectiveness field - - - - Set AvgLeftTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgRightTorqueEffectiveness field - - - - Set AvgRightTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgLeftPedalSmoothness field - Units: percent - Returns nullable float representing the AvgLeftPedalSmoothness field - - - - Set AvgLeftPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightPedalSmoothness field - Units: percent - Returns nullable float representing the AvgRightPedalSmoothness field - - - - Set AvgRightPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgCombinedPedalSmoothness field - Units: percent - Returns nullable float representing the AvgCombinedPedalSmoothness field - - - - Set AvgCombinedPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the TimeStanding field - Units: s - Comment: Total time spent in the standing position - Returns nullable float representing the TimeStanding field - - - - Set TimeStanding field - Units: s - Comment: Total time spent in the standing position - Nullable field value to be set - - - - Retrieves the StandCount field - Comment: Number of transitions to the standing state - Returns nullable ushort representing the StandCount field - - - - Set StandCount field - Comment: Number of transitions to the standing state - Nullable field value to be set - - - - Retrieves the AvgLeftPco field - Units: mm - Comment: Average left platform center offset - Returns nullable sbyte representing the AvgLeftPco field - - - - Set AvgLeftPco field - Units: mm - Comment: Average left platform center offset - Nullable field value to be set - - - - Retrieves the AvgRightPco field - Units: mm - Comment: Average right platform center offset - Returns nullable sbyte representing the AvgRightPco field - - - - Set AvgRightPco field - Units: mm - Comment: Average right platform center offset - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhase - - - - Retrieves the AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhase element to retrieve - Returns nullable float representing the AvgLeftPowerPhase field - - - - Set AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of avg_left_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhasePeak - - - - Retrieves the AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhasePeak element to retrieve - Returns nullable float representing the AvgLeftPowerPhasePeak field - - - - Set AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of avg_left_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhase - - - - Retrieves the AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhase element to retrieve - Returns nullable float representing the AvgRightPowerPhase field - - - - Set AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhasePeak - - - - Retrieves the AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhasePeak element to retrieve - Returns nullable float representing the AvgRightPowerPhasePeak field - - - - Set AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgPowerPosition - - - - Retrieves the AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of AvgPowerPosition element to retrieve - Returns nullable ushort representing the AvgPowerPosition field - - - - Set AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of avg_power_position - Nullable field value to be set - - - - - - returns number of elements in field MaxPowerPosition - - - - Retrieves the MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of MaxPowerPosition element to retrieve - Returns nullable ushort representing the MaxPowerPosition field - - - - Set MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of max_power_position - Nullable field value to be set - - - - - - returns number of elements in field AvgCadencePosition - - - - Retrieves the AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of AvgCadencePosition element to retrieve - Returns nullable byte representing the AvgCadencePosition field - - - - Set AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of avg_cadence_position - Nullable field value to be set - - - - - - returns number of elements in field MaxCadencePosition - - - - Retrieves the MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of MaxCadencePosition element to retrieve - Returns nullable byte representing the MaxCadencePosition field - - - - Set MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of max_cadence_position - Nullable field value to be set - - - - Retrieves the EnhancedAvgSpeed field - Units: m/s - Returns nullable float representing the EnhancedAvgSpeed field - - - - Set EnhancedAvgSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the EnhancedMaxSpeed field - Units: m/s - Returns nullable float representing the EnhancedMaxSpeed field - - - - Set EnhancedMaxSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the EnhancedAvgAltitude field - Units: m - Returns nullable float representing the EnhancedAvgAltitude field - - - - Set EnhancedAvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMinAltitude field - Units: m - Returns nullable float representing the EnhancedMinAltitude field - - - - Set EnhancedMinAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMaxAltitude field - Units: m - Returns nullable float representing the EnhancedMaxAltitude field - - - - Set EnhancedMaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the AvgLevMotorPower field - Units: watts - Comment: lev average motor power during lap - Returns nullable ushort representing the AvgLevMotorPower field - - - - Set AvgLevMotorPower field - Units: watts - Comment: lev average motor power during lap - Nullable field value to be set - - - - Retrieves the MaxLevMotorPower field - Units: watts - Comment: lev maximum motor power during lap - Returns nullable ushort representing the MaxLevMotorPower field - - - - Set MaxLevMotorPower field - Units: watts - Comment: lev maximum motor power during lap - Nullable field value to be set - - - - Retrieves the LevBatteryConsumption field - Units: percent - Comment: lev battery consumption during lap - Returns nullable float representing the LevBatteryConsumption field - - - - Set LevBatteryConsumption field - Units: percent - Comment: lev battery consumption during lap - Nullable field value to be set - - - - Retrieves the AvgVerticalRatio field - Units: percent - Returns nullable float representing the AvgVerticalRatio field - - - - Set AvgVerticalRatio field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStanceTimeBalance field - Units: percent - Returns nullable float representing the AvgStanceTimeBalance field - - - - Set AvgStanceTimeBalance field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStepLength field - Units: mm - Returns nullable float representing the AvgStepLength field - - - - Set AvgStepLength field - Units: mm - Nullable field value to be set - - - - Retrieves the AvgVam field - Units: m/s - Returns nullable float representing the AvgVam field - - - - Set AvgVam field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgDepth field - Units: m - Comment: 0 if above water - Returns nullable float representing the AvgDepth field - - - - Set AvgDepth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the MaxDepth field - Units: m - Comment: 0 if above water - Returns nullable float representing the MaxDepth field - - - - Set MaxDepth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the MinTemperature field - Units: C - Returns nullable sbyte representing the MinTemperature field - - - - Set MinTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the EnhancedAvgRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedAvgRespirationRate field - - - - Set EnhancedAvgRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the EnhancedMaxRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedMaxRespirationRate field - - - - Set EnhancedMaxRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the AvgRespirationRate field - Returns nullable byte representing the AvgRespirationRate field - - - - Set AvgRespirationRate field - Nullable field value to be set - - - - Retrieves the MaxRespirationRate field - Returns nullable byte representing the MaxRespirationRate field - - - - Set MaxRespirationRate field - Nullable field value to be set - - - - Retrieves the TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the TotalGrit field - - - - Set TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the TotalFlow field - - - - Set TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the JumpCount field - Returns nullable ushort representing the JumpCount field - - - - Set JumpCount field - Nullable field value to be set - - - - Retrieves the AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the AvgGrit field - - - - Set AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the AvgFlow field - - - - Set AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Returns nullable float representing the TotalFractionalAscent field - - - - Set TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Nullable field value to be set - - - - Retrieves the TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Returns nullable float representing the TotalFractionalDescent field - - - - Set TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Nullable field value to be set - - - - Retrieves the AvgCoreTemperature field - Units: C - Returns nullable float representing the AvgCoreTemperature field - - - - Set AvgCoreTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MinCoreTemperature field - Units: C - Returns nullable float representing the MinCoreTemperature field - - - - Set MinCoreTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MaxCoreTemperature field - Units: C - Returns nullable float representing the MaxCoreTemperature field - - - - Set MaxCoreTemperature field - Units: C - Nullable field value to be set - - - - Implements the Length profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the Event field - Returns nullable Event enum representing the Event field - - - - Set Event field - Nullable field value to be set - - - - Retrieves the EventType field - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Nullable field value to be set - - - - Retrieves the StartTime field - Returns DateTime representing the StartTime field - - - - Set StartTime field - Nullable field value to be set - - - - Retrieves the TotalElapsedTime field - Units: s - Returns nullable float representing the TotalElapsedTime field - - - - Set TotalElapsedTime field - Units: s - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Nullable field value to be set - - - - Retrieves the TotalStrokes field - Units: strokes - Returns nullable ushort representing the TotalStrokes field - - - - Set TotalStrokes field - Units: strokes - Nullable field value to be set - - - - Retrieves the AvgSpeed field - Units: m/s - Returns nullable float representing the AvgSpeed field - - - - Set AvgSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the SwimStroke field - Units: swim_stroke - Returns nullable SwimStroke enum representing the SwimStroke field - - - - Set SwimStroke field - Units: swim_stroke - Nullable field value to be set - - - - Retrieves the AvgSwimmingCadence field - Units: strokes/min - Returns nullable byte representing the AvgSwimmingCadence field - - - - Set AvgSwimmingCadence field - Units: strokes/min - Nullable field value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Retrieves the TotalCalories field - Units: kcal - Returns nullable ushort representing the TotalCalories field - - - - Set TotalCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the LengthType field - Returns nullable LengthType enum representing the LengthType field - - - - Set LengthType field - Nullable field value to be set - - - - Retrieves the PlayerScore field - Returns nullable ushort representing the PlayerScore field - - - - Set PlayerScore field - Nullable field value to be set - - - - Retrieves the OpponentScore field - Returns nullable ushort representing the OpponentScore field - - - - Set OpponentScore field - Nullable field value to be set - - - - - - returns number of elements in field StrokeCount - - - - Retrieves the StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of StrokeCount element to retrieve - Returns nullable ushort representing the StrokeCount field - - - - Set StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of stroke_count - Nullable field value to be set - - - - - - returns number of elements in field ZoneCount - - - - Retrieves the ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of ZoneCount element to retrieve - Returns nullable ushort representing the ZoneCount field - - - - Set ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of zone_count - Nullable field value to be set - - - - Retrieves the EnhancedAvgRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedAvgRespirationRate field - - - - Set EnhancedAvgRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the EnhancedMaxRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedMaxRespirationRate field - - - - Set EnhancedMaxRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the AvgRespirationRate field - Returns nullable byte representing the AvgRespirationRate field - - - - Set AvgRespirationRate field - Nullable field value to be set - - - - Retrieves the MaxRespirationRate field - Returns nullable byte representing the MaxRespirationRate field - - - - Set MaxRespirationRate field - Nullable field value to be set - - - - Implements the MagnetometerData profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - - - returns number of elements in field SampleTimeOffset - - - - Retrieves the SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the compass sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in cmps_x and cmps_y and cmps_z - 0 based index of SampleTimeOffset element to retrieve - Returns nullable ushort representing the SampleTimeOffset field - - - - Set SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the compass sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in cmps_x and cmps_y and cmps_z - 0 based index of sample_time_offset - Nullable field value to be set - - - - - - returns number of elements in field MagX - - - - Retrieves the MagX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of MagX element to retrieve - Returns nullable ushort representing the MagX field - - - - Set MagX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of mag_x - Nullable field value to be set - - - - - - returns number of elements in field MagY - - - - Retrieves the MagY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of MagY element to retrieve - Returns nullable ushort representing the MagY field - - - - Set MagY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of mag_y - Nullable field value to be set - - - - - - returns number of elements in field MagZ - - - - Retrieves the MagZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of MagZ element to retrieve - Returns nullable ushort representing the MagZ field - - - - Set MagZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of mag_z - Nullable field value to be set - - - - - - returns number of elements in field CalibratedMagX - - - - Retrieves the CalibratedMagX field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of CalibratedMagX element to retrieve - Returns nullable float representing the CalibratedMagX field - - - - Set CalibratedMagX field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of calibrated_mag_x - Nullable field value to be set - - - - - - returns number of elements in field CalibratedMagY - - - - Retrieves the CalibratedMagY field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of CalibratedMagY element to retrieve - Returns nullable float representing the CalibratedMagY field - - - - Set CalibratedMagY field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of calibrated_mag_y - Nullable field value to be set - - - - - - returns number of elements in field CalibratedMagZ - - - - Retrieves the CalibratedMagZ field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of CalibratedMagZ element to retrieve - Returns nullable float representing the CalibratedMagZ field - - - - Set CalibratedMagZ field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of calibrated_mag_z - Nullable field value to be set - - - - Implements the MemoGlob profile message. - - - - - Field Numbers for - - - - - Retrieves the PartIndex field - Comment: Sequence number of memo blocks - Returns nullable uint representing the PartIndex field - - - - Set PartIndex field - Comment: Sequence number of memo blocks - Nullable field value to be set - - - - - - returns number of elements in field Memo - - - - Retrieves the Memo field - Comment: Deprecated. Use data field. - 0 based index of Memo element to retrieve - Returns nullable byte representing the Memo field - - - - Set Memo field - Comment: Deprecated. Use data field. - 0 based index of memo - Nullable field value to be set - - - - Retrieves the MesgNum field - Comment: Message Number of the parent message - Returns nullable ushort representing the MesgNum field - - - - Set MesgNum field - Comment: Message Number of the parent message - Nullable field value to be set - - - - Retrieves the ParentIndex field - Comment: Index of mesg that this glob is associated with. - Returns nullable ushort representing the ParentIndex field - - - - Set ParentIndex field - Comment: Index of mesg that this glob is associated with. - Nullable field value to be set - - - - Retrieves the FieldNum field - Comment: Field within the parent that this glob is associated with - Returns nullable byte representing the FieldNum field - - - - Set FieldNum field - Comment: Field within the parent that this glob is associated with - Nullable field value to be set - - - - - - returns number of elements in field Data - - - - Retrieves the Data field - Comment: Block of utf8 bytes. Note, mutltibyte characters may be split across adjoining memo_glob messages. - 0 based index of Data element to retrieve - Returns nullable byte representing the Data field - - - - Set Data field - Comment: Block of utf8 bytes. Note, mutltibyte characters may be split across adjoining memo_glob messages. - 0 based index of data - Nullable field value to be set - - - - Implements the MesgCapabilities profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the File field - Returns nullable File enum representing the File field - - - - Set File field - Nullable field value to be set - - - - Retrieves the MesgNum field - Returns nullable ushort representing the MesgNum field - - - - Set MesgNum field - Nullable field value to be set - - - - Retrieves the CountType field - Returns nullable MesgCount enum representing the CountType field - - - - Set CountType field - Nullable field value to be set - - - - Retrieves the Count field - Returns nullable ushort representing the Count field - - - - Set Count field - Nullable field value to be set - - - - Retrieves the NumPerFile subfield - Nullable ushort representing the NumPerFile subfield - - - - - Set NumPerFile subfield - Subfield value to be set - - - - Retrieves the MaxPerFile subfield - Nullable ushort representing the MaxPerFile subfield - - - - - Set MaxPerFile subfield - Subfield value to be set - - - - Retrieves the MaxPerFileType subfield - Nullable ushort representing the MaxPerFileType subfield - - - - - Set MaxPerFileType subfield - Subfield value to be set - - - - Implements the MetZone profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HighBpm field - Returns nullable byte representing the HighBpm field - - - - Set HighBpm field - Nullable field value to be set - - - - Retrieves the Calories field - Units: kcal / min - Returns nullable float representing the Calories field - - - - Set Calories field - Units: kcal / min - Nullable field value to be set - - - - Retrieves the FatCalories field - Units: kcal / min - Returns nullable float representing the FatCalories field - - - - Set FatCalories field - Units: kcal / min - Nullable field value to be set - - - - Implements the MonitoringInfo profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the LocalTimestamp field - Units: s - Comment: Use to convert activity timestamps to local time if device does not support time zone and daylight savings time correction. - Returns nullable uint representing the LocalTimestamp field - - - - Set LocalTimestamp field - Units: s - Comment: Use to convert activity timestamps to local time if device does not support time zone and daylight savings time correction. - Nullable field value to be set - - - - - - returns number of elements in field ActivityType - - - - Retrieves the ActivityType field - 0 based index of ActivityType element to retrieve - Returns nullable ActivityType enum representing the ActivityType field - - - - Set ActivityType field - 0 based index of activity_type - Nullable field value to be set - - - - - - returns number of elements in field CyclesToDistance - - - - Retrieves the CyclesToDistance field - Units: m/cycle - Comment: Indexed by activity_type - 0 based index of CyclesToDistance element to retrieve - Returns nullable float representing the CyclesToDistance field - - - - Set CyclesToDistance field - Units: m/cycle - Comment: Indexed by activity_type - 0 based index of cycles_to_distance - Nullable field value to be set - - - - - - returns number of elements in field CyclesToCalories - - - - Retrieves the CyclesToCalories field - Units: kcal/cycle - Comment: Indexed by activity_type - 0 based index of CyclesToCalories element to retrieve - Returns nullable float representing the CyclesToCalories field - - - - Set CyclesToCalories field - Units: kcal/cycle - Comment: Indexed by activity_type - 0 based index of cycles_to_calories - Nullable field value to be set - - - - Retrieves the RestingMetabolicRate field - Units: kcal / day - Returns nullable ushort representing the RestingMetabolicRate field - - - - Set RestingMetabolicRate field - Units: kcal / day - Nullable field value to be set - - - - Implements the Monitoring profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Comment: Associates this data to device_info message. Not required for file with single device (sensor). - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Comment: Associates this data to device_info message. Not required for file with single device (sensor). - Nullable field value to be set - - - - Retrieves the Calories field - Units: kcal - Comment: Accumulated total calories. Maintained by MonitoringReader for each activity_type. See SDK documentation - Returns nullable ushort representing the Calories field - - - - Set Calories field - Units: kcal - Comment: Accumulated total calories. Maintained by MonitoringReader for each activity_type. See SDK documentation - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Comment: Accumulated distance. Maintained by MonitoringReader for each activity_type. See SDK documentation. - Returns nullable float representing the Distance field - - - - Set Distance field - Units: m - Comment: Accumulated distance. Maintained by MonitoringReader for each activity_type. See SDK documentation. - Nullable field value to be set - - - - Retrieves the Cycles field - Units: cycles - Comment: Accumulated cycles. Maintained by MonitoringReader for each activity_type. See SDK documentation. - Returns nullable float representing the Cycles field - - - - Set Cycles field - Units: cycles - Comment: Accumulated cycles. Maintained by MonitoringReader for each activity_type. See SDK documentation. - Nullable field value to be set - - - - Retrieves the Steps subfield - Units: steps - Nullable uint representing the Steps subfield - - - - - Set Steps subfield - Units: steps - Subfield value to be set - - - - Retrieves the Strokes subfield - Units: strokes - Nullable float representing the Strokes subfield - - - - - Set Strokes subfield - Units: strokes - Subfield value to be set - - - - Retrieves the ActiveTime field - Units: s - Returns nullable float representing the ActiveTime field - - - - Set ActiveTime field - Units: s - Nullable field value to be set - - - - Retrieves the ActivityType field - Returns nullable ActivityType enum representing the ActivityType field - - - - Set ActivityType field - Nullable field value to be set - - - - Retrieves the ActivitySubtype field - Returns nullable ActivitySubtype enum representing the ActivitySubtype field - - - - Set ActivitySubtype field - Nullable field value to be set - - - - Retrieves the ActivityLevel field - Returns nullable ActivityLevel enum representing the ActivityLevel field - - - - Set ActivityLevel field - Nullable field value to be set - - - - Retrieves the Distance16 field - Units: 100 * m - Returns nullable ushort representing the Distance16 field - - - - Set Distance16 field - Units: 100 * m - Nullable field value to be set - - - - Retrieves the Cycles16 field - Units: 2 * cycles (steps) - Returns nullable ushort representing the Cycles16 field - - - - Set Cycles16 field - Units: 2 * cycles (steps) - Nullable field value to be set - - - - Retrieves the ActiveTime16 field - Units: s - Returns nullable ushort representing the ActiveTime16 field - - - - Set ActiveTime16 field - Units: s - Nullable field value to be set - - - - Retrieves the LocalTimestamp field - Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - Returns nullable uint representing the LocalTimestamp field - - - - Set LocalTimestamp field - Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - Nullable field value to be set - - - - Retrieves the Temperature field - Units: C - Comment: Avg temperature during the logging interval ended at timestamp - Returns nullable float representing the Temperature field - - - - Set Temperature field - Units: C - Comment: Avg temperature during the logging interval ended at timestamp - Nullable field value to be set - - - - Retrieves the TemperatureMin field - Units: C - Comment: Min temperature during the logging interval ended at timestamp - Returns nullable float representing the TemperatureMin field - - - - Set TemperatureMin field - Units: C - Comment: Min temperature during the logging interval ended at timestamp - Nullable field value to be set - - - - Retrieves the TemperatureMax field - Units: C - Comment: Max temperature during the logging interval ended at timestamp - Returns nullable float representing the TemperatureMax field - - - - Set TemperatureMax field - Units: C - Comment: Max temperature during the logging interval ended at timestamp - Nullable field value to be set - - - - - - returns number of elements in field ActivityTime - - - - Retrieves the ActivityTime field - Units: minutes - Comment: Indexed using minute_activity_level enum - 0 based index of ActivityTime element to retrieve - Returns nullable ushort representing the ActivityTime field - - - - Set ActivityTime field - Units: minutes - Comment: Indexed using minute_activity_level enum - 0 based index of activity_time - Nullable field value to be set - - - - Retrieves the ActiveCalories field - Units: kcal - Returns nullable ushort representing the ActiveCalories field - - - - Set ActiveCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the CurrentActivityTypeIntensity field - Comment: Indicates single type / intensity for duration since last monitoring message. - Returns nullable byte representing the CurrentActivityTypeIntensity field - - - - Set CurrentActivityTypeIntensity field - Comment: Indicates single type / intensity for duration since last monitoring message. - Nullable field value to be set - - - - Retrieves the TimestampMin8 field - Units: min - Returns nullable byte representing the TimestampMin8 field - - - - Set TimestampMin8 field - Units: min - Nullable field value to be set - - - - Retrieves the Timestamp16 field - Units: s - Returns nullable ushort representing the Timestamp16 field - - - - Set Timestamp16 field - Units: s - Nullable field value to be set - - - - Retrieves the HeartRate field - Units: bpm - Returns nullable byte representing the HeartRate field - - - - Set HeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the Intensity field - Returns nullable float representing the Intensity field - - - - Set Intensity field - Nullable field value to be set - - - - Retrieves the DurationMin field - Units: min - Returns nullable ushort representing the DurationMin field - - - - Set DurationMin field - Units: min - Nullable field value to be set - - - - Retrieves the Duration field - Units: s - Returns nullable uint representing the Duration field - - - - Set Duration field - Units: s - Nullable field value to be set - - - - Retrieves the Ascent field - Units: m - Returns nullable float representing the Ascent field - - - - Set Ascent field - Units: m - Nullable field value to be set - - - - Retrieves the Descent field - Units: m - Returns nullable float representing the Descent field - - - - Set Descent field - Units: m - Nullable field value to be set - - - - Retrieves the ModerateActivityMinutes field - Units: minutes - Returns nullable ushort representing the ModerateActivityMinutes field - - - - Set ModerateActivityMinutes field - Units: minutes - Nullable field value to be set - - - - Retrieves the VigorousActivityMinutes field - Units: minutes - Returns nullable ushort representing the VigorousActivityMinutes field - - - - Set VigorousActivityMinutes field - Units: minutes - Nullable field value to be set - - - - Implements the NmeaSentence profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Timestamp message was output - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Timestamp message was output - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Nullable field value to be set - - - - Retrieves the Sentence field - Comment: NMEA sentence - Returns byte[] representing the Sentence field - - - - Retrieves the Sentence field - Comment: NMEA sentence - Returns String representing the Sentence field - - - - Set Sentence field - Comment: NMEA sentence - field value to be set - - - - Set Sentence field - Comment: NMEA sentence - field value to be set - - - - Implements the ObdiiData profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Timestamp message was output - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Timestamp message was output - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Nullable field value to be set - - - - - - returns number of elements in field TimeOffset - - - - Retrieves the TimeOffset field - Units: ms - Comment: Offset of PID reading [i] from start_timestamp+start_timestamp_ms. Readings may span accross seconds. - 0 based index of TimeOffset element to retrieve - Returns nullable ushort representing the TimeOffset field - - - - Set TimeOffset field - Units: ms - Comment: Offset of PID reading [i] from start_timestamp+start_timestamp_ms. Readings may span accross seconds. - 0 based index of time_offset - Nullable field value to be set - - - - Retrieves the Pid field - Comment: Parameter ID - Returns nullable byte representing the Pid field - - - - Set Pid field - Comment: Parameter ID - Nullable field value to be set - - - - - - returns number of elements in field RawData - - - - Retrieves the RawData field - Comment: Raw parameter data - 0 based index of RawData element to retrieve - Returns nullable byte representing the RawData field - - - - Set RawData field - Comment: Raw parameter data - 0 based index of raw_data - Nullable field value to be set - - - - - - returns number of elements in field PidDataSize - - - - Retrieves the PidDataSize field - Comment: Optional, data size of PID[i]. If not specified refer to SAE J1979. - 0 based index of PidDataSize element to retrieve - Returns nullable byte representing the PidDataSize field - - - - Set PidDataSize field - Comment: Optional, data size of PID[i]. If not specified refer to SAE J1979. - 0 based index of pid_data_size - Nullable field value to be set - - - - - - returns number of elements in field SystemTime - - - - Retrieves the SystemTime field - Comment: System time associated with sample expressed in ms, can be used instead of time_offset. There will be a system_time value for each raw_data element. For multibyte pids the system_time is repeated. - 0 based index of SystemTime element to retrieve - Returns nullable uint representing the SystemTime field - - - - Set SystemTime field - Comment: System time associated with sample expressed in ms, can be used instead of time_offset. There will be a system_time value for each raw_data element. For multibyte pids the system_time is repeated. - 0 based index of system_time - Nullable field value to be set - - - - Retrieves the StartTimestamp field - Comment: Timestamp of first sample recorded in the message. Used with time_offset to generate time of each sample - Returns DateTime representing the StartTimestamp field - - - - Set StartTimestamp field - Comment: Timestamp of first sample recorded in the message. Used with time_offset to generate time of each sample - Nullable field value to be set - - - - Retrieves the StartTimestampMs field - Units: ms - Comment: Fractional part of start_timestamp - Returns nullable ushort representing the StartTimestampMs field - - - - Set StartTimestampMs field - Units: ms - Comment: Fractional part of start_timestamp - Nullable field value to be set - - - - Implements the OhrSettings profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Enabled field - Returns nullable Switch enum representing the Enabled field - - - - Set Enabled field - Nullable field value to be set - - - - Implements the OneDSensorCalibration profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the SensorType field - Comment: Indicates which sensor the calibration is for - Returns nullable SensorType enum representing the SensorType field - - - - Set SensorType field - Comment: Indicates which sensor the calibration is for - Nullable field value to be set - - - - Retrieves the CalibrationFactor field - Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - Returns nullable uint representing the CalibrationFactor field - - - - Set CalibrationFactor field - Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - Nullable field value to be set - - - - Retrieves the BaroCalFactor subfield - Units: Pa - Comment: Barometer calibration factor - Nullable uint representing the BaroCalFactor subfield - - - - - Set BaroCalFactor subfield - Units: Pa - Comment: Barometer calibration factor - Subfield value to be set - - - - Retrieves the CalibrationDivisor field - Units: counts - Comment: Calibration factor divisor - Returns nullable uint representing the CalibrationDivisor field - - - - Set CalibrationDivisor field - Units: counts - Comment: Calibration factor divisor - Nullable field value to be set - - - - Retrieves the LevelShift field - Comment: Level shift value used to shift the ADC value back into range - Returns nullable uint representing the LevelShift field - - - - Set LevelShift field - Comment: Level shift value used to shift the ADC value back into range - Nullable field value to be set - - - - Retrieves the OffsetCal field - Comment: Internal Calibration factor - Returns nullable int representing the OffsetCal field - - - - Set OffsetCal field - Comment: Internal Calibration factor - Nullable field value to be set - - - - Implements the Pad profile message. - - - - - Field Numbers for - - - - - Implements the PowerZone profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HighValue field - Units: watts - Returns nullable ushort representing the HighValue field - - - - Set HighValue field - Units: watts - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Implements the Record profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the Altitude field - Units: m - Returns nullable float representing the Altitude field - - - - Set Altitude field - Units: m - Nullable field value to be set - - - - Retrieves the HeartRate field - Units: bpm - Returns nullable byte representing the HeartRate field - - - - Set HeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the Cadence field - Units: rpm - Returns nullable byte representing the Cadence field - - - - Set Cadence field - Units: rpm - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Returns nullable float representing the Distance field - - - - Set Distance field - Units: m - Nullable field value to be set - - - - Retrieves the Speed field - Units: m/s - Returns nullable float representing the Speed field - - - - Set Speed field - Units: m/s - Nullable field value to be set - - - - Retrieves the Power field - Units: watts - Returns nullable ushort representing the Power field - - - - Set Power field - Units: watts - Nullable field value to be set - - - - - - returns number of elements in field CompressedSpeedDistance - - - - Retrieves the CompressedSpeedDistance field - 0 based index of CompressedSpeedDistance element to retrieve - Returns nullable byte representing the CompressedSpeedDistance field - - - - Set CompressedSpeedDistance field - 0 based index of compressed_speed_distance - Nullable field value to be set - - - - Retrieves the Grade field - Units: % - Returns nullable float representing the Grade field - - - - Set Grade field - Units: % - Nullable field value to be set - - - - Retrieves the Resistance field - Comment: Relative. 0 is none 254 is Max. - Returns nullable byte representing the Resistance field - - - - Set Resistance field - Comment: Relative. 0 is none 254 is Max. - Nullable field value to be set - - - - Retrieves the TimeFromCourse field - Units: s - Returns nullable float representing the TimeFromCourse field - - - - Set TimeFromCourse field - Units: s - Nullable field value to be set - - - - Retrieves the CycleLength field - Units: m - Returns nullable float representing the CycleLength field - - - - Set CycleLength field - Units: m - Nullable field value to be set - - - - Retrieves the Temperature field - Units: C - Returns nullable sbyte representing the Temperature field - - - - Set Temperature field - Units: C - Nullable field value to be set - - - - - - returns number of elements in field Speed1s - - - - Retrieves the Speed1s field - Units: m/s - Comment: Speed at 1s intervals. Timestamp field indicates time of last array element. - 0 based index of Speed1s element to retrieve - Returns nullable float representing the Speed1s field - - - - Set Speed1s field - Units: m/s - Comment: Speed at 1s intervals. Timestamp field indicates time of last array element. - 0 based index of speed_1s - Nullable field value to be set - - - - Retrieves the Cycles field - Units: cycles - Returns nullable byte representing the Cycles field - - - - Set Cycles field - Units: cycles - Nullable field value to be set - - - - Retrieves the TotalCycles field - Units: cycles - Returns nullable uint representing the TotalCycles field - - - - Set TotalCycles field - Units: cycles - Nullable field value to be set - - - - Retrieves the CompressedAccumulatedPower field - Units: watts - Returns nullable ushort representing the CompressedAccumulatedPower field - - - - Set CompressedAccumulatedPower field - Units: watts - Nullable field value to be set - - - - Retrieves the AccumulatedPower field - Units: watts - Returns nullable uint representing the AccumulatedPower field - - - - Set AccumulatedPower field - Units: watts - Nullable field value to be set - - - - Retrieves the LeftRightBalance field - Returns nullable byte representing the LeftRightBalance field - - - - Set LeftRightBalance field - Nullable field value to be set - - - - Retrieves the GpsAccuracy field - Units: m - Returns nullable byte representing the GpsAccuracy field - - - - Set GpsAccuracy field - Units: m - Nullable field value to be set - - - - Retrieves the VerticalSpeed field - Units: m/s - Returns nullable float representing the VerticalSpeed field - - - - Set VerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the Calories field - Units: kcal - Returns nullable ushort representing the Calories field - - - - Set Calories field - Units: kcal - Nullable field value to be set - - - - Retrieves the VerticalOscillation field - Units: mm - Returns nullable float representing the VerticalOscillation field - - - - Set VerticalOscillation field - Units: mm - Nullable field value to be set - - - - Retrieves the StanceTimePercent field - Units: percent - Returns nullable float representing the StanceTimePercent field - - - - Set StanceTimePercent field - Units: percent - Nullable field value to be set - - - - Retrieves the StanceTime field - Units: ms - Returns nullable float representing the StanceTime field - - - - Set StanceTime field - Units: ms - Nullable field value to be set - - - - Retrieves the ActivityType field - Returns nullable ActivityType enum representing the ActivityType field - - - - Set ActivityType field - Nullable field value to be set - - - - Retrieves the LeftTorqueEffectiveness field - Units: percent - Returns nullable float representing the LeftTorqueEffectiveness field - - - - Set LeftTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the RightTorqueEffectiveness field - Units: percent - Returns nullable float representing the RightTorqueEffectiveness field - - - - Set RightTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the LeftPedalSmoothness field - Units: percent - Returns nullable float representing the LeftPedalSmoothness field - - - - Set LeftPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the RightPedalSmoothness field - Units: percent - Returns nullable float representing the RightPedalSmoothness field - - - - Set RightPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the CombinedPedalSmoothness field - Units: percent - Returns nullable float representing the CombinedPedalSmoothness field - - - - Set CombinedPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the Time128 field - Units: s - Returns nullable float representing the Time128 field - - - - Set Time128 field - Units: s - Nullable field value to be set - - - - Retrieves the StrokeType field - Returns nullable StrokeType enum representing the StrokeType field - - - - Set StrokeType field - Nullable field value to be set - - - - Retrieves the Zone field - Returns nullable byte representing the Zone field - - - - Set Zone field - Nullable field value to be set - - - - Retrieves the BallSpeed field - Units: m/s - Returns nullable float representing the BallSpeed field - - - - Set BallSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the Cadence256 field - Units: rpm - Comment: Log cadence and fractional cadence for backwards compatability - Returns nullable float representing the Cadence256 field - - - - Set Cadence256 field - Units: rpm - Comment: Log cadence and fractional cadence for backwards compatability - Nullable field value to be set - - - - Retrieves the FractionalCadence field - Units: rpm - Returns nullable float representing the FractionalCadence field - - - - Set FractionalCadence field - Units: rpm - Nullable field value to be set - - - - Retrieves the TotalHemoglobinConc field - Units: g/dL - Comment: Total saturated and unsaturated hemoglobin - Returns nullable float representing the TotalHemoglobinConc field - - - - Set TotalHemoglobinConc field - Units: g/dL - Comment: Total saturated and unsaturated hemoglobin - Nullable field value to be set - - - - Retrieves the TotalHemoglobinConcMin field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - Returns nullable float representing the TotalHemoglobinConcMin field - - - - Set TotalHemoglobinConcMin field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - Nullable field value to be set - - - - Retrieves the TotalHemoglobinConcMax field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - Returns nullable float representing the TotalHemoglobinConcMax field - - - - Set TotalHemoglobinConcMax field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - Nullable field value to be set - - - - Retrieves the SaturatedHemoglobinPercent field - Units: % - Comment: Percentage of hemoglobin saturated with oxygen - Returns nullable float representing the SaturatedHemoglobinPercent field - - - - Set SaturatedHemoglobinPercent field - Units: % - Comment: Percentage of hemoglobin saturated with oxygen - Nullable field value to be set - - - - Retrieves the SaturatedHemoglobinPercentMin field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - Returns nullable float representing the SaturatedHemoglobinPercentMin field - - - - Set SaturatedHemoglobinPercentMin field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - Nullable field value to be set - - - - Retrieves the SaturatedHemoglobinPercentMax field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - Returns nullable float representing the SaturatedHemoglobinPercentMax field - - - - Set SaturatedHemoglobinPercentMax field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Nullable field value to be set - - - - Retrieves the LeftPco field - Units: mm - Comment: Left platform center offset - Returns nullable sbyte representing the LeftPco field - - - - Set LeftPco field - Units: mm - Comment: Left platform center offset - Nullable field value to be set - - - - Retrieves the RightPco field - Units: mm - Comment: Right platform center offset - Returns nullable sbyte representing the RightPco field - - - - Set RightPco field - Units: mm - Comment: Right platform center offset - Nullable field value to be set - - - - - - returns number of elements in field LeftPowerPhase - - - - Retrieves the LeftPowerPhase field - Units: degrees - Comment: Left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of LeftPowerPhase element to retrieve - Returns nullable float representing the LeftPowerPhase field - - - - Set LeftPowerPhase field - Units: degrees - Comment: Left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of left_power_phase - Nullable field value to be set - - - - - - returns number of elements in field LeftPowerPhasePeak - - - - Retrieves the LeftPowerPhasePeak field - Units: degrees - Comment: Left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of LeftPowerPhasePeak element to retrieve - Returns nullable float representing the LeftPowerPhasePeak field - - - - Set LeftPowerPhasePeak field - Units: degrees - Comment: Left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of left_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field RightPowerPhase - - - - Retrieves the RightPowerPhase field - Units: degrees - Comment: Right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of RightPowerPhase element to retrieve - Returns nullable float representing the RightPowerPhase field - - - - Set RightPowerPhase field - Units: degrees - Comment: Right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of right_power_phase - Nullable field value to be set - - - - - - returns number of elements in field RightPowerPhasePeak - - - - Retrieves the RightPowerPhasePeak field - Units: degrees - Comment: Right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of RightPowerPhasePeak element to retrieve - Returns nullable float representing the RightPowerPhasePeak field - - - - Set RightPowerPhasePeak field - Units: degrees - Comment: Right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of right_power_phase_peak - Nullable field value to be set - - - - Retrieves the EnhancedSpeed field - Units: m/s - Returns nullable float representing the EnhancedSpeed field - - - - Set EnhancedSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the EnhancedAltitude field - Units: m - Returns nullable float representing the EnhancedAltitude field - - - - Set EnhancedAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the BatterySoc field - Units: percent - Comment: lev battery state of charge - Returns nullable float representing the BatterySoc field - - - - Set BatterySoc field - Units: percent - Comment: lev battery state of charge - Nullable field value to be set - - - - Retrieves the MotorPower field - Units: watts - Comment: lev motor power - Returns nullable ushort representing the MotorPower field - - - - Set MotorPower field - Units: watts - Comment: lev motor power - Nullable field value to be set - - - - Retrieves the VerticalRatio field - Units: percent - Returns nullable float representing the VerticalRatio field - - - - Set VerticalRatio field - Units: percent - Nullable field value to be set - - - - Retrieves the StanceTimeBalance field - Units: percent - Returns nullable float representing the StanceTimeBalance field - - - - Set StanceTimeBalance field - Units: percent - Nullable field value to be set - - - - Retrieves the StepLength field - Units: mm - Returns nullable float representing the StepLength field - - - - Set StepLength field - Units: mm - Nullable field value to be set - - - - Retrieves the AbsolutePressure field - Units: Pa - Comment: Includes atmospheric pressure - Returns nullable uint representing the AbsolutePressure field - - - - Set AbsolutePressure field - Units: Pa - Comment: Includes atmospheric pressure - Nullable field value to be set - - - - Retrieves the Depth field - Units: m - Comment: 0 if above water - Returns nullable float representing the Depth field - - - - Set Depth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the NextStopDepth field - Units: m - Comment: 0 if above water - Returns nullable float representing the NextStopDepth field - - - - Set NextStopDepth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the NextStopTime field - Units: s - Returns nullable uint representing the NextStopTime field - - - - Set NextStopTime field - Units: s - Nullable field value to be set - - - - Retrieves the TimeToSurface field - Units: s - Returns nullable uint representing the TimeToSurface field - - - - Set TimeToSurface field - Units: s - Nullable field value to be set - - - - Retrieves the NdlTime field - Units: s - Returns nullable uint representing the NdlTime field - - - - Set NdlTime field - Units: s - Nullable field value to be set - - - - Retrieves the CnsLoad field - Units: percent - Returns nullable byte representing the CnsLoad field - - - - Set CnsLoad field - Units: percent - Nullable field value to be set - - - - Retrieves the N2Load field - Units: percent - Returns nullable ushort representing the N2Load field - - - - Set N2Load field - Units: percent - Nullable field value to be set - - - - Retrieves the RespirationRate field - Units: s - Returns nullable byte representing the RespirationRate field - - - - Set RespirationRate field - Units: s - Nullable field value to be set - - - - Retrieves the EnhancedRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedRespirationRate field - - - - Set EnhancedRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the Grit field - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the Grit field - - - - Set Grit field - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the Flow field - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the Flow field - - - - Set Flow field - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the EbikeTravelRange field - Units: km - Returns nullable ushort representing the EbikeTravelRange field - - - - Set EbikeTravelRange field - Units: km - Nullable field value to be set - - - - Retrieves the EbikeBatteryLevel field - Units: percent - Returns nullable byte representing the EbikeBatteryLevel field - - - - Set EbikeBatteryLevel field - Units: percent - Nullable field value to be set - - - - Retrieves the EbikeAssistMode field - Units: depends on sensor - Returns nullable byte representing the EbikeAssistMode field - - - - Set EbikeAssistMode field - Units: depends on sensor - Nullable field value to be set - - - - Retrieves the EbikeAssistLevelPercent field - Units: percent - Returns nullable byte representing the EbikeAssistLevelPercent field - - - - Set EbikeAssistLevelPercent field - Units: percent - Nullable field value to be set - - - - Retrieves the AirTimeRemaining field - Units: s - Returns nullable uint representing the AirTimeRemaining field - - - - Set AirTimeRemaining field - Units: s - Nullable field value to be set - - - - Retrieves the PressureSac field - Units: bar/min - Comment: Pressure-based surface air consumption - Returns nullable float representing the PressureSac field - - - - Set PressureSac field - Units: bar/min - Comment: Pressure-based surface air consumption - Nullable field value to be set - - - - Retrieves the VolumeSac field - Units: L/min - Comment: Volumetric surface air consumption - Returns nullable float representing the VolumeSac field - - - - Set VolumeSac field - Units: L/min - Comment: Volumetric surface air consumption - Nullable field value to be set - - - - Retrieves the Rmv field - Units: L/min - Comment: Respiratory minute volume - Returns nullable float representing the Rmv field - - - - Set Rmv field - Units: L/min - Comment: Respiratory minute volume - Nullable field value to be set - - - - Retrieves the AscentRate field - Units: m/s - Returns nullable float representing the AscentRate field - - - - Set AscentRate field - Units: m/s - Nullable field value to be set - - - - Retrieves the Po2 field - Units: percent - Comment: Current partial pressure of oxygen - Returns nullable float representing the Po2 field - - - - Set Po2 field - Units: percent - Comment: Current partial pressure of oxygen - Nullable field value to be set - - - - Retrieves the CoreTemperature field - Units: C - Returns nullable float representing the CoreTemperature field - - - - Set CoreTemperature field - Units: C - Nullable field value to be set - - - - Implements the Schedule profile message. - - - - - Field Numbers for - - - - - Retrieves the Manufacturer field - Comment: Corresponds to file_id of scheduled workout / course. - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Comment: Corresponds to file_id of scheduled workout / course. - Nullable field value to be set - - - - Retrieves the Product field - Comment: Corresponds to file_id of scheduled workout / course. - Returns nullable ushort representing the Product field - - - - Set Product field - Comment: Corresponds to file_id of scheduled workout / course. - Nullable field value to be set - - - - Retrieves the FaveroProduct subfield - Nullable ushort representing the FaveroProduct subfield - - - - - Set FaveroProduct subfield - Subfield value to be set - - - - Retrieves the GarminProduct subfield - Nullable ushort representing the GarminProduct subfield - - - - - Set GarminProduct subfield - Subfield value to be set - - - - Retrieves the SerialNumber field - Comment: Corresponds to file_id of scheduled workout / course. - Returns nullable uint representing the SerialNumber field - - - - Set SerialNumber field - Comment: Corresponds to file_id of scheduled workout / course. - Nullable field value to be set - - - - Retrieves the TimeCreated field - Comment: Corresponds to file_id of scheduled workout / course. - Returns DateTime representing the TimeCreated field - - - - Set TimeCreated field - Comment: Corresponds to file_id of scheduled workout / course. - Nullable field value to be set - - - - Retrieves the Completed field - Comment: TRUE if this activity has been started - Returns nullable Bool enum representing the Completed field - - - - Set Completed field - Comment: TRUE if this activity has been started - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable Schedule enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the ScheduledTime field - Returns nullable uint representing the ScheduledTime field - - - - Set ScheduledTime field - Nullable field value to be set - - - - Implements the SdmProfile profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Enabled field - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Nullable field value to be set - - - - Retrieves the SdmAntId field - Returns nullable ushort representing the SdmAntId field - - - - Set SdmAntId field - Nullable field value to be set - - - - Retrieves the SdmCalFactor field - Units: % - Returns nullable float representing the SdmCalFactor field - - - - Set SdmCalFactor field - Units: % - Nullable field value to be set - - - - Retrieves the Odometer field - Units: m - Returns nullable float representing the Odometer field - - - - Set Odometer field - Units: m - Nullable field value to be set - - - - Retrieves the SpeedSource field - Comment: Use footpod for speed source instead of GPS - Returns nullable Bool enum representing the SpeedSource field - - - - Set SpeedSource field - Comment: Use footpod for speed source instead of GPS - Nullable field value to be set - - - - Retrieves the SdmAntIdTransType field - Returns nullable byte representing the SdmAntIdTransType field - - - - Set SdmAntIdTransType field - Nullable field value to be set - - - - Retrieves the OdometerRollover field - Comment: Rollover counter that can be used to extend the odometer - Returns nullable byte representing the OdometerRollover field - - - - Set OdometerRollover field - Comment: Rollover counter that can be used to extend the odometer - Nullable field value to be set - - - - Implements the SegmentFile profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the FileUuid field - Comment: UUID of the segment file - Returns byte[] representing the FileUuid field - - - - Retrieves the FileUuid field - Comment: UUID of the segment file - Returns String representing the FileUuid field - - - - Set FileUuid field - Comment: UUID of the segment file - field value to be set - - - - Set FileUuid field - Comment: UUID of the segment file - field value to be set - - - - Retrieves the Enabled field - Comment: Enabled state of the segment file - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Comment: Enabled state of the segment file - Nullable field value to be set - - - - Retrieves the UserProfilePrimaryKey field - Comment: Primary key of the user that created the segment file - Returns nullable uint representing the UserProfilePrimaryKey field - - - - Set UserProfilePrimaryKey field - Comment: Primary key of the user that created the segment file - Nullable field value to be set - - - - - - returns number of elements in field LeaderType - - - - Retrieves the LeaderType field - Comment: Leader type of each leader in the segment file - 0 based index of LeaderType element to retrieve - Returns nullable SegmentLeaderboardType enum representing the LeaderType field - - - - Set LeaderType field - Comment: Leader type of each leader in the segment file - 0 based index of leader_type - Nullable field value to be set - - - - - - returns number of elements in field LeaderGroupPrimaryKey - - - - Retrieves the LeaderGroupPrimaryKey field - Comment: Group primary key of each leader in the segment file - 0 based index of LeaderGroupPrimaryKey element to retrieve - Returns nullable uint representing the LeaderGroupPrimaryKey field - - - - Set LeaderGroupPrimaryKey field - Comment: Group primary key of each leader in the segment file - 0 based index of leader_group_primary_key - Nullable field value to be set - - - - - - returns number of elements in field LeaderActivityId - - - - Retrieves the LeaderActivityId field - Comment: Activity ID of each leader in the segment file - 0 based index of LeaderActivityId element to retrieve - Returns nullable uint representing the LeaderActivityId field - - - - Set LeaderActivityId field - Comment: Activity ID of each leader in the segment file - 0 based index of leader_activity_id - Nullable field value to be set - - - - - - returns number of elements in field LeaderActivityIdString - - - - Retrieves the LeaderActivityIdString field - Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - 0 based index of LeaderActivityIdString element to retrieve - Returns byte[] representing the LeaderActivityIdString field - - - - Retrieves the LeaderActivityIdString field - Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - 0 based index of LeaderActivityIdString element to retrieve - Returns String representing the LeaderActivityIdString field - - - - Set LeaderActivityIdString field - Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - 0 based index of LeaderActivityIdString element to retrieve - field value to be set - - - - Set LeaderActivityIdString field - Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - 0 based index of leader_activity_id_string - field value to be set - - - - Retrieves the DefaultRaceLeader field - Comment: Index for the Leader Board entry selected as the default race participant - Returns nullable byte representing the DefaultRaceLeader field - - - - Set DefaultRaceLeader field - Comment: Index for the Leader Board entry selected as the default race participant - Nullable field value to be set - - - - Implements the SegmentId profile message. - - - - - Field Numbers for - - - - - Retrieves the Name field - Comment: Friendly name assigned to segment - Returns byte[] representing the Name field - - - - Retrieves the Name field - Comment: Friendly name assigned to segment - Returns String representing the Name field - - - - Set Name field - Comment: Friendly name assigned to segment - field value to be set - - - - Set Name field - Comment: Friendly name assigned to segment - field value to be set - - - - Retrieves the Uuid field - Comment: UUID of the segment - Returns byte[] representing the Uuid field - - - - Retrieves the Uuid field - Comment: UUID of the segment - Returns String representing the Uuid field - - - - Set Uuid field - Comment: UUID of the segment - field value to be set - - - - Set Uuid field - Comment: UUID of the segment - field value to be set - - - - Retrieves the Sport field - Comment: Sport associated with the segment - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Comment: Sport associated with the segment - Nullable field value to be set - - - - Retrieves the Enabled field - Comment: Segment enabled for evaluation - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Comment: Segment enabled for evaluation - Nullable field value to be set - - - - Retrieves the UserProfilePrimaryKey field - Comment: Primary key of the user that created the segment - Returns nullable uint representing the UserProfilePrimaryKey field - - - - Set UserProfilePrimaryKey field - Comment: Primary key of the user that created the segment - Nullable field value to be set - - - - Retrieves the DeviceId field - Comment: ID of the device that created the segment - Returns nullable uint representing the DeviceId field - - - - Set DeviceId field - Comment: ID of the device that created the segment - Nullable field value to be set - - - - Retrieves the DefaultRaceLeader field - Comment: Index for the Leader Board entry selected as the default race participant - Returns nullable byte representing the DefaultRaceLeader field - - - - Set DefaultRaceLeader field - Comment: Index for the Leader Board entry selected as the default race participant - Nullable field value to be set - - - - Retrieves the DeleteStatus field - Comment: Indicates if any segments should be deleted - Returns nullable SegmentDeleteStatus enum representing the DeleteStatus field - - - - Set DeleteStatus field - Comment: Indicates if any segments should be deleted - Nullable field value to be set - - - - Retrieves the SelectionType field - Comment: Indicates how the segment was selected to be sent to the device - Returns nullable SegmentSelectionType enum representing the SelectionType field - - - - Set SelectionType field - Comment: Indicates how the segment was selected to be sent to the device - Nullable field value to be set - - - - Implements the SegmentLap profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Timestamp field - Units: s - Comment: Lap end time. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Lap end time. - Nullable field value to be set - - - - Retrieves the Event field - Returns nullable Event enum representing the Event field - - - - Set Event field - Nullable field value to be set - - - - Retrieves the EventType field - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Nullable field value to be set - - - - Retrieves the StartTime field - Returns DateTime representing the StartTime field - - - - Set StartTime field - Nullable field value to be set - - - - Retrieves the StartPositionLat field - Units: semicircles - Returns nullable int representing the StartPositionLat field - - - - Set StartPositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the StartPositionLong field - Units: semicircles - Returns nullable int representing the StartPositionLong field - - - - Set StartPositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the EndPositionLat field - Units: semicircles - Returns nullable int representing the EndPositionLat field - - - - Set EndPositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the EndPositionLong field - Units: semicircles - Returns nullable int representing the EndPositionLong field - - - - Set EndPositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Returns nullable float representing the TotalElapsedTime field - - - - Set TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Nullable field value to be set - - - - Retrieves the TotalDistance field - Units: m - Returns nullable float representing the TotalDistance field - - - - Set TotalDistance field - Units: m - Nullable field value to be set - - - - Retrieves the TotalCycles field - Units: cycles - Returns nullable uint representing the TotalCycles field - - - - Set TotalCycles field - Units: cycles - Nullable field value to be set - - - - Retrieves the TotalStrokes subfield - Units: strokes - Nullable uint representing the TotalStrokes subfield - - - - - Set TotalStrokes subfield - Units: strokes - Subfield value to be set - - - - Retrieves the TotalCalories field - Units: kcal - Returns nullable ushort representing the TotalCalories field - - - - Set TotalCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the TotalFatCalories field - Units: kcal - Comment: If New Leaf - Returns nullable ushort representing the TotalFatCalories field - - - - Set TotalFatCalories field - Units: kcal - Comment: If New Leaf - Nullable field value to be set - - - - Retrieves the AvgSpeed field - Units: m/s - Returns nullable float representing the AvgSpeed field - - - - Set AvgSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxSpeed field - Units: m/s - Returns nullable float representing the MaxSpeed field - - - - Set MaxSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgHeartRate field - Units: bpm - Returns nullable byte representing the AvgHeartRate field - - - - Set AvgHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the MaxHeartRate field - Units: bpm - Returns nullable byte representing the MaxHeartRate field - - - - Set MaxHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Returns nullable byte representing the AvgCadence field - - - - Set AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Nullable field value to be set - - - - Retrieves the MaxCadence field - Units: rpm - Returns nullable byte representing the MaxCadence field - - - - Set MaxCadence field - Units: rpm - Nullable field value to be set - - - - Retrieves the AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Returns nullable ushort representing the AvgPower field - - - - Set AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Nullable field value to be set - - - - Retrieves the MaxPower field - Units: watts - Returns nullable ushort representing the MaxPower field - - - - Set MaxPower field - Units: watts - Nullable field value to be set - - - - Retrieves the TotalAscent field - Units: m - Returns nullable ushort representing the TotalAscent field - - - - Set TotalAscent field - Units: m - Nullable field value to be set - - - - Retrieves the TotalDescent field - Units: m - Returns nullable ushort representing the TotalDescent field - - - - Set TotalDescent field - Units: m - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Retrieves the NecLat field - Units: semicircles - Comment: North east corner latitude. - Returns nullable int representing the NecLat field - - - - Set NecLat field - Units: semicircles - Comment: North east corner latitude. - Nullable field value to be set - - - - Retrieves the NecLong field - Units: semicircles - Comment: North east corner longitude. - Returns nullable int representing the NecLong field - - - - Set NecLong field - Units: semicircles - Comment: North east corner longitude. - Nullable field value to be set - - - - Retrieves the SwcLat field - Units: semicircles - Comment: South west corner latitude. - Returns nullable int representing the SwcLat field - - - - Set SwcLat field - Units: semicircles - Comment: South west corner latitude. - Nullable field value to be set - - - - Retrieves the SwcLong field - Units: semicircles - Comment: South west corner latitude. - Returns nullable int representing the SwcLong field - - - - Set SwcLong field - Units: semicircles - Comment: South west corner latitude. - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the NormalizedPower field - Units: watts - Returns nullable ushort representing the NormalizedPower field - - - - Set NormalizedPower field - Units: watts - Nullable field value to be set - - - - Retrieves the LeftRightBalance field - Returns nullable ushort representing the LeftRightBalance field - - - - Set LeftRightBalance field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the TotalWork field - Units: J - Returns nullable uint representing the TotalWork field - - - - Set TotalWork field - Units: J - Nullable field value to be set - - - - Retrieves the AvgAltitude field - Units: m - Returns nullable float representing the AvgAltitude field - - - - Set AvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the MaxAltitude field - Units: m - Returns nullable float representing the MaxAltitude field - - - - Set MaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the GpsAccuracy field - Units: m - Returns nullable byte representing the GpsAccuracy field - - - - Set GpsAccuracy field - Units: m - Nullable field value to be set - - - - Retrieves the AvgGrade field - Units: % - Returns nullable float representing the AvgGrade field - - - - Set AvgGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgPosGrade field - Units: % - Returns nullable float representing the AvgPosGrade field - - - - Set AvgPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgNegGrade field - Units: % - Returns nullable float representing the AvgNegGrade field - - - - Set AvgNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxPosGrade field - Units: % - Returns nullable float representing the MaxPosGrade field - - - - Set MaxPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxNegGrade field - Units: % - Returns nullable float representing the MaxNegGrade field - - - - Set MaxNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgTemperature field - Units: C - Returns nullable sbyte representing the AvgTemperature field - - - - Set AvgTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MaxTemperature field - Units: C - Returns nullable sbyte representing the MaxTemperature field - - - - Set MaxTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the TotalMovingTime field - Units: s - Returns nullable float representing the TotalMovingTime field - - - - Set TotalMovingTime field - Units: s - Nullable field value to be set - - - - Retrieves the AvgPosVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgPosVerticalSpeed field - - - - Set AvgPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgNegVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgNegVerticalSpeed field - - - - Set AvgNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxPosVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxPosVerticalSpeed field - - - - Set MaxPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxNegVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxNegVerticalSpeed field - - - - Set MaxNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - - - returns number of elements in field TimeInHrZone - - - - Retrieves the TimeInHrZone field - Units: s - 0 based index of TimeInHrZone element to retrieve - Returns nullable float representing the TimeInHrZone field - - - - Set TimeInHrZone field - Units: s - 0 based index of time_in_hr_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInSpeedZone - - - - Retrieves the TimeInSpeedZone field - Units: s - 0 based index of TimeInSpeedZone element to retrieve - Returns nullable float representing the TimeInSpeedZone field - - - - Set TimeInSpeedZone field - Units: s - 0 based index of time_in_speed_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInCadenceZone - - - - Retrieves the TimeInCadenceZone field - Units: s - 0 based index of TimeInCadenceZone element to retrieve - Returns nullable float representing the TimeInCadenceZone field - - - - Set TimeInCadenceZone field - Units: s - 0 based index of time_in_cadence_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInPowerZone - - - - Retrieves the TimeInPowerZone field - Units: s - 0 based index of TimeInPowerZone element to retrieve - Returns nullable float representing the TimeInPowerZone field - - - - Set TimeInPowerZone field - Units: s - 0 based index of time_in_power_zone - Nullable field value to be set - - - - Retrieves the RepetitionNum field - Returns nullable ushort representing the RepetitionNum field - - - - Set RepetitionNum field - Nullable field value to be set - - - - Retrieves the MinAltitude field - Units: m - Returns nullable float representing the MinAltitude field - - - - Set MinAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the MinHeartRate field - Units: bpm - Returns nullable byte representing the MinHeartRate field - - - - Set MinHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the ActiveTime field - Units: s - Returns nullable float representing the ActiveTime field - - - - Set ActiveTime field - Units: s - Nullable field value to be set - - - - Retrieves the WktStepIndex field - Returns nullable ushort representing the WktStepIndex field - - - - Set WktStepIndex field - Nullable field value to be set - - - - Retrieves the SportEvent field - Returns nullable SportEvent enum representing the SportEvent field - - - - Set SportEvent field - Nullable field value to be set - - - - Retrieves the AvgLeftTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgLeftTorqueEffectiveness field - - - - Set AvgLeftTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgRightTorqueEffectiveness field - - - - Set AvgRightTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgLeftPedalSmoothness field - Units: percent - Returns nullable float representing the AvgLeftPedalSmoothness field - - - - Set AvgLeftPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightPedalSmoothness field - Units: percent - Returns nullable float representing the AvgRightPedalSmoothness field - - - - Set AvgRightPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgCombinedPedalSmoothness field - Units: percent - Returns nullable float representing the AvgCombinedPedalSmoothness field - - - - Set AvgCombinedPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the Status field - Returns nullable SegmentLapStatus enum representing the Status field - - - - Set Status field - Nullable field value to be set - - - - Retrieves the Uuid field - Returns byte[] representing the Uuid field - - - - Retrieves the Uuid field - Returns String representing the Uuid field - - - - Set Uuid field - field value to be set - - - - Set Uuid field - field value to be set - - - - Retrieves the AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Returns nullable float representing the AvgFractionalCadence field - - - - Set AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Nullable field value to be set - - - - Retrieves the MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Returns nullable float representing the MaxFractionalCadence field - - - - Set MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Nullable field value to be set - - - - Retrieves the TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Returns nullable float representing the TotalFractionalCycles field - - - - Set TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Nullable field value to be set - - - - Retrieves the FrontGearShiftCount field - Returns nullable ushort representing the FrontGearShiftCount field - - - - Set FrontGearShiftCount field - Nullable field value to be set - - - - Retrieves the RearGearShiftCount field - Returns nullable ushort representing the RearGearShiftCount field - - - - Set RearGearShiftCount field - Nullable field value to be set - - - - Retrieves the TimeStanding field - Units: s - Comment: Total time spent in the standing position - Returns nullable float representing the TimeStanding field - - - - Set TimeStanding field - Units: s - Comment: Total time spent in the standing position - Nullable field value to be set - - - - Retrieves the StandCount field - Comment: Number of transitions to the standing state - Returns nullable ushort representing the StandCount field - - - - Set StandCount field - Comment: Number of transitions to the standing state - Nullable field value to be set - - - - Retrieves the AvgLeftPco field - Units: mm - Comment: Average left platform center offset - Returns nullable sbyte representing the AvgLeftPco field - - - - Set AvgLeftPco field - Units: mm - Comment: Average left platform center offset - Nullable field value to be set - - - - Retrieves the AvgRightPco field - Units: mm - Comment: Average right platform center offset - Returns nullable sbyte representing the AvgRightPco field - - - - Set AvgRightPco field - Units: mm - Comment: Average right platform center offset - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhase - - - - Retrieves the AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhase element to retrieve - Returns nullable float representing the AvgLeftPowerPhase field - - - - Set AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of avg_left_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhasePeak - - - - Retrieves the AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhasePeak element to retrieve - Returns nullable float representing the AvgLeftPowerPhasePeak field - - - - Set AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of avg_left_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhase - - - - Retrieves the AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhase element to retrieve - Returns nullable float representing the AvgRightPowerPhase field - - - - Set AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhasePeak - - - - Retrieves the AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhasePeak element to retrieve - Returns nullable float representing the AvgRightPowerPhasePeak field - - - - Set AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgPowerPosition - - - - Retrieves the AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of AvgPowerPosition element to retrieve - Returns nullable ushort representing the AvgPowerPosition field - - - - Set AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of avg_power_position - Nullable field value to be set - - - - - - returns number of elements in field MaxPowerPosition - - - - Retrieves the MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of MaxPowerPosition element to retrieve - Returns nullable ushort representing the MaxPowerPosition field - - - - Set MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of max_power_position - Nullable field value to be set - - - - - - returns number of elements in field AvgCadencePosition - - - - Retrieves the AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of AvgCadencePosition element to retrieve - Returns nullable byte representing the AvgCadencePosition field - - - - Set AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of avg_cadence_position - Nullable field value to be set - - - - - - returns number of elements in field MaxCadencePosition - - - - Retrieves the MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of MaxCadencePosition element to retrieve - Returns nullable byte representing the MaxCadencePosition field - - - - Set MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of max_cadence_position - Nullable field value to be set - - - - Retrieves the Manufacturer field - Comment: Manufacturer that produced the segment - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Comment: Manufacturer that produced the segment - Nullable field value to be set - - - - Retrieves the TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the TotalGrit field - - - - Set TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the TotalFlow field - - - - Set TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the AvgGrit field - - - - Set AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the AvgFlow field - - - - Set AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Returns nullable float representing the TotalFractionalAscent field - - - - Set TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Nullable field value to be set - - - - Retrieves the TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Returns nullable float representing the TotalFractionalDescent field - - - - Set TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Nullable field value to be set - - - - Retrieves the EnhancedAvgAltitude field - Units: m - Returns nullable float representing the EnhancedAvgAltitude field - - - - Set EnhancedAvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMaxAltitude field - Units: m - Returns nullable float representing the EnhancedMaxAltitude field - - - - Set EnhancedMaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMinAltitude field - Units: m - Returns nullable float representing the EnhancedMinAltitude field - - - - Set EnhancedMinAltitude field - Units: m - Nullable field value to be set - - - - Implements the SegmentLeaderboardEntry profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Name field - Comment: Friendly name assigned to leader - Returns byte[] representing the Name field - - - - Retrieves the Name field - Comment: Friendly name assigned to leader - Returns String representing the Name field - - - - Set Name field - Comment: Friendly name assigned to leader - field value to be set - - - - Set Name field - Comment: Friendly name assigned to leader - field value to be set - - - - Retrieves the Type field - Comment: Leader classification - Returns nullable SegmentLeaderboardType enum representing the Type field - - - - Set Type field - Comment: Leader classification - Nullable field value to be set - - - - Retrieves the GroupPrimaryKey field - Comment: Primary user ID of this leader - Returns nullable uint representing the GroupPrimaryKey field - - - - Set GroupPrimaryKey field - Comment: Primary user ID of this leader - Nullable field value to be set - - - - Retrieves the ActivityId field - Comment: ID of the activity associated with this leader time - Returns nullable uint representing the ActivityId field - - - - Set ActivityId field - Comment: ID of the activity associated with this leader time - Nullable field value to be set - - - - Retrieves the SegmentTime field - Units: s - Comment: Segment Time (includes pauses) - Returns nullable float representing the SegmentTime field - - - - Set SegmentTime field - Units: s - Comment: Segment Time (includes pauses) - Nullable field value to be set - - - - Retrieves the ActivityIdString field - Comment: String version of the activity_id. 21 characters long, express in decimal - Returns byte[] representing the ActivityIdString field - - - - Retrieves the ActivityIdString field - Comment: String version of the activity_id. 21 characters long, express in decimal - Returns String representing the ActivityIdString field - - - - Set ActivityIdString field - Comment: String version of the activity_id. 21 characters long, express in decimal - field value to be set - - - - Set ActivityIdString field - Comment: String version of the activity_id. 21 characters long, express in decimal - field value to be set - - - - Implements the SegmentPoint profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Comment: Accumulated distance along the segment at the described point - Returns nullable float representing the Distance field - - - - Set Distance field - Units: m - Comment: Accumulated distance along the segment at the described point - Nullable field value to be set - - - - Retrieves the Altitude field - Units: m - Comment: Accumulated altitude along the segment at the described point - Returns nullable float representing the Altitude field - - - - Set Altitude field - Units: m - Comment: Accumulated altitude along the segment at the described point - Nullable field value to be set - - - - - - returns number of elements in field LeaderTime - - - - Retrieves the LeaderTime field - Units: s - Comment: Accumualted time each leader board member required to reach the described point. This value is zero for all leader board members at the starting point of the segment. - 0 based index of LeaderTime element to retrieve - Returns nullable float representing the LeaderTime field - - - - Set LeaderTime field - Units: s - Comment: Accumualted time each leader board member required to reach the described point. This value is zero for all leader board members at the starting point of the segment. - 0 based index of leader_time - Nullable field value to be set - - - - Retrieves the EnhancedAltitude field - Units: m - Comment: Accumulated altitude along the segment at the described point - Returns nullable float representing the EnhancedAltitude field - - - - Set EnhancedAltitude field - Units: m - Comment: Accumulated altitude along the segment at the described point - Nullable field value to be set - - - - Implements the Session profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Comment: Selected bit is set for the current session. - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Comment: Selected bit is set for the current session. - Nullable field value to be set - - - - Retrieves the Timestamp field - Units: s - Comment: Sesson end time. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Sesson end time. - Nullable field value to be set - - - - Retrieves the Event field - Comment: session - Returns nullable Event enum representing the Event field - - - - Set Event field - Comment: session - Nullable field value to be set - - - - Retrieves the EventType field - Comment: stop - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Comment: stop - Nullable field value to be set - - - - Retrieves the StartTime field - Returns DateTime representing the StartTime field - - - - Set StartTime field - Nullable field value to be set - - - - Retrieves the StartPositionLat field - Units: semicircles - Returns nullable int representing the StartPositionLat field - - - - Set StartPositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the StartPositionLong field - Units: semicircles - Returns nullable int representing the StartPositionLong field - - - - Set StartPositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Returns nullable float representing the TotalElapsedTime field - - - - Set TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Nullable field value to be set - - - - Retrieves the TotalDistance field - Units: m - Returns nullable float representing the TotalDistance field - - - - Set TotalDistance field - Units: m - Nullable field value to be set - - - - Retrieves the TotalCycles field - Units: cycles - Returns nullable uint representing the TotalCycles field - - - - Set TotalCycles field - Units: cycles - Nullable field value to be set - - - - Retrieves the TotalStrides subfield - Units: strides - Nullable uint representing the TotalStrides subfield - - - - - Set TotalStrides subfield - Units: strides - Subfield value to be set - - - - Retrieves the TotalStrokes subfield - Units: strokes - Nullable uint representing the TotalStrokes subfield - - - - - Set TotalStrokes subfield - Units: strokes - Subfield value to be set - - - - Retrieves the TotalCalories field - Units: kcal - Returns nullable ushort representing the TotalCalories field - - - - Set TotalCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the TotalFatCalories field - Units: kcal - Returns nullable ushort representing the TotalFatCalories field - - - - Set TotalFatCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the AvgSpeed field - Units: m/s - Comment: total_distance / total_timer_time - Returns nullable float representing the AvgSpeed field - - - - Set AvgSpeed field - Units: m/s - Comment: total_distance / total_timer_time - Nullable field value to be set - - - - Retrieves the MaxSpeed field - Units: m/s - Returns nullable float representing the MaxSpeed field - - - - Set MaxSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgHeartRate field - Units: bpm - Comment: average heart rate (excludes pause time) - Returns nullable byte representing the AvgHeartRate field - - - - Set AvgHeartRate field - Units: bpm - Comment: average heart rate (excludes pause time) - Nullable field value to be set - - - - Retrieves the MaxHeartRate field - Units: bpm - Returns nullable byte representing the MaxHeartRate field - - - - Set MaxHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Returns nullable byte representing the AvgCadence field - - - - Set AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Nullable field value to be set - - - - Retrieves the AvgRunningCadence subfield - Units: strides/min - Nullable byte representing the AvgRunningCadence subfield - - - - - Set AvgRunningCadence subfield - Units: strides/min - Subfield value to be set - - - - Retrieves the MaxCadence field - Units: rpm - Returns nullable byte representing the MaxCadence field - - - - Set MaxCadence field - Units: rpm - Nullable field value to be set - - - - Retrieves the MaxRunningCadence subfield - Units: strides/min - Nullable byte representing the MaxRunningCadence subfield - - - - - Set MaxRunningCadence subfield - Units: strides/min - Subfield value to be set - - - - Retrieves the AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Returns nullable ushort representing the AvgPower field - - - - Set AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Nullable field value to be set - - - - Retrieves the MaxPower field - Units: watts - Returns nullable ushort representing the MaxPower field - - - - Set MaxPower field - Units: watts - Nullable field value to be set - - - - Retrieves the TotalAscent field - Units: m - Returns nullable ushort representing the TotalAscent field - - - - Set TotalAscent field - Units: m - Nullable field value to be set - - - - Retrieves the TotalDescent field - Units: m - Returns nullable ushort representing the TotalDescent field - - - - Set TotalDescent field - Units: m - Nullable field value to be set - - - - Retrieves the TotalTrainingEffect field - Returns nullable float representing the TotalTrainingEffect field - - - - Set TotalTrainingEffect field - Nullable field value to be set - - - - Retrieves the FirstLapIndex field - Returns nullable ushort representing the FirstLapIndex field - - - - Set FirstLapIndex field - Nullable field value to be set - - - - Retrieves the NumLaps field - Returns nullable ushort representing the NumLaps field - - - - Set NumLaps field - Nullable field value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Retrieves the Trigger field - Returns nullable SessionTrigger enum representing the Trigger field - - - - Set Trigger field - Nullable field value to be set - - - - Retrieves the NecLat field - Units: semicircles - Comment: North east corner latitude - Returns nullable int representing the NecLat field - - - - Set NecLat field - Units: semicircles - Comment: North east corner latitude - Nullable field value to be set - - - - Retrieves the NecLong field - Units: semicircles - Comment: North east corner longitude - Returns nullable int representing the NecLong field - - - - Set NecLong field - Units: semicircles - Comment: North east corner longitude - Nullable field value to be set - - - - Retrieves the SwcLat field - Units: semicircles - Comment: South west corner latitude - Returns nullable int representing the SwcLat field - - - - Set SwcLat field - Units: semicircles - Comment: South west corner latitude - Nullable field value to be set - - - - Retrieves the SwcLong field - Units: semicircles - Comment: South west corner longitude - Returns nullable int representing the SwcLong field - - - - Set SwcLong field - Units: semicircles - Comment: South west corner longitude - Nullable field value to be set - - - - Retrieves the NumLengths field - Units: lengths - Comment: # of lengths of swim pool - Returns nullable ushort representing the NumLengths field - - - - Set NumLengths field - Units: lengths - Comment: # of lengths of swim pool - Nullable field value to be set - - - - Retrieves the NormalizedPower field - Units: watts - Returns nullable ushort representing the NormalizedPower field - - - - Set NormalizedPower field - Units: watts - Nullable field value to be set - - - - Retrieves the TrainingStressScore field - Units: tss - Returns nullable float representing the TrainingStressScore field - - - - Set TrainingStressScore field - Units: tss - Nullable field value to be set - - - - Retrieves the IntensityFactor field - Units: if - Returns nullable float representing the IntensityFactor field - - - - Set IntensityFactor field - Units: if - Nullable field value to be set - - - - Retrieves the LeftRightBalance field - Returns nullable ushort representing the LeftRightBalance field - - - - Set LeftRightBalance field - Nullable field value to be set - - - - Retrieves the AvgStrokeCount field - Units: strokes/lap - Returns nullable float representing the AvgStrokeCount field - - - - Set AvgStrokeCount field - Units: strokes/lap - Nullable field value to be set - - - - Retrieves the AvgStrokeDistance field - Units: m - Returns nullable float representing the AvgStrokeDistance field - - - - Set AvgStrokeDistance field - Units: m - Nullable field value to be set - - - - Retrieves the SwimStroke field - Units: swim_stroke - Returns nullable SwimStroke enum representing the SwimStroke field - - - - Set SwimStroke field - Units: swim_stroke - Nullable field value to be set - - - - Retrieves the PoolLength field - Units: m - Returns nullable float representing the PoolLength field - - - - Set PoolLength field - Units: m - Nullable field value to be set - - - - Retrieves the ThresholdPower field - Units: watts - Returns nullable ushort representing the ThresholdPower field - - - - Set ThresholdPower field - Units: watts - Nullable field value to be set - - - - Retrieves the PoolLengthUnit field - Returns nullable DisplayMeasure enum representing the PoolLengthUnit field - - - - Set PoolLengthUnit field - Nullable field value to be set - - - - Retrieves the NumActiveLengths field - Units: lengths - Comment: # of active lengths of swim pool - Returns nullable ushort representing the NumActiveLengths field - - - - Set NumActiveLengths field - Units: lengths - Comment: # of active lengths of swim pool - Nullable field value to be set - - - - Retrieves the TotalWork field - Units: J - Returns nullable uint representing the TotalWork field - - - - Set TotalWork field - Units: J - Nullable field value to be set - - - - Retrieves the AvgAltitude field - Units: m - Returns nullable float representing the AvgAltitude field - - - - Set AvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the MaxAltitude field - Units: m - Returns nullable float representing the MaxAltitude field - - - - Set MaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the GpsAccuracy field - Units: m - Returns nullable byte representing the GpsAccuracy field - - - - Set GpsAccuracy field - Units: m - Nullable field value to be set - - - - Retrieves the AvgGrade field - Units: % - Returns nullable float representing the AvgGrade field - - - - Set AvgGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgPosGrade field - Units: % - Returns nullable float representing the AvgPosGrade field - - - - Set AvgPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgNegGrade field - Units: % - Returns nullable float representing the AvgNegGrade field - - - - Set AvgNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxPosGrade field - Units: % - Returns nullable float representing the MaxPosGrade field - - - - Set MaxPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxNegGrade field - Units: % - Returns nullable float representing the MaxNegGrade field - - - - Set MaxNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgTemperature field - Units: C - Returns nullable sbyte representing the AvgTemperature field - - - - Set AvgTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MaxTemperature field - Units: C - Returns nullable sbyte representing the MaxTemperature field - - - - Set MaxTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the TotalMovingTime field - Units: s - Returns nullable float representing the TotalMovingTime field - - - - Set TotalMovingTime field - Units: s - Nullable field value to be set - - - - Retrieves the AvgPosVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgPosVerticalSpeed field - - - - Set AvgPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgNegVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgNegVerticalSpeed field - - - - Set AvgNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxPosVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxPosVerticalSpeed field - - - - Set MaxPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxNegVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxNegVerticalSpeed field - - - - Set MaxNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MinHeartRate field - Units: bpm - Returns nullable byte representing the MinHeartRate field - - - - Set MinHeartRate field - Units: bpm - Nullable field value to be set - - - - - - returns number of elements in field TimeInHrZone - - - - Retrieves the TimeInHrZone field - Units: s - 0 based index of TimeInHrZone element to retrieve - Returns nullable float representing the TimeInHrZone field - - - - Set TimeInHrZone field - Units: s - 0 based index of time_in_hr_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInSpeedZone - - - - Retrieves the TimeInSpeedZone field - Units: s - 0 based index of TimeInSpeedZone element to retrieve - Returns nullable float representing the TimeInSpeedZone field - - - - Set TimeInSpeedZone field - Units: s - 0 based index of time_in_speed_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInCadenceZone - - - - Retrieves the TimeInCadenceZone field - Units: s - 0 based index of TimeInCadenceZone element to retrieve - Returns nullable float representing the TimeInCadenceZone field - - - - Set TimeInCadenceZone field - Units: s - 0 based index of time_in_cadence_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInPowerZone - - - - Retrieves the TimeInPowerZone field - Units: s - 0 based index of TimeInPowerZone element to retrieve - Returns nullable float representing the TimeInPowerZone field - - - - Set TimeInPowerZone field - Units: s - 0 based index of time_in_power_zone - Nullable field value to be set - - - - Retrieves the AvgLapTime field - Units: s - Returns nullable float representing the AvgLapTime field - - - - Set AvgLapTime field - Units: s - Nullable field value to be set - - - - Retrieves the BestLapIndex field - Returns nullable ushort representing the BestLapIndex field - - - - Set BestLapIndex field - Nullable field value to be set - - - - Retrieves the MinAltitude field - Units: m - Returns nullable float representing the MinAltitude field - - - - Set MinAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the PlayerScore field - Returns nullable ushort representing the PlayerScore field - - - - Set PlayerScore field - Nullable field value to be set - - - - Retrieves the OpponentScore field - Returns nullable ushort representing the OpponentScore field - - - - Set OpponentScore field - Nullable field value to be set - - - - Retrieves the OpponentName field - Returns byte[] representing the OpponentName field - - - - Retrieves the OpponentName field - Returns String representing the OpponentName field - - - - Set OpponentName field - field value to be set - - - - Set OpponentName field - field value to be set - - - - - - returns number of elements in field StrokeCount - - - - Retrieves the StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of StrokeCount element to retrieve - Returns nullable ushort representing the StrokeCount field - - - - Set StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of stroke_count - Nullable field value to be set - - - - - - returns number of elements in field ZoneCount - - - - Retrieves the ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of ZoneCount element to retrieve - Returns nullable ushort representing the ZoneCount field - - - - Set ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of zone_count - Nullable field value to be set - - - - Retrieves the MaxBallSpeed field - Units: m/s - Returns nullable float representing the MaxBallSpeed field - - - - Set MaxBallSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgBallSpeed field - Units: m/s - Returns nullable float representing the AvgBallSpeed field - - - - Set AvgBallSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgVerticalOscillation field - Units: mm - Returns nullable float representing the AvgVerticalOscillation field - - - - Set AvgVerticalOscillation field - Units: mm - Nullable field value to be set - - - - Retrieves the AvgStanceTimePercent field - Units: percent - Returns nullable float representing the AvgStanceTimePercent field - - - - Set AvgStanceTimePercent field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStanceTime field - Units: ms - Returns nullable float representing the AvgStanceTime field - - - - Set AvgStanceTime field - Units: ms - Nullable field value to be set - - - - Retrieves the AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Returns nullable float representing the AvgFractionalCadence field - - - - Set AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Nullable field value to be set - - - - Retrieves the MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Returns nullable float representing the MaxFractionalCadence field - - - - Set MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Nullable field value to be set - - - - Retrieves the TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Returns nullable float representing the TotalFractionalCycles field - - - - Set TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Nullable field value to be set - - - - - - returns number of elements in field AvgTotalHemoglobinConc - - - - Retrieves the AvgTotalHemoglobinConc field - Units: g/dL - Comment: Avg saturated and unsaturated hemoglobin - 0 based index of AvgTotalHemoglobinConc element to retrieve - Returns nullable float representing the AvgTotalHemoglobinConc field - - - - Set AvgTotalHemoglobinConc field - Units: g/dL - Comment: Avg saturated and unsaturated hemoglobin - 0 based index of avg_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field MinTotalHemoglobinConc - - - - Retrieves the MinTotalHemoglobinConc field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - 0 based index of MinTotalHemoglobinConc element to retrieve - Returns nullable float representing the MinTotalHemoglobinConc field - - - - Set MinTotalHemoglobinConc field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - 0 based index of min_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field MaxTotalHemoglobinConc - - - - Retrieves the MaxTotalHemoglobinConc field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - 0 based index of MaxTotalHemoglobinConc element to retrieve - Returns nullable float representing the MaxTotalHemoglobinConc field - - - - Set MaxTotalHemoglobinConc field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - 0 based index of max_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field AvgSaturatedHemoglobinPercent - - - - Retrieves the AvgSaturatedHemoglobinPercent field - Units: % - Comment: Avg percentage of hemoglobin saturated with oxygen - 0 based index of AvgSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the AvgSaturatedHemoglobinPercent field - - - - Set AvgSaturatedHemoglobinPercent field - Units: % - Comment: Avg percentage of hemoglobin saturated with oxygen - 0 based index of avg_saturated_hemoglobin_percent - Nullable field value to be set - - - - - - returns number of elements in field MinSaturatedHemoglobinPercent - - - - Retrieves the MinSaturatedHemoglobinPercent field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - 0 based index of MinSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the MinSaturatedHemoglobinPercent field - - - - Set MinSaturatedHemoglobinPercent field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - 0 based index of min_saturated_hemoglobin_percent - Nullable field value to be set - - - - - - returns number of elements in field MaxSaturatedHemoglobinPercent - - - - Retrieves the MaxSaturatedHemoglobinPercent field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - 0 based index of MaxSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the MaxSaturatedHemoglobinPercent field - - - - Set MaxSaturatedHemoglobinPercent field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - 0 based index of max_saturated_hemoglobin_percent - Nullable field value to be set - - - - Retrieves the AvgLeftTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgLeftTorqueEffectiveness field - - - - Set AvgLeftTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgRightTorqueEffectiveness field - - - - Set AvgRightTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgLeftPedalSmoothness field - Units: percent - Returns nullable float representing the AvgLeftPedalSmoothness field - - - - Set AvgLeftPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightPedalSmoothness field - Units: percent - Returns nullable float representing the AvgRightPedalSmoothness field - - - - Set AvgRightPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgCombinedPedalSmoothness field - Units: percent - Returns nullable float representing the AvgCombinedPedalSmoothness field - - - - Set AvgCombinedPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the SportIndex field - Returns nullable byte representing the SportIndex field - - - - Set SportIndex field - Nullable field value to be set - - - - Retrieves the TimeStanding field - Units: s - Comment: Total time spend in the standing position - Returns nullable float representing the TimeStanding field - - - - Set TimeStanding field - Units: s - Comment: Total time spend in the standing position - Nullable field value to be set - - - - Retrieves the StandCount field - Comment: Number of transitions to the standing state - Returns nullable ushort representing the StandCount field - - - - Set StandCount field - Comment: Number of transitions to the standing state - Nullable field value to be set - - - - Retrieves the AvgLeftPco field - Units: mm - Comment: Average platform center offset Left - Returns nullable sbyte representing the AvgLeftPco field - - - - Set AvgLeftPco field - Units: mm - Comment: Average platform center offset Left - Nullable field value to be set - - - - Retrieves the AvgRightPco field - Units: mm - Comment: Average platform center offset Right - Returns nullable sbyte representing the AvgRightPco field - - - - Set AvgRightPco field - Units: mm - Comment: Average platform center offset Right - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhase - - - - Retrieves the AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhase element to retrieve - Returns nullable float representing the AvgLeftPowerPhase field - - - - Set AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Indexes defined by power_phase_type. - 0 based index of avg_left_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhasePeak - - - - Retrieves the AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhasePeak element to retrieve - Returns nullable float representing the AvgLeftPowerPhasePeak field - - - - Set AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of avg_left_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhase - - - - Retrieves the AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhase element to retrieve - Returns nullable float representing the AvgRightPowerPhase field - - - - Set AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhasePeak - - - - Retrieves the AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhasePeak element to retrieve - Returns nullable float representing the AvgRightPowerPhasePeak field - - - - Set AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgPowerPosition - - - - Retrieves the AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of AvgPowerPosition element to retrieve - Returns nullable ushort representing the AvgPowerPosition field - - - - Set AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of avg_power_position - Nullable field value to be set - - - - - - returns number of elements in field MaxPowerPosition - - - - Retrieves the MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of MaxPowerPosition element to retrieve - Returns nullable ushort representing the MaxPowerPosition field - - - - Set MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of max_power_position - Nullable field value to be set - - - - - - returns number of elements in field AvgCadencePosition - - - - Retrieves the AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of AvgCadencePosition element to retrieve - Returns nullable byte representing the AvgCadencePosition field - - - - Set AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of avg_cadence_position - Nullable field value to be set - - - - - - returns number of elements in field MaxCadencePosition - - - - Retrieves the MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of MaxCadencePosition element to retrieve - Returns nullable byte representing the MaxCadencePosition field - - - - Set MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of max_cadence_position - Nullable field value to be set - - - - Retrieves the EnhancedAvgSpeed field - Units: m/s - Comment: total_distance / total_timer_time - Returns nullable float representing the EnhancedAvgSpeed field - - - - Set EnhancedAvgSpeed field - Units: m/s - Comment: total_distance / total_timer_time - Nullable field value to be set - - - - Retrieves the EnhancedMaxSpeed field - Units: m/s - Returns nullable float representing the EnhancedMaxSpeed field - - - - Set EnhancedMaxSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the EnhancedAvgAltitude field - Units: m - Returns nullable float representing the EnhancedAvgAltitude field - - - - Set EnhancedAvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMinAltitude field - Units: m - Returns nullable float representing the EnhancedMinAltitude field - - - - Set EnhancedMinAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMaxAltitude field - Units: m - Returns nullable float representing the EnhancedMaxAltitude field - - - - Set EnhancedMaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the AvgLevMotorPower field - Units: watts - Comment: lev average motor power during session - Returns nullable ushort representing the AvgLevMotorPower field - - - - Set AvgLevMotorPower field - Units: watts - Comment: lev average motor power during session - Nullable field value to be set - - - - Retrieves the MaxLevMotorPower field - Units: watts - Comment: lev maximum motor power during session - Returns nullable ushort representing the MaxLevMotorPower field - - - - Set MaxLevMotorPower field - Units: watts - Comment: lev maximum motor power during session - Nullable field value to be set - - - - Retrieves the LevBatteryConsumption field - Units: percent - Comment: lev battery consumption during session - Returns nullable float representing the LevBatteryConsumption field - - - - Set LevBatteryConsumption field - Units: percent - Comment: lev battery consumption during session - Nullable field value to be set - - - - Retrieves the AvgVerticalRatio field - Units: percent - Returns nullable float representing the AvgVerticalRatio field - - - - Set AvgVerticalRatio field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStanceTimeBalance field - Units: percent - Returns nullable float representing the AvgStanceTimeBalance field - - - - Set AvgStanceTimeBalance field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStepLength field - Units: mm - Returns nullable float representing the AvgStepLength field - - - - Set AvgStepLength field - Units: mm - Nullable field value to be set - - - - Retrieves the TotalAnaerobicTrainingEffect field - Returns nullable float representing the TotalAnaerobicTrainingEffect field - - - - Set TotalAnaerobicTrainingEffect field - Nullable field value to be set - - - - Retrieves the AvgVam field - Units: m/s - Returns nullable float representing the AvgVam field - - - - Set AvgVam field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgDepth field - Units: m - Comment: 0 if above water - Returns nullable float representing the AvgDepth field - - - - Set AvgDepth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the MaxDepth field - Units: m - Comment: 0 if above water - Returns nullable float representing the MaxDepth field - - - - Set MaxDepth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the SurfaceInterval field - Units: s - Comment: Time since end of last dive - Returns nullable uint representing the SurfaceInterval field - - - - Set SurfaceInterval field - Units: s - Comment: Time since end of last dive - Nullable field value to be set - - - - Retrieves the StartCns field - Units: percent - Returns nullable byte representing the StartCns field - - - - Set StartCns field - Units: percent - Nullable field value to be set - - - - Retrieves the EndCns field - Units: percent - Returns nullable byte representing the EndCns field - - - - Set EndCns field - Units: percent - Nullable field value to be set - - - - Retrieves the StartN2 field - Units: percent - Returns nullable ushort representing the StartN2 field - - - - Set StartN2 field - Units: percent - Nullable field value to be set - - - - Retrieves the EndN2 field - Units: percent - Returns nullable ushort representing the EndN2 field - - - - Set EndN2 field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRespirationRate field - Returns nullable byte representing the AvgRespirationRate field - - - - Set AvgRespirationRate field - Nullable field value to be set - - - - Retrieves the MaxRespirationRate field - Returns nullable byte representing the MaxRespirationRate field - - - - Set MaxRespirationRate field - Nullable field value to be set - - - - Retrieves the MinRespirationRate field - Returns nullable byte representing the MinRespirationRate field - - - - Set MinRespirationRate field - Nullable field value to be set - - - - Retrieves the MinTemperature field - Units: C - Returns nullable sbyte representing the MinTemperature field - - - - Set MinTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the O2Toxicity field - Units: OTUs - Returns nullable ushort representing the O2Toxicity field - - - - Set O2Toxicity field - Units: OTUs - Nullable field value to be set - - - - Retrieves the DiveNumber field - Returns nullable uint representing the DiveNumber field - - - - Set DiveNumber field - Nullable field value to be set - - - - Retrieves the TrainingLoadPeak field - Returns nullable float representing the TrainingLoadPeak field - - - - Set TrainingLoadPeak field - Nullable field value to be set - - - - Retrieves the EnhancedAvgRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedAvgRespirationRate field - - - - Set EnhancedAvgRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the EnhancedMaxRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedMaxRespirationRate field - - - - Set EnhancedMaxRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the EnhancedMinRespirationRate field - Returns nullable float representing the EnhancedMinRespirationRate field - - - - Set EnhancedMinRespirationRate field - Nullable field value to be set - - - - Retrieves the TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the TotalGrit field - - - - Set TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the TotalFlow field - - - - Set TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the JumpCount field - Returns nullable ushort representing the JumpCount field - - - - Set JumpCount field - Nullable field value to be set - - - - Retrieves the AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the AvgGrit field - - - - Set AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the AvgFlow field - - - - Set AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Returns nullable float representing the TotalFractionalAscent field - - - - Set TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Nullable field value to be set - - - - Retrieves the TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Returns nullable float representing the TotalFractionalDescent field - - - - Set TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Nullable field value to be set - - - - Retrieves the AvgCoreTemperature field - Units: C - Returns nullable float representing the AvgCoreTemperature field - - - - Set AvgCoreTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MinCoreTemperature field - Units: C - Returns nullable float representing the MinCoreTemperature field - - - - Set MinCoreTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MaxCoreTemperature field - Units: C - Returns nullable float representing the MaxCoreTemperature field - - - - Set MaxCoreTemperature field - Units: C - Nullable field value to be set - - - - Implements the Set profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Comment: Timestamp of the set - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Comment: Timestamp of the set - Nullable field value to be set - - - - Retrieves the Duration field - Units: s - Returns nullable float representing the Duration field - - - - Set Duration field - Units: s - Nullable field value to be set - - - - Retrieves the Repetitions field - Comment: # of repitions of the movement - Returns nullable ushort representing the Repetitions field - - - - Set Repetitions field - Comment: # of repitions of the movement - Nullable field value to be set - - - - Retrieves the Weight field - Units: kg - Comment: Amount of weight applied for the set - Returns nullable float representing the Weight field - - - - Set Weight field - Units: kg - Comment: Amount of weight applied for the set - Nullable field value to be set - - - - Retrieves the SetType field - Returns nullable byte representing the SetType field - - - - Set SetType field - Nullable field value to be set - - - - Retrieves the StartTime field - Comment: Start time of the set - Returns DateTime representing the StartTime field - - - - Set StartTime field - Comment: Start time of the set - Nullable field value to be set - - - - - - returns number of elements in field Category - - - - Retrieves the Category field - 0 based index of Category element to retrieve - Returns nullable ushort representing the Category field - - - - Set Category field - 0 based index of category - Nullable field value to be set - - - - - - returns number of elements in field CategorySubtype - - - - Retrieves the CategorySubtype field - Comment: Based on the associated category, see [category]_exercise_names - 0 based index of CategorySubtype element to retrieve - Returns nullable ushort representing the CategorySubtype field - - - - Set CategorySubtype field - Comment: Based on the associated category, see [category]_exercise_names - 0 based index of category_subtype - Nullable field value to be set - - - - Retrieves the WeightDisplayUnit field - Returns nullable ushort representing the WeightDisplayUnit field - - - - Set WeightDisplayUnit field - Nullable field value to be set - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the WktStepIndex field - Returns nullable ushort representing the WktStepIndex field - - - - Set WktStepIndex field - Nullable field value to be set - - - - Implements the SlaveDevice profile message. - - - - - Field Numbers for - - - - - Retrieves the Manufacturer field - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Nullable field value to be set - - - - Retrieves the Product field - Returns nullable ushort representing the Product field - - - - Set Product field - Nullable field value to be set - - - - Retrieves the FaveroProduct subfield - Nullable ushort representing the FaveroProduct subfield - - - - - Set FaveroProduct subfield - Subfield value to be set - - - - Retrieves the GarminProduct subfield - Nullable ushort representing the GarminProduct subfield - - - - - Set GarminProduct subfield - Subfield value to be set - - - - Implements the Software profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Version field - Returns nullable float representing the Version field - - - - Set Version field - Nullable field value to be set - - - - Retrieves the PartNumber field - Returns byte[] representing the PartNumber field - - - - Retrieves the PartNumber field - Returns String representing the PartNumber field - - - - Set PartNumber field - field value to be set - - - - Set PartNumber field - field value to be set - - - - Implements the SpeedZone profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HighValue field - Units: m/s - Returns nullable float representing the HighValue field - - - - Set HighValue field - Units: m/s - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Implements the Split profile message. - - - - - Field Numbers for - - - - - Retrieves the SplitType field - Returns nullable SplitType enum representing the SplitType field - - - - Set SplitType field - Nullable field value to be set - - - - Retrieves the TotalElapsedTime field - Units: s - Returns nullable float representing the TotalElapsedTime field - - - - Set TotalElapsedTime field - Units: s - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Nullable field value to be set - - - - Retrieves the TotalDistance field - Units: m - Returns nullable float representing the TotalDistance field - - - - Set TotalDistance field - Units: m - Nullable field value to be set - - - - Retrieves the StartTime field - Returns DateTime representing the StartTime field - - - - Set StartTime field - Nullable field value to be set - - - - Implements the Sport profile message. - - - - - Field Numbers for - - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Implements the StressLevel profile message. - - - - - Field Numbers for - - - - - Retrieves the StressLevelValue field - Returns nullable short representing the StressLevelValue field - - - - Set StressLevelValue field - Nullable field value to be set - - - - Retrieves the StressLevelTime field - Units: s - Comment: Time stress score was calculated - Returns DateTime representing the StressLevelTime field - - - - Set StressLevelTime field - Units: s - Comment: Time stress score was calculated - Nullable field value to be set - - - - Implements the TankSummary profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Sensor field - Returns nullable uint representing the Sensor field - - - - Set Sensor field - Nullable field value to be set - - - - Retrieves the StartPressure field - Units: bar - Returns nullable float representing the StartPressure field - - - - Set StartPressure field - Units: bar - Nullable field value to be set - - - - Retrieves the EndPressure field - Units: bar - Returns nullable float representing the EndPressure field - - - - Set EndPressure field - Units: bar - Nullable field value to be set - - - - Retrieves the VolumeUsed field - Units: L - Returns nullable float representing the VolumeUsed field - - - - Set VolumeUsed field - Units: L - Nullable field value to be set - - - - Implements the TankUpdate profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Sensor field - Returns nullable uint representing the Sensor field - - - - Set Sensor field - Nullable field value to be set - - - - Retrieves the Pressure field - Units: bar - Returns nullable float representing the Pressure field - - - - Set Pressure field - Units: bar - Nullable field value to be set - - - - Implements the ThreeDSensorCalibration profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the SensorType field - Comment: Indicates which sensor the calibration is for - Returns nullable SensorType enum representing the SensorType field - - - - Set SensorType field - Comment: Indicates which sensor the calibration is for - Nullable field value to be set - - - - Retrieves the CalibrationFactor field - Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - Returns nullable uint representing the CalibrationFactor field - - - - Set CalibrationFactor field - Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - Nullable field value to be set - - - - Retrieves the AccelCalFactor subfield - Units: g - Comment: Accelerometer calibration factor - Nullable uint representing the AccelCalFactor subfield - - - - - Set AccelCalFactor subfield - Units: g - Comment: Accelerometer calibration factor - Subfield value to be set - - - - Retrieves the GyroCalFactor subfield - Units: deg/s - Comment: Gyro calibration factor - Nullable uint representing the GyroCalFactor subfield - - - - - Set GyroCalFactor subfield - Units: deg/s - Comment: Gyro calibration factor - Subfield value to be set - - - - Retrieves the CalibrationDivisor field - Units: counts - Comment: Calibration factor divisor - Returns nullable uint representing the CalibrationDivisor field - - - - Set CalibrationDivisor field - Units: counts - Comment: Calibration factor divisor - Nullable field value to be set - - - - Retrieves the LevelShift field - Comment: Level shift value used to shift the ADC value back into range - Returns nullable uint representing the LevelShift field - - - - Set LevelShift field - Comment: Level shift value used to shift the ADC value back into range - Nullable field value to be set - - - - - - returns number of elements in field OffsetCal - - - - Retrieves the OffsetCal field - Comment: Internal calibration factors, one for each: xy, yx, zx - 0 based index of OffsetCal element to retrieve - Returns nullable int representing the OffsetCal field - - - - Set OffsetCal field - Comment: Internal calibration factors, one for each: xy, yx, zx - 0 based index of offset_cal - Nullable field value to be set - - - - - - returns number of elements in field OrientationMatrix - - - - Retrieves the OrientationMatrix field - Comment: 3 x 3 rotation matrix (row major) - 0 based index of OrientationMatrix element to retrieve - Returns nullable float representing the OrientationMatrix field - - - - Set OrientationMatrix field - Comment: 3 x 3 rotation matrix (row major) - 0 based index of orientation_matrix - Nullable field value to be set - - - - Implements the TimeInZone profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the ReferenceMesg field - Returns nullable ushort representing the ReferenceMesg field - - - - Set ReferenceMesg field - Nullable field value to be set - - - - Retrieves the ReferenceIndex field - Returns nullable ushort representing the ReferenceIndex field - - - - Set ReferenceIndex field - Nullable field value to be set - - - - - - returns number of elements in field TimeInHrZone - - - - Retrieves the TimeInHrZone field - Units: s - 0 based index of TimeInHrZone element to retrieve - Returns nullable float representing the TimeInHrZone field - - - - Set TimeInHrZone field - Units: s - 0 based index of time_in_hr_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInSpeedZone - - - - Retrieves the TimeInSpeedZone field - Units: s - 0 based index of TimeInSpeedZone element to retrieve - Returns nullable float representing the TimeInSpeedZone field - - - - Set TimeInSpeedZone field - Units: s - 0 based index of time_in_speed_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInCadenceZone - - - - Retrieves the TimeInCadenceZone field - Units: s - 0 based index of TimeInCadenceZone element to retrieve - Returns nullable float representing the TimeInCadenceZone field - - - - Set TimeInCadenceZone field - Units: s - 0 based index of time_in_cadence_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInPowerZone - - - - Retrieves the TimeInPowerZone field - Units: s - 0 based index of TimeInPowerZone element to retrieve - Returns nullable float representing the TimeInPowerZone field - - - - Set TimeInPowerZone field - Units: s - 0 based index of time_in_power_zone - Nullable field value to be set - - - - - - returns number of elements in field HrZoneHighBoundary - - - - Retrieves the HrZoneHighBoundary field - Units: bpm - 0 based index of HrZoneHighBoundary element to retrieve - Returns nullable byte representing the HrZoneHighBoundary field - - - - Set HrZoneHighBoundary field - Units: bpm - 0 based index of hr_zone_high_boundary - Nullable field value to be set - - - - - - returns number of elements in field SpeedZoneHighBoundary - - - - Retrieves the SpeedZoneHighBoundary field - Units: m/s - 0 based index of SpeedZoneHighBoundary element to retrieve - Returns nullable float representing the SpeedZoneHighBoundary field - - - - Set SpeedZoneHighBoundary field - Units: m/s - 0 based index of speed_zone_high_boundary - Nullable field value to be set - - - - - - returns number of elements in field CadenceZoneHighBondary - - - - Retrieves the CadenceZoneHighBondary field - Units: rpm - 0 based index of CadenceZoneHighBondary element to retrieve - Returns nullable byte representing the CadenceZoneHighBondary field - - - - Set CadenceZoneHighBondary field - Units: rpm - 0 based index of cadence_zone_high_bondary - Nullable field value to be set - - - - - - returns number of elements in field PowerZoneHighBoundary - - - - Retrieves the PowerZoneHighBoundary field - Units: watts - 0 based index of PowerZoneHighBoundary element to retrieve - Returns nullable ushort representing the PowerZoneHighBoundary field - - - - Set PowerZoneHighBoundary field - Units: watts - 0 based index of power_zone_high_boundary - Nullable field value to be set - - - - Retrieves the HrCalcType field - Returns nullable HrZoneCalc enum representing the HrCalcType field - - - - Set HrCalcType field - Nullable field value to be set - - - - Retrieves the MaxHeartRate field - Returns nullable byte representing the MaxHeartRate field - - - - Set MaxHeartRate field - Nullable field value to be set - - - - Retrieves the RestingHeartRate field - Returns nullable byte representing the RestingHeartRate field - - - - Set RestingHeartRate field - Nullable field value to be set - - - - Retrieves the ThresholdHeartRate field - Returns nullable byte representing the ThresholdHeartRate field - - - - Set ThresholdHeartRate field - Nullable field value to be set - - - - Retrieves the PwrCalcType field - Returns nullable PwrZoneCalc enum representing the PwrCalcType field - - - - Set PwrCalcType field - Nullable field value to be set - - - - Retrieves the FunctionalThresholdPower field - Returns nullable ushort representing the FunctionalThresholdPower field - - - - Set FunctionalThresholdPower field - Nullable field value to be set - - - - Implements the TimestampCorrelation profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of UTC timestamp at the time the system timestamp was recorded. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of UTC timestamp at the time the system timestamp was recorded. - Nullable field value to be set - - - - Retrieves the FractionalTimestamp field - Units: s - Comment: Fractional part of the UTC timestamp at the time the system timestamp was recorded. - Returns nullable float representing the FractionalTimestamp field - - - - Set FractionalTimestamp field - Units: s - Comment: Fractional part of the UTC timestamp at the time the system timestamp was recorded. - Nullable field value to be set - - - - Retrieves the SystemTimestamp field - Units: s - Comment: Whole second part of the system timestamp - Returns DateTime representing the SystemTimestamp field - - - - Set SystemTimestamp field - Units: s - Comment: Whole second part of the system timestamp - Nullable field value to be set - - - - Retrieves the FractionalSystemTimestamp field - Units: s - Comment: Fractional part of the system timestamp - Returns nullable float representing the FractionalSystemTimestamp field - - - - Set FractionalSystemTimestamp field - Units: s - Comment: Fractional part of the system timestamp - Nullable field value to be set - - - - Retrieves the LocalTimestamp field - Units: s - Comment: timestamp epoch expressed in local time used to convert timestamps to local time - Returns nullable uint representing the LocalTimestamp field - - - - Set LocalTimestamp field - Units: s - Comment: timestamp epoch expressed in local time used to convert timestamps to local time - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the UTC timestamp at the time the system timestamp was recorded. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the UTC timestamp at the time the system timestamp was recorded. - Nullable field value to be set - - - - Retrieves the SystemTimestampMs field - Units: ms - Comment: Millisecond part of the system timestamp - Returns nullable ushort representing the SystemTimestampMs field - - - - Set SystemTimestampMs field - Units: ms - Comment: Millisecond part of the system timestamp - Nullable field value to be set - - - - Implements the Totals profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the TimerTime field - Units: s - Comment: Excludes pauses - Returns nullable uint representing the TimerTime field - - - - Set TimerTime field - Units: s - Comment: Excludes pauses - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Returns nullable uint representing the Distance field - - - - Set Distance field - Units: m - Nullable field value to be set - - - - Retrieves the Calories field - Units: kcal - Returns nullable uint representing the Calories field - - - - Set Calories field - Units: kcal - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the ElapsedTime field - Units: s - Comment: Includes pauses - Returns nullable uint representing the ElapsedTime field - - - - Set ElapsedTime field - Units: s - Comment: Includes pauses - Nullable field value to be set - - - - Retrieves the Sessions field - Returns nullable ushort representing the Sessions field - - - - Set Sessions field - Nullable field value to be set - - - - Retrieves the ActiveTime field - Units: s - Returns nullable uint representing the ActiveTime field - - - - Set ActiveTime field - Units: s - Nullable field value to be set - - - - Retrieves the SportIndex field - Returns nullable byte representing the SportIndex field - - - - Set SportIndex field - Nullable field value to be set - - - - Implements the TrainingFile profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable File enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Manufacturer field - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Nullable field value to be set - - - - Retrieves the Product field - Returns nullable ushort representing the Product field - - - - Set Product field - Nullable field value to be set - - - - Retrieves the FaveroProduct subfield - Nullable ushort representing the FaveroProduct subfield - - - - - Set FaveroProduct subfield - Subfield value to be set - - - - Retrieves the GarminProduct subfield - Nullable ushort representing the GarminProduct subfield - - - - - Set GarminProduct subfield - Subfield value to be set - - - - Retrieves the SerialNumber field - Returns nullable uint representing the SerialNumber field - - - - Set SerialNumber field - Nullable field value to be set - - - - Retrieves the TimeCreated field - Returns DateTime representing the TimeCreated field - - - - Set TimeCreated field - Nullable field value to be set - - - - Implements the UserProfile profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the FriendlyName field - Returns byte[] representing the FriendlyName field - - - - Retrieves the FriendlyName field - Returns String representing the FriendlyName field - - - - Set FriendlyName field - field value to be set - - - - Set FriendlyName field - field value to be set - - - - Retrieves the Gender field - Returns nullable Gender enum representing the Gender field - - - - Set Gender field - Nullable field value to be set - - - - Retrieves the Age field - Units: years - Returns nullable byte representing the Age field - - - - Set Age field - Units: years - Nullable field value to be set - - - - Retrieves the Height field - Units: m - Returns nullable float representing the Height field - - - - Set Height field - Units: m - Nullable field value to be set - - - - Retrieves the Weight field - Units: kg - Returns nullable float representing the Weight field - - - - Set Weight field - Units: kg - Nullable field value to be set - - - - Retrieves the Language field - Returns nullable Language enum representing the Language field - - - - Set Language field - Nullable field value to be set - - - - Retrieves the ElevSetting field - Returns nullable DisplayMeasure enum representing the ElevSetting field - - - - Set ElevSetting field - Nullable field value to be set - - - - Retrieves the WeightSetting field - Returns nullable DisplayMeasure enum representing the WeightSetting field - - - - Set WeightSetting field - Nullable field value to be set - - - - Retrieves the RestingHeartRate field - Units: bpm - Returns nullable byte representing the RestingHeartRate field - - - - Set RestingHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the DefaultMaxRunningHeartRate field - Units: bpm - Returns nullable byte representing the DefaultMaxRunningHeartRate field - - - - Set DefaultMaxRunningHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the DefaultMaxBikingHeartRate field - Units: bpm - Returns nullable byte representing the DefaultMaxBikingHeartRate field - - - - Set DefaultMaxBikingHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the DefaultMaxHeartRate field - Units: bpm - Returns nullable byte representing the DefaultMaxHeartRate field - - - - Set DefaultMaxHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the HrSetting field - Returns nullable DisplayHeart enum representing the HrSetting field - - - - Set HrSetting field - Nullable field value to be set - - - - Retrieves the SpeedSetting field - Returns nullable DisplayMeasure enum representing the SpeedSetting field - - - - Set SpeedSetting field - Nullable field value to be set - - - - Retrieves the DistSetting field - Returns nullable DisplayMeasure enum representing the DistSetting field - - - - Set DistSetting field - Nullable field value to be set - - - - Retrieves the PowerSetting field - Returns nullable DisplayPower enum representing the PowerSetting field - - - - Set PowerSetting field - Nullable field value to be set - - - - Retrieves the ActivityClass field - Returns nullable ActivityClass enum representing the ActivityClass field - - - - Set ActivityClass field - Nullable field value to be set - - - - Retrieves the PositionSetting field - Returns nullable DisplayPosition enum representing the PositionSetting field - - - - Set PositionSetting field - Nullable field value to be set - - - - Retrieves the TemperatureSetting field - Returns nullable DisplayMeasure enum representing the TemperatureSetting field - - - - Set TemperatureSetting field - Nullable field value to be set - - - - Retrieves the LocalId field - Returns nullable ushort representing the LocalId field - - - - Set LocalId field - Nullable field value to be set - - - - - - returns number of elements in field GlobalId - - - - Retrieves the GlobalId field - 0 based index of GlobalId element to retrieve - Returns nullable byte representing the GlobalId field - - - - Set GlobalId field - 0 based index of global_id - Nullable field value to be set - - - - Retrieves the WakeTime field - Comment: Typical wake time - Returns nullable uint representing the WakeTime field - - - - Set WakeTime field - Comment: Typical wake time - Nullable field value to be set - - - - Retrieves the SleepTime field - Comment: Typical bed time - Returns nullable uint representing the SleepTime field - - - - Set SleepTime field - Comment: Typical bed time - Nullable field value to be set - - - - Retrieves the HeightSetting field - Returns nullable DisplayMeasure enum representing the HeightSetting field - - - - Set HeightSetting field - Nullable field value to be set - - - - Retrieves the UserRunningStepLength field - Units: m - Comment: User defined running step length set to 0 for auto length - Returns nullable float representing the UserRunningStepLength field - - - - Set UserRunningStepLength field - Units: m - Comment: User defined running step length set to 0 for auto length - Nullable field value to be set - - - - Retrieves the UserWalkingStepLength field - Units: m - Comment: User defined walking step length set to 0 for auto length - Returns nullable float representing the UserWalkingStepLength field - - - - Set UserWalkingStepLength field - Units: m - Comment: User defined walking step length set to 0 for auto length - Nullable field value to be set - - - - Retrieves the DepthSetting field - Returns nullable DisplayMeasure enum representing the DepthSetting field - - - - Set DepthSetting field - Nullable field value to be set - - - - Retrieves the DiveCount field - Returns nullable uint representing the DiveCount field - - - - Set DiveCount field - Nullable field value to be set - - - - Implements the VideoClip profile message. - - - - - Field Numbers for - - - - - Retrieves the ClipNumber field - Returns nullable ushort representing the ClipNumber field - - - - Set ClipNumber field - Nullable field value to be set - - - - Retrieves the StartTimestamp field - Returns DateTime representing the StartTimestamp field - - - - Set StartTimestamp field - Nullable field value to be set - - - - Retrieves the StartTimestampMs field - Returns nullable ushort representing the StartTimestampMs field - - - - Set StartTimestampMs field - Nullable field value to be set - - - - Retrieves the EndTimestamp field - Returns DateTime representing the EndTimestamp field - - - - Set EndTimestamp field - Nullable field value to be set - - - - Retrieves the EndTimestampMs field - Returns nullable ushort representing the EndTimestampMs field - - - - Set EndTimestampMs field - Nullable field value to be set - - - - Retrieves the ClipStart field - Units: ms - Comment: Start of clip in video time - Returns nullable uint representing the ClipStart field - - - - Set ClipStart field - Units: ms - Comment: Start of clip in video time - Nullable field value to be set - - - - Retrieves the ClipEnd field - Units: ms - Comment: End of clip in video time - Returns nullable uint representing the ClipEnd field - - - - Set ClipEnd field - Units: ms - Comment: End of clip in video time - Nullable field value to be set - - - - Implements the VideoDescription profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Comment: Long descriptions will be split into multiple parts - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Comment: Long descriptions will be split into multiple parts - Nullable field value to be set - - - - Retrieves the MessageCount field - Comment: Total number of description parts - Returns nullable ushort representing the MessageCount field - - - - Set MessageCount field - Comment: Total number of description parts - Nullable field value to be set - - - - Retrieves the Text field - Returns byte[] representing the Text field - - - - Retrieves the Text field - Returns String representing the Text field - - - - Set Text field - field value to be set - - - - Set Text field - field value to be set - - - - Implements the VideoFrame profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - Retrieves the FrameNumber field - Comment: Number of the frame that the timestamp and timestamp_ms correlate to - Returns nullable uint representing the FrameNumber field - - - - Set FrameNumber field - Comment: Number of the frame that the timestamp and timestamp_ms correlate to - Nullable field value to be set - - - - Implements the Video profile message. - - - - - Field Numbers for - - - - - Retrieves the Url field - Returns byte[] representing the Url field - - - - Retrieves the Url field - Returns String representing the Url field - - - - Set Url field - field value to be set - - - - Set Url field - field value to be set - - - - Retrieves the HostingProvider field - Returns byte[] representing the HostingProvider field - - - - Retrieves the HostingProvider field - Returns String representing the HostingProvider field - - - - Set HostingProvider field - field value to be set - - - - Set HostingProvider field - field value to be set - - - - Retrieves the Duration field - Units: ms - Comment: Playback time of video - Returns nullable uint representing the Duration field - - - - Set Duration field - Units: ms - Comment: Playback time of video - Nullable field value to be set - - - - Implements the VideoTitle profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Comment: Long titles will be split into multiple parts - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Comment: Long titles will be split into multiple parts - Nullable field value to be set - - - - Retrieves the MessageCount field - Comment: Total number of title parts - Returns nullable ushort representing the MessageCount field - - - - Set MessageCount field - Comment: Total number of title parts - Nullable field value to be set - - - - Retrieves the Text field - Returns byte[] representing the Text field - - - - Retrieves the Text field - Returns String representing the Text field - - - - Set Text field - field value to be set - - - - Set Text field - field value to be set - - - - Implements the WatchfaceSettings profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Mode field - Returns nullable WatchfaceMode enum representing the Mode field - - - - Set Mode field - Nullable field value to be set - - - - Retrieves the Layout field - Returns nullable byte representing the Layout field - - - - Set Layout field - Nullable field value to be set - - - - Retrieves the DigitalLayout subfield - Nullable DigitalWatchfaceLayout enum representing the DigitalLayout subfield - - - - - Set DigitalLayout subfield - Subfield value to be set - - - - Retrieves the AnalogLayout subfield - Nullable AnalogWatchfaceLayout enum representing the AnalogLayout subfield - - - - - Set AnalogLayout subfield - Subfield value to be set - - - - Implements the WeatherAlert profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the ReportId field - Comment: Unique identifier from GCS report ID string, length is 12 - Returns byte[] representing the ReportId field - - - - Retrieves the ReportId field - Comment: Unique identifier from GCS report ID string, length is 12 - Returns String representing the ReportId field - - - - Set ReportId field - Comment: Unique identifier from GCS report ID string, length is 12 - field value to be set - - - - Set ReportId field - Comment: Unique identifier from GCS report ID string, length is 12 - field value to be set - - - - Retrieves the IssueTime field - Comment: Time alert was issued - Returns DateTime representing the IssueTime field - - - - Set IssueTime field - Comment: Time alert was issued - Nullable field value to be set - - - - Retrieves the ExpireTime field - Comment: Time alert expires - Returns DateTime representing the ExpireTime field - - - - Set ExpireTime field - Comment: Time alert expires - Nullable field value to be set - - - - Retrieves the Severity field - Comment: Warning, Watch, Advisory, Statement - Returns nullable WeatherSeverity enum representing the Severity field - - - - Set Severity field - Comment: Warning, Watch, Advisory, Statement - Nullable field value to be set - - - - Retrieves the Type field - Comment: Tornado, Severe Thunderstorm, etc. - Returns nullable WeatherSevereType enum representing the Type field - - - - Set Type field - Comment: Tornado, Severe Thunderstorm, etc. - Nullable field value to be set - - - - Implements the WeatherConditions profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Comment: time of update for current conditions, else forecast time - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Comment: time of update for current conditions, else forecast time - Nullable field value to be set - - - - Retrieves the WeatherReport field - Comment: Current or forecast - Returns nullable WeatherReport enum representing the WeatherReport field - - - - Set WeatherReport field - Comment: Current or forecast - Nullable field value to be set - - - - Retrieves the Temperature field - Units: C - Returns nullable sbyte representing the Temperature field - - - - Set Temperature field - Units: C - Nullable field value to be set - - - - Retrieves the Condition field - Comment: Corresponds to GSC Response weatherIcon field - Returns nullable WeatherStatus enum representing the Condition field - - - - Set Condition field - Comment: Corresponds to GSC Response weatherIcon field - Nullable field value to be set - - - - Retrieves the WindDirection field - Units: degrees - Returns nullable ushort representing the WindDirection field - - - - Set WindDirection field - Units: degrees - Nullable field value to be set - - - - Retrieves the WindSpeed field - Units: m/s - Returns nullable float representing the WindSpeed field - - - - Set WindSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the PrecipitationProbability field - Comment: range 0-100 - Returns nullable byte representing the PrecipitationProbability field - - - - Set PrecipitationProbability field - Comment: range 0-100 - Nullable field value to be set - - - - Retrieves the TemperatureFeelsLike field - Units: C - Comment: Heat Index if GCS heatIdx above or equal to 90F or wind chill if GCS windChill below or equal to 32F - Returns nullable sbyte representing the TemperatureFeelsLike field - - - - Set TemperatureFeelsLike field - Units: C - Comment: Heat Index if GCS heatIdx above or equal to 90F or wind chill if GCS windChill below or equal to 32F - Nullable field value to be set - - - - Retrieves the RelativeHumidity field - Returns nullable byte representing the RelativeHumidity field - - - - Set RelativeHumidity field - Nullable field value to be set - - - - Retrieves the Location field - Comment: string corresponding to GCS response location string - Returns byte[] representing the Location field - - - - Retrieves the Location field - Comment: string corresponding to GCS response location string - Returns String representing the Location field - - - - Set Location field - Comment: string corresponding to GCS response location string - field value to be set - - - - Set Location field - Comment: string corresponding to GCS response location string - field value to be set - - - - Retrieves the ObservedAtTime field - Returns DateTime representing the ObservedAtTime field - - - - Set ObservedAtTime field - Nullable field value to be set - - - - Retrieves the ObservedLocationLat field - Units: semicircles - Returns nullable int representing the ObservedLocationLat field - - - - Set ObservedLocationLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the ObservedLocationLong field - Units: semicircles - Returns nullable int representing the ObservedLocationLong field - - - - Set ObservedLocationLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the DayOfWeek field - Returns nullable DayOfWeek enum representing the DayOfWeek field - - - - Set DayOfWeek field - Nullable field value to be set - - - - Retrieves the HighTemperature field - Units: C - Returns nullable sbyte representing the HighTemperature field - - - - Set HighTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the LowTemperature field - Units: C - Returns nullable sbyte representing the LowTemperature field - - - - Set LowTemperature field - Units: C - Nullable field value to be set - - - - Implements the WeightScale profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Weight field - Units: kg - Returns nullable float representing the Weight field - - - - Set Weight field - Units: kg - Nullable field value to be set - - - - Retrieves the PercentFat field - Units: % - Returns nullable float representing the PercentFat field - - - - Set PercentFat field - Units: % - Nullable field value to be set - - - - Retrieves the PercentHydration field - Units: % - Returns nullable float representing the PercentHydration field - - - - Set PercentHydration field - Units: % - Nullable field value to be set - - - - Retrieves the VisceralFatMass field - Units: kg - Returns nullable float representing the VisceralFatMass field - - - - Set VisceralFatMass field - Units: kg - Nullable field value to be set - - - - Retrieves the BoneMass field - Units: kg - Returns nullable float representing the BoneMass field - - - - Set BoneMass field - Units: kg - Nullable field value to be set - - - - Retrieves the MuscleMass field - Units: kg - Returns nullable float representing the MuscleMass field - - - - Set MuscleMass field - Units: kg - Nullable field value to be set - - - - Retrieves the BasalMet field - Units: kcal/day - Returns nullable float representing the BasalMet field - - - - Set BasalMet field - Units: kcal/day - Nullable field value to be set - - - - Retrieves the PhysiqueRating field - Returns nullable byte representing the PhysiqueRating field - - - - Set PhysiqueRating field - Nullable field value to be set - - - - Retrieves the ActiveMet field - Units: kcal/day - Comment: ~4kJ per kcal, 0.25 allows max 16384 kcal - Returns nullable float representing the ActiveMet field - - - - Set ActiveMet field - Units: kcal/day - Comment: ~4kJ per kcal, 0.25 allows max 16384 kcal - Nullable field value to be set - - - - Retrieves the MetabolicAge field - Units: years - Returns nullable byte representing the MetabolicAge field - - - - Set MetabolicAge field - Units: years - Nullable field value to be set - - - - Retrieves the VisceralFatRating field - Returns nullable byte representing the VisceralFatRating field - - - - Set VisceralFatRating field - Nullable field value to be set - - - - Retrieves the UserProfileIndex field - Comment: Associates this weight scale message to a user. This corresponds to the index of the user profile message in the weight scale file. - Returns nullable ushort representing the UserProfileIndex field - - - - Set UserProfileIndex field - Comment: Associates this weight scale message to a user. This corresponds to the index of the user profile message in the weight scale file. - Nullable field value to be set - - - - Implements the Workout profile message. - - - - - Field Numbers for - - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the Capabilities field - Returns nullable uint representing the Capabilities field - - - - Set Capabilities field - Nullable field value to be set - - - - Retrieves the NumValidSteps field - Comment: number of valid steps - Returns nullable ushort representing the NumValidSteps field - - - - Set NumValidSteps field - Comment: number of valid steps - Nullable field value to be set - - - - Retrieves the WktName field - Returns byte[] representing the WktName field - - - - Retrieves the WktName field - Returns String representing the WktName field - - - - Set WktName field - field value to be set - - - - Set WktName field - field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the PoolLength field - Units: m - Returns nullable float representing the PoolLength field - - - - Set PoolLength field - Units: m - Nullable field value to be set - - - - Retrieves the PoolLengthUnit field - Returns nullable DisplayMeasure enum representing the PoolLengthUnit field - - - - Set PoolLengthUnit field - Nullable field value to be set - - - - Implements the WorkoutSession profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the NumValidSteps field - Returns nullable ushort representing the NumValidSteps field - - - - Set NumValidSteps field - Nullable field value to be set - - - - Retrieves the FirstStepIndex field - Returns nullable ushort representing the FirstStepIndex field - - - - Set FirstStepIndex field - Nullable field value to be set - - - - Retrieves the PoolLength field - Units: m - Returns nullable float representing the PoolLength field - - - - Set PoolLength field - Units: m - Nullable field value to be set - - - - Retrieves the PoolLengthUnit field - Returns nullable DisplayMeasure enum representing the PoolLengthUnit field - - - - Set PoolLengthUnit field - Nullable field value to be set - - - - Implements the WorkoutStep profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the WktStepName field - Returns byte[] representing the WktStepName field - - - - Retrieves the WktStepName field - Returns String representing the WktStepName field - - - - Set WktStepName field - field value to be set - - - - Set WktStepName field - field value to be set - - - - Retrieves the DurationType field - Returns nullable WktStepDuration enum representing the DurationType field - - - - Set DurationType field - Nullable field value to be set - - - - Retrieves the DurationValue field - Returns nullable uint representing the DurationValue field - - - - Set DurationValue field - Nullable field value to be set - - - - Retrieves the DurationTime subfield - Units: s - Nullable float representing the DurationTime subfield - - - - - Set DurationTime subfield - Units: s - Subfield value to be set - - - - Retrieves the DurationDistance subfield - Units: m - Nullable float representing the DurationDistance subfield - - - - - Set DurationDistance subfield - Units: m - Subfield value to be set - - - - Retrieves the DurationHr subfield - Units: % or bpm - Nullable uint representing the DurationHr subfield - - - - - Set DurationHr subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the DurationCalories subfield - Units: calories - Nullable uint representing the DurationCalories subfield - - - - - Set DurationCalories subfield - Units: calories - Subfield value to be set - - - - Retrieves the DurationStep subfield - Comment: message_index of step to loop back to. Steps are assumed to be in the order by message_index. custom_name and intensity members are undefined for this duration type. - Nullable uint representing the DurationStep subfield - - - - - Set DurationStep subfield - Comment: message_index of step to loop back to. Steps are assumed to be in the order by message_index. custom_name and intensity members are undefined for this duration type. - Subfield value to be set - - - - Retrieves the DurationPower subfield - Units: % or watts - Nullable uint representing the DurationPower subfield - - - - - Set DurationPower subfield - Units: % or watts - Subfield value to be set - - - - Retrieves the DurationReps subfield - Nullable uint representing the DurationReps subfield - - - - - Set DurationReps subfield - Subfield value to be set - - - - Retrieves the TargetType field - Returns nullable WktStepTarget enum representing the TargetType field - - - - Set TargetType field - Nullable field value to be set - - - - Retrieves the TargetValue field - Returns nullable uint representing the TargetValue field - - - - Set TargetValue field - Nullable field value to be set - - - - Retrieves the TargetSpeedZone subfield - Comment: speed zone (1-10);Custom =0; - Nullable uint representing the TargetSpeedZone subfield - - - - - Set TargetSpeedZone subfield - Comment: speed zone (1-10);Custom =0; - Subfield value to be set - - - - Retrieves the TargetHrZone subfield - Comment: hr zone (1-5);Custom =0; - Nullable uint representing the TargetHrZone subfield - - - - - Set TargetHrZone subfield - Comment: hr zone (1-5);Custom =0; - Subfield value to be set - - - - Retrieves the TargetCadenceZone subfield - Comment: Zone (1-?); Custom = 0; - Nullable uint representing the TargetCadenceZone subfield - - - - - Set TargetCadenceZone subfield - Comment: Zone (1-?); Custom = 0; - Subfield value to be set - - - - Retrieves the TargetPowerZone subfield - Comment: Power Zone ( 1-7); Custom = 0; - Nullable uint representing the TargetPowerZone subfield - - - - - Set TargetPowerZone subfield - Comment: Power Zone ( 1-7); Custom = 0; - Subfield value to be set - - - - Retrieves the RepeatSteps subfield - Comment: # of repetitions - Nullable uint representing the RepeatSteps subfield - - - - - Set RepeatSteps subfield - Comment: # of repetitions - Subfield value to be set - - - - Retrieves the RepeatTime subfield - Units: s - Nullable float representing the RepeatTime subfield - - - - - Set RepeatTime subfield - Units: s - Subfield value to be set - - - - Retrieves the RepeatDistance subfield - Units: m - Nullable float representing the RepeatDistance subfield - - - - - Set RepeatDistance subfield - Units: m - Subfield value to be set - - - - Retrieves the RepeatCalories subfield - Units: calories - Nullable uint representing the RepeatCalories subfield - - - - - Set RepeatCalories subfield - Units: calories - Subfield value to be set - - - - Retrieves the RepeatHr subfield - Units: % or bpm - Nullable uint representing the RepeatHr subfield - - - - - Set RepeatHr subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the RepeatPower subfield - Units: % or watts - Nullable uint representing the RepeatPower subfield - - - - - Set RepeatPower subfield - Units: % or watts - Subfield value to be set - - - - Retrieves the TargetStrokeType subfield - Nullable SwimStroke enum representing the TargetStrokeType subfield - - - - - Set TargetStrokeType subfield - Subfield value to be set - - - - Retrieves the CustomTargetValueLow field - Returns nullable uint representing the CustomTargetValueLow field - - - - Set CustomTargetValueLow field - Nullable field value to be set - - - - Retrieves the CustomTargetSpeedLow subfield - Units: m/s - Nullable float representing the CustomTargetSpeedLow subfield - - - - - Set CustomTargetSpeedLow subfield - Units: m/s - Subfield value to be set - - - - Retrieves the CustomTargetHeartRateLow subfield - Units: % or bpm - Nullable uint representing the CustomTargetHeartRateLow subfield - - - - - Set CustomTargetHeartRateLow subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the CustomTargetCadenceLow subfield - Units: rpm - Nullable uint representing the CustomTargetCadenceLow subfield - - - - - Set CustomTargetCadenceLow subfield - Units: rpm - Subfield value to be set - - - - Retrieves the CustomTargetPowerLow subfield - Units: % or watts - Nullable uint representing the CustomTargetPowerLow subfield - - - - - Set CustomTargetPowerLow subfield - Units: % or watts - Subfield value to be set - - - - Retrieves the CustomTargetValueHigh field - Returns nullable uint representing the CustomTargetValueHigh field - - - - Set CustomTargetValueHigh field - Nullable field value to be set - - - - Retrieves the CustomTargetSpeedHigh subfield - Units: m/s - Nullable float representing the CustomTargetSpeedHigh subfield - - - - - Set CustomTargetSpeedHigh subfield - Units: m/s - Subfield value to be set - - - - Retrieves the CustomTargetHeartRateHigh subfield - Units: % or bpm - Nullable uint representing the CustomTargetHeartRateHigh subfield - - - - - Set CustomTargetHeartRateHigh subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the CustomTargetCadenceHigh subfield - Units: rpm - Nullable uint representing the CustomTargetCadenceHigh subfield - - - - - Set CustomTargetCadenceHigh subfield - Units: rpm - Subfield value to be set - - - - Retrieves the CustomTargetPowerHigh subfield - Units: % or watts - Nullable uint representing the CustomTargetPowerHigh subfield - - - - - Set CustomTargetPowerHigh subfield - Units: % or watts - Subfield value to be set - - - - Retrieves the Intensity field - Returns nullable Intensity enum representing the Intensity field - - - - Set Intensity field - Nullable field value to be set - - - - Retrieves the Notes field - Returns byte[] representing the Notes field - - - - Retrieves the Notes field - Returns String representing the Notes field - - - - Set Notes field - field value to be set - - - - Set Notes field - field value to be set - - - - Retrieves the Equipment field - Returns nullable WorkoutEquipment enum representing the Equipment field - - - - Set Equipment field - Nullable field value to be set - - - - Retrieves the ExerciseCategory field - Returns nullable ushort representing the ExerciseCategory field - - - - Set ExerciseCategory field - Nullable field value to be set - - - - Retrieves the ExerciseName field - Returns nullable ushort representing the ExerciseName field - - - - Set ExerciseName field - Nullable field value to be set - - - - Retrieves the ExerciseWeight field - Units: kg - Returns nullable float representing the ExerciseWeight field - - - - Set ExerciseWeight field - Units: kg - Nullable field value to be set - - - - Retrieves the WeightDisplayUnit field - Returns nullable ushort representing the WeightDisplayUnit field - - - - Set WeightDisplayUnit field - Nullable field value to be set - - - - Retrieves the SecondaryTargetType field - Returns nullable WktStepTarget enum representing the SecondaryTargetType field - - - - Set SecondaryTargetType field - Nullable field value to be set - - - - Retrieves the SecondaryTargetValue field - Returns nullable uint representing the SecondaryTargetValue field - - - - Set SecondaryTargetValue field - Nullable field value to be set - - - - Retrieves the SecondaryTargetSpeedZone subfield - Comment: speed zone (1-10);Custom =0; - Nullable uint representing the SecondaryTargetSpeedZone subfield - - - - - Set SecondaryTargetSpeedZone subfield - Comment: speed zone (1-10);Custom =0; - Subfield value to be set - - - - Retrieves the SecondaryTargetHrZone subfield - Comment: hr zone (1-5);Custom =0; - Nullable uint representing the SecondaryTargetHrZone subfield - - - - - Set SecondaryTargetHrZone subfield - Comment: hr zone (1-5);Custom =0; - Subfield value to be set - - - - Retrieves the SecondaryTargetCadenceZone subfield - Comment: Zone (1-?); Custom = 0; - Nullable uint representing the SecondaryTargetCadenceZone subfield - - - - - Set SecondaryTargetCadenceZone subfield - Comment: Zone (1-?); Custom = 0; - Subfield value to be set - - - - Retrieves the SecondaryTargetPowerZone subfield - Comment: Power Zone ( 1-7); Custom = 0; - Nullable uint representing the SecondaryTargetPowerZone subfield - - - - - Set SecondaryTargetPowerZone subfield - Comment: Power Zone ( 1-7); Custom = 0; - Subfield value to be set - - - - Retrieves the SecondaryTargetStrokeType subfield - Nullable SwimStroke enum representing the SecondaryTargetStrokeType subfield - - - - - Set SecondaryTargetStrokeType subfield - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetValueLow field - Returns nullable uint representing the SecondaryCustomTargetValueLow field - - - - Set SecondaryCustomTargetValueLow field - Nullable field value to be set - - - - Retrieves the SecondaryCustomTargetSpeedLow subfield - Units: m/s - Nullable float representing the SecondaryCustomTargetSpeedLow subfield - - - - - Set SecondaryCustomTargetSpeedLow subfield - Units: m/s - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetHeartRateLow subfield - Units: % or bpm - Nullable uint representing the SecondaryCustomTargetHeartRateLow subfield - - - - - Set SecondaryCustomTargetHeartRateLow subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetCadenceLow subfield - Units: rpm - Nullable uint representing the SecondaryCustomTargetCadenceLow subfield - - - - - Set SecondaryCustomTargetCadenceLow subfield - Units: rpm - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetPowerLow subfield - Units: % or watts - Nullable uint representing the SecondaryCustomTargetPowerLow subfield - - - - - Set SecondaryCustomTargetPowerLow subfield - Units: % or watts - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetValueHigh field - Returns nullable uint representing the SecondaryCustomTargetValueHigh field - - - - Set SecondaryCustomTargetValueHigh field - Nullable field value to be set - - - - Retrieves the SecondaryCustomTargetSpeedHigh subfield - Units: m/s - Nullable float representing the SecondaryCustomTargetSpeedHigh subfield - - - - - Set SecondaryCustomTargetSpeedHigh subfield - Units: m/s - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetHeartRateHigh subfield - Units: % or bpm - Nullable uint representing the SecondaryCustomTargetHeartRateHigh subfield - - - - - Set SecondaryCustomTargetHeartRateHigh subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetCadenceHigh subfield - Units: rpm - Nullable uint representing the SecondaryCustomTargetCadenceHigh subfield - - - - - Set SecondaryCustomTargetCadenceHigh subfield - Units: rpm - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetPowerHigh subfield - Units: % or watts - Nullable uint representing the SecondaryCustomTargetPowerHigh subfield - - - - - Set SecondaryCustomTargetPowerHigh subfield - Units: % or watts - Subfield value to be set - - - - Implements the ZonesTarget profile message. - - - - - Field Numbers for - - - - - Retrieves the MaxHeartRate field - Returns nullable byte representing the MaxHeartRate field - - - - Set MaxHeartRate field - Nullable field value to be set - - - - Retrieves the ThresholdHeartRate field - Returns nullable byte representing the ThresholdHeartRate field - - - - Set ThresholdHeartRate field - Nullable field value to be set - - - - Retrieves the FunctionalThresholdPower field - Returns nullable ushort representing the FunctionalThresholdPower field - - - - Set FunctionalThresholdPower field - Nullable field value to be set - - - - Retrieves the HrCalcType field - Returns nullable HrZoneCalc enum representing the HrCalcType field - - - - Set HrCalcType field - Nullable field value to be set - - - - Retrieves the PwrCalcType field - Returns nullable PwrZoneCalc enum representing the PwrCalcType field - - - - Set PwrCalcType field - Nullable field value to be set - - - - Implements the profile Activity type as an enum - - - - - Implements the profile ActivityClass type as an enum - - - - - Implements the profile ActivityLevel type as an enum - - - - - Implements the profile ActivitySubtype type as an enum - - - - - Implements the profile ActivityType type as an enum - - - - - Implements the profile AnalogWatchfaceLayout type as an enum - - - - - Implements the profile AntChannelId type as a class - - - - - Implements the profile AntNetwork type as an enum - - - - - Implements the profile AntplusDeviceType type as a class - - - - - Implements the profile AttitudeStage type as an enum - - - - - Implements the profile AttitudeValidity type as a class - - - - - Implements the profile AutoActivityDetect type as a class - - - - - Implements the profile AutolapTrigger type as an enum - - - - - Implements the profile Autoscroll type as an enum - - - - - Implements the profile AutoSyncFrequency type as an enum - - - - - Implements the profile BacklightMode type as an enum - - - - - Implements the profile BacklightTimeout type as a class - - - - - Implements the profile BatteryStatus type as a class - - - - - Implements the profile BenchPressExerciseName type as a class - - - - - Implements the profile BikeLightBeamAngleMode type as a class - - - - - Implements the profile BikeLightNetworkConfigType type as an enum - - - - - Implements the profile BleDeviceType type as a class - - - - - Implements the profile BodyLocation type as an enum - - - - - Implements the profile Bool type as an enum - - - - - Implements the profile BpStatus type as an enum - - - - - Implements the profile CalfRaiseExerciseName type as a class - - - - - Implements the profile CameraEventType type as an enum - - - - - Implements the profile CameraOrientationType type as an enum - - - - - Implements the profile CardioExerciseName type as a class - - - - - Implements the profile CarryExerciseName type as a class - - - - - Implements the profile CcrSetpointSwitchMode type as an enum - - - - - Implements the profile Checksum type as a class - - - - - Implements the profile ChopExerciseName type as a class - - - - - Implements the profile ClimbProEvent type as an enum - - - - - Implements the profile CommTimeoutType type as a class - - - - - Implements the profile ConnectivityCapabilities type as a class - - - - - Implements the profile CoreExerciseName type as a class - - - - - Implements the profile CourseCapabilities type as a class - - - - - Implements the profile CoursePoint type as an enum - - - - - Implements the profile CrunchExerciseName type as a class - - - - - Implements the profile CurlExerciseName type as a class - - - - - Implements the profile DateMode type as an enum - - - - - The DateTime class implements the Fit date_time type which references - UTC 00:00 Dec 31 1989 in second resolution - - - - - Implements the profile DayOfWeek type as an enum - - - - - Implements the profile DeadliftExerciseName type as a class - - - - - Implements the profile DeviceIndex type as a class - - - - - Implements the profile DigitalWatchfaceLayout type as an enum - - - - - Implements the profile DisplayHeart type as an enum - - - - - Implements the profile DisplayMeasure type as an enum - - - - - Implements the profile DisplayOrientation type as an enum - - - - - Implements the profile DisplayPosition type as an enum - - - - - Implements the profile DisplayPower type as an enum - - - - - Implements the profile DiveAlarmType type as an enum - - - - - Implements the profile DiveAlert type as an enum - - - - - Implements the profile DiveBacklightMode type as an enum - - - - - Implements the profile DiveGasMode type as an enum - - - - - Implements the profile DiveGasStatus type as an enum - - - - - Implements the profile Event type as an enum - - - - - Implements the profile EventType type as an enum - - - - - Implements the profile ExdDataUnits type as an enum - - - - - Implements the profile ExdDescriptors type as an enum - - - - - Implements the profile ExdDisplayType type as an enum - - - - - Implements the profile ExdLayout type as an enum - - - - - Implements the profile ExdQualifiers type as an enum - - - - - Implements the profile ExerciseCategory type as a class - - - - - Implements the profile FaveroProduct type as a class - - - - - Implements the profile File type as an enum - - - - - Implements the profile FileFlags type as a class - - - - - Implements the profile FitBaseType type as a class - - - - - Implements the profile FitBaseUnit type as a class - - - - - Implements the profile FitnessEquipmentState type as an enum - - - - - Implements the profile FlyeExerciseName type as a class - - - - - Implements the profile GarminProduct type as a class - - - - - Implements the profile GasConsumptionRateType type as an enum - - - - - Implements the profile Gender type as an enum - - - - - Implements the profile Goal type as an enum - - - - - Implements the profile GoalRecurrence type as an enum - - - - - Implements the profile GoalSource type as an enum - - - - - Implements the profile HipRaiseExerciseName type as a class - - - - - Implements the profile HipStabilityExerciseName type as a class - - - - - Implements the profile HipSwingExerciseName type as a class - - - - - Implements the profile HrType type as an enum - - - - - Implements the profile HrZoneCalc type as an enum - - - - - Implements the profile HyperextensionExerciseName type as a class - - - - - Implements the profile Intensity type as an enum - - - - - Implements the profile Language type as an enum - - - - - Implements the profile LanguageBits0 type as a class - - - - - Implements the profile LanguageBits1 type as a class - - - - - Implements the profile LanguageBits2 type as a class - - - - - Implements the profile LanguageBits3 type as a class - - - - - Implements the profile LanguageBits4 type as a class - - - - - Implements the profile LapTrigger type as an enum - - - - - Implements the profile LateralRaiseExerciseName type as a class - - - - - Implements the profile LeftRightBalance type as a class - - - - - Implements the profile LeftRightBalance100 type as a class - - - - - Implements the profile LegCurlExerciseName type as a class - - - - - Implements the profile LegRaiseExerciseName type as a class - - - - - Implements the profile LengthType type as an enum - - - - - Implements the profile LocalDateTime type as a class - - - - - Implements the profile LocalDeviceType type as a class - - - - - Implements the profile LocaltimeIntoDay type as a class - - - - - Implements the profile LungeExerciseName type as a class - - - - - Implements the profile Manufacturer type as a class - - - - - Implements the profile MesgCount type as an enum - - - - - Implements the profile MesgNum type as a class - - - - - Implements the profile MessageIndex type as a class - - - - - Implements the profile NoFlyTimeMode type as an enum - - - - - Implements the profile OlympicLiftExerciseName type as a class - - - - - Implements the profile PlankExerciseName type as a class - - - - - Implements the profile PlyoExerciseName type as a class - - - - - Implements the profile PowerPhaseType type as an enum - - - - - Implements the profile PullUpExerciseName type as a class - - - - - Implements the profile PushUpExerciseName type as a class - - - - - Implements the profile PwrZoneCalc type as an enum - - - - - Implements the profile RadarThreatLevelType type as an enum - - - - - Implements the profile RiderPositionType type as an enum - - - - - Implements the profile RowExerciseName type as a class - - - - - Implements the profile RunExerciseName type as a class - - - - - Implements the profile Schedule type as an enum - - - - - Implements the profile SegmentDeleteStatus type as an enum - - - - - Implements the profile SegmentLapStatus type as an enum - - - - - Implements the profile SegmentLeaderboardType type as an enum - - - - - Implements the profile SegmentSelectionType type as an enum - - - - - Implements the profile SensorType type as an enum - - - - - Implements the profile SessionTrigger type as an enum - - - - - Implements the profile SetType type as a class - - - - - Implements the profile ShoulderPressExerciseName type as a class - - - - - Implements the profile ShoulderStabilityExerciseName type as a class - - - - - Implements the profile ShrugExerciseName type as a class - - - - - Implements the profile Side type as an enum - - - - - Implements the profile SitUpExerciseName type as a class - - - - - Implements the profile SourceType type as an enum - - - - - Implements the profile SplitType type as an enum - - - - - Implements the profile Sport type as an enum - - - - - Implements the profile SportBits0 type as a class - - - - - Implements the profile SportBits1 type as a class - - - - - Implements the profile SportBits2 type as a class - - - - - Implements the profile SportBits3 type as a class - - - - - Implements the profile SportBits4 type as a class - - - - - Implements the profile SportBits5 type as a class - - - - - Implements the profile SportBits6 type as a class - - - - - Implements the profile SportEvent type as an enum - - - - - Implements the profile SquatExerciseName type as a class - - - - - Implements the profile StrokeType type as an enum - - - - - Implements the profile SubSport type as an enum - - - - - Implements the profile SupportedExdScreenLayouts type as a class - - - - - Implements the profile SwimStroke type as an enum - - - - - Implements the profile Switch type as an enum - - - - - Implements the profile TapSensitivity type as an enum - - - - - Implements the profile TimeIntoDay type as a class - - - - - Implements the profile TimeMode type as an enum - - - - - Implements the profile TimerTrigger type as an enum - - - - - Implements the profile TimeZone type as an enum - - - - - Implements the profile TissueModelType type as an enum - - - - - Implements the profile Tone type as an enum - - - - - Implements the profile TotalBodyExerciseName type as a class - - - - - Implements the profile TricepsExtensionExerciseName type as a class - - - - - Implements the profile TurnType type as an enum - - - - - Implements the profile UserLocalId type as a class - - - - - Implements the profile WarmUpExerciseName type as a class - - - - - Implements the profile WatchfaceMode type as an enum - - - - - Implements the profile WaterType type as an enum - - - - - Implements the profile WeatherReport type as an enum - - - - - Implements the profile WeatherSevereType type as an enum - - - - - Implements the profile WeatherSeverity type as an enum - - - - - Implements the profile WeatherStatus type as an enum - - - - - Implements the profile Weight type as a class - - - - - Implements the profile WktStepDuration type as an enum - - - - - Implements the profile WktStepTarget type as an enum - - - - - Implements the profile WorkoutCapabilities type as a class - - - - - Implements the profile WorkoutEquipment type as an enum - - - - - Implements the profile WorkoutHr type as a class - - - - - Implements the profile WorkoutPower type as a class - - - - - Validate if a Message is compatible with a protocol version - - Message to validate - true if message is compatible. false otherwise - - - - Validate if a MessageDefinition is compatible with a protocol version - - Definition to validate - true if definition is compatible. false otherwise - - - - Validates Protocol Features for a given give version - - - - - Validate if a Message is compatible with a protocol version - - Message to validate - true if message is compatible. false otherwise - - - - Validate if a MessageDefinition is compatible with a protocol version - - Definition to validate - true if definition is compatible. false otherwise - - - - Validate if a Message is compatible with a protocol version - - Message to validate - true if message is compatible. false otherwise - - - - Validate if a MessageDefinition is compatible with a protocol version - - Definition to validate - true if definition is compatible. false otherwise - - - - The Subfield class represents an alternative field definition used - by dynamic fields. They can only be associated with a containing - field object. - - - - - The SubfieldMap class tracks the reference field/value pairs which indicate a field - should use the alternate subfield definition rather than the usual defn (allows Dynamic Fields) - - - - - Checks if the reference fields in a given message indicate the subfield (alternate) - definition should be used - - message of interest - true if the subfield is active - - - - Checks if the reference fields in a given message indicate the subfield (alternate) - definition should be used - - message of interest - true if the subfield is active - - - - Extend framework BinaryReader to support BigEndian datasources. - When reading multibyte values, the bytes are reordered appropriately. - - - - - Extend framework BinaryWriter to support BigEndian destinations. - When writing multibyte values, the bytes are reordered appropriately. - - - - diff --git a/src/Garmin/FitSdk/Examples/ClassLib/Properties/AssemblyInfo.cs b/src/Garmin/FitSdk/Examples/ClassLib/Properties/AssemblyInfo.cs deleted file mode 100644 index a6b5b3df0..000000000 --- a/src/Garmin/FitSdk/Examples/ClassLib/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Fit")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Fit")] -[assembly: AssemblyCopyright("Copyright © 2012-2015")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("f2968d43-402a-4bdb-a78e-ff5e1b2bab31")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.0.*")] -[assembly: AssemblyVersion("1.0.0.*")] -[assembly: AssemblyFileVersion("1.0.0.0")] -[assembly: AssemblyInformationalVersion("1.0.0.*")] diff --git a/src/Garmin/FitSdk/Examples/Decode/Decode.csproj b/src/Garmin/FitSdk/Examples/Decode/Decode.csproj deleted file mode 100644 index c926ca802..000000000 --- a/src/Garmin/FitSdk/Examples/Decode/Decode.csproj +++ /dev/null @@ -1,84 +0,0 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {7397E11F-301C-48CF-B2B7-69F8E3213B2D} - Exe - Properties - decode - decode - v4.6 - 512 - - - - - 3.5 - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - true - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - true - - - - - 3.5 - - - 3.5 - - - 3.5 - - - - - - - Profile\Mesgs\(FileName) - - - Profile\Types\(FileName) - - - Fit\(FileName) - - - Utility\(FileName) - - - - - - - - - - diff --git a/src/Garmin/FitSdk/Examples/Decode/DecodeDemo.cs b/src/Garmin/FitSdk/Examples/Decode/DecodeDemo.cs deleted file mode 100644 index 116045f8d..000000000 --- a/src/Garmin/FitSdk/Examples/Decode/DecodeDemo.cs +++ /dev/null @@ -1,373 +0,0 @@ -#region Copyright -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2012 Garmin Canada Inc. -//////////////////////////////////////////////////////////////////////////////// -#endregion - -using System; -using System.Collections.Generic; -using System.Text; -using System.IO; -using System.Diagnostics; -using Dynastream.Fit; - - -namespace DecodeDemo -{ - class Program - { - static Dictionary mesgCounts = new Dictionary(); - static FileStream fitSource; - - static void Main(string[] args) - { - Stopwatch stopwatch = new Stopwatch(); - stopwatch.Start(); - - Console.WriteLine("FIT Decode Example Application"); - - if (args.Length != 1) - { - Console.WriteLine("Usage: decode.exe "); - return; - } - - try - { - // Attempt to open .FIT file - fitSource = new FileStream(args[0], FileMode.Open); - Console.WriteLine("Opening {0}", args[0]); - - Decode decodeDemo = new Decode(); - MesgBroadcaster mesgBroadcaster = new MesgBroadcaster(); - - // Connect the Broadcaster to our event (message) source (in this case the Decoder) - decodeDemo.MesgEvent += mesgBroadcaster.OnMesg; - decodeDemo.MesgDefinitionEvent += mesgBroadcaster.OnMesgDefinition; - decodeDemo.DeveloperFieldDescriptionEvent += OnDeveloperFieldDescriptionEvent; - - // Subscribe to message events of interest by connecting to the Broadcaster - mesgBroadcaster.MesgEvent += OnMesg; - mesgBroadcaster.MesgDefinitionEvent += OnMesgDefn; - - mesgBroadcaster.FileIdMesgEvent += OnFileIDMesg; - mesgBroadcaster.UserProfileMesgEvent += OnUserProfileMesg; - mesgBroadcaster.MonitoringMesgEvent += OnMonitoringMessage; - mesgBroadcaster.DeviceInfoMesgEvent += OnDeviceInfoMessage; - mesgBroadcaster.RecordMesgEvent += OnRecordMessage; - - bool status = decodeDemo.IsFIT(fitSource); - status &= decodeDemo.CheckIntegrity(fitSource); - - // Process the file - if (status) - { - Console.WriteLine("Decoding..."); - decodeDemo.Read(fitSource); - Console.WriteLine("Decoded FIT file {0}", args[0]); - } - else - { - try - { - Console.WriteLine("Integrity Check Failed {0}", args[0]); - if (decodeDemo.InvalidDataSize) - { - Console.WriteLine("Invalid Size Detected, Attempting to decode..."); - decodeDemo.Read(fitSource); - } - else - { - Console.WriteLine("Attempting to decode by skipping the header..."); - decodeDemo.Read(fitSource, DecodeMode.InvalidHeader); - } - } - catch (FitException ex) - { - Console.WriteLine("DecodeDemo caught FitException: " + ex.Message); - } - } - fitSource.Close(); - - Console.WriteLine(""); - Console.WriteLine("Summary:"); - int totalMesgs = 0; - foreach (KeyValuePair pair in mesgCounts) - { - Console.WriteLine("MesgID {0,3} Count {1}", pair.Key, pair.Value); - totalMesgs += pair.Value; - } - - Console.WriteLine("{0} Message Types {1} Total Messages", mesgCounts.Count, totalMesgs); - - stopwatch.Stop(); - Console.WriteLine(""); - Console.WriteLine("Time elapsed: {0:0.#}s", stopwatch.Elapsed.TotalSeconds); - Console.ReadKey(); - } - catch (FitException ex) - { - Console.WriteLine("A FitException occurred when trying to decode the FIT file. Message: " + ex.Message); - } - catch (Exception ex) - { - Console.WriteLine("Exception occurred when trying to decode the FIT file. Message: " + ex.Message); - } - } - - private static void OnDeveloperFieldDescriptionEvent(object sender, DeveloperFieldDescriptionEventArgs args) - { - Console.WriteLine("New Developer Field Description"); - Console.WriteLine(" App Id: {0}", args.Description.ApplicationId); - Console.WriteLine(" App Version: {0}", args.Description.ApplicationVersion); - Console.WriteLine(" Field Number: {0}", args.Description.FieldDefinitionNumber); - } - - #region Message Handlers - // Client implements their handlers of interest and subscribes to MesgBroadcaster events - static void OnMesgDefn(object sender, MesgDefinitionEventArgs e) - { - Console.WriteLine("OnMesgDef: Received Defn for local message #{0}, global num {1}", e.mesgDef.LocalMesgNum, e.mesgDef.GlobalMesgNum); - Console.WriteLine("\tIt has {0} fields {1} developer fields and is {2} bytes long", - e.mesgDef.NumFields, - e.mesgDef.NumDevFields, - e.mesgDef.GetMesgSize()); - } - - static void OnMesg(object sender, MesgEventArgs e) - { - Console.WriteLine("OnMesg: Received Mesg with global ID#{0}, its name is {1}", e.mesg.Num, e.mesg.Name); - - int i = 0; - foreach (Field field in e.mesg.Fields) - { - for (int j = 0; j < field.GetNumValues(); j++) - { - Console.WriteLine("\tField{0} Index{1} (\"{2}\" Field#{4}) Value: {3} (raw value {5})", - i, - j, - field.GetName(), - field.GetValue(j), - field.Num, - field.GetRawValue(j)); - } - - i++; - } - - foreach (var devField in e.mesg.DeveloperFields) - { - for (int j = 0; j < devField.GetNumValues(); j++) - { - Console.WriteLine("\tDeveloper{0} Field#{1} Index{2} (\"{3}\") Value: {4} (raw value {5})", - devField.DeveloperDataIndex, - devField.Num, - j, - devField.Name, - devField.GetValue(j), - devField.GetRawValue(j)); - } - } - - if (mesgCounts.ContainsKey(e.mesg.Num)) - { - mesgCounts[e.mesg.Num]++; - } - else - { - mesgCounts.Add(e.mesg.Num, 1); - } - } - - static void OnFileIDMesg(object sender, MesgEventArgs e) - { - Console.WriteLine("FileIdHandler: Received {1} Mesg with global ID#{0}", e.mesg.Num, e.mesg.Name); - FileIdMesg myFileId = (FileIdMesg)e.mesg; - try - { - Console.WriteLine("\tType: {0}", myFileId.GetType()); - Console.WriteLine("\tManufacturer: {0}", myFileId.GetManufacturer()); - Console.WriteLine("\tProduct: {0}", myFileId.GetProduct()); - Console.WriteLine("\tSerialNumber {0}", myFileId.GetSerialNumber()); - Console.WriteLine("\tNumber {0}", myFileId.GetNumber()); - Console.WriteLine("\tTimeCreated {0}", myFileId.GetTimeCreated()); - - //Make sure properties with sub properties arent null before trying to create objects based on them - if (myFileId.GetTimeCreated() != null) - { - Dynastream.Fit.DateTime dtTime = new Dynastream.Fit.DateTime(myFileId.GetTimeCreated().GetTimeStamp()); - } - } - catch (FitException exception) - { - Console.WriteLine("\tOnFileIDMesg Error {0}", exception.Message); - Console.WriteLine("\t{0}", exception.InnerException); - } - } - - static void OnUserProfileMesg(object sender, MesgEventArgs e) - { - Console.WriteLine("UserProfileHandler: Received {1} Mesg, it has global ID#{0}", e.mesg.Num, e.mesg.Name); - UserProfileMesg myUserProfile = (UserProfileMesg)e.mesg; - string friendlyName; - try - { - try - { - friendlyName = myUserProfile.GetFriendlyNameAsString(); - } - catch (ArgumentNullException) - { - //There is no FriendlyName property - friendlyName = ""; - } - Console.WriteLine("\tFriendlyName \"{0}\"", friendlyName); - Console.WriteLine("\tGender {0}", myUserProfile.GetGender().ToString()); - Console.WriteLine("\tAge {0}", myUserProfile.GetAge()); - Console.WriteLine("\tWeight {0}", myUserProfile.GetWeight()); - } - catch (FitException exception) - { - Console.WriteLine("\tOnUserProfileMesg Error {0}", exception.Message); - Console.WriteLine("\t{0}", exception.InnerException); - } - } - - static void OnDeviceInfoMessage(object sender, MesgEventArgs e) - { - Console.WriteLine("DeviceInfoHandler: Received {1} Mesg, it has global ID#{0}", e.mesg.Num, e.mesg.Name); - DeviceInfoMesg myDeviceInfoMessage = (DeviceInfoMesg)e.mesg; - try - { - Console.WriteLine("\tTimestamp {0}", myDeviceInfoMessage.GetTimestamp()); - Console.WriteLine("\tBattery Status{0}", myDeviceInfoMessage.GetBatteryStatus()); - } - catch (FitException exception) - { - Console.WriteLine("\tOnDeviceInfoMesg Error {0}", exception.Message); - Console.WriteLine("\t{0}", exception.InnerException); - } - } - - static void OnMonitoringMessage(object sender, MesgEventArgs e) - { - Console.WriteLine("MonitoringHandler: Received {1} Mesg, it has global ID#{0}", e.mesg.Num, e.mesg.Name); - MonitoringMesg myMonitoringMessage = (MonitoringMesg)e.mesg; - try - { - Console.WriteLine("\tTimestamp {0}", myMonitoringMessage.GetTimestamp()); - Console.WriteLine("\tActivityType {0}", myMonitoringMessage.GetActivityType()); - switch (myMonitoringMessage.GetActivityType()) // Cycles is a dynamic field - { - case ActivityType.Walking: - case ActivityType.Running: - Console.WriteLine("\tSteps {0}", myMonitoringMessage.GetSteps()); - break; - case ActivityType.Cycling: - case ActivityType.Swimming: - Console.WriteLine("\tStrokes {0}", myMonitoringMessage.GetStrokes()); - break; - default: - Console.WriteLine("\tCycles {0}", myMonitoringMessage.GetCycles()); - break; - } - } - catch (FitException exception) - { - Console.WriteLine("\tOnDeviceInfoMesg Error {0}", exception.Message); - Console.WriteLine("\t{0}", exception.InnerException); - } - } - - private static void OnRecordMessage(object sender, MesgEventArgs e) - { - Console.WriteLine("Record Handler: Received {0} Mesg, it has global ID#{1}", - e.mesg.Num, - e.mesg.Name); - - var recordMessage = (RecordMesg)e.mesg; - - WriteFieldWithOverrides(recordMessage, RecordMesg.FieldDefNum.HeartRate); - WriteFieldWithOverrides(recordMessage, RecordMesg.FieldDefNum.Cadence); - WriteFieldWithOverrides(recordMessage, RecordMesg.FieldDefNum.Speed); - WriteFieldWithOverrides(recordMessage, RecordMesg.FieldDefNum.Distance); - - WriteDeveloperFields(recordMessage); - } - - private static void WriteDeveloperFields(Mesg mesg) - { - foreach (var devField in mesg.DeveloperFields) - { - if (devField.GetNumValues() <= 0) - { - continue; - } - - if (devField.IsDefined) - { - Console.Write("\t{0}", devField.Name); - - if (devField.Units != null) - { - Console.Write(" [{0}]", devField.Units); - } - Console.Write(": "); - } - else - { - Console.Write("\tUndefined Field: "); - } - - Console.Write("{0}", devField.GetValue(0)); - for (int i = 1; i < devField.GetNumValues(); i++) - { - Console.Write(",{0}", devField.GetValue(i)); - } - - Console.WriteLine(); - } - } - - private static void WriteFieldWithOverrides(Mesg mesg, byte fieldNumber) - { - Field profileField = Profile.GetField(mesg.Num, fieldNumber); - bool nameWritten = false; - - if (null == profileField) - { - return; - } - - IEnumerable fields = mesg.GetOverrideField(fieldNumber); - - foreach (FieldBase field in fields) - { - if (!nameWritten) - { - Console.WriteLine(" {0}", profileField.GetName()); - nameWritten = true; - } - - if (field is Field) - { - Console.WriteLine(" native: {0}", field.GetValue()); - } - else - { - Console.WriteLine(" override: {0}", field.GetValue()); - } - } - } - - #endregion - } -} diff --git a/src/Garmin/FitSdk/Examples/Decode/Properties/AssemblyInfo.cs b/src/Garmin/FitSdk/Examples/Decode/Properties/AssemblyInfo.cs deleted file mode 100644 index 958d1fd22..000000000 --- a/src/Garmin/FitSdk/Examples/Decode/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("decode")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("decode")] -[assembly: AssemblyCopyright("Copyright © 2015")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("455ec453-cf64-4f7f-90b7-e1da67c5d8c0")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.0.*")] -[assembly: AssemblyVersion("1.0.0.*")] -[assembly: AssemblyFileVersion("1.0.0.0")] -[assembly: AssemblyInformationalVersion("1.0.0.*")] diff --git a/src/Garmin/FitSdk/Examples/Decode/app.config b/src/Garmin/FitSdk/Examples/Decode/app.config deleted file mode 100644 index 92ed82822..000000000 --- a/src/Garmin/FitSdk/Examples/Decode/app.config +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/Garmin/FitSdk/Examples/Encode/Encode.csproj b/src/Garmin/FitSdk/Examples/Encode/Encode.csproj deleted file mode 100644 index e99f16398..000000000 --- a/src/Garmin/FitSdk/Examples/Encode/Encode.csproj +++ /dev/null @@ -1,76 +0,0 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {DD6CF09E-46B0-43A8-834E-B6A2EE6255BE} - Exe - Properties - encode - encode - v4.6 - 512 - - - - - 3.5 - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - true - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - true - - - - False - ..\..\Fit.dll - - - - 3.5 - - - 3.5 - - - 3.5 - - - - - - - - - - - - - - diff --git a/src/Garmin/FitSdk/Examples/Encode/EncodeDemo.cs b/src/Garmin/FitSdk/Examples/Encode/EncodeDemo.cs deleted file mode 100644 index de0011486..000000000 --- a/src/Garmin/FitSdk/Examples/Encode/EncodeDemo.cs +++ /dev/null @@ -1,216 +0,0 @@ -#region Copyright -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2012 Garmin Canada Inc. -//////////////////////////////////////////////////////////////////////////////// -#endregion - -using System; -using System.Collections.Generic; -using System.Text; -using System.IO; -using System.Diagnostics; -using Dynastream.Fit; -using DateTime = Dynastream.Fit.DateTime; - -namespace EncodeDemo -{ - class Program - { - static void Main(string[] args) - { - Stopwatch stopwatch = new Stopwatch(); - stopwatch.Start(); - - // Encode both of our example files - EncodeSettingsFile(); - EncodeMonitoringFile(); - EncodeActivityFile(); - - stopwatch.Stop(); - Console.WriteLine("Time elapsed: {0:0.#}s", stopwatch.Elapsed.TotalSeconds); - } - - static void EncodeActivityFile() - { - // Generate some FIT messages - var fileIdMesg = new FileIdMesg(); // Every FIT file MUST contain a 'File ID' message as the first message - var developerIdMesg = new DeveloperDataIdMesg(); - var fieldDescMesg = new FieldDescriptionMesg(); - - var records = new List(); - - byte[] appId = { - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16 - }; - - fileIdMesg.SetType(Dynastream.Fit.File.Activity); - fileIdMesg.SetManufacturer(Manufacturer.Development); - fileIdMesg.SetProduct(1); - fileIdMesg.SetSerialNumber(12345); - fileIdMesg.SetTimeCreated(new DateTime(621463080)); - - for (int i = 0; i < appId.Length; i++) - { - developerIdMesg.SetApplicationId(i, appId[i]); - } - developerIdMesg.SetDeveloperDataIndex(0); - - fieldDescMesg.SetDeveloperDataIndex(0); - fieldDescMesg.SetFieldDefinitionNumber(0); - fieldDescMesg.SetFitBaseTypeId(FitBaseType.Sint8); - fieldDescMesg.SetFieldName(0, "doughnuts_earned"); - fieldDescMesg.SetUnits(0, "doughnuts"); - - for (int i = 0; i < 3; i++) - { - var newRecord = new RecordMesg(); - var doughnutsEarnedField = new DeveloperField(fieldDescMesg, developerIdMesg); - newRecord.SetDeveloperField(doughnutsEarnedField); - - newRecord.SetHeartRate((byte)(140 + (i * 2))); - newRecord.SetCadence((byte)(88 + (i * 2))); - newRecord.SetDistance(510 + (i * 100)); - newRecord.SetSpeed(2.8f + (i * 0.4f)); - doughnutsEarnedField.SetValue(i + 1); - - records.Add(newRecord); - } - - // Create file encode object - Encode encodeDemo = new Encode(ProtocolVersion.V20); - - FileStream fitDest = new FileStream("ExampleActivity.fit", FileMode.Create, FileAccess.ReadWrite, FileShare.Read); - - // Write our header - encodeDemo.Open(fitDest); - - // Encode each message, a definition message is automatically generated and output if necessary - encodeDemo.Write(fileIdMesg); - encodeDemo.Write(developerIdMesg); - encodeDemo.Write(fieldDescMesg); - encodeDemo.Write(records); - - // Update header datasize and file CRC - encodeDemo.Close(); - fitDest.Close(); - - Console.WriteLine("Encoded FIT file ExampleActivity.fit"); - } - - /// - /// Demonstrate the encoding of a 'Settings File' by writing a 'Settings File' containing a 'User Profile' Message. - /// This example is simpler than the 'Monitoring File' example. - /// - static void EncodeSettingsFile() - { - // Generate some FIT messages - FileIdMesg fileIdMesg = new FileIdMesg(); // Every FIT file MUST contain a 'File ID' message as the first message - fileIdMesg.SetType(Dynastream.Fit.File.Settings); - fileIdMesg.SetManufacturer(Manufacturer.Development); // Types defined in the profile are available - fileIdMesg.SetProduct(1); - fileIdMesg.SetSerialNumber(12345); - - UserProfileMesg myUserProfile = new UserProfileMesg(); - myUserProfile.SetGender(Gender.Female); - float myWeight = 63.1F; - myUserProfile.SetWeight(myWeight); - myUserProfile.SetAge(99); - myUserProfile.SetFriendlyName(Encoding.UTF8.GetBytes("TestUser")); - - FileStream fitDest = new FileStream("ExampleSettings.fit", FileMode.Create, FileAccess.ReadWrite, FileShare.Read); - - // Create file encode object - Encode encodeDemo = new Encode(ProtocolVersion.V10); - - // Write our header - encodeDemo.Open(fitDest); - - // Encode each message, a definition message is automatically generated and output if necessary - encodeDemo.Write(fileIdMesg); - encodeDemo.Write(myUserProfile); - - // Update header datasize and file CRC - encodeDemo.Close(); - fitDest.Close(); - - Console.WriteLine("Encoded FIT file ExampleSettings.fit"); - return; - } - - /// - /// Demonstrates encoding a 'MonitoringB File' of a made up device which counts steps and reports the battery status of the device. - /// - static void EncodeMonitoringFile() - { - System.DateTime systemStartTime = System.DateTime.Now; - System.DateTime systemTimeNow = systemStartTime; - - FileStream fitDest = new FileStream("ExampleMonitoringFile.fit", FileMode.Create, FileAccess.ReadWrite, FileShare.Read); - - // Create file encode object - Encode encodeDemo = new Encode(ProtocolVersion.V10); - - // Write our header - encodeDemo.Open(fitDest); - - // Generate some FIT messages - FileIdMesg fileIdMesg = new FileIdMesg(); // Every FIT file MUST contain a 'File ID' message as the first message - fileIdMesg.SetTimeCreated(new Dynastream.Fit.DateTime(systemTimeNow)); - fileIdMesg.SetManufacturer(Manufacturer.Development); - fileIdMesg.SetProduct(1); - fileIdMesg.SetSerialNumber(12345); - fileIdMesg.SetNumber(0); - fileIdMesg.SetType(Dynastream.Fit.File.MonitoringB); // See the 'FIT FIle Types Description' document for more information about this file type. - encodeDemo.Write(fileIdMesg); // Write the 'File ID Message' - - DeviceInfoMesg deviceInfoMesg = new DeviceInfoMesg(); - deviceInfoMesg.SetTimestamp(new Dynastream.Fit.DateTime(systemTimeNow)); - deviceInfoMesg.SetSerialNumber(12345); - deviceInfoMesg.SetManufacturer(Manufacturer.Development); - deviceInfoMesg.SetBatteryStatus(Dynastream.Fit.BatteryStatus.Good); - encodeDemo.Write(deviceInfoMesg); - - MonitoringMesg monitoringMesg = new MonitoringMesg(); - - // By default, each time a new message is written the Local Message Type 0 will be redefined to match the new message. - // In this case,to avoid having a definition message each time there is a DeviceInfoMesg, we can manually set the Local Message Type of the MonitoringMessage to '1'. - // By doing this we avoid an additional 7 definition messages in our FIT file. - monitoringMesg.LocalNum = 1; - - // Simulate some data - Random numberOfCycles = new Random(); // Fake a number of cycles - for (int i = 0; i < 4; i++) // Each of these loops represent a quarter of a day - { - for (int j = 0; j < 6; j++) // Each of these loops represent 1 hour - { - monitoringMesg.SetTimestamp(new Dynastream.Fit.DateTime(systemTimeNow)); - monitoringMesg.SetActivityType(Dynastream.Fit.ActivityType.Walking); // Setting this to walking will cause Cycles to be interpretted as steps. - monitoringMesg.SetCycles(monitoringMesg.GetCycles() + numberOfCycles.Next(0, 1000)); // Cycles are accumulated (i.e. must be increasing) - encodeDemo.Write(monitoringMesg); - systemTimeNow = systemTimeNow.AddHours(1); // Add an hour to our contrieved timestamp - } - - deviceInfoMesg.SetTimestamp(new Dynastream.Fit.DateTime(systemTimeNow)); - deviceInfoMesg.SetBatteryStatus(Dynastream.Fit.BatteryStatus.Good); // Report the battery status every quarter day - encodeDemo.Write(deviceInfoMesg); - } - - // Update header datasize and file CRC - encodeDemo.Close(); - fitDest.Close(); - - Console.WriteLine("Encoded FIT file ExampleMonitoringFile.fit"); - } - } -} diff --git a/src/Garmin/FitSdk/Examples/Encode/Properties/AssemblyInfo.cs b/src/Garmin/FitSdk/Examples/Encode/Properties/AssemblyInfo.cs deleted file mode 100644 index 8d9bc95aa..000000000 --- a/src/Garmin/FitSdk/Examples/Encode/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("encode")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("encode")] -[assembly: AssemblyCopyright("Copyright © 2015")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("01f25c19-9c77-4972-a8cd-82e34a859d0b")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.0.*")] -[assembly: AssemblyVersion("1.0.0.*")] -[assembly: AssemblyFileVersion("1.0.0.0")] -[assembly: AssemblyInformationalVersion("1.0.0.*")] \ No newline at end of file diff --git a/src/Garmin/FitSdk/Examples/Encode/app.config b/src/Garmin/FitSdk/Examples/Encode/app.config deleted file mode 100644 index 92ed82822..000000000 --- a/src/Garmin/FitSdk/Examples/Encode/app.config +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/Garmin/FitSdk/Examples/Examples.sln b/src/Garmin/FitSdk/Examples/Examples.sln deleted file mode 100644 index 964c87e0d..000000000 --- a/src/Garmin/FitSdk/Examples/Examples.sln +++ /dev/null @@ -1,43 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.21005.1 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Decode", "Decode\Decode.csproj", "{7397E11F-301C-48CF-B2B7-69F8E3213B2D}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Encode", "Encode\Encode.csproj", "{DD6CF09E-46B0-43A8-834E-B6A2EE6255BE}" - ProjectSection(ProjectDependencies) = postProject - {F9D616B2-8333-4556-8FBB-1F5C6907FB44} = {F9D616B2-8333-4556-8FBB-1F5C6907FB44} - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassLib", "ClassLib\ClassLib.csproj", "{F9D616B2-8333-4556-8FBB-1F5C6907FB44}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FitPortable", "FitPortable\FitPortable.csproj", "{30807094-40BA-42DE-B0B2-C15757649715}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7397E11F-301C-48CF-B2B7-69F8E3213B2D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7397E11F-301C-48CF-B2B7-69F8E3213B2D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7397E11F-301C-48CF-B2B7-69F8E3213B2D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7397E11F-301C-48CF-B2B7-69F8E3213B2D}.Release|Any CPU.Build.0 = Release|Any CPU - {DD6CF09E-46B0-43A8-834E-B6A2EE6255BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DD6CF09E-46B0-43A8-834E-B6A2EE6255BE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DD6CF09E-46B0-43A8-834E-B6A2EE6255BE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DD6CF09E-46B0-43A8-834E-B6A2EE6255BE}.Release|Any CPU.Build.0 = Release|Any CPU - {F9D616B2-8333-4556-8FBB-1F5C6907FB44}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F9D616B2-8333-4556-8FBB-1F5C6907FB44}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F9D616B2-8333-4556-8FBB-1F5C6907FB44}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F9D616B2-8333-4556-8FBB-1F5C6907FB44}.Release|Any CPU.Build.0 = Release|Any CPU - {30807094-40BA-42DE-B0B2-C15757649715}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {30807094-40BA-42DE-B0B2-C15757649715}.Debug|Any CPU.Build.0 = Debug|Any CPU - {30807094-40BA-42DE-B0B2-C15757649715}.Release|Any CPU.ActiveCfg = Release|Any CPU - {30807094-40BA-42DE-B0B2-C15757649715}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/src/Garmin/FitSdk/Examples/FitPortable/FitPortable.csproj b/src/Garmin/FitSdk/Examples/FitPortable/FitPortable.csproj deleted file mode 100644 index 3ccf4cf8a..000000000 --- a/src/Garmin/FitSdk/Examples/FitPortable/FitPortable.csproj +++ /dev/null @@ -1,52 +0,0 @@ - - - - - 11.0 - Debug - AnyCPU - {30807094-40BA-42DE-B0B2-C15757649715} - Library - Properties - Fit - Dynastream.Fit.Portable - v4.5 - Profile78 - 512 - {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - - - true - full - false - ..\..\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - ..\..\ - TRACE - prompt - 4 - - - - - - - %(FileName) - - - - - - diff --git a/src/Garmin/FitSdk/Examples/FitPortable/Properties/AssemblyInfo.cs b/src/Garmin/FitSdk/Examples/FitPortable/Properties/AssemblyInfo.cs deleted file mode 100644 index e48558a84..000000000 --- a/src/Garmin/FitSdk/Examples/FitPortable/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System.Resources; -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Dynastream.Fit.Portable")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Dynastream.Fit.Portable")] -[assembly: AssemblyCopyright("Copyright © 2016")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] -[assembly: NeutralResourcesLanguage("en")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.0.*")] -[assembly: AssemblyVersion("1.0.0.*")] -[assembly: AssemblyFileVersion("1.0.0.0")] -[assembly: AssemblyInformationalVersion("1.0.0.*")] diff --git a/src/Garmin/FitSdk/Fit.dll b/src/Garmin/FitSdk/Fit.dll deleted file mode 100644 index e7fe2af8b..000000000 Binary files a/src/Garmin/FitSdk/Fit.dll and /dev/null differ diff --git a/src/Garmin/FitSdk/Fit.xml b/src/Garmin/FitSdk/Fit.xml deleted file mode 100644 index 545e263f8..000000000 --- a/src/Garmin/FitSdk/Fit.xml +++ /dev/null @@ -1,19477 +0,0 @@ - - - - Fit - - - - - - BufferedMesgBroadcaster intercepts the incoming messages - from the given decode stream, buffers them, and offers - an opportunity to edit the messages before broadcasting - the messages to all registered listeners. - - - To edit the messages, an IMesgBroadcastPlugin must be - registered. All registered IMesgBroadcastPlugins are given - the opportunity to see each message as they are decoded, - as well as to see and edit the final list of - messages before broadcast to listeners - - - - - - Implements Dynastream CRC16 function - - - - - Event Args Class associated with the DeveloperFieldDescrtiption Event - - - - - This class will decode a .fit file reading the file header and any definition or data messages. - - - - - Reads the file header to check if the file is FIT. - Does not check CRC. - Returns true if file is FIT. - - Seekable (file)stream to parse - - - - Reads the FIT binary file header and crc to check compatibility and integrity. - Also checks data reords size. - Returns true if file is ok (not corrupt). - - Seekable (file)stream to parse. - - - - Reads a FIT binary file. - - Seekable (file)stream to parse. - - Returns true if reading finishes successfully. - - - - - Reads a FIT binary file. - - Seekable (file)stream to parse. - When true, skip file header. Also CRC will not be calculated. - - Returns true if reading finishes successfully. - - - - - Reads a FIT binary File - - Seekable (file)stream to parse. - Decode Mode to use for reading the file - - Returns true if reading finishes successfully. - - - - - - - - - - - - Mode used for Read Operations - - - - - Indicates that file contains valid Header and CRC data - - - - - Indicates that the Stream Contains a Header that is Corrupt - - - - - Indicates that the Stream does not contain a Header or CRC - - - - - Determines whether the specified is equal to the current . - - - true if the specified is equal to the current ; otherwise, false. - - The to compare with the current . - - - - Determines whether the specified is equal to the current . - - - true if the specified is equal to the current ; otherwise, false. - - - The to compare with the current . - - - - - Serves as a hash function for a particular type. - - - A hash code for the current . - - - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - - - A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: Value Meaning Less than zero This instance precedes in the sort order. Zero This instance occurs in the same position in the sort order as . Greater than zero This instance follows in the sort order. - - An object to compare with this instance. is not the same type as this instance. - - - - Retrieve the Native Field Number that this Developer Field Overrides - - - Native Field Number that is overridden if applicable, - otherwise - - - - - Represents a Developer Field Definition - - - - - Gets a boolean indicating if the Field Definition has associated meta - data - - - - - Gets the Field Number associated with the Developer Field - - - - - Gets the Number of bytes associated with the Developer Field - - - - - Gets the developer index of the Developer Field - - - - - Gets the current description message for the field - - - - - Gets the Associated Developer Id for the message - - - - - - - - - - - If description parameter is invalid - - - - - Gets the Value of the Application Version for the Field Description - - - - - Gets the Value of the Application Id for the Field Description - - - - - Gets the Value of the Field Definition Number for thbe Field Description - - - - - Supports generating binary .FIT files. Header, Message Definition and Message - data may be written. - - - - - If default ctor is used Header object may be manipulated if desired before Open is called. - - - - - Updates the data size and CRC in the file header - Updates file CRC - - - - - - - - - - - - - - - Extends System.Exception to provide application specific exceptions. - - - - - Implements .FIT header encode/decode. - - - - - Build a standard header with CRC. The CRC will be - precomputed and it is assumed no data is present yet. - - - - - Build a standard header with CRC. The CRC will be - precomputed and it is assumed no data is present yet. - - - - - Build header by decoding callers stream. - - - - - - Verify Header format is valid. - - - - - - Populate header object by decoding callers stream - - Readable stream - - - - Output header object to beginning of callers writeable stream. Crc should - be recalculated before calling. - - Writeable, Seekable stream. Position set to end of header - - - - Recompute the header CRC based on the current contents of the header object - - - - - - - - - - Replace an existing field, otherwise add a reference to fields list - - Caller allocated field - - - - Insert a field at the desired index. If the field already exists in the mesg it is first removed. - - Index to insert the field, if index is out of range, the field is added to the end of the list - Caller allocated field - - - - Removes the specified field from this message. - - The Field to be removed from this message. - - - - Removes all fields from this message that have been generated through - component expansion while decoding the source .FIT file. - - - - - The MesgBroadcaster manages Mesg and MesgDefinition events. Its - handlers should be connected to the source of Mesg and MesgDef events - (such as a file decoder). - Clients may subscribe to the Broadcasters events (Mesg, Mesg Def - or specofic Profile Mesg) - - - - - Architecture defaults to Little Endian (unless decoded from an binary defn as Big Endian) - This could be exposed in the future to programatically create BE streams. - - - - - Represents the Fit Profile including message, field and type definition. - - - - - Implements the AccelerometerData profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - - - returns number of elements in field SampleTimeOffset - - - - Retrieves the SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the accelerometer sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in accel_x and accel_y and accel_z - 0 based index of SampleTimeOffset element to retrieve - Returns nullable ushort representing the SampleTimeOffset field - - - - Set SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the accelerometer sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in accel_x and accel_y and accel_z - 0 based index of sample_time_offset - Nullable field value to be set - - - - - - returns number of elements in field AccelX - - - - Retrieves the AccelX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of AccelX element to retrieve - Returns nullable ushort representing the AccelX field - - - - Set AccelX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of accel_x - Nullable field value to be set - - - - - - returns number of elements in field AccelY - - - - Retrieves the AccelY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of AccelY element to retrieve - Returns nullable ushort representing the AccelY field - - - - Set AccelY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of accel_y - Nullable field value to be set - - - - - - returns number of elements in field AccelZ - - - - Retrieves the AccelZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of AccelZ element to retrieve - Returns nullable ushort representing the AccelZ field - - - - Set AccelZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of accel_z - Nullable field value to be set - - - - - - returns number of elements in field CalibratedAccelX - - - - Retrieves the CalibratedAccelX field - Units: g - Comment: Calibrated accel reading - 0 based index of CalibratedAccelX element to retrieve - Returns nullable float representing the CalibratedAccelX field - - - - Set CalibratedAccelX field - Units: g - Comment: Calibrated accel reading - 0 based index of calibrated_accel_x - Nullable field value to be set - - - - - - returns number of elements in field CalibratedAccelY - - - - Retrieves the CalibratedAccelY field - Units: g - Comment: Calibrated accel reading - 0 based index of CalibratedAccelY element to retrieve - Returns nullable float representing the CalibratedAccelY field - - - - Set CalibratedAccelY field - Units: g - Comment: Calibrated accel reading - 0 based index of calibrated_accel_y - Nullable field value to be set - - - - - - returns number of elements in field CalibratedAccelZ - - - - Retrieves the CalibratedAccelZ field - Units: g - Comment: Calibrated accel reading - 0 based index of CalibratedAccelZ element to retrieve - Returns nullable float representing the CalibratedAccelZ field - - - - Set CalibratedAccelZ field - Units: g - Comment: Calibrated accel reading - 0 based index of calibrated_accel_z - Nullable field value to be set - - - - - - returns number of elements in field CompressedCalibratedAccelX - - - - Retrieves the CompressedCalibratedAccelX field - Units: mG - Comment: Calibrated accel reading - 0 based index of CompressedCalibratedAccelX element to retrieve - Returns nullable short representing the CompressedCalibratedAccelX field - - - - Set CompressedCalibratedAccelX field - Units: mG - Comment: Calibrated accel reading - 0 based index of compressed_calibrated_accel_x - Nullable field value to be set - - - - - - returns number of elements in field CompressedCalibratedAccelY - - - - Retrieves the CompressedCalibratedAccelY field - Units: mG - Comment: Calibrated accel reading - 0 based index of CompressedCalibratedAccelY element to retrieve - Returns nullable short representing the CompressedCalibratedAccelY field - - - - Set CompressedCalibratedAccelY field - Units: mG - Comment: Calibrated accel reading - 0 based index of compressed_calibrated_accel_y - Nullable field value to be set - - - - - - returns number of elements in field CompressedCalibratedAccelZ - - - - Retrieves the CompressedCalibratedAccelZ field - Units: mG - Comment: Calibrated accel reading - 0 based index of CompressedCalibratedAccelZ element to retrieve - Returns nullable short representing the CompressedCalibratedAccelZ field - - - - Set CompressedCalibratedAccelZ field - Units: mG - Comment: Calibrated accel reading - 0 based index of compressed_calibrated_accel_z - Nullable field value to be set - - - - Implements the Activity profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Comment: Exclude pauses - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Comment: Exclude pauses - Nullable field value to be set - - - - Retrieves the NumSessions field - Returns nullable ushort representing the NumSessions field - - - - Set NumSessions field - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable Activity enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Event field - Returns nullable Event enum representing the Event field - - - - Set Event field - Nullable field value to be set - - - - Retrieves the EventType field - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Nullable field value to be set - - - - Retrieves the LocalTimestamp field - Comment: timestamp epoch expressed in local time, used to convert activity timestamps to local time - Returns nullable uint representing the LocalTimestamp field - - - - Set LocalTimestamp field - Comment: timestamp epoch expressed in local time, used to convert activity timestamps to local time - Nullable field value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Implements the AntChannelId profile message. - - - - - Field Numbers for - - - - - Retrieves the ChannelNumber field - Returns nullable byte representing the ChannelNumber field - - - - Set ChannelNumber field - Nullable field value to be set - - - - Retrieves the DeviceType field - Returns nullable byte representing the DeviceType field - - - - Set DeviceType field - Nullable field value to be set - - - - Retrieves the DeviceNumber field - Returns nullable ushort representing the DeviceNumber field - - - - Set DeviceNumber field - Nullable field value to be set - - - - Retrieves the TransmissionType field - Returns nullable byte representing the TransmissionType field - - - - Set TransmissionType field - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Nullable field value to be set - - - - Implements the AntRx profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the FractionalTimestamp field - Units: s - Returns nullable float representing the FractionalTimestamp field - - - - Set FractionalTimestamp field - Units: s - Nullable field value to be set - - - - Retrieves the MesgId field - Returns nullable byte representing the MesgId field - - - - Set MesgId field - Nullable field value to be set - - - - - - returns number of elements in field MesgData - - - - Retrieves the MesgData field - 0 based index of MesgData element to retrieve - Returns nullable byte representing the MesgData field - - - - Set MesgData field - 0 based index of mesg_data - Nullable field value to be set - - - - Retrieves the ChannelNumber field - Returns nullable byte representing the ChannelNumber field - - - - Set ChannelNumber field - Nullable field value to be set - - - - - - returns number of elements in field Data - - - - Retrieves the Data field - 0 based index of Data element to retrieve - Returns nullable byte representing the Data field - - - - Set Data field - 0 based index of data - Nullable field value to be set - - - - Implements the AntTx profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the FractionalTimestamp field - Units: s - Returns nullable float representing the FractionalTimestamp field - - - - Set FractionalTimestamp field - Units: s - Nullable field value to be set - - - - Retrieves the MesgId field - Returns nullable byte representing the MesgId field - - - - Set MesgId field - Nullable field value to be set - - - - - - returns number of elements in field MesgData - - - - Retrieves the MesgData field - 0 based index of MesgData element to retrieve - Returns nullable byte representing the MesgData field - - - - Set MesgData field - 0 based index of mesg_data - Nullable field value to be set - - - - Retrieves the ChannelNumber field - Returns nullable byte representing the ChannelNumber field - - - - Set ChannelNumber field - Nullable field value to be set - - - - - - returns number of elements in field Data - - - - Retrieves the Data field - 0 based index of Data element to retrieve - Returns nullable byte representing the Data field - - - - Set Data field - 0 based index of data - Nullable field value to be set - - - - Implements the AviationAttitude profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Timestamp message was output - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Timestamp message was output - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Nullable field value to be set - - - - - - returns number of elements in field SystemTime - - - - Retrieves the SystemTime field - Units: ms - Comment: System time associated with sample expressed in ms. - 0 based index of SystemTime element to retrieve - Returns nullable uint representing the SystemTime field - - - - Set SystemTime field - Units: ms - Comment: System time associated with sample expressed in ms. - 0 based index of system_time - Nullable field value to be set - - - - - - returns number of elements in field Pitch - - - - Retrieves the Pitch field - Units: radians - Comment: Range -PI/2 to +PI/2 - 0 based index of Pitch element to retrieve - Returns nullable float representing the Pitch field - - - - Set Pitch field - Units: radians - Comment: Range -PI/2 to +PI/2 - 0 based index of pitch - Nullable field value to be set - - - - - - returns number of elements in field Roll - - - - Retrieves the Roll field - Units: radians - Comment: Range -PI to +PI - 0 based index of Roll element to retrieve - Returns nullable float representing the Roll field - - - - Set Roll field - Units: radians - Comment: Range -PI to +PI - 0 based index of roll - Nullable field value to be set - - - - - - returns number of elements in field AccelLateral - - - - Retrieves the AccelLateral field - Units: m/s^2 - Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - 0 based index of AccelLateral element to retrieve - Returns nullable float representing the AccelLateral field - - - - Set AccelLateral field - Units: m/s^2 - Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - 0 based index of accel_lateral - Nullable field value to be set - - - - - - returns number of elements in field AccelNormal - - - - Retrieves the AccelNormal field - Units: m/s^2 - Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - 0 based index of AccelNormal element to retrieve - Returns nullable float representing the AccelNormal field - - - - Set AccelNormal field - Units: m/s^2 - Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - 0 based index of accel_normal - Nullable field value to be set - - - - - - returns number of elements in field TurnRate - - - - Retrieves the TurnRate field - Units: radians/second - Comment: Range -8.727 to +8.727 (-500 degs/sec to +500 degs/sec) - 0 based index of TurnRate element to retrieve - Returns nullable float representing the TurnRate field - - - - Set TurnRate field - Units: radians/second - Comment: Range -8.727 to +8.727 (-500 degs/sec to +500 degs/sec) - 0 based index of turn_rate - Nullable field value to be set - - - - - - returns number of elements in field Stage - - - - Retrieves the Stage field - 0 based index of Stage element to retrieve - Returns nullable AttitudeStage enum representing the Stage field - - - - Set Stage field - 0 based index of stage - Nullable field value to be set - - - - - - returns number of elements in field AttitudeStageComplete - - - - Retrieves the AttitudeStageComplete field - Units: % - Comment: The percent complete of the current attitude stage. Set to 0 for attitude stages 0, 1 and 2 and to 100 for attitude stage 3 by AHRS modules that do not support it. Range - 100 - 0 based index of AttitudeStageComplete element to retrieve - Returns nullable byte representing the AttitudeStageComplete field - - - - Set AttitudeStageComplete field - Units: % - Comment: The percent complete of the current attitude stage. Set to 0 for attitude stages 0, 1 and 2 and to 100 for attitude stage 3 by AHRS modules that do not support it. Range - 100 - 0 based index of attitude_stage_complete - Nullable field value to be set - - - - - - returns number of elements in field Track - - - - Retrieves the Track field - Units: radians - Comment: Track Angle/Heading Range 0 - 2pi - 0 based index of Track element to retrieve - Returns nullable float representing the Track field - - - - Set Track field - Units: radians - Comment: Track Angle/Heading Range 0 - 2pi - 0 based index of track - Nullable field value to be set - - - - - - returns number of elements in field Validity - - - - Retrieves the Validity field - 0 based index of Validity element to retrieve - Returns nullable ushort representing the Validity field - - - - Set Validity field - 0 based index of validity - Nullable field value to be set - - - - Implements the BarometerData profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - - - returns number of elements in field SampleTimeOffset - - - - Retrieves the SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the barometer sample with the corrosponding index was taken. The samples may span across seconds. Array size must match the number of samples in baro_cal - 0 based index of SampleTimeOffset element to retrieve - Returns nullable ushort representing the SampleTimeOffset field - - - - Set SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the barometer sample with the corrosponding index was taken. The samples may span across seconds. Array size must match the number of samples in baro_cal - 0 based index of sample_time_offset - Nullable field value to be set - - - - - - returns number of elements in field BaroPres - - - - Retrieves the BaroPres field - Units: Pa - Comment: These are the raw ADC reading. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of BaroPres element to retrieve - Returns nullable uint representing the BaroPres field - - - - Set BaroPres field - Units: Pa - Comment: These are the raw ADC reading. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of baro_pres - Nullable field value to be set - - - - Implements the BikeProfile profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the Odometer field - Units: m - Returns nullable float representing the Odometer field - - - - Set Odometer field - Units: m - Nullable field value to be set - - - - Retrieves the BikeSpdAntId field - Returns nullable ushort representing the BikeSpdAntId field - - - - Set BikeSpdAntId field - Nullable field value to be set - - - - Retrieves the BikeCadAntId field - Returns nullable ushort representing the BikeCadAntId field - - - - Set BikeCadAntId field - Nullable field value to be set - - - - Retrieves the BikeSpdcadAntId field - Returns nullable ushort representing the BikeSpdcadAntId field - - - - Set BikeSpdcadAntId field - Nullable field value to be set - - - - Retrieves the BikePowerAntId field - Returns nullable ushort representing the BikePowerAntId field - - - - Set BikePowerAntId field - Nullable field value to be set - - - - Retrieves the CustomWheelsize field - Units: m - Returns nullable float representing the CustomWheelsize field - - - - Set CustomWheelsize field - Units: m - Nullable field value to be set - - - - Retrieves the AutoWheelsize field - Units: m - Returns nullable float representing the AutoWheelsize field - - - - Set AutoWheelsize field - Units: m - Nullable field value to be set - - - - Retrieves the BikeWeight field - Units: kg - Returns nullable float representing the BikeWeight field - - - - Set BikeWeight field - Units: kg - Nullable field value to be set - - - - Retrieves the PowerCalFactor field - Units: % - Returns nullable float representing the PowerCalFactor field - - - - Set PowerCalFactor field - Units: % - Nullable field value to be set - - - - Retrieves the AutoWheelCal field - Returns nullable Bool enum representing the AutoWheelCal field - - - - Set AutoWheelCal field - Nullable field value to be set - - - - Retrieves the AutoPowerZero field - Returns nullable Bool enum representing the AutoPowerZero field - - - - Set AutoPowerZero field - Nullable field value to be set - - - - Retrieves the Id field - Returns nullable byte representing the Id field - - - - Set Id field - Nullable field value to be set - - - - Retrieves the SpdEnabled field - Returns nullable Bool enum representing the SpdEnabled field - - - - Set SpdEnabled field - Nullable field value to be set - - - - Retrieves the CadEnabled field - Returns nullable Bool enum representing the CadEnabled field - - - - Set CadEnabled field - Nullable field value to be set - - - - Retrieves the SpdcadEnabled field - Returns nullable Bool enum representing the SpdcadEnabled field - - - - Set SpdcadEnabled field - Nullable field value to be set - - - - Retrieves the PowerEnabled field - Returns nullable Bool enum representing the PowerEnabled field - - - - Set PowerEnabled field - Nullable field value to be set - - - - Retrieves the CrankLength field - Units: mm - Returns nullable float representing the CrankLength field - - - - Set CrankLength field - Units: mm - Nullable field value to be set - - - - Retrieves the Enabled field - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Nullable field value to be set - - - - Retrieves the BikeSpdAntIdTransType field - Returns nullable byte representing the BikeSpdAntIdTransType field - - - - Set BikeSpdAntIdTransType field - Nullable field value to be set - - - - Retrieves the BikeCadAntIdTransType field - Returns nullable byte representing the BikeCadAntIdTransType field - - - - Set BikeCadAntIdTransType field - Nullable field value to be set - - - - Retrieves the BikeSpdcadAntIdTransType field - Returns nullable byte representing the BikeSpdcadAntIdTransType field - - - - Set BikeSpdcadAntIdTransType field - Nullable field value to be set - - - - Retrieves the BikePowerAntIdTransType field - Returns nullable byte representing the BikePowerAntIdTransType field - - - - Set BikePowerAntIdTransType field - Nullable field value to be set - - - - Retrieves the OdometerRollover field - Comment: Rollover counter that can be used to extend the odometer - Returns nullable byte representing the OdometerRollover field - - - - Set OdometerRollover field - Comment: Rollover counter that can be used to extend the odometer - Nullable field value to be set - - - - Retrieves the FrontGearNum field - Comment: Number of front gears - Returns nullable byte representing the FrontGearNum field - - - - Set FrontGearNum field - Comment: Number of front gears - Nullable field value to be set - - - - - - returns number of elements in field FrontGear - - - - Retrieves the FrontGear field - Comment: Number of teeth on each gear 0 is innermost - 0 based index of FrontGear element to retrieve - Returns nullable byte representing the FrontGear field - - - - Set FrontGear field - Comment: Number of teeth on each gear 0 is innermost - 0 based index of front_gear - Nullable field value to be set - - - - Retrieves the RearGearNum field - Comment: Number of rear gears - Returns nullable byte representing the RearGearNum field - - - - Set RearGearNum field - Comment: Number of rear gears - Nullable field value to be set - - - - - - returns number of elements in field RearGear - - - - Retrieves the RearGear field - Comment: Number of teeth on each gear 0 is innermost - 0 based index of RearGear element to retrieve - Returns nullable byte representing the RearGear field - - - - Set RearGear field - Comment: Number of teeth on each gear 0 is innermost - 0 based index of rear_gear - Nullable field value to be set - - - - Retrieves the ShimanoDi2Enabled field - Returns nullable Bool enum representing the ShimanoDi2Enabled field - - - - Set ShimanoDi2Enabled field - Nullable field value to be set - - - - Implements the BloodPressure profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the SystolicPressure field - Units: mmHg - Returns nullable ushort representing the SystolicPressure field - - - - Set SystolicPressure field - Units: mmHg - Nullable field value to be set - - - - Retrieves the DiastolicPressure field - Units: mmHg - Returns nullable ushort representing the DiastolicPressure field - - - - Set DiastolicPressure field - Units: mmHg - Nullable field value to be set - - - - Retrieves the MeanArterialPressure field - Units: mmHg - Returns nullable ushort representing the MeanArterialPressure field - - - - Set MeanArterialPressure field - Units: mmHg - Nullable field value to be set - - - - Retrieves the Map3SampleMean field - Units: mmHg - Returns nullable ushort representing the Map3SampleMean field - - - - Set Map3SampleMean field - Units: mmHg - Nullable field value to be set - - - - Retrieves the MapMorningValues field - Units: mmHg - Returns nullable ushort representing the MapMorningValues field - - - - Set MapMorningValues field - Units: mmHg - Nullable field value to be set - - - - Retrieves the MapEveningValues field - Units: mmHg - Returns nullable ushort representing the MapEveningValues field - - - - Set MapEveningValues field - Units: mmHg - Nullable field value to be set - - - - Retrieves the HeartRate field - Units: bpm - Returns nullable byte representing the HeartRate field - - - - Set HeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the HeartRateType field - Returns nullable HrType enum representing the HeartRateType field - - - - Set HeartRateType field - Nullable field value to be set - - - - Retrieves the Status field - Returns nullable BpStatus enum representing the Status field - - - - Set Status field - Nullable field value to be set - - - - Retrieves the UserProfileIndex field - Comment: Associates this blood pressure message to a user. This corresponds to the index of the user profile message in the blood pressure file. - Returns nullable ushort representing the UserProfileIndex field - - - - Set UserProfileIndex field - Comment: Associates this blood pressure message to a user. This corresponds to the index of the user profile message in the blood pressure file. - Nullable field value to be set - - - - Implements the CadenceZone profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HighValue field - Units: rpm - Returns nullable byte representing the HighValue field - - - - Set HighValue field - Units: rpm - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Implements the CameraEvent profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp. - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - Retrieves the CameraEventType field - Returns nullable CameraEventType enum representing the CameraEventType field - - - - Set CameraEventType field - Nullable field value to be set - - - - Retrieves the CameraFileUuid field - Returns byte[] representing the CameraFileUuid field - - - - Retrieves the CameraFileUuid field - Returns String representing the CameraFileUuid field - - - - Set CameraFileUuid field - field value to be set - - - - Set CameraFileUuid field - field value to be set - - - - Retrieves the CameraOrientation field - Returns nullable CameraOrientationType enum representing the CameraOrientation field - - - - Set CameraOrientation field - Nullable field value to be set - - - - Implements the Capabilities profile message. - - - - - Field Numbers for - - - - - - - returns number of elements in field Languages - - - - Retrieves the Languages field - Comment: Use language_bits_x types where x is index of array. - 0 based index of Languages element to retrieve - Returns nullable byte representing the Languages field - - - - Set Languages field - Comment: Use language_bits_x types where x is index of array. - 0 based index of languages - Nullable field value to be set - - - - - - returns number of elements in field Sports - - - - Retrieves the Sports field - Comment: Use sport_bits_x types where x is index of array. - 0 based index of Sports element to retrieve - Returns nullable byte representing the Sports field - - - - Set Sports field - Comment: Use sport_bits_x types where x is index of array. - 0 based index of sports - Nullable field value to be set - - - - Retrieves the WorkoutsSupported field - Returns nullable uint representing the WorkoutsSupported field - - - - Set WorkoutsSupported field - Nullable field value to be set - - - - Retrieves the ConnectivitySupported field - Returns nullable uint representing the ConnectivitySupported field - - - - Set ConnectivitySupported field - Nullable field value to be set - - - - Implements the ClimbPro profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the ClimbProEvent field - Returns nullable ClimbProEvent enum representing the ClimbProEvent field - - - - Set ClimbProEvent field - Nullable field value to be set - - - - Retrieves the ClimbNumber field - Returns nullable ushort representing the ClimbNumber field - - - - Set ClimbNumber field - Nullable field value to be set - - - - Retrieves the ClimbCategory field - Returns nullable byte representing the ClimbCategory field - - - - Set ClimbCategory field - Nullable field value to be set - - - - Retrieves the CurrentDist field - Units: m - Returns nullable float representing the CurrentDist field - - - - Set CurrentDist field - Units: m - Nullable field value to be set - - - - Implements the Connectivity profile message. - - - - - Field Numbers for - - - - - Retrieves the BluetoothEnabled field - Comment: Use Bluetooth for connectivity features - Returns nullable Bool enum representing the BluetoothEnabled field - - - - Set BluetoothEnabled field - Comment: Use Bluetooth for connectivity features - Nullable field value to be set - - - - Retrieves the BluetoothLeEnabled field - Comment: Use Bluetooth Low Energy for connectivity features - Returns nullable Bool enum representing the BluetoothLeEnabled field - - - - Set BluetoothLeEnabled field - Comment: Use Bluetooth Low Energy for connectivity features - Nullable field value to be set - - - - Retrieves the AntEnabled field - Comment: Use ANT for connectivity features - Returns nullable Bool enum representing the AntEnabled field - - - - Set AntEnabled field - Comment: Use ANT for connectivity features - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the LiveTrackingEnabled field - Returns nullable Bool enum representing the LiveTrackingEnabled field - - - - Set LiveTrackingEnabled field - Nullable field value to be set - - - - Retrieves the WeatherConditionsEnabled field - Returns nullable Bool enum representing the WeatherConditionsEnabled field - - - - Set WeatherConditionsEnabled field - Nullable field value to be set - - - - Retrieves the WeatherAlertsEnabled field - Returns nullable Bool enum representing the WeatherAlertsEnabled field - - - - Set WeatherAlertsEnabled field - Nullable field value to be set - - - - Retrieves the AutoActivityUploadEnabled field - Returns nullable Bool enum representing the AutoActivityUploadEnabled field - - - - Set AutoActivityUploadEnabled field - Nullable field value to be set - - - - Retrieves the CourseDownloadEnabled field - Returns nullable Bool enum representing the CourseDownloadEnabled field - - - - Set CourseDownloadEnabled field - Nullable field value to be set - - - - Retrieves the WorkoutDownloadEnabled field - Returns nullable Bool enum representing the WorkoutDownloadEnabled field - - - - Set WorkoutDownloadEnabled field - Nullable field value to be set - - - - Retrieves the GpsEphemerisDownloadEnabled field - Returns nullable Bool enum representing the GpsEphemerisDownloadEnabled field - - - - Set GpsEphemerisDownloadEnabled field - Nullable field value to be set - - - - Retrieves the IncidentDetectionEnabled field - Returns nullable Bool enum representing the IncidentDetectionEnabled field - - - - Set IncidentDetectionEnabled field - Nullable field value to be set - - - - Retrieves the GrouptrackEnabled field - Returns nullable Bool enum representing the GrouptrackEnabled field - - - - Set GrouptrackEnabled field - Nullable field value to be set - - - - Implements the Course profile message. - - - - - Field Numbers for - - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the Capabilities field - Returns nullable uint representing the Capabilities field - - - - Set Capabilities field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Implements the CoursePoint profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Returns nullable float representing the Distance field - - - - Set Distance field - Units: m - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable CoursePoint enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the Favorite field - Returns nullable Bool enum representing the Favorite field - - - - Set Favorite field - Nullable field value to be set - - - - Implements the DeveloperDataId profile message. - - - - - Field Numbers for - - - - - - - returns number of elements in field DeveloperId - - - - Retrieves the DeveloperId field - 0 based index of DeveloperId element to retrieve - Returns nullable byte representing the DeveloperId field - - - - Set DeveloperId field - 0 based index of developer_id - Nullable field value to be set - - - - - - returns number of elements in field ApplicationId - - - - Retrieves the ApplicationId field - 0 based index of ApplicationId element to retrieve - Returns nullable byte representing the ApplicationId field - - - - Set ApplicationId field - 0 based index of application_id - Nullable field value to be set - - - - Retrieves the ManufacturerId field - Returns nullable ushort representing the ManufacturerId field - - - - Set ManufacturerId field - Nullable field value to be set - - - - Retrieves the DeveloperDataIndex field - Returns nullable byte representing the DeveloperDataIndex field - - - - Set DeveloperDataIndex field - Nullable field value to be set - - - - Retrieves the ApplicationVersion field - Returns nullable uint representing the ApplicationVersion field - - - - Set ApplicationVersion field - Nullable field value to be set - - - - Implements the DeviceAuxBatteryInfo profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Nullable field value to be set - - - - Retrieves the BatteryVoltage field - Units: V - Returns nullable float representing the BatteryVoltage field - - - - Set BatteryVoltage field - Units: V - Nullable field value to be set - - - - Retrieves the BatteryStatus field - Returns nullable byte representing the BatteryStatus field - - - - Set BatteryStatus field - Nullable field value to be set - - - - Retrieves the BatteryIdentifier field - Returns nullable byte representing the BatteryIdentifier field - - - - Set BatteryIdentifier field - Nullable field value to be set - - - - Implements the DeviceInfo profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Nullable field value to be set - - - - Retrieves the DeviceType field - Returns nullable byte representing the DeviceType field - - - - Set DeviceType field - Nullable field value to be set - - - - Retrieves the BleDeviceType subfield - Nullable byte representing the BleDeviceType subfield - - - - - Set BleDeviceType subfield - Subfield value to be set - - - - Retrieves the AntplusDeviceType subfield - Nullable byte representing the AntplusDeviceType subfield - - - - - Set AntplusDeviceType subfield - Subfield value to be set - - - - Retrieves the AntDeviceType subfield - Nullable byte representing the AntDeviceType subfield - - - - - Set AntDeviceType subfield - Subfield value to be set - - - - Retrieves the LocalDeviceType subfield - Nullable byte representing the LocalDeviceType subfield - - - - - Set LocalDeviceType subfield - Subfield value to be set - - - - Retrieves the Manufacturer field - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Nullable field value to be set - - - - Retrieves the SerialNumber field - Returns nullable uint representing the SerialNumber field - - - - Set SerialNumber field - Nullable field value to be set - - - - Retrieves the Product field - Returns nullable ushort representing the Product field - - - - Set Product field - Nullable field value to be set - - - - Retrieves the FaveroProduct subfield - Nullable ushort representing the FaveroProduct subfield - - - - - Set FaveroProduct subfield - Subfield value to be set - - - - Retrieves the GarminProduct subfield - Nullable ushort representing the GarminProduct subfield - - - - - Set GarminProduct subfield - Subfield value to be set - - - - Retrieves the SoftwareVersion field - Returns nullable float representing the SoftwareVersion field - - - - Set SoftwareVersion field - Nullable field value to be set - - - - Retrieves the HardwareVersion field - Returns nullable byte representing the HardwareVersion field - - - - Set HardwareVersion field - Nullable field value to be set - - - - Retrieves the CumOperatingTime field - Units: s - Comment: Reset by new battery or charge. - Returns nullable uint representing the CumOperatingTime field - - - - Set CumOperatingTime field - Units: s - Comment: Reset by new battery or charge. - Nullable field value to be set - - - - Retrieves the BatteryVoltage field - Units: V - Returns nullable float representing the BatteryVoltage field - - - - Set BatteryVoltage field - Units: V - Nullable field value to be set - - - - Retrieves the BatteryStatus field - Returns nullable byte representing the BatteryStatus field - - - - Set BatteryStatus field - Nullable field value to be set - - - - Retrieves the SensorPosition field - Comment: Indicates the location of the sensor - Returns nullable BodyLocation enum representing the SensorPosition field - - - - Set SensorPosition field - Comment: Indicates the location of the sensor - Nullable field value to be set - - - - Retrieves the Descriptor field - Comment: Used to describe the sensor or location - Returns byte[] representing the Descriptor field - - - - Retrieves the Descriptor field - Comment: Used to describe the sensor or location - Returns String representing the Descriptor field - - - - Set Descriptor field - Comment: Used to describe the sensor or location - field value to be set - - - - Set Descriptor field - Comment: Used to describe the sensor or location - field value to be set - - - - Retrieves the AntTransmissionType field - Returns nullable byte representing the AntTransmissionType field - - - - Set AntTransmissionType field - Nullable field value to be set - - - - Retrieves the AntDeviceNumber field - Returns nullable ushort representing the AntDeviceNumber field - - - - Set AntDeviceNumber field - Nullable field value to be set - - - - Retrieves the AntNetwork field - Returns nullable AntNetwork enum representing the AntNetwork field - - - - Set AntNetwork field - Nullable field value to be set - - - - Retrieves the SourceType field - Returns nullable SourceType enum representing the SourceType field - - - - Set SourceType field - Nullable field value to be set - - - - Retrieves the ProductName field - Comment: Optional free form string to indicate the devices name or model - Returns byte[] representing the ProductName field - - - - Retrieves the ProductName field - Comment: Optional free form string to indicate the devices name or model - Returns String representing the ProductName field - - - - Set ProductName field - Comment: Optional free form string to indicate the devices name or model - field value to be set - - - - Set ProductName field - Comment: Optional free form string to indicate the devices name or model - field value to be set - - - - Retrieves the BatteryLevel field - Units: % - Returns nullable byte representing the BatteryLevel field - - - - Set BatteryLevel field - Units: % - Nullable field value to be set - - - - Implements the DeviceSettings profile message. - - - - - Field Numbers for - - - - - Retrieves the ActiveTimeZone field - Comment: Index into time zone arrays. - Returns nullable byte representing the ActiveTimeZone field - - - - Set ActiveTimeZone field - Comment: Index into time zone arrays. - Nullable field value to be set - - - - Retrieves the UtcOffset field - Comment: Offset from system time. Required to convert timestamp from system time to UTC. - Returns nullable uint representing the UtcOffset field - - - - Set UtcOffset field - Comment: Offset from system time. Required to convert timestamp from system time to UTC. - Nullable field value to be set - - - - - - returns number of elements in field TimeOffset - - - - Retrieves the TimeOffset field - Units: s - Comment: Offset from system time. - 0 based index of TimeOffset element to retrieve - Returns nullable uint representing the TimeOffset field - - - - Set TimeOffset field - Units: s - Comment: Offset from system time. - 0 based index of time_offset - Nullable field value to be set - - - - - - returns number of elements in field TimeMode - - - - Retrieves the TimeMode field - Comment: Display mode for the time - 0 based index of TimeMode element to retrieve - Returns nullable TimeMode enum representing the TimeMode field - - - - Set TimeMode field - Comment: Display mode for the time - 0 based index of time_mode - Nullable field value to be set - - - - - - returns number of elements in field TimeZoneOffset - - - - Retrieves the TimeZoneOffset field - Units: hr - Comment: timezone offset in 1/4 hour increments - 0 based index of TimeZoneOffset element to retrieve - Returns nullable float representing the TimeZoneOffset field - - - - Set TimeZoneOffset field - Units: hr - Comment: timezone offset in 1/4 hour increments - 0 based index of time_zone_offset - Nullable field value to be set - - - - Retrieves the BacklightMode field - Comment: Mode for backlight - Returns nullable BacklightMode enum representing the BacklightMode field - - - - Set BacklightMode field - Comment: Mode for backlight - Nullable field value to be set - - - - Retrieves the ActivityTrackerEnabled field - Comment: Enabled state of the activity tracker functionality - Returns nullable Bool enum representing the ActivityTrackerEnabled field - - - - Set ActivityTrackerEnabled field - Comment: Enabled state of the activity tracker functionality - Nullable field value to be set - - - - Retrieves the ClockTime field - Comment: UTC timestamp used to set the devices clock and date - Returns DateTime representing the ClockTime field - - - - Set ClockTime field - Comment: UTC timestamp used to set the devices clock and date - Nullable field value to be set - - - - - - returns number of elements in field PagesEnabled - - - - Retrieves the PagesEnabled field - Comment: Bitfield to configure enabled screens for each supported loop - 0 based index of PagesEnabled element to retrieve - Returns nullable ushort representing the PagesEnabled field - - - - Set PagesEnabled field - Comment: Bitfield to configure enabled screens for each supported loop - 0 based index of pages_enabled - Nullable field value to be set - - - - Retrieves the MoveAlertEnabled field - Comment: Enabled state of the move alert - Returns nullable Bool enum representing the MoveAlertEnabled field - - - - Set MoveAlertEnabled field - Comment: Enabled state of the move alert - Nullable field value to be set - - - - Retrieves the DateMode field - Comment: Display mode for the date - Returns nullable DateMode enum representing the DateMode field - - - - Set DateMode field - Comment: Display mode for the date - Nullable field value to be set - - - - Retrieves the DisplayOrientation field - Returns nullable DisplayOrientation enum representing the DisplayOrientation field - - - - Set DisplayOrientation field - Nullable field value to be set - - - - Retrieves the MountingSide field - Returns nullable Side enum representing the MountingSide field - - - - Set MountingSide field - Nullable field value to be set - - - - - - returns number of elements in field DefaultPage - - - - Retrieves the DefaultPage field - Comment: Bitfield to indicate one page as default for each supported loop - 0 based index of DefaultPage element to retrieve - Returns nullable ushort representing the DefaultPage field - - - - Set DefaultPage field - Comment: Bitfield to indicate one page as default for each supported loop - 0 based index of default_page - Nullable field value to be set - - - - Retrieves the AutosyncMinSteps field - Units: steps - Comment: Minimum steps before an autosync can occur - Returns nullable ushort representing the AutosyncMinSteps field - - - - Set AutosyncMinSteps field - Units: steps - Comment: Minimum steps before an autosync can occur - Nullable field value to be set - - - - Retrieves the AutosyncMinTime field - Units: minutes - Comment: Minimum minutes before an autosync can occur - Returns nullable ushort representing the AutosyncMinTime field - - - - Set AutosyncMinTime field - Units: minutes - Comment: Minimum minutes before an autosync can occur - Nullable field value to be set - - - - Retrieves the LactateThresholdAutodetectEnabled field - Comment: Enable auto-detect setting for the lactate threshold feature. - Returns nullable Bool enum representing the LactateThresholdAutodetectEnabled field - - - - Set LactateThresholdAutodetectEnabled field - Comment: Enable auto-detect setting for the lactate threshold feature. - Nullable field value to be set - - - - Retrieves the BleAutoUploadEnabled field - Comment: Automatically upload using BLE - Returns nullable Bool enum representing the BleAutoUploadEnabled field - - - - Set BleAutoUploadEnabled field - Comment: Automatically upload using BLE - Nullable field value to be set - - - - Retrieves the AutoSyncFrequency field - Comment: Helps to conserve battery by changing modes - Returns nullable AutoSyncFrequency enum representing the AutoSyncFrequency field - - - - Set AutoSyncFrequency field - Comment: Helps to conserve battery by changing modes - Nullable field value to be set - - - - Retrieves the AutoActivityDetect field - Comment: Allows setting specific activities auto-activity detect enabled/disabled settings - Returns nullable uint representing the AutoActivityDetect field - - - - Set AutoActivityDetect field - Comment: Allows setting specific activities auto-activity detect enabled/disabled settings - Nullable field value to be set - - - - Retrieves the NumberOfScreens field - Comment: Number of screens configured to display - Returns nullable byte representing the NumberOfScreens field - - - - Set NumberOfScreens field - Comment: Number of screens configured to display - Nullable field value to be set - - - - Retrieves the SmartNotificationDisplayOrientation field - Comment: Smart Notification display orientation - Returns nullable DisplayOrientation enum representing the SmartNotificationDisplayOrientation field - - - - Set SmartNotificationDisplayOrientation field - Comment: Smart Notification display orientation - Nullable field value to be set - - - - Retrieves the TapInterface field - Returns nullable Switch enum representing the TapInterface field - - - - Set TapInterface field - Nullable field value to be set - - - - Retrieves the TapSensitivity field - Comment: Used to hold the tap threshold setting - Returns nullable TapSensitivity enum representing the TapSensitivity field - - - - Set TapSensitivity field - Comment: Used to hold the tap threshold setting - Nullable field value to be set - - - - Implements the DiveAlarm profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Comment: Index of the alarm - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Comment: Index of the alarm - Nullable field value to be set - - - - Retrieves the Depth field - Units: m - Comment: Depth setting (m) for depth type alarms - Returns nullable float representing the Depth field - - - - Set Depth field - Units: m - Comment: Depth setting (m) for depth type alarms - Nullable field value to be set - - - - Retrieves the Time field - Units: s - Comment: Time setting (s) for time type alarms - Returns nullable int representing the Time field - - - - Set Time field - Units: s - Comment: Time setting (s) for time type alarms - Nullable field value to be set - - - - Retrieves the Enabled field - Comment: Enablement flag - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Comment: Enablement flag - Nullable field value to be set - - - - Retrieves the AlarmType field - Comment: Alarm type setting - Returns nullable DiveAlarmType enum representing the AlarmType field - - - - Set AlarmType field - Comment: Alarm type setting - Nullable field value to be set - - - - Retrieves the Sound field - Comment: Tone and Vibe setting for the alarm - Returns nullable Tone enum representing the Sound field - - - - Set Sound field - Comment: Tone and Vibe setting for the alarm - Nullable field value to be set - - - - - - returns number of elements in field DiveTypes - - - - Retrieves the DiveTypes field - Comment: Dive types the alarm will trigger on - 0 based index of DiveTypes element to retrieve - Returns nullable SubSport enum representing the DiveTypes field - - - - Set DiveTypes field - Comment: Dive types the alarm will trigger on - 0 based index of dive_types - Nullable field value to be set - - - - Retrieves the Id field - Comment: Alarm ID - Returns nullable uint representing the Id field - - - - Set Id field - Comment: Alarm ID - Nullable field value to be set - - - - Retrieves the PopupEnabled field - Comment: Show a visible pop-up for this alarm - Returns nullable Bool enum representing the PopupEnabled field - - - - Set PopupEnabled field - Comment: Show a visible pop-up for this alarm - Nullable field value to be set - - - - Retrieves the TriggerOnDescent field - Comment: Trigger the alarm on descent - Returns nullable Bool enum representing the TriggerOnDescent field - - - - Set TriggerOnDescent field - Comment: Trigger the alarm on descent - Nullable field value to be set - - - - Retrieves the TriggerOnAscent field - Comment: Trigger the alarm on ascent - Returns nullable Bool enum representing the TriggerOnAscent field - - - - Set TriggerOnAscent field - Comment: Trigger the alarm on ascent - Nullable field value to be set - - - - Retrieves the Repeating field - Comment: Repeat alarm each time threshold is crossed? - Returns nullable Bool enum representing the Repeating field - - - - Set Repeating field - Comment: Repeat alarm each time threshold is crossed? - Nullable field value to be set - - - - Retrieves the Speed field - Units: mps - Comment: Ascent/descent rate (mps) setting for speed type alarms - Returns nullable float representing the Speed field - - - - Set Speed field - Units: mps - Comment: Ascent/descent rate (mps) setting for speed type alarms - Nullable field value to be set - - - - Implements the DiveApneaAlarm profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Comment: Index of the alarm - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Comment: Index of the alarm - Nullable field value to be set - - - - Retrieves the Depth field - Units: m - Comment: Depth setting (m) for depth type alarms - Returns nullable float representing the Depth field - - - - Set Depth field - Units: m - Comment: Depth setting (m) for depth type alarms - Nullable field value to be set - - - - Retrieves the Time field - Units: s - Comment: Time setting (s) for time type alarms - Returns nullable int representing the Time field - - - - Set Time field - Units: s - Comment: Time setting (s) for time type alarms - Nullable field value to be set - - - - Retrieves the Enabled field - Comment: Enablement flag - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Comment: Enablement flag - Nullable field value to be set - - - - Retrieves the AlarmType field - Comment: Alarm type setting - Returns nullable DiveAlarmType enum representing the AlarmType field - - - - Set AlarmType field - Comment: Alarm type setting - Nullable field value to be set - - - - Retrieves the Sound field - Comment: Tone and Vibe setting for the alarm. - Returns nullable Tone enum representing the Sound field - - - - Set Sound field - Comment: Tone and Vibe setting for the alarm. - Nullable field value to be set - - - - - - returns number of elements in field DiveTypes - - - - Retrieves the DiveTypes field - Comment: Dive types the alarm will trigger on - 0 based index of DiveTypes element to retrieve - Returns nullable SubSport enum representing the DiveTypes field - - - - Set DiveTypes field - Comment: Dive types the alarm will trigger on - 0 based index of dive_types - Nullable field value to be set - - - - Retrieves the Id field - Comment: Alarm ID - Returns nullable uint representing the Id field - - - - Set Id field - Comment: Alarm ID - Nullable field value to be set - - - - Retrieves the PopupEnabled field - Comment: Show a visible pop-up for this alarm - Returns nullable Bool enum representing the PopupEnabled field - - - - Set PopupEnabled field - Comment: Show a visible pop-up for this alarm - Nullable field value to be set - - - - Retrieves the TriggerOnDescent field - Comment: Trigger the alarm on descent - Returns nullable Bool enum representing the TriggerOnDescent field - - - - Set TriggerOnDescent field - Comment: Trigger the alarm on descent - Nullable field value to be set - - - - Retrieves the TriggerOnAscent field - Comment: Trigger the alarm on ascent - Returns nullable Bool enum representing the TriggerOnAscent field - - - - Set TriggerOnAscent field - Comment: Trigger the alarm on ascent - Nullable field value to be set - - - - Retrieves the Repeating field - Comment: Repeat alarm each time threshold is crossed? - Returns nullable Bool enum representing the Repeating field - - - - Set Repeating field - Comment: Repeat alarm each time threshold is crossed? - Nullable field value to be set - - - - Retrieves the Speed field - Units: mps - Comment: Ascent/descent rate (mps) setting for speed type alarms - Returns nullable float representing the Speed field - - - - Set Speed field - Units: mps - Comment: Ascent/descent rate (mps) setting for speed type alarms - Nullable field value to be set - - - - Implements the DiveGas profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HeliumContent field - Units: percent - Returns nullable byte representing the HeliumContent field - - - - Set HeliumContent field - Units: percent - Nullable field value to be set - - - - Retrieves the OxygenContent field - Units: percent - Returns nullable byte representing the OxygenContent field - - - - Set OxygenContent field - Units: percent - Nullable field value to be set - - - - Retrieves the Status field - Returns nullable DiveGasStatus enum representing the Status field - - - - Set Status field - Nullable field value to be set - - - - Retrieves the Mode field - Returns nullable DiveGasMode enum representing the Mode field - - - - Set Mode field - Nullable field value to be set - - - - Implements the DiveSettings profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the Model field - Returns nullable TissueModelType enum representing the Model field - - - - Set Model field - Nullable field value to be set - - - - Retrieves the GfLow field - Units: percent - Returns nullable byte representing the GfLow field - - - - Set GfLow field - Units: percent - Nullable field value to be set - - - - Retrieves the GfHigh field - Units: percent - Returns nullable byte representing the GfHigh field - - - - Set GfHigh field - Units: percent - Nullable field value to be set - - - - Retrieves the WaterType field - Returns nullable WaterType enum representing the WaterType field - - - - Set WaterType field - Nullable field value to be set - - - - Retrieves the WaterDensity field - Units: kg/m^3 - Comment: Fresh water is usually 1000; salt water is usually 1025 - Returns nullable float representing the WaterDensity field - - - - Set WaterDensity field - Units: kg/m^3 - Comment: Fresh water is usually 1000; salt water is usually 1025 - Nullable field value to be set - - - - Retrieves the Po2Warn field - Units: percent - Comment: Typically 1.40 - Returns nullable float representing the Po2Warn field - - - - Set Po2Warn field - Units: percent - Comment: Typically 1.40 - Nullable field value to be set - - - - Retrieves the Po2Critical field - Units: percent - Comment: Typically 1.60 - Returns nullable float representing the Po2Critical field - - - - Set Po2Critical field - Units: percent - Comment: Typically 1.60 - Nullable field value to be set - - - - Retrieves the Po2Deco field - Units: percent - Returns nullable float representing the Po2Deco field - - - - Set Po2Deco field - Units: percent - Nullable field value to be set - - - - Retrieves the SafetyStopEnabled field - Returns nullable Bool enum representing the SafetyStopEnabled field - - - - Set SafetyStopEnabled field - Nullable field value to be set - - - - Retrieves the BottomDepth field - Returns nullable float representing the BottomDepth field - - - - Set BottomDepth field - Nullable field value to be set - - - - Retrieves the BottomTime field - Returns nullable uint representing the BottomTime field - - - - Set BottomTime field - Nullable field value to be set - - - - Retrieves the ApneaCountdownEnabled field - Returns nullable Bool enum representing the ApneaCountdownEnabled field - - - - Set ApneaCountdownEnabled field - Nullable field value to be set - - - - Retrieves the ApneaCountdownTime field - Returns nullable uint representing the ApneaCountdownTime field - - - - Set ApneaCountdownTime field - Nullable field value to be set - - - - Retrieves the BacklightMode field - Returns nullable DiveBacklightMode enum representing the BacklightMode field - - - - Set BacklightMode field - Nullable field value to be set - - - - Retrieves the BacklightBrightness field - Returns nullable byte representing the BacklightBrightness field - - - - Set BacklightBrightness field - Nullable field value to be set - - - - Retrieves the BacklightTimeout field - Returns nullable byte representing the BacklightTimeout field - - - - Set BacklightTimeout field - Nullable field value to be set - - - - Retrieves the RepeatDiveInterval field - Units: s - Comment: Time between surfacing and ending the activity - Returns nullable ushort representing the RepeatDiveInterval field - - - - Set RepeatDiveInterval field - Units: s - Comment: Time between surfacing and ending the activity - Nullable field value to be set - - - - Retrieves the SafetyStopTime field - Units: s - Comment: Time at safety stop (if enabled) - Returns nullable ushort representing the SafetyStopTime field - - - - Set SafetyStopTime field - Units: s - Comment: Time at safety stop (if enabled) - Nullable field value to be set - - - - Retrieves the HeartRateSourceType field - Returns nullable SourceType enum representing the HeartRateSourceType field - - - - Set HeartRateSourceType field - Nullable field value to be set - - - - Retrieves the HeartRateSource field - Returns nullable byte representing the HeartRateSource field - - - - Set HeartRateSource field - Nullable field value to be set - - - - Retrieves the HeartRateAntplusDeviceType subfield - Nullable byte representing the HeartRateAntplusDeviceType subfield - - - - - Set HeartRateAntplusDeviceType subfield - Subfield value to be set - - - - Retrieves the HeartRateLocalDeviceType subfield - Nullable byte representing the HeartRateLocalDeviceType subfield - - - - - Set HeartRateLocalDeviceType subfield - Subfield value to be set - - - - Retrieves the TravelGas field - Comment: Index of travel dive_gas message - Returns nullable ushort representing the TravelGas field - - - - Set TravelGas field - Comment: Index of travel dive_gas message - Nullable field value to be set - - - - Retrieves the CcrLowSetpointSwitchMode field - Comment: If low PO2 should be switched to automatically - Returns nullable CcrSetpointSwitchMode enum representing the CcrLowSetpointSwitchMode field - - - - Set CcrLowSetpointSwitchMode field - Comment: If low PO2 should be switched to automatically - Nullable field value to be set - - - - Retrieves the CcrLowSetpoint field - Units: percent - Comment: Target PO2 when using low setpoint - Returns nullable float representing the CcrLowSetpoint field - - - - Set CcrLowSetpoint field - Units: percent - Comment: Target PO2 when using low setpoint - Nullable field value to be set - - - - Retrieves the CcrLowSetpointDepth field - Units: m - Comment: Depth to switch to low setpoint in automatic mode - Returns nullable float representing the CcrLowSetpointDepth field - - - - Set CcrLowSetpointDepth field - Units: m - Comment: Depth to switch to low setpoint in automatic mode - Nullable field value to be set - - - - Retrieves the CcrHighSetpointSwitchMode field - Comment: If high PO2 should be switched to automatically - Returns nullable CcrSetpointSwitchMode enum representing the CcrHighSetpointSwitchMode field - - - - Set CcrHighSetpointSwitchMode field - Comment: If high PO2 should be switched to automatically - Nullable field value to be set - - - - Retrieves the CcrHighSetpoint field - Units: percent - Comment: Target PO2 when using high setpoint - Returns nullable float representing the CcrHighSetpoint field - - - - Set CcrHighSetpoint field - Units: percent - Comment: Target PO2 when using high setpoint - Nullable field value to be set - - - - Retrieves the CcrHighSetpointDepth field - Units: m - Comment: Depth to switch to high setpoint in automatic mode - Returns nullable float representing the CcrHighSetpointDepth field - - - - Set CcrHighSetpointDepth field - Units: m - Comment: Depth to switch to high setpoint in automatic mode - Nullable field value to be set - - - - Retrieves the GasConsumptionDisplay field - Comment: Type of gas consumption rate to display. Some values are only valid if tank volume is known. - Returns nullable GasConsumptionRateType enum representing the GasConsumptionDisplay field - - - - Set GasConsumptionDisplay field - Comment: Type of gas consumption rate to display. Some values are only valid if tank volume is known. - Nullable field value to be set - - - - Retrieves the UpKeyEnabled field - Comment: Indicates whether the up key is enabled during dives - Returns nullable Bool enum representing the UpKeyEnabled field - - - - Set UpKeyEnabled field - Comment: Indicates whether the up key is enabled during dives - Nullable field value to be set - - - - Retrieves the DiveSounds field - Comment: Sounds and vibration enabled or disabled in-dive - Returns nullable Tone enum representing the DiveSounds field - - - - Set DiveSounds field - Comment: Sounds and vibration enabled or disabled in-dive - Nullable field value to be set - - - - Retrieves the LastStopMultiple field - Comment: Usually 1.0/1.5/2.0 representing 3/4.5/6m or 10/15/20ft - Returns nullable float representing the LastStopMultiple field - - - - Set LastStopMultiple field - Comment: Usually 1.0/1.5/2.0 representing 3/4.5/6m or 10/15/20ft - Nullable field value to be set - - - - Retrieves the NoFlyTimeMode field - Comment: Indicates which guidelines to use for no-fly surface interval. - Returns nullable NoFlyTimeMode enum representing the NoFlyTimeMode field - - - - Set NoFlyTimeMode field - Comment: Indicates which guidelines to use for no-fly surface interval. - Nullable field value to be set - - - - Implements the DiveSummary profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the ReferenceMesg field - Returns nullable ushort representing the ReferenceMesg field - - - - Set ReferenceMesg field - Nullable field value to be set - - - - Retrieves the ReferenceIndex field - Returns nullable ushort representing the ReferenceIndex field - - - - Set ReferenceIndex field - Nullable field value to be set - - - - Retrieves the AvgDepth field - Units: m - Comment: 0 if above water - Returns nullable float representing the AvgDepth field - - - - Set AvgDepth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the MaxDepth field - Units: m - Comment: 0 if above water - Returns nullable float representing the MaxDepth field - - - - Set MaxDepth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the SurfaceInterval field - Units: s - Comment: Time since end of last dive - Returns nullable uint representing the SurfaceInterval field - - - - Set SurfaceInterval field - Units: s - Comment: Time since end of last dive - Nullable field value to be set - - - - Retrieves the StartCns field - Units: percent - Returns nullable byte representing the StartCns field - - - - Set StartCns field - Units: percent - Nullable field value to be set - - - - Retrieves the EndCns field - Units: percent - Returns nullable byte representing the EndCns field - - - - Set EndCns field - Units: percent - Nullable field value to be set - - - - Retrieves the StartN2 field - Units: percent - Returns nullable ushort representing the StartN2 field - - - - Set StartN2 field - Units: percent - Nullable field value to be set - - - - Retrieves the EndN2 field - Units: percent - Returns nullable ushort representing the EndN2 field - - - - Set EndN2 field - Units: percent - Nullable field value to be set - - - - Retrieves the O2Toxicity field - Units: OTUs - Returns nullable ushort representing the O2Toxicity field - - - - Set O2Toxicity field - Units: OTUs - Nullable field value to be set - - - - Retrieves the DiveNumber field - Returns nullable uint representing the DiveNumber field - - - - Set DiveNumber field - Nullable field value to be set - - - - Retrieves the BottomTime field - Units: s - Returns nullable float representing the BottomTime field - - - - Set BottomTime field - Units: s - Nullable field value to be set - - - - Retrieves the AvgPressureSac field - Units: bar/min - Comment: Average pressure-based surface air consumption - Returns nullable float representing the AvgPressureSac field - - - - Set AvgPressureSac field - Units: bar/min - Comment: Average pressure-based surface air consumption - Nullable field value to be set - - - - Retrieves the AvgVolumeSac field - Units: L/min - Comment: Average volumetric surface air consumption - Returns nullable float representing the AvgVolumeSac field - - - - Set AvgVolumeSac field - Units: L/min - Comment: Average volumetric surface air consumption - Nullable field value to be set - - - - Retrieves the AvgRmv field - Units: L/min - Comment: Average respiratory minute volume - Returns nullable float representing the AvgRmv field - - - - Set AvgRmv field - Units: L/min - Comment: Average respiratory minute volume - Nullable field value to be set - - - - Retrieves the DescentTime field - Units: s - Comment: Time to reach deepest level stop - Returns nullable float representing the DescentTime field - - - - Set DescentTime field - Units: s - Comment: Time to reach deepest level stop - Nullable field value to be set - - - - Retrieves the AscentTime field - Units: s - Comment: Time after leaving bottom until reaching surface - Returns nullable float representing the AscentTime field - - - - Set AscentTime field - Units: s - Comment: Time after leaving bottom until reaching surface - Nullable field value to be set - - - - Retrieves the AvgAscentRate field - Units: m/s - Comment: Average ascent rate, not including descents or stops - Returns nullable float representing the AvgAscentRate field - - - - Set AvgAscentRate field - Units: m/s - Comment: Average ascent rate, not including descents or stops - Nullable field value to be set - - - - Retrieves the AvgDescentRate field - Units: m/s - Comment: Average descent rate, not including ascents or stops - Returns nullable float representing the AvgDescentRate field - - - - Set AvgDescentRate field - Units: m/s - Comment: Average descent rate, not including ascents or stops - Nullable field value to be set - - - - Retrieves the MaxAscentRate field - Units: m/s - Comment: Maximum ascent rate - Returns nullable float representing the MaxAscentRate field - - - - Set MaxAscentRate field - Units: m/s - Comment: Maximum ascent rate - Nullable field value to be set - - - - Retrieves the MaxDescentRate field - Units: m/s - Comment: Maximum descent rate - Returns nullable float representing the MaxDescentRate field - - - - Set MaxDescentRate field - Units: m/s - Comment: Maximum descent rate - Nullable field value to be set - - - - Retrieves the HangTime field - Units: s - Comment: Time spent neither ascending nor descending - Returns nullable float representing the HangTime field - - - - Set HangTime field - Units: s - Comment: Time spent neither ascending nor descending - Nullable field value to be set - - - - Implements the Event profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Event field - Returns nullable Event enum representing the Event field - - - - Set Event field - Nullable field value to be set - - - - Retrieves the EventType field - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Nullable field value to be set - - - - Retrieves the Data16 field - Returns nullable ushort representing the Data16 field - - - - Set Data16 field - Nullable field value to be set - - - - Retrieves the Data field - Returns nullable uint representing the Data field - - - - Set Data field - Nullable field value to be set - - - - Retrieves the TimerTrigger subfield - Nullable TimerTrigger enum representing the TimerTrigger subfield - - - - - Set TimerTrigger subfield - Subfield value to be set - - - - Retrieves the CoursePointIndex subfield - Nullable ushort representing the CoursePointIndex subfield - - - - - Set CoursePointIndex subfield - Subfield value to be set - - - - Retrieves the BatteryLevel subfield - Units: V - Nullable float representing the BatteryLevel subfield - - - - - Set BatteryLevel subfield - Units: V - Subfield value to be set - - - - Retrieves the VirtualPartnerSpeed subfield - Units: m/s - Nullable float representing the VirtualPartnerSpeed subfield - - - - - Set VirtualPartnerSpeed subfield - Units: m/s - Subfield value to be set - - - - Retrieves the HrHighAlert subfield - Units: bpm - Nullable byte representing the HrHighAlert subfield - - - - - Set HrHighAlert subfield - Units: bpm - Subfield value to be set - - - - Retrieves the HrLowAlert subfield - Units: bpm - Nullable byte representing the HrLowAlert subfield - - - - - Set HrLowAlert subfield - Units: bpm - Subfield value to be set - - - - Retrieves the SpeedHighAlert subfield - Units: m/s - Nullable float representing the SpeedHighAlert subfield - - - - - Set SpeedHighAlert subfield - Units: m/s - Subfield value to be set - - - - Retrieves the SpeedLowAlert subfield - Units: m/s - Nullable float representing the SpeedLowAlert subfield - - - - - Set SpeedLowAlert subfield - Units: m/s - Subfield value to be set - - - - Retrieves the CadHighAlert subfield - Units: rpm - Nullable ushort representing the CadHighAlert subfield - - - - - Set CadHighAlert subfield - Units: rpm - Subfield value to be set - - - - Retrieves the CadLowAlert subfield - Units: rpm - Nullable ushort representing the CadLowAlert subfield - - - - - Set CadLowAlert subfield - Units: rpm - Subfield value to be set - - - - Retrieves the PowerHighAlert subfield - Units: watts - Nullable ushort representing the PowerHighAlert subfield - - - - - Set PowerHighAlert subfield - Units: watts - Subfield value to be set - - - - Retrieves the PowerLowAlert subfield - Units: watts - Nullable ushort representing the PowerLowAlert subfield - - - - - Set PowerLowAlert subfield - Units: watts - Subfield value to be set - - - - Retrieves the TimeDurationAlert subfield - Units: s - Nullable float representing the TimeDurationAlert subfield - - - - - Set TimeDurationAlert subfield - Units: s - Subfield value to be set - - - - Retrieves the DistanceDurationAlert subfield - Units: m - Nullable float representing the DistanceDurationAlert subfield - - - - - Set DistanceDurationAlert subfield - Units: m - Subfield value to be set - - - - Retrieves the CalorieDurationAlert subfield - Units: calories - Nullable uint representing the CalorieDurationAlert subfield - - - - - Set CalorieDurationAlert subfield - Units: calories - Subfield value to be set - - - - Retrieves the FitnessEquipmentState subfield - Nullable FitnessEquipmentState enum representing the FitnessEquipmentState subfield - - - - - Set FitnessEquipmentState subfield - Subfield value to be set - - - - Retrieves the SportPoint subfield - Nullable uint representing the SportPoint subfield - - - - - Set SportPoint subfield - Subfield value to be set - - - - Retrieves the GearChangeData subfield - Nullable uint representing the GearChangeData subfield - - - - - Set GearChangeData subfield - Subfield value to be set - - - - Retrieves the RiderPosition subfield - Comment: Indicates the rider position value. - Nullable RiderPositionType enum representing the RiderPosition subfield - - - - - Set RiderPosition subfield - Comment: Indicates the rider position value. - Subfield value to be set - - - - Retrieves the CommTimeout subfield - Nullable ushort representing the CommTimeout subfield - - - - - Set CommTimeout subfield - Subfield value to be set - - - - Retrieves the DiveAlert subfield - Nullable DiveAlert enum representing the DiveAlert subfield - - - - - Set DiveAlert subfield - Subfield value to be set - - - - Retrieves the RadarThreatAlert subfield - Comment: The first byte is the radar_threat_level_max, the second byte is the radar_threat_count, third bytes is the average approach speed, and the 4th byte is the max approach speed - Nullable uint representing the RadarThreatAlert subfield - - - - - Set RadarThreatAlert subfield - Comment: The first byte is the radar_threat_level_max, the second byte is the radar_threat_count, third bytes is the average approach speed, and the 4th byte is the max approach speed - Subfield value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Retrieves the Score field - Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - Returns nullable ushort representing the Score field - - - - Set Score field - Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - Nullable field value to be set - - - - Retrieves the OpponentScore field - Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - Returns nullable ushort representing the OpponentScore field - - - - Set OpponentScore field - Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - Nullable field value to be set - - - - Retrieves the FrontGearNum field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Front gear number. 1 is innermost. - Returns nullable byte representing the FrontGearNum field - - - - Set FrontGearNum field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Front gear number. 1 is innermost. - Nullable field value to be set - - - - Retrieves the FrontGear field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of front teeth. - Returns nullable byte representing the FrontGear field - - - - Set FrontGear field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of front teeth. - Nullable field value to be set - - - - Retrieves the RearGearNum field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Rear gear number. 1 is innermost. - Returns nullable byte representing the RearGearNum field - - - - Set RearGearNum field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Rear gear number. 1 is innermost. - Nullable field value to be set - - - - Retrieves the RearGear field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of rear teeth. - Returns nullable byte representing the RearGear field - - - - Set RearGear field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of rear teeth. - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Nullable field value to be set - - - - Retrieves the RadarThreatLevelMax field - Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - Returns nullable RadarThreatLevelType enum representing the RadarThreatLevelMax field - - - - Set RadarThreatLevelMax field - Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - Nullable field value to be set - - - - Retrieves the RadarThreatCount field - Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - Returns nullable byte representing the RadarThreatCount field - - - - Set RadarThreatCount field - Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - Nullable field value to be set - - - - Retrieves the RadarThreatAvgApproachSpeed field - Units: m/s - Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - Returns nullable float representing the RadarThreatAvgApproachSpeed field - - - - Set RadarThreatAvgApproachSpeed field - Units: m/s - Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - Nullable field value to be set - - - - Retrieves the RadarThreatMaxApproachSpeed field - Units: m/s - Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - Returns nullable float representing the RadarThreatMaxApproachSpeed field - - - - Set RadarThreatMaxApproachSpeed field - Units: m/s - Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - Nullable field value to be set - - - - Implements the ExdDataConceptConfiguration profile message. - - - - - Field Numbers for - - - - - Retrieves the ScreenIndex field - Returns nullable byte representing the ScreenIndex field - - - - Set ScreenIndex field - Nullable field value to be set - - - - Retrieves the ConceptField field - Returns nullable byte representing the ConceptField field - - - - Set ConceptField field - Nullable field value to be set - - - - Retrieves the FieldId field - Returns nullable byte representing the FieldId field - - - - Set FieldId field - Nullable field value to be set - - - - Retrieves the ConceptIndex field - Returns nullable byte representing the ConceptIndex field - - - - Set ConceptIndex field - Nullable field value to be set - - - - Retrieves the DataPage field - Returns nullable byte representing the DataPage field - - - - Set DataPage field - Nullable field value to be set - - - - Retrieves the ConceptKey field - Returns nullable byte representing the ConceptKey field - - - - Set ConceptKey field - Nullable field value to be set - - - - Retrieves the Scaling field - Returns nullable byte representing the Scaling field - - - - Set Scaling field - Nullable field value to be set - - - - Retrieves the DataUnits field - Returns nullable ExdDataUnits enum representing the DataUnits field - - - - Set DataUnits field - Nullable field value to be set - - - - Retrieves the Qualifier field - Returns nullable ExdQualifiers enum representing the Qualifier field - - - - Set Qualifier field - Nullable field value to be set - - - - Retrieves the Descriptor field - Returns nullable ExdDescriptors enum representing the Descriptor field - - - - Set Descriptor field - Nullable field value to be set - - - - Retrieves the IsSigned field - Returns nullable Bool enum representing the IsSigned field - - - - Set IsSigned field - Nullable field value to be set - - - - Implements the ExdDataFieldConfiguration profile message. - - - - - Field Numbers for - - - - - Retrieves the ScreenIndex field - Returns nullable byte representing the ScreenIndex field - - - - Set ScreenIndex field - Nullable field value to be set - - - - Retrieves the ConceptField field - Returns nullable byte representing the ConceptField field - - - - Set ConceptField field - Nullable field value to be set - - - - Retrieves the FieldId field - Returns nullable byte representing the FieldId field - - - - Set FieldId field - Nullable field value to be set - - - - Retrieves the ConceptCount field - Returns nullable byte representing the ConceptCount field - - - - Set ConceptCount field - Nullable field value to be set - - - - Retrieves the DisplayType field - Returns nullable ExdDisplayType enum representing the DisplayType field - - - - Set DisplayType field - Nullable field value to be set - - - - - - returns number of elements in field Title - - - - Retrieves the Title field - 0 based index of Title element to retrieve - Returns byte[] representing the Title field - - - - Retrieves the Title field - 0 based index of Title element to retrieve - Returns String representing the Title field - - - - Set Title field - 0 based index of Title element to retrieve - field value to be set - - - - Set Title field - 0 based index of title - field value to be set - - - - Implements the ExdScreenConfiguration profile message. - - - - - Field Numbers for - - - - - Retrieves the ScreenIndex field - Returns nullable byte representing the ScreenIndex field - - - - Set ScreenIndex field - Nullable field value to be set - - - - Retrieves the FieldCount field - Comment: number of fields in screen - Returns nullable byte representing the FieldCount field - - - - Set FieldCount field - Comment: number of fields in screen - Nullable field value to be set - - - - Retrieves the Layout field - Returns nullable ExdLayout enum representing the Layout field - - - - Set Layout field - Nullable field value to be set - - - - Retrieves the ScreenEnabled field - Returns nullable Bool enum representing the ScreenEnabled field - - - - Set ScreenEnabled field - Nullable field value to be set - - - - Implements the ExerciseTitle profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the ExerciseCategory field - Returns nullable ushort representing the ExerciseCategory field - - - - Set ExerciseCategory field - Nullable field value to be set - - - - Retrieves the ExerciseName field - Returns nullable ushort representing the ExerciseName field - - - - Set ExerciseName field - Nullable field value to be set - - - - - - returns number of elements in field WktStepName - - - - Retrieves the WktStepName field - 0 based index of WktStepName element to retrieve - Returns byte[] representing the WktStepName field - - - - Retrieves the WktStepName field - 0 based index of WktStepName element to retrieve - Returns String representing the WktStepName field - - - - Set WktStepName field - 0 based index of WktStepName element to retrieve - field value to be set - - - - Set WktStepName field - 0 based index of wkt_step_name - field value to be set - - - - Implements the FieldCapabilities profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the File field - Returns nullable File enum representing the File field - - - - Set File field - Nullable field value to be set - - - - Retrieves the MesgNum field - Returns nullable ushort representing the MesgNum field - - - - Set MesgNum field - Nullable field value to be set - - - - Retrieves the FieldNum field - Returns nullable byte representing the FieldNum field - - - - Set FieldNum field - Nullable field value to be set - - - - Retrieves the Count field - Returns nullable ushort representing the Count field - - - - Set Count field - Nullable field value to be set - - - - Implements the FieldDescription profile message. - - - - - Field Numbers for - - - - - Retrieves the DeveloperDataIndex field - Returns nullable byte representing the DeveloperDataIndex field - - - - Set DeveloperDataIndex field - Nullable field value to be set - - - - Retrieves the FieldDefinitionNumber field - Returns nullable byte representing the FieldDefinitionNumber field - - - - Set FieldDefinitionNumber field - Nullable field value to be set - - - - Retrieves the FitBaseTypeId field - Returns nullable byte representing the FitBaseTypeId field - - - - Set FitBaseTypeId field - Nullable field value to be set - - - - - - returns number of elements in field FieldName - - - - Retrieves the FieldName field - 0 based index of FieldName element to retrieve - Returns byte[] representing the FieldName field - - - - Retrieves the FieldName field - 0 based index of FieldName element to retrieve - Returns String representing the FieldName field - - - - Set FieldName field - 0 based index of FieldName element to retrieve - field value to be set - - - - Set FieldName field - 0 based index of field_name - field value to be set - - - - Retrieves the Array field - Returns nullable byte representing the Array field - - - - Set Array field - Nullable field value to be set - - - - Retrieves the Components field - Returns byte[] representing the Components field - - - - Retrieves the Components field - Returns String representing the Components field - - - - Set Components field - field value to be set - - - - Set Components field - field value to be set - - - - Retrieves the Scale field - Returns nullable byte representing the Scale field - - - - Set Scale field - Nullable field value to be set - - - - Retrieves the Offset field - Returns nullable sbyte representing the Offset field - - - - Set Offset field - Nullable field value to be set - - - - - - returns number of elements in field Units - - - - Retrieves the Units field - 0 based index of Units element to retrieve - Returns byte[] representing the Units field - - - - Retrieves the Units field - 0 based index of Units element to retrieve - Returns String representing the Units field - - - - Set Units field - 0 based index of Units element to retrieve - field value to be set - - - - Set Units field - 0 based index of units - field value to be set - - - - Retrieves the Bits field - Returns byte[] representing the Bits field - - - - Retrieves the Bits field - Returns String representing the Bits field - - - - Set Bits field - field value to be set - - - - Set Bits field - field value to be set - - - - Retrieves the Accumulate field - Returns byte[] representing the Accumulate field - - - - Retrieves the Accumulate field - Returns String representing the Accumulate field - - - - Set Accumulate field - field value to be set - - - - Set Accumulate field - field value to be set - - - - Retrieves the FitBaseUnitId field - Returns nullable ushort representing the FitBaseUnitId field - - - - Set FitBaseUnitId field - Nullable field value to be set - - - - Retrieves the NativeMesgNum field - Returns nullable ushort representing the NativeMesgNum field - - - - Set NativeMesgNum field - Nullable field value to be set - - - - Retrieves the NativeFieldNum field - Returns nullable byte representing the NativeFieldNum field - - - - Set NativeFieldNum field - Nullable field value to be set - - - - Implements the FileCapabilities profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable File enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Flags field - Returns nullable byte representing the Flags field - - - - Set Flags field - Nullable field value to be set - - - - Retrieves the Directory field - Returns byte[] representing the Directory field - - - - Retrieves the Directory field - Returns String representing the Directory field - - - - Set Directory field - field value to be set - - - - Set Directory field - field value to be set - - - - Retrieves the MaxCount field - Returns nullable ushort representing the MaxCount field - - - - Set MaxCount field - Nullable field value to be set - - - - Retrieves the MaxSize field - Units: bytes - Returns nullable uint representing the MaxSize field - - - - Set MaxSize field - Units: bytes - Nullable field value to be set - - - - Implements the FileCreator profile message. - - - - - Field Numbers for - - - - - Retrieves the SoftwareVersion field - Returns nullable ushort representing the SoftwareVersion field - - - - Set SoftwareVersion field - Nullable field value to be set - - - - Retrieves the HardwareVersion field - Returns nullable byte representing the HardwareVersion field - - - - Set HardwareVersion field - Nullable field value to be set - - - - Implements the FileId profile message. - - - - - Field Numbers for - - - - - Retrieves the Type field - Returns nullable File enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Manufacturer field - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Nullable field value to be set - - - - Retrieves the Product field - Returns nullable ushort representing the Product field - - - - Set Product field - Nullable field value to be set - - - - Retrieves the FaveroProduct subfield - Nullable ushort representing the FaveroProduct subfield - - - - - Set FaveroProduct subfield - Subfield value to be set - - - - Retrieves the GarminProduct subfield - Nullable ushort representing the GarminProduct subfield - - - - - Set GarminProduct subfield - Subfield value to be set - - - - Retrieves the SerialNumber field - Returns nullable uint representing the SerialNumber field - - - - Set SerialNumber field - Nullable field value to be set - - - - Retrieves the TimeCreated field - Comment: Only set for files that are can be created/erased. - Returns DateTime representing the TimeCreated field - - - - Set TimeCreated field - Comment: Only set for files that are can be created/erased. - Nullable field value to be set - - - - Retrieves the Number field - Comment: Only set for files that are not created/erased. - Returns nullable ushort representing the Number field - - - - Set Number field - Comment: Only set for files that are not created/erased. - Nullable field value to be set - - - - Retrieves the ProductName field - Comment: Optional free form string to indicate the devices name or model - Returns byte[] representing the ProductName field - - - - Retrieves the ProductName field - Comment: Optional free form string to indicate the devices name or model - Returns String representing the ProductName field - - - - Set ProductName field - Comment: Optional free form string to indicate the devices name or model - field value to be set - - - - Set ProductName field - Comment: Optional free form string to indicate the devices name or model - field value to be set - - - - Implements the Goal profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the StartDate field - Returns DateTime representing the StartDate field - - - - Set StartDate field - Nullable field value to be set - - - - Retrieves the EndDate field - Returns DateTime representing the EndDate field - - - - Set EndDate field - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable Goal enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Value field - Returns nullable uint representing the Value field - - - - Set Value field - Nullable field value to be set - - - - Retrieves the Repeat field - Returns nullable Bool enum representing the Repeat field - - - - Set Repeat field - Nullable field value to be set - - - - Retrieves the TargetValue field - Returns nullable uint representing the TargetValue field - - - - Set TargetValue field - Nullable field value to be set - - - - Retrieves the Recurrence field - Returns nullable GoalRecurrence enum representing the Recurrence field - - - - Set Recurrence field - Nullable field value to be set - - - - Retrieves the RecurrenceValue field - Returns nullable ushort representing the RecurrenceValue field - - - - Set RecurrenceValue field - Nullable field value to be set - - - - Retrieves the Enabled field - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Nullable field value to be set - - - - Retrieves the Source field - Returns nullable GoalSource enum representing the Source field - - - - Set Source field - Nullable field value to be set - - - - Implements the GpsMetadata profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp. - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the EnhancedAltitude field - Units: m - Returns nullable float representing the EnhancedAltitude field - - - - Set EnhancedAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedSpeed field - Units: m/s - Returns nullable float representing the EnhancedSpeed field - - - - Set EnhancedSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the Heading field - Units: degrees - Returns nullable float representing the Heading field - - - - Set Heading field - Units: degrees - Nullable field value to be set - - - - Retrieves the UtcTimestamp field - Units: s - Comment: Used to correlate UTC to system time if the timestamp of the message is in system time. This UTC time is derived from the GPS data. - Returns DateTime representing the UtcTimestamp field - - - - Set UtcTimestamp field - Units: s - Comment: Used to correlate UTC to system time if the timestamp of the message is in system time. This UTC time is derived from the GPS data. - Nullable field value to be set - - - - - - returns number of elements in field Velocity - - - - Retrieves the Velocity field - Units: m/s - Comment: velocity[0] is lon velocity. Velocity[1] is lat velocity. Velocity[2] is altitude velocity. - 0 based index of Velocity element to retrieve - Returns nullable float representing the Velocity field - - - - Set Velocity field - Units: m/s - Comment: velocity[0] is lon velocity. Velocity[1] is lat velocity. Velocity[2] is altitude velocity. - 0 based index of velocity - Nullable field value to be set - - - - Implements the GyroscopeData profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - - - returns number of elements in field SampleTimeOffset - - - - Retrieves the SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the gyro sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in gyro_x and gyro_y and gyro_z - 0 based index of SampleTimeOffset element to retrieve - Returns nullable ushort representing the SampleTimeOffset field - - - - Set SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the gyro sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in gyro_x and gyro_y and gyro_z - 0 based index of sample_time_offset - Nullable field value to be set - - - - - - returns number of elements in field GyroX - - - - Retrieves the GyroX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of GyroX element to retrieve - Returns nullable ushort representing the GyroX field - - - - Set GyroX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of gyro_x - Nullable field value to be set - - - - - - returns number of elements in field GyroY - - - - Retrieves the GyroY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of GyroY element to retrieve - Returns nullable ushort representing the GyroY field - - - - Set GyroY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of gyro_y - Nullable field value to be set - - - - - - returns number of elements in field GyroZ - - - - Retrieves the GyroZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of GyroZ element to retrieve - Returns nullable ushort representing the GyroZ field - - - - Set GyroZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of gyro_z - Nullable field value to be set - - - - - - returns number of elements in field CalibratedGyroX - - - - Retrieves the CalibratedGyroX field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of CalibratedGyroX element to retrieve - Returns nullable float representing the CalibratedGyroX field - - - - Set CalibratedGyroX field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of calibrated_gyro_x - Nullable field value to be set - - - - - - returns number of elements in field CalibratedGyroY - - - - Retrieves the CalibratedGyroY field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of CalibratedGyroY element to retrieve - Returns nullable float representing the CalibratedGyroY field - - - - Set CalibratedGyroY field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of calibrated_gyro_y - Nullable field value to be set - - - - - - returns number of elements in field CalibratedGyroZ - - - - Retrieves the CalibratedGyroZ field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of CalibratedGyroZ element to retrieve - Returns nullable float representing the CalibratedGyroZ field - - - - Set CalibratedGyroZ field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of calibrated_gyro_z - Nullable field value to be set - - - - Implements the Hr profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the FractionalTimestamp field - Units: s - Returns nullable float representing the FractionalTimestamp field - - - - Set FractionalTimestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Time256 field - Units: s - Returns nullable float representing the Time256 field - - - - Set Time256 field - Units: s - Nullable field value to be set - - - - - - returns number of elements in field FilteredBpm - - - - Retrieves the FilteredBpm field - Units: bpm - 0 based index of FilteredBpm element to retrieve - Returns nullable byte representing the FilteredBpm field - - - - Set FilteredBpm field - Units: bpm - 0 based index of filtered_bpm - Nullable field value to be set - - - - - - returns number of elements in field EventTimestamp - - - - Retrieves the EventTimestamp field - Units: s - 0 based index of EventTimestamp element to retrieve - Returns nullable float representing the EventTimestamp field - - - - Set EventTimestamp field - Units: s - 0 based index of event_timestamp - Nullable field value to be set - - - - - - returns number of elements in field EventTimestamp12 - - - - Retrieves the EventTimestamp12 field - 0 based index of EventTimestamp12 element to retrieve - Returns nullable byte representing the EventTimestamp12 field - - - - Set EventTimestamp12 field - 0 based index of event_timestamp_12 - Nullable field value to be set - - - - Implements the HrmProfile profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Enabled field - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Nullable field value to be set - - - - Retrieves the HrmAntId field - Returns nullable ushort representing the HrmAntId field - - - - Set HrmAntId field - Nullable field value to be set - - - - Retrieves the LogHrv field - Returns nullable Bool enum representing the LogHrv field - - - - Set LogHrv field - Nullable field value to be set - - - - Retrieves the HrmAntIdTransType field - Returns nullable byte representing the HrmAntIdTransType field - - - - Set HrmAntIdTransType field - Nullable field value to be set - - - - Implements the Hrv profile message. - - - - - Field Numbers for - - - - - - - returns number of elements in field Time - - - - Retrieves the Time field - Units: s - Comment: Time between beats - 0 based index of Time element to retrieve - Returns nullable float representing the Time field - - - - Set Time field - Units: s - Comment: Time between beats - 0 based index of time - Nullable field value to be set - - - - Implements the HrZone profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HighBpm field - Units: bpm - Returns nullable byte representing the HighBpm field - - - - Set HighBpm field - Units: bpm - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Implements the Jump profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Returns nullable float representing the Distance field - - - - Set Distance field - Units: m - Nullable field value to be set - - - - Retrieves the Height field - Units: m - Returns nullable float representing the Height field - - - - Set Height field - Units: m - Nullable field value to be set - - - - Retrieves the Rotations field - Returns nullable byte representing the Rotations field - - - - Set Rotations field - Nullable field value to be set - - - - Retrieves the HangTime field - Units: s - Returns nullable float representing the HangTime field - - - - Set HangTime field - Units: s - Nullable field value to be set - - - - Retrieves the Score field - Comment: A score for a jump calculated based on hang time, rotations, and distance. - Returns nullable float representing the Score field - - - - Set Score field - Comment: A score for a jump calculated based on hang time, rotations, and distance. - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the Speed field - Units: m/s - Returns nullable float representing the Speed field - - - - Set Speed field - Units: m/s - Nullable field value to be set - - - - Retrieves the EnhancedSpeed field - Units: m/s - Returns nullable float representing the EnhancedSpeed field - - - - Set EnhancedSpeed field - Units: m/s - Nullable field value to be set - - - - Implements the Lap profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Timestamp field - Units: s - Comment: Lap end time. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Lap end time. - Nullable field value to be set - - - - Retrieves the Event field - Returns nullable Event enum representing the Event field - - - - Set Event field - Nullable field value to be set - - - - Retrieves the EventType field - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Nullable field value to be set - - - - Retrieves the StartTime field - Returns DateTime representing the StartTime field - - - - Set StartTime field - Nullable field value to be set - - - - Retrieves the StartPositionLat field - Units: semicircles - Returns nullable int representing the StartPositionLat field - - - - Set StartPositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the StartPositionLong field - Units: semicircles - Returns nullable int representing the StartPositionLong field - - - - Set StartPositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the EndPositionLat field - Units: semicircles - Returns nullable int representing the EndPositionLat field - - - - Set EndPositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the EndPositionLong field - Units: semicircles - Returns nullable int representing the EndPositionLong field - - - - Set EndPositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Returns nullable float representing the TotalElapsedTime field - - - - Set TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Nullable field value to be set - - - - Retrieves the TotalDistance field - Units: m - Returns nullable float representing the TotalDistance field - - - - Set TotalDistance field - Units: m - Nullable field value to be set - - - - Retrieves the TotalCycles field - Units: cycles - Returns nullable uint representing the TotalCycles field - - - - Set TotalCycles field - Units: cycles - Nullable field value to be set - - - - Retrieves the TotalStrides subfield - Units: strides - Nullable uint representing the TotalStrides subfield - - - - - Set TotalStrides subfield - Units: strides - Subfield value to be set - - - - Retrieves the TotalStrokes subfield - Units: strokes - Nullable uint representing the TotalStrokes subfield - - - - - Set TotalStrokes subfield - Units: strokes - Subfield value to be set - - - - Retrieves the TotalCalories field - Units: kcal - Returns nullable ushort representing the TotalCalories field - - - - Set TotalCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the TotalFatCalories field - Units: kcal - Comment: If New Leaf - Returns nullable ushort representing the TotalFatCalories field - - - - Set TotalFatCalories field - Units: kcal - Comment: If New Leaf - Nullable field value to be set - - - - Retrieves the AvgSpeed field - Units: m/s - Returns nullable float representing the AvgSpeed field - - - - Set AvgSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxSpeed field - Units: m/s - Returns nullable float representing the MaxSpeed field - - - - Set MaxSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgHeartRate field - Units: bpm - Returns nullable byte representing the AvgHeartRate field - - - - Set AvgHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the MaxHeartRate field - Units: bpm - Returns nullable byte representing the MaxHeartRate field - - - - Set MaxHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Returns nullable byte representing the AvgCadence field - - - - Set AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Nullable field value to be set - - - - Retrieves the AvgRunningCadence subfield - Units: strides/min - Nullable byte representing the AvgRunningCadence subfield - - - - - Set AvgRunningCadence subfield - Units: strides/min - Subfield value to be set - - - - Retrieves the MaxCadence field - Units: rpm - Returns nullable byte representing the MaxCadence field - - - - Set MaxCadence field - Units: rpm - Nullable field value to be set - - - - Retrieves the MaxRunningCadence subfield - Units: strides/min - Nullable byte representing the MaxRunningCadence subfield - - - - - Set MaxRunningCadence subfield - Units: strides/min - Subfield value to be set - - - - Retrieves the AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Returns nullable ushort representing the AvgPower field - - - - Set AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Nullable field value to be set - - - - Retrieves the MaxPower field - Units: watts - Returns nullable ushort representing the MaxPower field - - - - Set MaxPower field - Units: watts - Nullable field value to be set - - - - Retrieves the TotalAscent field - Units: m - Returns nullable ushort representing the TotalAscent field - - - - Set TotalAscent field - Units: m - Nullable field value to be set - - - - Retrieves the TotalDescent field - Units: m - Returns nullable ushort representing the TotalDescent field - - - - Set TotalDescent field - Units: m - Nullable field value to be set - - - - Retrieves the Intensity field - Returns nullable Intensity enum representing the Intensity field - - - - Set Intensity field - Nullable field value to be set - - - - Retrieves the LapTrigger field - Returns nullable LapTrigger enum representing the LapTrigger field - - - - Set LapTrigger field - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Retrieves the NumLengths field - Units: lengths - Comment: # of lengths of swim pool - Returns nullable ushort representing the NumLengths field - - - - Set NumLengths field - Units: lengths - Comment: # of lengths of swim pool - Nullable field value to be set - - - - Retrieves the NormalizedPower field - Units: watts - Returns nullable ushort representing the NormalizedPower field - - - - Set NormalizedPower field - Units: watts - Nullable field value to be set - - - - Retrieves the LeftRightBalance field - Returns nullable ushort representing the LeftRightBalance field - - - - Set LeftRightBalance field - Nullable field value to be set - - - - Retrieves the FirstLengthIndex field - Returns nullable ushort representing the FirstLengthIndex field - - - - Set FirstLengthIndex field - Nullable field value to be set - - - - Retrieves the AvgStrokeDistance field - Units: m - Returns nullable float representing the AvgStrokeDistance field - - - - Set AvgStrokeDistance field - Units: m - Nullable field value to be set - - - - Retrieves the SwimStroke field - Returns nullable SwimStroke enum representing the SwimStroke field - - - - Set SwimStroke field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the NumActiveLengths field - Units: lengths - Comment: # of active lengths of swim pool - Returns nullable ushort representing the NumActiveLengths field - - - - Set NumActiveLengths field - Units: lengths - Comment: # of active lengths of swim pool - Nullable field value to be set - - - - Retrieves the TotalWork field - Units: J - Returns nullable uint representing the TotalWork field - - - - Set TotalWork field - Units: J - Nullable field value to be set - - - - Retrieves the AvgAltitude field - Units: m - Returns nullable float representing the AvgAltitude field - - - - Set AvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the MaxAltitude field - Units: m - Returns nullable float representing the MaxAltitude field - - - - Set MaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the GpsAccuracy field - Units: m - Returns nullable byte representing the GpsAccuracy field - - - - Set GpsAccuracy field - Units: m - Nullable field value to be set - - - - Retrieves the AvgGrade field - Units: % - Returns nullable float representing the AvgGrade field - - - - Set AvgGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgPosGrade field - Units: % - Returns nullable float representing the AvgPosGrade field - - - - Set AvgPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgNegGrade field - Units: % - Returns nullable float representing the AvgNegGrade field - - - - Set AvgNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxPosGrade field - Units: % - Returns nullable float representing the MaxPosGrade field - - - - Set MaxPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxNegGrade field - Units: % - Returns nullable float representing the MaxNegGrade field - - - - Set MaxNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgTemperature field - Units: C - Returns nullable sbyte representing the AvgTemperature field - - - - Set AvgTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MaxTemperature field - Units: C - Returns nullable sbyte representing the MaxTemperature field - - - - Set MaxTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the TotalMovingTime field - Units: s - Returns nullable float representing the TotalMovingTime field - - - - Set TotalMovingTime field - Units: s - Nullable field value to be set - - - - Retrieves the AvgPosVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgPosVerticalSpeed field - - - - Set AvgPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgNegVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgNegVerticalSpeed field - - - - Set AvgNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxPosVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxPosVerticalSpeed field - - - - Set MaxPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxNegVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxNegVerticalSpeed field - - - - Set MaxNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - - - returns number of elements in field TimeInHrZone - - - - Retrieves the TimeInHrZone field - Units: s - 0 based index of TimeInHrZone element to retrieve - Returns nullable float representing the TimeInHrZone field - - - - Set TimeInHrZone field - Units: s - 0 based index of time_in_hr_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInSpeedZone - - - - Retrieves the TimeInSpeedZone field - Units: s - 0 based index of TimeInSpeedZone element to retrieve - Returns nullable float representing the TimeInSpeedZone field - - - - Set TimeInSpeedZone field - Units: s - 0 based index of time_in_speed_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInCadenceZone - - - - Retrieves the TimeInCadenceZone field - Units: s - 0 based index of TimeInCadenceZone element to retrieve - Returns nullable float representing the TimeInCadenceZone field - - - - Set TimeInCadenceZone field - Units: s - 0 based index of time_in_cadence_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInPowerZone - - - - Retrieves the TimeInPowerZone field - Units: s - 0 based index of TimeInPowerZone element to retrieve - Returns nullable float representing the TimeInPowerZone field - - - - Set TimeInPowerZone field - Units: s - 0 based index of time_in_power_zone - Nullable field value to be set - - - - Retrieves the RepetitionNum field - Returns nullable ushort representing the RepetitionNum field - - - - Set RepetitionNum field - Nullable field value to be set - - - - Retrieves the MinAltitude field - Units: m - Returns nullable float representing the MinAltitude field - - - - Set MinAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the MinHeartRate field - Units: bpm - Returns nullable byte representing the MinHeartRate field - - - - Set MinHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the WktStepIndex field - Returns nullable ushort representing the WktStepIndex field - - - - Set WktStepIndex field - Nullable field value to be set - - - - Retrieves the OpponentScore field - Returns nullable ushort representing the OpponentScore field - - - - Set OpponentScore field - Nullable field value to be set - - - - - - returns number of elements in field StrokeCount - - - - Retrieves the StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of StrokeCount element to retrieve - Returns nullable ushort representing the StrokeCount field - - - - Set StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of stroke_count - Nullable field value to be set - - - - - - returns number of elements in field ZoneCount - - - - Retrieves the ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of ZoneCount element to retrieve - Returns nullable ushort representing the ZoneCount field - - - - Set ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of zone_count - Nullable field value to be set - - - - Retrieves the AvgVerticalOscillation field - Units: mm - Returns nullable float representing the AvgVerticalOscillation field - - - - Set AvgVerticalOscillation field - Units: mm - Nullable field value to be set - - - - Retrieves the AvgStanceTimePercent field - Units: percent - Returns nullable float representing the AvgStanceTimePercent field - - - - Set AvgStanceTimePercent field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStanceTime field - Units: ms - Returns nullable float representing the AvgStanceTime field - - - - Set AvgStanceTime field - Units: ms - Nullable field value to be set - - - - Retrieves the AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Returns nullable float representing the AvgFractionalCadence field - - - - Set AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Nullable field value to be set - - - - Retrieves the MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Returns nullable float representing the MaxFractionalCadence field - - - - Set MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Nullable field value to be set - - - - Retrieves the TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Returns nullable float representing the TotalFractionalCycles field - - - - Set TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Nullable field value to be set - - - - Retrieves the PlayerScore field - Returns nullable ushort representing the PlayerScore field - - - - Set PlayerScore field - Nullable field value to be set - - - - - - returns number of elements in field AvgTotalHemoglobinConc - - - - Retrieves the AvgTotalHemoglobinConc field - Units: g/dL - Comment: Avg saturated and unsaturated hemoglobin - 0 based index of AvgTotalHemoglobinConc element to retrieve - Returns nullable float representing the AvgTotalHemoglobinConc field - - - - Set AvgTotalHemoglobinConc field - Units: g/dL - Comment: Avg saturated and unsaturated hemoglobin - 0 based index of avg_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field MinTotalHemoglobinConc - - - - Retrieves the MinTotalHemoglobinConc field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - 0 based index of MinTotalHemoglobinConc element to retrieve - Returns nullable float representing the MinTotalHemoglobinConc field - - - - Set MinTotalHemoglobinConc field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - 0 based index of min_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field MaxTotalHemoglobinConc - - - - Retrieves the MaxTotalHemoglobinConc field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - 0 based index of MaxTotalHemoglobinConc element to retrieve - Returns nullable float representing the MaxTotalHemoglobinConc field - - - - Set MaxTotalHemoglobinConc field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - 0 based index of max_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field AvgSaturatedHemoglobinPercent - - - - Retrieves the AvgSaturatedHemoglobinPercent field - Units: % - Comment: Avg percentage of hemoglobin saturated with oxygen - 0 based index of AvgSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the AvgSaturatedHemoglobinPercent field - - - - Set AvgSaturatedHemoglobinPercent field - Units: % - Comment: Avg percentage of hemoglobin saturated with oxygen - 0 based index of avg_saturated_hemoglobin_percent - Nullable field value to be set - - - - - - returns number of elements in field MinSaturatedHemoglobinPercent - - - - Retrieves the MinSaturatedHemoglobinPercent field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - 0 based index of MinSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the MinSaturatedHemoglobinPercent field - - - - Set MinSaturatedHemoglobinPercent field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - 0 based index of min_saturated_hemoglobin_percent - Nullable field value to be set - - - - - - returns number of elements in field MaxSaturatedHemoglobinPercent - - - - Retrieves the MaxSaturatedHemoglobinPercent field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - 0 based index of MaxSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the MaxSaturatedHemoglobinPercent field - - - - Set MaxSaturatedHemoglobinPercent field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - 0 based index of max_saturated_hemoglobin_percent - Nullable field value to be set - - - - Retrieves the AvgLeftTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgLeftTorqueEffectiveness field - - - - Set AvgLeftTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgRightTorqueEffectiveness field - - - - Set AvgRightTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgLeftPedalSmoothness field - Units: percent - Returns nullable float representing the AvgLeftPedalSmoothness field - - - - Set AvgLeftPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightPedalSmoothness field - Units: percent - Returns nullable float representing the AvgRightPedalSmoothness field - - - - Set AvgRightPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgCombinedPedalSmoothness field - Units: percent - Returns nullable float representing the AvgCombinedPedalSmoothness field - - - - Set AvgCombinedPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the TimeStanding field - Units: s - Comment: Total time spent in the standing position - Returns nullable float representing the TimeStanding field - - - - Set TimeStanding field - Units: s - Comment: Total time spent in the standing position - Nullable field value to be set - - - - Retrieves the StandCount field - Comment: Number of transitions to the standing state - Returns nullable ushort representing the StandCount field - - - - Set StandCount field - Comment: Number of transitions to the standing state - Nullable field value to be set - - - - Retrieves the AvgLeftPco field - Units: mm - Comment: Average left platform center offset - Returns nullable sbyte representing the AvgLeftPco field - - - - Set AvgLeftPco field - Units: mm - Comment: Average left platform center offset - Nullable field value to be set - - - - Retrieves the AvgRightPco field - Units: mm - Comment: Average right platform center offset - Returns nullable sbyte representing the AvgRightPco field - - - - Set AvgRightPco field - Units: mm - Comment: Average right platform center offset - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhase - - - - Retrieves the AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhase element to retrieve - Returns nullable float representing the AvgLeftPowerPhase field - - - - Set AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of avg_left_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhasePeak - - - - Retrieves the AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhasePeak element to retrieve - Returns nullable float representing the AvgLeftPowerPhasePeak field - - - - Set AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of avg_left_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhase - - - - Retrieves the AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhase element to retrieve - Returns nullable float representing the AvgRightPowerPhase field - - - - Set AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhasePeak - - - - Retrieves the AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhasePeak element to retrieve - Returns nullable float representing the AvgRightPowerPhasePeak field - - - - Set AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgPowerPosition - - - - Retrieves the AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of AvgPowerPosition element to retrieve - Returns nullable ushort representing the AvgPowerPosition field - - - - Set AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of avg_power_position - Nullable field value to be set - - - - - - returns number of elements in field MaxPowerPosition - - - - Retrieves the MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of MaxPowerPosition element to retrieve - Returns nullable ushort representing the MaxPowerPosition field - - - - Set MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of max_power_position - Nullable field value to be set - - - - - - returns number of elements in field AvgCadencePosition - - - - Retrieves the AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of AvgCadencePosition element to retrieve - Returns nullable byte representing the AvgCadencePosition field - - - - Set AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of avg_cadence_position - Nullable field value to be set - - - - - - returns number of elements in field MaxCadencePosition - - - - Retrieves the MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of MaxCadencePosition element to retrieve - Returns nullable byte representing the MaxCadencePosition field - - - - Set MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of max_cadence_position - Nullable field value to be set - - - - Retrieves the EnhancedAvgSpeed field - Units: m/s - Returns nullable float representing the EnhancedAvgSpeed field - - - - Set EnhancedAvgSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the EnhancedMaxSpeed field - Units: m/s - Returns nullable float representing the EnhancedMaxSpeed field - - - - Set EnhancedMaxSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the EnhancedAvgAltitude field - Units: m - Returns nullable float representing the EnhancedAvgAltitude field - - - - Set EnhancedAvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMinAltitude field - Units: m - Returns nullable float representing the EnhancedMinAltitude field - - - - Set EnhancedMinAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMaxAltitude field - Units: m - Returns nullable float representing the EnhancedMaxAltitude field - - - - Set EnhancedMaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the AvgLevMotorPower field - Units: watts - Comment: lev average motor power during lap - Returns nullable ushort representing the AvgLevMotorPower field - - - - Set AvgLevMotorPower field - Units: watts - Comment: lev average motor power during lap - Nullable field value to be set - - - - Retrieves the MaxLevMotorPower field - Units: watts - Comment: lev maximum motor power during lap - Returns nullable ushort representing the MaxLevMotorPower field - - - - Set MaxLevMotorPower field - Units: watts - Comment: lev maximum motor power during lap - Nullable field value to be set - - - - Retrieves the LevBatteryConsumption field - Units: percent - Comment: lev battery consumption during lap - Returns nullable float representing the LevBatteryConsumption field - - - - Set LevBatteryConsumption field - Units: percent - Comment: lev battery consumption during lap - Nullable field value to be set - - - - Retrieves the AvgVerticalRatio field - Units: percent - Returns nullable float representing the AvgVerticalRatio field - - - - Set AvgVerticalRatio field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStanceTimeBalance field - Units: percent - Returns nullable float representing the AvgStanceTimeBalance field - - - - Set AvgStanceTimeBalance field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStepLength field - Units: mm - Returns nullable float representing the AvgStepLength field - - - - Set AvgStepLength field - Units: mm - Nullable field value to be set - - - - Retrieves the AvgVam field - Units: m/s - Returns nullable float representing the AvgVam field - - - - Set AvgVam field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgDepth field - Units: m - Comment: 0 if above water - Returns nullable float representing the AvgDepth field - - - - Set AvgDepth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the MaxDepth field - Units: m - Comment: 0 if above water - Returns nullable float representing the MaxDepth field - - - - Set MaxDepth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the MinTemperature field - Units: C - Returns nullable sbyte representing the MinTemperature field - - - - Set MinTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the EnhancedAvgRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedAvgRespirationRate field - - - - Set EnhancedAvgRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the EnhancedMaxRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedMaxRespirationRate field - - - - Set EnhancedMaxRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the AvgRespirationRate field - Returns nullable byte representing the AvgRespirationRate field - - - - Set AvgRespirationRate field - Nullable field value to be set - - - - Retrieves the MaxRespirationRate field - Returns nullable byte representing the MaxRespirationRate field - - - - Set MaxRespirationRate field - Nullable field value to be set - - - - Retrieves the TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the TotalGrit field - - - - Set TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the TotalFlow field - - - - Set TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the JumpCount field - Returns nullable ushort representing the JumpCount field - - - - Set JumpCount field - Nullable field value to be set - - - - Retrieves the AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the AvgGrit field - - - - Set AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the AvgFlow field - - - - Set AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Returns nullable float representing the TotalFractionalAscent field - - - - Set TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Nullable field value to be set - - - - Retrieves the TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Returns nullable float representing the TotalFractionalDescent field - - - - Set TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Nullable field value to be set - - - - Retrieves the AvgCoreTemperature field - Units: C - Returns nullable float representing the AvgCoreTemperature field - - - - Set AvgCoreTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MinCoreTemperature field - Units: C - Returns nullable float representing the MinCoreTemperature field - - - - Set MinCoreTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MaxCoreTemperature field - Units: C - Returns nullable float representing the MaxCoreTemperature field - - - - Set MaxCoreTemperature field - Units: C - Nullable field value to be set - - - - Implements the Length profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the Event field - Returns nullable Event enum representing the Event field - - - - Set Event field - Nullable field value to be set - - - - Retrieves the EventType field - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Nullable field value to be set - - - - Retrieves the StartTime field - Returns DateTime representing the StartTime field - - - - Set StartTime field - Nullable field value to be set - - - - Retrieves the TotalElapsedTime field - Units: s - Returns nullable float representing the TotalElapsedTime field - - - - Set TotalElapsedTime field - Units: s - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Nullable field value to be set - - - - Retrieves the TotalStrokes field - Units: strokes - Returns nullable ushort representing the TotalStrokes field - - - - Set TotalStrokes field - Units: strokes - Nullable field value to be set - - - - Retrieves the AvgSpeed field - Units: m/s - Returns nullable float representing the AvgSpeed field - - - - Set AvgSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the SwimStroke field - Units: swim_stroke - Returns nullable SwimStroke enum representing the SwimStroke field - - - - Set SwimStroke field - Units: swim_stroke - Nullable field value to be set - - - - Retrieves the AvgSwimmingCadence field - Units: strokes/min - Returns nullable byte representing the AvgSwimmingCadence field - - - - Set AvgSwimmingCadence field - Units: strokes/min - Nullable field value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Retrieves the TotalCalories field - Units: kcal - Returns nullable ushort representing the TotalCalories field - - - - Set TotalCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the LengthType field - Returns nullable LengthType enum representing the LengthType field - - - - Set LengthType field - Nullable field value to be set - - - - Retrieves the PlayerScore field - Returns nullable ushort representing the PlayerScore field - - - - Set PlayerScore field - Nullable field value to be set - - - - Retrieves the OpponentScore field - Returns nullable ushort representing the OpponentScore field - - - - Set OpponentScore field - Nullable field value to be set - - - - - - returns number of elements in field StrokeCount - - - - Retrieves the StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of StrokeCount element to retrieve - Returns nullable ushort representing the StrokeCount field - - - - Set StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of stroke_count - Nullable field value to be set - - - - - - returns number of elements in field ZoneCount - - - - Retrieves the ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of ZoneCount element to retrieve - Returns nullable ushort representing the ZoneCount field - - - - Set ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of zone_count - Nullable field value to be set - - - - Retrieves the EnhancedAvgRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedAvgRespirationRate field - - - - Set EnhancedAvgRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the EnhancedMaxRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedMaxRespirationRate field - - - - Set EnhancedMaxRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the AvgRespirationRate field - Returns nullable byte representing the AvgRespirationRate field - - - - Set AvgRespirationRate field - Nullable field value to be set - - - - Retrieves the MaxRespirationRate field - Returns nullable byte representing the MaxRespirationRate field - - - - Set MaxRespirationRate field - Nullable field value to be set - - - - Implements the MagnetometerData profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - - - returns number of elements in field SampleTimeOffset - - - - Retrieves the SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the compass sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in cmps_x and cmps_y and cmps_z - 0 based index of SampleTimeOffset element to retrieve - Returns nullable ushort representing the SampleTimeOffset field - - - - Set SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the compass sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in cmps_x and cmps_y and cmps_z - 0 based index of sample_time_offset - Nullable field value to be set - - - - - - returns number of elements in field MagX - - - - Retrieves the MagX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of MagX element to retrieve - Returns nullable ushort representing the MagX field - - - - Set MagX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of mag_x - Nullable field value to be set - - - - - - returns number of elements in field MagY - - - - Retrieves the MagY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of MagY element to retrieve - Returns nullable ushort representing the MagY field - - - - Set MagY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of mag_y - Nullable field value to be set - - - - - - returns number of elements in field MagZ - - - - Retrieves the MagZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of MagZ element to retrieve - Returns nullable ushort representing the MagZ field - - - - Set MagZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of mag_z - Nullable field value to be set - - - - - - returns number of elements in field CalibratedMagX - - - - Retrieves the CalibratedMagX field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of CalibratedMagX element to retrieve - Returns nullable float representing the CalibratedMagX field - - - - Set CalibratedMagX field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of calibrated_mag_x - Nullable field value to be set - - - - - - returns number of elements in field CalibratedMagY - - - - Retrieves the CalibratedMagY field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of CalibratedMagY element to retrieve - Returns nullable float representing the CalibratedMagY field - - - - Set CalibratedMagY field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of calibrated_mag_y - Nullable field value to be set - - - - - - returns number of elements in field CalibratedMagZ - - - - Retrieves the CalibratedMagZ field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of CalibratedMagZ element to retrieve - Returns nullable float representing the CalibratedMagZ field - - - - Set CalibratedMagZ field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of calibrated_mag_z - Nullable field value to be set - - - - Implements the MemoGlob profile message. - - - - - Field Numbers for - - - - - Retrieves the PartIndex field - Comment: Sequence number of memo blocks - Returns nullable uint representing the PartIndex field - - - - Set PartIndex field - Comment: Sequence number of memo blocks - Nullable field value to be set - - - - - - returns number of elements in field Memo - - - - Retrieves the Memo field - Comment: Deprecated. Use data field. - 0 based index of Memo element to retrieve - Returns nullable byte representing the Memo field - - - - Set Memo field - Comment: Deprecated. Use data field. - 0 based index of memo - Nullable field value to be set - - - - Retrieves the MesgNum field - Comment: Message Number of the parent message - Returns nullable ushort representing the MesgNum field - - - - Set MesgNum field - Comment: Message Number of the parent message - Nullable field value to be set - - - - Retrieves the ParentIndex field - Comment: Index of mesg that this glob is associated with. - Returns nullable ushort representing the ParentIndex field - - - - Set ParentIndex field - Comment: Index of mesg that this glob is associated with. - Nullable field value to be set - - - - Retrieves the FieldNum field - Comment: Field within the parent that this glob is associated with - Returns nullable byte representing the FieldNum field - - - - Set FieldNum field - Comment: Field within the parent that this glob is associated with - Nullable field value to be set - - - - - - returns number of elements in field Data - - - - Retrieves the Data field - Comment: Block of utf8 bytes. Note, mutltibyte characters may be split across adjoining memo_glob messages. - 0 based index of Data element to retrieve - Returns nullable byte representing the Data field - - - - Set Data field - Comment: Block of utf8 bytes. Note, mutltibyte characters may be split across adjoining memo_glob messages. - 0 based index of data - Nullable field value to be set - - - - Implements the MesgCapabilities profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the File field - Returns nullable File enum representing the File field - - - - Set File field - Nullable field value to be set - - - - Retrieves the MesgNum field - Returns nullable ushort representing the MesgNum field - - - - Set MesgNum field - Nullable field value to be set - - - - Retrieves the CountType field - Returns nullable MesgCount enum representing the CountType field - - - - Set CountType field - Nullable field value to be set - - - - Retrieves the Count field - Returns nullable ushort representing the Count field - - - - Set Count field - Nullable field value to be set - - - - Retrieves the NumPerFile subfield - Nullable ushort representing the NumPerFile subfield - - - - - Set NumPerFile subfield - Subfield value to be set - - - - Retrieves the MaxPerFile subfield - Nullable ushort representing the MaxPerFile subfield - - - - - Set MaxPerFile subfield - Subfield value to be set - - - - Retrieves the MaxPerFileType subfield - Nullable ushort representing the MaxPerFileType subfield - - - - - Set MaxPerFileType subfield - Subfield value to be set - - - - Implements the MetZone profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HighBpm field - Returns nullable byte representing the HighBpm field - - - - Set HighBpm field - Nullable field value to be set - - - - Retrieves the Calories field - Units: kcal / min - Returns nullable float representing the Calories field - - - - Set Calories field - Units: kcal / min - Nullable field value to be set - - - - Retrieves the FatCalories field - Units: kcal / min - Returns nullable float representing the FatCalories field - - - - Set FatCalories field - Units: kcal / min - Nullable field value to be set - - - - Implements the MonitoringInfo profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the LocalTimestamp field - Units: s - Comment: Use to convert activity timestamps to local time if device does not support time zone and daylight savings time correction. - Returns nullable uint representing the LocalTimestamp field - - - - Set LocalTimestamp field - Units: s - Comment: Use to convert activity timestamps to local time if device does not support time zone and daylight savings time correction. - Nullable field value to be set - - - - - - returns number of elements in field ActivityType - - - - Retrieves the ActivityType field - 0 based index of ActivityType element to retrieve - Returns nullable ActivityType enum representing the ActivityType field - - - - Set ActivityType field - 0 based index of activity_type - Nullable field value to be set - - - - - - returns number of elements in field CyclesToDistance - - - - Retrieves the CyclesToDistance field - Units: m/cycle - Comment: Indexed by activity_type - 0 based index of CyclesToDistance element to retrieve - Returns nullable float representing the CyclesToDistance field - - - - Set CyclesToDistance field - Units: m/cycle - Comment: Indexed by activity_type - 0 based index of cycles_to_distance - Nullable field value to be set - - - - - - returns number of elements in field CyclesToCalories - - - - Retrieves the CyclesToCalories field - Units: kcal/cycle - Comment: Indexed by activity_type - 0 based index of CyclesToCalories element to retrieve - Returns nullable float representing the CyclesToCalories field - - - - Set CyclesToCalories field - Units: kcal/cycle - Comment: Indexed by activity_type - 0 based index of cycles_to_calories - Nullable field value to be set - - - - Retrieves the RestingMetabolicRate field - Units: kcal / day - Returns nullable ushort representing the RestingMetabolicRate field - - - - Set RestingMetabolicRate field - Units: kcal / day - Nullable field value to be set - - - - Implements the Monitoring profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Comment: Associates this data to device_info message. Not required for file with single device (sensor). - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Comment: Associates this data to device_info message. Not required for file with single device (sensor). - Nullable field value to be set - - - - Retrieves the Calories field - Units: kcal - Comment: Accumulated total calories. Maintained by MonitoringReader for each activity_type. See SDK documentation - Returns nullable ushort representing the Calories field - - - - Set Calories field - Units: kcal - Comment: Accumulated total calories. Maintained by MonitoringReader for each activity_type. See SDK documentation - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Comment: Accumulated distance. Maintained by MonitoringReader for each activity_type. See SDK documentation. - Returns nullable float representing the Distance field - - - - Set Distance field - Units: m - Comment: Accumulated distance. Maintained by MonitoringReader for each activity_type. See SDK documentation. - Nullable field value to be set - - - - Retrieves the Cycles field - Units: cycles - Comment: Accumulated cycles. Maintained by MonitoringReader for each activity_type. See SDK documentation. - Returns nullable float representing the Cycles field - - - - Set Cycles field - Units: cycles - Comment: Accumulated cycles. Maintained by MonitoringReader for each activity_type. See SDK documentation. - Nullable field value to be set - - - - Retrieves the Steps subfield - Units: steps - Nullable uint representing the Steps subfield - - - - - Set Steps subfield - Units: steps - Subfield value to be set - - - - Retrieves the Strokes subfield - Units: strokes - Nullable float representing the Strokes subfield - - - - - Set Strokes subfield - Units: strokes - Subfield value to be set - - - - Retrieves the ActiveTime field - Units: s - Returns nullable float representing the ActiveTime field - - - - Set ActiveTime field - Units: s - Nullable field value to be set - - - - Retrieves the ActivityType field - Returns nullable ActivityType enum representing the ActivityType field - - - - Set ActivityType field - Nullable field value to be set - - - - Retrieves the ActivitySubtype field - Returns nullable ActivitySubtype enum representing the ActivitySubtype field - - - - Set ActivitySubtype field - Nullable field value to be set - - - - Retrieves the ActivityLevel field - Returns nullable ActivityLevel enum representing the ActivityLevel field - - - - Set ActivityLevel field - Nullable field value to be set - - - - Retrieves the Distance16 field - Units: 100 * m - Returns nullable ushort representing the Distance16 field - - - - Set Distance16 field - Units: 100 * m - Nullable field value to be set - - - - Retrieves the Cycles16 field - Units: 2 * cycles (steps) - Returns nullable ushort representing the Cycles16 field - - - - Set Cycles16 field - Units: 2 * cycles (steps) - Nullable field value to be set - - - - Retrieves the ActiveTime16 field - Units: s - Returns nullable ushort representing the ActiveTime16 field - - - - Set ActiveTime16 field - Units: s - Nullable field value to be set - - - - Retrieves the LocalTimestamp field - Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - Returns nullable uint representing the LocalTimestamp field - - - - Set LocalTimestamp field - Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - Nullable field value to be set - - - - Retrieves the Temperature field - Units: C - Comment: Avg temperature during the logging interval ended at timestamp - Returns nullable float representing the Temperature field - - - - Set Temperature field - Units: C - Comment: Avg temperature during the logging interval ended at timestamp - Nullable field value to be set - - - - Retrieves the TemperatureMin field - Units: C - Comment: Min temperature during the logging interval ended at timestamp - Returns nullable float representing the TemperatureMin field - - - - Set TemperatureMin field - Units: C - Comment: Min temperature during the logging interval ended at timestamp - Nullable field value to be set - - - - Retrieves the TemperatureMax field - Units: C - Comment: Max temperature during the logging interval ended at timestamp - Returns nullable float representing the TemperatureMax field - - - - Set TemperatureMax field - Units: C - Comment: Max temperature during the logging interval ended at timestamp - Nullable field value to be set - - - - - - returns number of elements in field ActivityTime - - - - Retrieves the ActivityTime field - Units: minutes - Comment: Indexed using minute_activity_level enum - 0 based index of ActivityTime element to retrieve - Returns nullable ushort representing the ActivityTime field - - - - Set ActivityTime field - Units: minutes - Comment: Indexed using minute_activity_level enum - 0 based index of activity_time - Nullable field value to be set - - - - Retrieves the ActiveCalories field - Units: kcal - Returns nullable ushort representing the ActiveCalories field - - - - Set ActiveCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the CurrentActivityTypeIntensity field - Comment: Indicates single type / intensity for duration since last monitoring message. - Returns nullable byte representing the CurrentActivityTypeIntensity field - - - - Set CurrentActivityTypeIntensity field - Comment: Indicates single type / intensity for duration since last monitoring message. - Nullable field value to be set - - - - Retrieves the TimestampMin8 field - Units: min - Returns nullable byte representing the TimestampMin8 field - - - - Set TimestampMin8 field - Units: min - Nullable field value to be set - - - - Retrieves the Timestamp16 field - Units: s - Returns nullable ushort representing the Timestamp16 field - - - - Set Timestamp16 field - Units: s - Nullable field value to be set - - - - Retrieves the HeartRate field - Units: bpm - Returns nullable byte representing the HeartRate field - - - - Set HeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the Intensity field - Returns nullable float representing the Intensity field - - - - Set Intensity field - Nullable field value to be set - - - - Retrieves the DurationMin field - Units: min - Returns nullable ushort representing the DurationMin field - - - - Set DurationMin field - Units: min - Nullable field value to be set - - - - Retrieves the Duration field - Units: s - Returns nullable uint representing the Duration field - - - - Set Duration field - Units: s - Nullable field value to be set - - - - Retrieves the Ascent field - Units: m - Returns nullable float representing the Ascent field - - - - Set Ascent field - Units: m - Nullable field value to be set - - - - Retrieves the Descent field - Units: m - Returns nullable float representing the Descent field - - - - Set Descent field - Units: m - Nullable field value to be set - - - - Retrieves the ModerateActivityMinutes field - Units: minutes - Returns nullable ushort representing the ModerateActivityMinutes field - - - - Set ModerateActivityMinutes field - Units: minutes - Nullable field value to be set - - - - Retrieves the VigorousActivityMinutes field - Units: minutes - Returns nullable ushort representing the VigorousActivityMinutes field - - - - Set VigorousActivityMinutes field - Units: minutes - Nullable field value to be set - - - - Implements the NmeaSentence profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Timestamp message was output - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Timestamp message was output - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Nullable field value to be set - - - - Retrieves the Sentence field - Comment: NMEA sentence - Returns byte[] representing the Sentence field - - - - Retrieves the Sentence field - Comment: NMEA sentence - Returns String representing the Sentence field - - - - Set Sentence field - Comment: NMEA sentence - field value to be set - - - - Set Sentence field - Comment: NMEA sentence - field value to be set - - - - Implements the ObdiiData profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Timestamp message was output - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Timestamp message was output - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Nullable field value to be set - - - - - - returns number of elements in field TimeOffset - - - - Retrieves the TimeOffset field - Units: ms - Comment: Offset of PID reading [i] from start_timestamp+start_timestamp_ms. Readings may span accross seconds. - 0 based index of TimeOffset element to retrieve - Returns nullable ushort representing the TimeOffset field - - - - Set TimeOffset field - Units: ms - Comment: Offset of PID reading [i] from start_timestamp+start_timestamp_ms. Readings may span accross seconds. - 0 based index of time_offset - Nullable field value to be set - - - - Retrieves the Pid field - Comment: Parameter ID - Returns nullable byte representing the Pid field - - - - Set Pid field - Comment: Parameter ID - Nullable field value to be set - - - - - - returns number of elements in field RawData - - - - Retrieves the RawData field - Comment: Raw parameter data - 0 based index of RawData element to retrieve - Returns nullable byte representing the RawData field - - - - Set RawData field - Comment: Raw parameter data - 0 based index of raw_data - Nullable field value to be set - - - - - - returns number of elements in field PidDataSize - - - - Retrieves the PidDataSize field - Comment: Optional, data size of PID[i]. If not specified refer to SAE J1979. - 0 based index of PidDataSize element to retrieve - Returns nullable byte representing the PidDataSize field - - - - Set PidDataSize field - Comment: Optional, data size of PID[i]. If not specified refer to SAE J1979. - 0 based index of pid_data_size - Nullable field value to be set - - - - - - returns number of elements in field SystemTime - - - - Retrieves the SystemTime field - Comment: System time associated with sample expressed in ms, can be used instead of time_offset. There will be a system_time value for each raw_data element. For multibyte pids the system_time is repeated. - 0 based index of SystemTime element to retrieve - Returns nullable uint representing the SystemTime field - - - - Set SystemTime field - Comment: System time associated with sample expressed in ms, can be used instead of time_offset. There will be a system_time value for each raw_data element. For multibyte pids the system_time is repeated. - 0 based index of system_time - Nullable field value to be set - - - - Retrieves the StartTimestamp field - Comment: Timestamp of first sample recorded in the message. Used with time_offset to generate time of each sample - Returns DateTime representing the StartTimestamp field - - - - Set StartTimestamp field - Comment: Timestamp of first sample recorded in the message. Used with time_offset to generate time of each sample - Nullable field value to be set - - - - Retrieves the StartTimestampMs field - Units: ms - Comment: Fractional part of start_timestamp - Returns nullable ushort representing the StartTimestampMs field - - - - Set StartTimestampMs field - Units: ms - Comment: Fractional part of start_timestamp - Nullable field value to be set - - - - Implements the OhrSettings profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Enabled field - Returns nullable Switch enum representing the Enabled field - - - - Set Enabled field - Nullable field value to be set - - - - Implements the OneDSensorCalibration profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the SensorType field - Comment: Indicates which sensor the calibration is for - Returns nullable SensorType enum representing the SensorType field - - - - Set SensorType field - Comment: Indicates which sensor the calibration is for - Nullable field value to be set - - - - Retrieves the CalibrationFactor field - Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - Returns nullable uint representing the CalibrationFactor field - - - - Set CalibrationFactor field - Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - Nullable field value to be set - - - - Retrieves the BaroCalFactor subfield - Units: Pa - Comment: Barometer calibration factor - Nullable uint representing the BaroCalFactor subfield - - - - - Set BaroCalFactor subfield - Units: Pa - Comment: Barometer calibration factor - Subfield value to be set - - - - Retrieves the CalibrationDivisor field - Units: counts - Comment: Calibration factor divisor - Returns nullable uint representing the CalibrationDivisor field - - - - Set CalibrationDivisor field - Units: counts - Comment: Calibration factor divisor - Nullable field value to be set - - - - Retrieves the LevelShift field - Comment: Level shift value used to shift the ADC value back into range - Returns nullable uint representing the LevelShift field - - - - Set LevelShift field - Comment: Level shift value used to shift the ADC value back into range - Nullable field value to be set - - - - Retrieves the OffsetCal field - Comment: Internal Calibration factor - Returns nullable int representing the OffsetCal field - - - - Set OffsetCal field - Comment: Internal Calibration factor - Nullable field value to be set - - - - Implements the Pad profile message. - - - - - Field Numbers for - - - - - Implements the PowerZone profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HighValue field - Units: watts - Returns nullable ushort representing the HighValue field - - - - Set HighValue field - Units: watts - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Implements the Record profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the Altitude field - Units: m - Returns nullable float representing the Altitude field - - - - Set Altitude field - Units: m - Nullable field value to be set - - - - Retrieves the HeartRate field - Units: bpm - Returns nullable byte representing the HeartRate field - - - - Set HeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the Cadence field - Units: rpm - Returns nullable byte representing the Cadence field - - - - Set Cadence field - Units: rpm - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Returns nullable float representing the Distance field - - - - Set Distance field - Units: m - Nullable field value to be set - - - - Retrieves the Speed field - Units: m/s - Returns nullable float representing the Speed field - - - - Set Speed field - Units: m/s - Nullable field value to be set - - - - Retrieves the Power field - Units: watts - Returns nullable ushort representing the Power field - - - - Set Power field - Units: watts - Nullable field value to be set - - - - - - returns number of elements in field CompressedSpeedDistance - - - - Retrieves the CompressedSpeedDistance field - 0 based index of CompressedSpeedDistance element to retrieve - Returns nullable byte representing the CompressedSpeedDistance field - - - - Set CompressedSpeedDistance field - 0 based index of compressed_speed_distance - Nullable field value to be set - - - - Retrieves the Grade field - Units: % - Returns nullable float representing the Grade field - - - - Set Grade field - Units: % - Nullable field value to be set - - - - Retrieves the Resistance field - Comment: Relative. 0 is none 254 is Max. - Returns nullable byte representing the Resistance field - - - - Set Resistance field - Comment: Relative. 0 is none 254 is Max. - Nullable field value to be set - - - - Retrieves the TimeFromCourse field - Units: s - Returns nullable float representing the TimeFromCourse field - - - - Set TimeFromCourse field - Units: s - Nullable field value to be set - - - - Retrieves the CycleLength field - Units: m - Returns nullable float representing the CycleLength field - - - - Set CycleLength field - Units: m - Nullable field value to be set - - - - Retrieves the Temperature field - Units: C - Returns nullable sbyte representing the Temperature field - - - - Set Temperature field - Units: C - Nullable field value to be set - - - - - - returns number of elements in field Speed1s - - - - Retrieves the Speed1s field - Units: m/s - Comment: Speed at 1s intervals. Timestamp field indicates time of last array element. - 0 based index of Speed1s element to retrieve - Returns nullable float representing the Speed1s field - - - - Set Speed1s field - Units: m/s - Comment: Speed at 1s intervals. Timestamp field indicates time of last array element. - 0 based index of speed_1s - Nullable field value to be set - - - - Retrieves the Cycles field - Units: cycles - Returns nullable byte representing the Cycles field - - - - Set Cycles field - Units: cycles - Nullable field value to be set - - - - Retrieves the TotalCycles field - Units: cycles - Returns nullable uint representing the TotalCycles field - - - - Set TotalCycles field - Units: cycles - Nullable field value to be set - - - - Retrieves the CompressedAccumulatedPower field - Units: watts - Returns nullable ushort representing the CompressedAccumulatedPower field - - - - Set CompressedAccumulatedPower field - Units: watts - Nullable field value to be set - - - - Retrieves the AccumulatedPower field - Units: watts - Returns nullable uint representing the AccumulatedPower field - - - - Set AccumulatedPower field - Units: watts - Nullable field value to be set - - - - Retrieves the LeftRightBalance field - Returns nullable byte representing the LeftRightBalance field - - - - Set LeftRightBalance field - Nullable field value to be set - - - - Retrieves the GpsAccuracy field - Units: m - Returns nullable byte representing the GpsAccuracy field - - - - Set GpsAccuracy field - Units: m - Nullable field value to be set - - - - Retrieves the VerticalSpeed field - Units: m/s - Returns nullable float representing the VerticalSpeed field - - - - Set VerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the Calories field - Units: kcal - Returns nullable ushort representing the Calories field - - - - Set Calories field - Units: kcal - Nullable field value to be set - - - - Retrieves the VerticalOscillation field - Units: mm - Returns nullable float representing the VerticalOscillation field - - - - Set VerticalOscillation field - Units: mm - Nullable field value to be set - - - - Retrieves the StanceTimePercent field - Units: percent - Returns nullable float representing the StanceTimePercent field - - - - Set StanceTimePercent field - Units: percent - Nullable field value to be set - - - - Retrieves the StanceTime field - Units: ms - Returns nullable float representing the StanceTime field - - - - Set StanceTime field - Units: ms - Nullable field value to be set - - - - Retrieves the ActivityType field - Returns nullable ActivityType enum representing the ActivityType field - - - - Set ActivityType field - Nullable field value to be set - - - - Retrieves the LeftTorqueEffectiveness field - Units: percent - Returns nullable float representing the LeftTorqueEffectiveness field - - - - Set LeftTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the RightTorqueEffectiveness field - Units: percent - Returns nullable float representing the RightTorqueEffectiveness field - - - - Set RightTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the LeftPedalSmoothness field - Units: percent - Returns nullable float representing the LeftPedalSmoothness field - - - - Set LeftPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the RightPedalSmoothness field - Units: percent - Returns nullable float representing the RightPedalSmoothness field - - - - Set RightPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the CombinedPedalSmoothness field - Units: percent - Returns nullable float representing the CombinedPedalSmoothness field - - - - Set CombinedPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the Time128 field - Units: s - Returns nullable float representing the Time128 field - - - - Set Time128 field - Units: s - Nullable field value to be set - - - - Retrieves the StrokeType field - Returns nullable StrokeType enum representing the StrokeType field - - - - Set StrokeType field - Nullable field value to be set - - - - Retrieves the Zone field - Returns nullable byte representing the Zone field - - - - Set Zone field - Nullable field value to be set - - - - Retrieves the BallSpeed field - Units: m/s - Returns nullable float representing the BallSpeed field - - - - Set BallSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the Cadence256 field - Units: rpm - Comment: Log cadence and fractional cadence for backwards compatability - Returns nullable float representing the Cadence256 field - - - - Set Cadence256 field - Units: rpm - Comment: Log cadence and fractional cadence for backwards compatability - Nullable field value to be set - - - - Retrieves the FractionalCadence field - Units: rpm - Returns nullable float representing the FractionalCadence field - - - - Set FractionalCadence field - Units: rpm - Nullable field value to be set - - - - Retrieves the TotalHemoglobinConc field - Units: g/dL - Comment: Total saturated and unsaturated hemoglobin - Returns nullable float representing the TotalHemoglobinConc field - - - - Set TotalHemoglobinConc field - Units: g/dL - Comment: Total saturated and unsaturated hemoglobin - Nullable field value to be set - - - - Retrieves the TotalHemoglobinConcMin field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - Returns nullable float representing the TotalHemoglobinConcMin field - - - - Set TotalHemoglobinConcMin field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - Nullable field value to be set - - - - Retrieves the TotalHemoglobinConcMax field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - Returns nullable float representing the TotalHemoglobinConcMax field - - - - Set TotalHemoglobinConcMax field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - Nullable field value to be set - - - - Retrieves the SaturatedHemoglobinPercent field - Units: % - Comment: Percentage of hemoglobin saturated with oxygen - Returns nullable float representing the SaturatedHemoglobinPercent field - - - - Set SaturatedHemoglobinPercent field - Units: % - Comment: Percentage of hemoglobin saturated with oxygen - Nullable field value to be set - - - - Retrieves the SaturatedHemoglobinPercentMin field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - Returns nullable float representing the SaturatedHemoglobinPercentMin field - - - - Set SaturatedHemoglobinPercentMin field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - Nullable field value to be set - - - - Retrieves the SaturatedHemoglobinPercentMax field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - Returns nullable float representing the SaturatedHemoglobinPercentMax field - - - - Set SaturatedHemoglobinPercentMax field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Nullable field value to be set - - - - Retrieves the LeftPco field - Units: mm - Comment: Left platform center offset - Returns nullable sbyte representing the LeftPco field - - - - Set LeftPco field - Units: mm - Comment: Left platform center offset - Nullable field value to be set - - - - Retrieves the RightPco field - Units: mm - Comment: Right platform center offset - Returns nullable sbyte representing the RightPco field - - - - Set RightPco field - Units: mm - Comment: Right platform center offset - Nullable field value to be set - - - - - - returns number of elements in field LeftPowerPhase - - - - Retrieves the LeftPowerPhase field - Units: degrees - Comment: Left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of LeftPowerPhase element to retrieve - Returns nullable float representing the LeftPowerPhase field - - - - Set LeftPowerPhase field - Units: degrees - Comment: Left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of left_power_phase - Nullable field value to be set - - - - - - returns number of elements in field LeftPowerPhasePeak - - - - Retrieves the LeftPowerPhasePeak field - Units: degrees - Comment: Left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of LeftPowerPhasePeak element to retrieve - Returns nullable float representing the LeftPowerPhasePeak field - - - - Set LeftPowerPhasePeak field - Units: degrees - Comment: Left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of left_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field RightPowerPhase - - - - Retrieves the RightPowerPhase field - Units: degrees - Comment: Right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of RightPowerPhase element to retrieve - Returns nullable float representing the RightPowerPhase field - - - - Set RightPowerPhase field - Units: degrees - Comment: Right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of right_power_phase - Nullable field value to be set - - - - - - returns number of elements in field RightPowerPhasePeak - - - - Retrieves the RightPowerPhasePeak field - Units: degrees - Comment: Right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of RightPowerPhasePeak element to retrieve - Returns nullable float representing the RightPowerPhasePeak field - - - - Set RightPowerPhasePeak field - Units: degrees - Comment: Right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of right_power_phase_peak - Nullable field value to be set - - - - Retrieves the EnhancedSpeed field - Units: m/s - Returns nullable float representing the EnhancedSpeed field - - - - Set EnhancedSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the EnhancedAltitude field - Units: m - Returns nullable float representing the EnhancedAltitude field - - - - Set EnhancedAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the BatterySoc field - Units: percent - Comment: lev battery state of charge - Returns nullable float representing the BatterySoc field - - - - Set BatterySoc field - Units: percent - Comment: lev battery state of charge - Nullable field value to be set - - - - Retrieves the MotorPower field - Units: watts - Comment: lev motor power - Returns nullable ushort representing the MotorPower field - - - - Set MotorPower field - Units: watts - Comment: lev motor power - Nullable field value to be set - - - - Retrieves the VerticalRatio field - Units: percent - Returns nullable float representing the VerticalRatio field - - - - Set VerticalRatio field - Units: percent - Nullable field value to be set - - - - Retrieves the StanceTimeBalance field - Units: percent - Returns nullable float representing the StanceTimeBalance field - - - - Set StanceTimeBalance field - Units: percent - Nullable field value to be set - - - - Retrieves the StepLength field - Units: mm - Returns nullable float representing the StepLength field - - - - Set StepLength field - Units: mm - Nullable field value to be set - - - - Retrieves the AbsolutePressure field - Units: Pa - Comment: Includes atmospheric pressure - Returns nullable uint representing the AbsolutePressure field - - - - Set AbsolutePressure field - Units: Pa - Comment: Includes atmospheric pressure - Nullable field value to be set - - - - Retrieves the Depth field - Units: m - Comment: 0 if above water - Returns nullable float representing the Depth field - - - - Set Depth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the NextStopDepth field - Units: m - Comment: 0 if above water - Returns nullable float representing the NextStopDepth field - - - - Set NextStopDepth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the NextStopTime field - Units: s - Returns nullable uint representing the NextStopTime field - - - - Set NextStopTime field - Units: s - Nullable field value to be set - - - - Retrieves the TimeToSurface field - Units: s - Returns nullable uint representing the TimeToSurface field - - - - Set TimeToSurface field - Units: s - Nullable field value to be set - - - - Retrieves the NdlTime field - Units: s - Returns nullable uint representing the NdlTime field - - - - Set NdlTime field - Units: s - Nullable field value to be set - - - - Retrieves the CnsLoad field - Units: percent - Returns nullable byte representing the CnsLoad field - - - - Set CnsLoad field - Units: percent - Nullable field value to be set - - - - Retrieves the N2Load field - Units: percent - Returns nullable ushort representing the N2Load field - - - - Set N2Load field - Units: percent - Nullable field value to be set - - - - Retrieves the RespirationRate field - Units: s - Returns nullable byte representing the RespirationRate field - - - - Set RespirationRate field - Units: s - Nullable field value to be set - - - - Retrieves the EnhancedRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedRespirationRate field - - - - Set EnhancedRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the Grit field - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the Grit field - - - - Set Grit field - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the Flow field - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the Flow field - - - - Set Flow field - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the EbikeTravelRange field - Units: km - Returns nullable ushort representing the EbikeTravelRange field - - - - Set EbikeTravelRange field - Units: km - Nullable field value to be set - - - - Retrieves the EbikeBatteryLevel field - Units: percent - Returns nullable byte representing the EbikeBatteryLevel field - - - - Set EbikeBatteryLevel field - Units: percent - Nullable field value to be set - - - - Retrieves the EbikeAssistMode field - Units: depends on sensor - Returns nullable byte representing the EbikeAssistMode field - - - - Set EbikeAssistMode field - Units: depends on sensor - Nullable field value to be set - - - - Retrieves the EbikeAssistLevelPercent field - Units: percent - Returns nullable byte representing the EbikeAssistLevelPercent field - - - - Set EbikeAssistLevelPercent field - Units: percent - Nullable field value to be set - - - - Retrieves the AirTimeRemaining field - Units: s - Returns nullable uint representing the AirTimeRemaining field - - - - Set AirTimeRemaining field - Units: s - Nullable field value to be set - - - - Retrieves the PressureSac field - Units: bar/min - Comment: Pressure-based surface air consumption - Returns nullable float representing the PressureSac field - - - - Set PressureSac field - Units: bar/min - Comment: Pressure-based surface air consumption - Nullable field value to be set - - - - Retrieves the VolumeSac field - Units: L/min - Comment: Volumetric surface air consumption - Returns nullable float representing the VolumeSac field - - - - Set VolumeSac field - Units: L/min - Comment: Volumetric surface air consumption - Nullable field value to be set - - - - Retrieves the Rmv field - Units: L/min - Comment: Respiratory minute volume - Returns nullable float representing the Rmv field - - - - Set Rmv field - Units: L/min - Comment: Respiratory minute volume - Nullable field value to be set - - - - Retrieves the AscentRate field - Units: m/s - Returns nullable float representing the AscentRate field - - - - Set AscentRate field - Units: m/s - Nullable field value to be set - - - - Retrieves the Po2 field - Units: percent - Comment: Current partial pressure of oxygen - Returns nullable float representing the Po2 field - - - - Set Po2 field - Units: percent - Comment: Current partial pressure of oxygen - Nullable field value to be set - - - - Retrieves the CoreTemperature field - Units: C - Returns nullable float representing the CoreTemperature field - - - - Set CoreTemperature field - Units: C - Nullable field value to be set - - - - Implements the Schedule profile message. - - - - - Field Numbers for - - - - - Retrieves the Manufacturer field - Comment: Corresponds to file_id of scheduled workout / course. - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Comment: Corresponds to file_id of scheduled workout / course. - Nullable field value to be set - - - - Retrieves the Product field - Comment: Corresponds to file_id of scheduled workout / course. - Returns nullable ushort representing the Product field - - - - Set Product field - Comment: Corresponds to file_id of scheduled workout / course. - Nullable field value to be set - - - - Retrieves the FaveroProduct subfield - Nullable ushort representing the FaveroProduct subfield - - - - - Set FaveroProduct subfield - Subfield value to be set - - - - Retrieves the GarminProduct subfield - Nullable ushort representing the GarminProduct subfield - - - - - Set GarminProduct subfield - Subfield value to be set - - - - Retrieves the SerialNumber field - Comment: Corresponds to file_id of scheduled workout / course. - Returns nullable uint representing the SerialNumber field - - - - Set SerialNumber field - Comment: Corresponds to file_id of scheduled workout / course. - Nullable field value to be set - - - - Retrieves the TimeCreated field - Comment: Corresponds to file_id of scheduled workout / course. - Returns DateTime representing the TimeCreated field - - - - Set TimeCreated field - Comment: Corresponds to file_id of scheduled workout / course. - Nullable field value to be set - - - - Retrieves the Completed field - Comment: TRUE if this activity has been started - Returns nullable Bool enum representing the Completed field - - - - Set Completed field - Comment: TRUE if this activity has been started - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable Schedule enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the ScheduledTime field - Returns nullable uint representing the ScheduledTime field - - - - Set ScheduledTime field - Nullable field value to be set - - - - Implements the SdmProfile profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Enabled field - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Nullable field value to be set - - - - Retrieves the SdmAntId field - Returns nullable ushort representing the SdmAntId field - - - - Set SdmAntId field - Nullable field value to be set - - - - Retrieves the SdmCalFactor field - Units: % - Returns nullable float representing the SdmCalFactor field - - - - Set SdmCalFactor field - Units: % - Nullable field value to be set - - - - Retrieves the Odometer field - Units: m - Returns nullable float representing the Odometer field - - - - Set Odometer field - Units: m - Nullable field value to be set - - - - Retrieves the SpeedSource field - Comment: Use footpod for speed source instead of GPS - Returns nullable Bool enum representing the SpeedSource field - - - - Set SpeedSource field - Comment: Use footpod for speed source instead of GPS - Nullable field value to be set - - - - Retrieves the SdmAntIdTransType field - Returns nullable byte representing the SdmAntIdTransType field - - - - Set SdmAntIdTransType field - Nullable field value to be set - - - - Retrieves the OdometerRollover field - Comment: Rollover counter that can be used to extend the odometer - Returns nullable byte representing the OdometerRollover field - - - - Set OdometerRollover field - Comment: Rollover counter that can be used to extend the odometer - Nullable field value to be set - - - - Implements the SegmentFile profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the FileUuid field - Comment: UUID of the segment file - Returns byte[] representing the FileUuid field - - - - Retrieves the FileUuid field - Comment: UUID of the segment file - Returns String representing the FileUuid field - - - - Set FileUuid field - Comment: UUID of the segment file - field value to be set - - - - Set FileUuid field - Comment: UUID of the segment file - field value to be set - - - - Retrieves the Enabled field - Comment: Enabled state of the segment file - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Comment: Enabled state of the segment file - Nullable field value to be set - - - - Retrieves the UserProfilePrimaryKey field - Comment: Primary key of the user that created the segment file - Returns nullable uint representing the UserProfilePrimaryKey field - - - - Set UserProfilePrimaryKey field - Comment: Primary key of the user that created the segment file - Nullable field value to be set - - - - - - returns number of elements in field LeaderType - - - - Retrieves the LeaderType field - Comment: Leader type of each leader in the segment file - 0 based index of LeaderType element to retrieve - Returns nullable SegmentLeaderboardType enum representing the LeaderType field - - - - Set LeaderType field - Comment: Leader type of each leader in the segment file - 0 based index of leader_type - Nullable field value to be set - - - - - - returns number of elements in field LeaderGroupPrimaryKey - - - - Retrieves the LeaderGroupPrimaryKey field - Comment: Group primary key of each leader in the segment file - 0 based index of LeaderGroupPrimaryKey element to retrieve - Returns nullable uint representing the LeaderGroupPrimaryKey field - - - - Set LeaderGroupPrimaryKey field - Comment: Group primary key of each leader in the segment file - 0 based index of leader_group_primary_key - Nullable field value to be set - - - - - - returns number of elements in field LeaderActivityId - - - - Retrieves the LeaderActivityId field - Comment: Activity ID of each leader in the segment file - 0 based index of LeaderActivityId element to retrieve - Returns nullable uint representing the LeaderActivityId field - - - - Set LeaderActivityId field - Comment: Activity ID of each leader in the segment file - 0 based index of leader_activity_id - Nullable field value to be set - - - - - - returns number of elements in field LeaderActivityIdString - - - - Retrieves the LeaderActivityIdString field - Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - 0 based index of LeaderActivityIdString element to retrieve - Returns byte[] representing the LeaderActivityIdString field - - - - Retrieves the LeaderActivityIdString field - Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - 0 based index of LeaderActivityIdString element to retrieve - Returns String representing the LeaderActivityIdString field - - - - Set LeaderActivityIdString field - Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - 0 based index of LeaderActivityIdString element to retrieve - field value to be set - - - - Set LeaderActivityIdString field - Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - 0 based index of leader_activity_id_string - field value to be set - - - - Retrieves the DefaultRaceLeader field - Comment: Index for the Leader Board entry selected as the default race participant - Returns nullable byte representing the DefaultRaceLeader field - - - - Set DefaultRaceLeader field - Comment: Index for the Leader Board entry selected as the default race participant - Nullable field value to be set - - - - Implements the SegmentId profile message. - - - - - Field Numbers for - - - - - Retrieves the Name field - Comment: Friendly name assigned to segment - Returns byte[] representing the Name field - - - - Retrieves the Name field - Comment: Friendly name assigned to segment - Returns String representing the Name field - - - - Set Name field - Comment: Friendly name assigned to segment - field value to be set - - - - Set Name field - Comment: Friendly name assigned to segment - field value to be set - - - - Retrieves the Uuid field - Comment: UUID of the segment - Returns byte[] representing the Uuid field - - - - Retrieves the Uuid field - Comment: UUID of the segment - Returns String representing the Uuid field - - - - Set Uuid field - Comment: UUID of the segment - field value to be set - - - - Set Uuid field - Comment: UUID of the segment - field value to be set - - - - Retrieves the Sport field - Comment: Sport associated with the segment - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Comment: Sport associated with the segment - Nullable field value to be set - - - - Retrieves the Enabled field - Comment: Segment enabled for evaluation - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Comment: Segment enabled for evaluation - Nullable field value to be set - - - - Retrieves the UserProfilePrimaryKey field - Comment: Primary key of the user that created the segment - Returns nullable uint representing the UserProfilePrimaryKey field - - - - Set UserProfilePrimaryKey field - Comment: Primary key of the user that created the segment - Nullable field value to be set - - - - Retrieves the DeviceId field - Comment: ID of the device that created the segment - Returns nullable uint representing the DeviceId field - - - - Set DeviceId field - Comment: ID of the device that created the segment - Nullable field value to be set - - - - Retrieves the DefaultRaceLeader field - Comment: Index for the Leader Board entry selected as the default race participant - Returns nullable byte representing the DefaultRaceLeader field - - - - Set DefaultRaceLeader field - Comment: Index for the Leader Board entry selected as the default race participant - Nullable field value to be set - - - - Retrieves the DeleteStatus field - Comment: Indicates if any segments should be deleted - Returns nullable SegmentDeleteStatus enum representing the DeleteStatus field - - - - Set DeleteStatus field - Comment: Indicates if any segments should be deleted - Nullable field value to be set - - - - Retrieves the SelectionType field - Comment: Indicates how the segment was selected to be sent to the device - Returns nullable SegmentSelectionType enum representing the SelectionType field - - - - Set SelectionType field - Comment: Indicates how the segment was selected to be sent to the device - Nullable field value to be set - - - - Implements the SegmentLap profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Timestamp field - Units: s - Comment: Lap end time. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Lap end time. - Nullable field value to be set - - - - Retrieves the Event field - Returns nullable Event enum representing the Event field - - - - Set Event field - Nullable field value to be set - - - - Retrieves the EventType field - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Nullable field value to be set - - - - Retrieves the StartTime field - Returns DateTime representing the StartTime field - - - - Set StartTime field - Nullable field value to be set - - - - Retrieves the StartPositionLat field - Units: semicircles - Returns nullable int representing the StartPositionLat field - - - - Set StartPositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the StartPositionLong field - Units: semicircles - Returns nullable int representing the StartPositionLong field - - - - Set StartPositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the EndPositionLat field - Units: semicircles - Returns nullable int representing the EndPositionLat field - - - - Set EndPositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the EndPositionLong field - Units: semicircles - Returns nullable int representing the EndPositionLong field - - - - Set EndPositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Returns nullable float representing the TotalElapsedTime field - - - - Set TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Nullable field value to be set - - - - Retrieves the TotalDistance field - Units: m - Returns nullable float representing the TotalDistance field - - - - Set TotalDistance field - Units: m - Nullable field value to be set - - - - Retrieves the TotalCycles field - Units: cycles - Returns nullable uint representing the TotalCycles field - - - - Set TotalCycles field - Units: cycles - Nullable field value to be set - - - - Retrieves the TotalStrokes subfield - Units: strokes - Nullable uint representing the TotalStrokes subfield - - - - - Set TotalStrokes subfield - Units: strokes - Subfield value to be set - - - - Retrieves the TotalCalories field - Units: kcal - Returns nullable ushort representing the TotalCalories field - - - - Set TotalCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the TotalFatCalories field - Units: kcal - Comment: If New Leaf - Returns nullable ushort representing the TotalFatCalories field - - - - Set TotalFatCalories field - Units: kcal - Comment: If New Leaf - Nullable field value to be set - - - - Retrieves the AvgSpeed field - Units: m/s - Returns nullable float representing the AvgSpeed field - - - - Set AvgSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxSpeed field - Units: m/s - Returns nullable float representing the MaxSpeed field - - - - Set MaxSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgHeartRate field - Units: bpm - Returns nullable byte representing the AvgHeartRate field - - - - Set AvgHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the MaxHeartRate field - Units: bpm - Returns nullable byte representing the MaxHeartRate field - - - - Set MaxHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Returns nullable byte representing the AvgCadence field - - - - Set AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Nullable field value to be set - - - - Retrieves the MaxCadence field - Units: rpm - Returns nullable byte representing the MaxCadence field - - - - Set MaxCadence field - Units: rpm - Nullable field value to be set - - - - Retrieves the AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Returns nullable ushort representing the AvgPower field - - - - Set AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Nullable field value to be set - - - - Retrieves the MaxPower field - Units: watts - Returns nullable ushort representing the MaxPower field - - - - Set MaxPower field - Units: watts - Nullable field value to be set - - - - Retrieves the TotalAscent field - Units: m - Returns nullable ushort representing the TotalAscent field - - - - Set TotalAscent field - Units: m - Nullable field value to be set - - - - Retrieves the TotalDescent field - Units: m - Returns nullable ushort representing the TotalDescent field - - - - Set TotalDescent field - Units: m - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Retrieves the NecLat field - Units: semicircles - Comment: North east corner latitude. - Returns nullable int representing the NecLat field - - - - Set NecLat field - Units: semicircles - Comment: North east corner latitude. - Nullable field value to be set - - - - Retrieves the NecLong field - Units: semicircles - Comment: North east corner longitude. - Returns nullable int representing the NecLong field - - - - Set NecLong field - Units: semicircles - Comment: North east corner longitude. - Nullable field value to be set - - - - Retrieves the SwcLat field - Units: semicircles - Comment: South west corner latitude. - Returns nullable int representing the SwcLat field - - - - Set SwcLat field - Units: semicircles - Comment: South west corner latitude. - Nullable field value to be set - - - - Retrieves the SwcLong field - Units: semicircles - Comment: South west corner latitude. - Returns nullable int representing the SwcLong field - - - - Set SwcLong field - Units: semicircles - Comment: South west corner latitude. - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the NormalizedPower field - Units: watts - Returns nullable ushort representing the NormalizedPower field - - - - Set NormalizedPower field - Units: watts - Nullable field value to be set - - - - Retrieves the LeftRightBalance field - Returns nullable ushort representing the LeftRightBalance field - - - - Set LeftRightBalance field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the TotalWork field - Units: J - Returns nullable uint representing the TotalWork field - - - - Set TotalWork field - Units: J - Nullable field value to be set - - - - Retrieves the AvgAltitude field - Units: m - Returns nullable float representing the AvgAltitude field - - - - Set AvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the MaxAltitude field - Units: m - Returns nullable float representing the MaxAltitude field - - - - Set MaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the GpsAccuracy field - Units: m - Returns nullable byte representing the GpsAccuracy field - - - - Set GpsAccuracy field - Units: m - Nullable field value to be set - - - - Retrieves the AvgGrade field - Units: % - Returns nullable float representing the AvgGrade field - - - - Set AvgGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgPosGrade field - Units: % - Returns nullable float representing the AvgPosGrade field - - - - Set AvgPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgNegGrade field - Units: % - Returns nullable float representing the AvgNegGrade field - - - - Set AvgNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxPosGrade field - Units: % - Returns nullable float representing the MaxPosGrade field - - - - Set MaxPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxNegGrade field - Units: % - Returns nullable float representing the MaxNegGrade field - - - - Set MaxNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgTemperature field - Units: C - Returns nullable sbyte representing the AvgTemperature field - - - - Set AvgTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MaxTemperature field - Units: C - Returns nullable sbyte representing the MaxTemperature field - - - - Set MaxTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the TotalMovingTime field - Units: s - Returns nullable float representing the TotalMovingTime field - - - - Set TotalMovingTime field - Units: s - Nullable field value to be set - - - - Retrieves the AvgPosVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgPosVerticalSpeed field - - - - Set AvgPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgNegVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgNegVerticalSpeed field - - - - Set AvgNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxPosVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxPosVerticalSpeed field - - - - Set MaxPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxNegVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxNegVerticalSpeed field - - - - Set MaxNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - - - returns number of elements in field TimeInHrZone - - - - Retrieves the TimeInHrZone field - Units: s - 0 based index of TimeInHrZone element to retrieve - Returns nullable float representing the TimeInHrZone field - - - - Set TimeInHrZone field - Units: s - 0 based index of time_in_hr_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInSpeedZone - - - - Retrieves the TimeInSpeedZone field - Units: s - 0 based index of TimeInSpeedZone element to retrieve - Returns nullable float representing the TimeInSpeedZone field - - - - Set TimeInSpeedZone field - Units: s - 0 based index of time_in_speed_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInCadenceZone - - - - Retrieves the TimeInCadenceZone field - Units: s - 0 based index of TimeInCadenceZone element to retrieve - Returns nullable float representing the TimeInCadenceZone field - - - - Set TimeInCadenceZone field - Units: s - 0 based index of time_in_cadence_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInPowerZone - - - - Retrieves the TimeInPowerZone field - Units: s - 0 based index of TimeInPowerZone element to retrieve - Returns nullable float representing the TimeInPowerZone field - - - - Set TimeInPowerZone field - Units: s - 0 based index of time_in_power_zone - Nullable field value to be set - - - - Retrieves the RepetitionNum field - Returns nullable ushort representing the RepetitionNum field - - - - Set RepetitionNum field - Nullable field value to be set - - - - Retrieves the MinAltitude field - Units: m - Returns nullable float representing the MinAltitude field - - - - Set MinAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the MinHeartRate field - Units: bpm - Returns nullable byte representing the MinHeartRate field - - - - Set MinHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the ActiveTime field - Units: s - Returns nullable float representing the ActiveTime field - - - - Set ActiveTime field - Units: s - Nullable field value to be set - - - - Retrieves the WktStepIndex field - Returns nullable ushort representing the WktStepIndex field - - - - Set WktStepIndex field - Nullable field value to be set - - - - Retrieves the SportEvent field - Returns nullable SportEvent enum representing the SportEvent field - - - - Set SportEvent field - Nullable field value to be set - - - - Retrieves the AvgLeftTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgLeftTorqueEffectiveness field - - - - Set AvgLeftTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgRightTorqueEffectiveness field - - - - Set AvgRightTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgLeftPedalSmoothness field - Units: percent - Returns nullable float representing the AvgLeftPedalSmoothness field - - - - Set AvgLeftPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightPedalSmoothness field - Units: percent - Returns nullable float representing the AvgRightPedalSmoothness field - - - - Set AvgRightPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgCombinedPedalSmoothness field - Units: percent - Returns nullable float representing the AvgCombinedPedalSmoothness field - - - - Set AvgCombinedPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the Status field - Returns nullable SegmentLapStatus enum representing the Status field - - - - Set Status field - Nullable field value to be set - - - - Retrieves the Uuid field - Returns byte[] representing the Uuid field - - - - Retrieves the Uuid field - Returns String representing the Uuid field - - - - Set Uuid field - field value to be set - - - - Set Uuid field - field value to be set - - - - Retrieves the AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Returns nullable float representing the AvgFractionalCadence field - - - - Set AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Nullable field value to be set - - - - Retrieves the MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Returns nullable float representing the MaxFractionalCadence field - - - - Set MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Nullable field value to be set - - - - Retrieves the TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Returns nullable float representing the TotalFractionalCycles field - - - - Set TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Nullable field value to be set - - - - Retrieves the FrontGearShiftCount field - Returns nullable ushort representing the FrontGearShiftCount field - - - - Set FrontGearShiftCount field - Nullable field value to be set - - - - Retrieves the RearGearShiftCount field - Returns nullable ushort representing the RearGearShiftCount field - - - - Set RearGearShiftCount field - Nullable field value to be set - - - - Retrieves the TimeStanding field - Units: s - Comment: Total time spent in the standing position - Returns nullable float representing the TimeStanding field - - - - Set TimeStanding field - Units: s - Comment: Total time spent in the standing position - Nullable field value to be set - - - - Retrieves the StandCount field - Comment: Number of transitions to the standing state - Returns nullable ushort representing the StandCount field - - - - Set StandCount field - Comment: Number of transitions to the standing state - Nullable field value to be set - - - - Retrieves the AvgLeftPco field - Units: mm - Comment: Average left platform center offset - Returns nullable sbyte representing the AvgLeftPco field - - - - Set AvgLeftPco field - Units: mm - Comment: Average left platform center offset - Nullable field value to be set - - - - Retrieves the AvgRightPco field - Units: mm - Comment: Average right platform center offset - Returns nullable sbyte representing the AvgRightPco field - - - - Set AvgRightPco field - Units: mm - Comment: Average right platform center offset - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhase - - - - Retrieves the AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhase element to retrieve - Returns nullable float representing the AvgLeftPowerPhase field - - - - Set AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of avg_left_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhasePeak - - - - Retrieves the AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhasePeak element to retrieve - Returns nullable float representing the AvgLeftPowerPhasePeak field - - - - Set AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of avg_left_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhase - - - - Retrieves the AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhase element to retrieve - Returns nullable float representing the AvgRightPowerPhase field - - - - Set AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhasePeak - - - - Retrieves the AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhasePeak element to retrieve - Returns nullable float representing the AvgRightPowerPhasePeak field - - - - Set AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgPowerPosition - - - - Retrieves the AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of AvgPowerPosition element to retrieve - Returns nullable ushort representing the AvgPowerPosition field - - - - Set AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of avg_power_position - Nullable field value to be set - - - - - - returns number of elements in field MaxPowerPosition - - - - Retrieves the MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of MaxPowerPosition element to retrieve - Returns nullable ushort representing the MaxPowerPosition field - - - - Set MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of max_power_position - Nullable field value to be set - - - - - - returns number of elements in field AvgCadencePosition - - - - Retrieves the AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of AvgCadencePosition element to retrieve - Returns nullable byte representing the AvgCadencePosition field - - - - Set AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of avg_cadence_position - Nullable field value to be set - - - - - - returns number of elements in field MaxCadencePosition - - - - Retrieves the MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of MaxCadencePosition element to retrieve - Returns nullable byte representing the MaxCadencePosition field - - - - Set MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of max_cadence_position - Nullable field value to be set - - - - Retrieves the Manufacturer field - Comment: Manufacturer that produced the segment - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Comment: Manufacturer that produced the segment - Nullable field value to be set - - - - Retrieves the TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the TotalGrit field - - - - Set TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the TotalFlow field - - - - Set TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the AvgGrit field - - - - Set AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the AvgFlow field - - - - Set AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Returns nullable float representing the TotalFractionalAscent field - - - - Set TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Nullable field value to be set - - - - Retrieves the TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Returns nullable float representing the TotalFractionalDescent field - - - - Set TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Nullable field value to be set - - - - Retrieves the EnhancedAvgAltitude field - Units: m - Returns nullable float representing the EnhancedAvgAltitude field - - - - Set EnhancedAvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMaxAltitude field - Units: m - Returns nullable float representing the EnhancedMaxAltitude field - - - - Set EnhancedMaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMinAltitude field - Units: m - Returns nullable float representing the EnhancedMinAltitude field - - - - Set EnhancedMinAltitude field - Units: m - Nullable field value to be set - - - - Implements the SegmentLeaderboardEntry profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Name field - Comment: Friendly name assigned to leader - Returns byte[] representing the Name field - - - - Retrieves the Name field - Comment: Friendly name assigned to leader - Returns String representing the Name field - - - - Set Name field - Comment: Friendly name assigned to leader - field value to be set - - - - Set Name field - Comment: Friendly name assigned to leader - field value to be set - - - - Retrieves the Type field - Comment: Leader classification - Returns nullable SegmentLeaderboardType enum representing the Type field - - - - Set Type field - Comment: Leader classification - Nullable field value to be set - - - - Retrieves the GroupPrimaryKey field - Comment: Primary user ID of this leader - Returns nullable uint representing the GroupPrimaryKey field - - - - Set GroupPrimaryKey field - Comment: Primary user ID of this leader - Nullable field value to be set - - - - Retrieves the ActivityId field - Comment: ID of the activity associated with this leader time - Returns nullable uint representing the ActivityId field - - - - Set ActivityId field - Comment: ID of the activity associated with this leader time - Nullable field value to be set - - - - Retrieves the SegmentTime field - Units: s - Comment: Segment Time (includes pauses) - Returns nullable float representing the SegmentTime field - - - - Set SegmentTime field - Units: s - Comment: Segment Time (includes pauses) - Nullable field value to be set - - - - Retrieves the ActivityIdString field - Comment: String version of the activity_id. 21 characters long, express in decimal - Returns byte[] representing the ActivityIdString field - - - - Retrieves the ActivityIdString field - Comment: String version of the activity_id. 21 characters long, express in decimal - Returns String representing the ActivityIdString field - - - - Set ActivityIdString field - Comment: String version of the activity_id. 21 characters long, express in decimal - field value to be set - - - - Set ActivityIdString field - Comment: String version of the activity_id. 21 characters long, express in decimal - field value to be set - - - - Implements the SegmentPoint profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Comment: Accumulated distance along the segment at the described point - Returns nullable float representing the Distance field - - - - Set Distance field - Units: m - Comment: Accumulated distance along the segment at the described point - Nullable field value to be set - - - - Retrieves the Altitude field - Units: m - Comment: Accumulated altitude along the segment at the described point - Returns nullable float representing the Altitude field - - - - Set Altitude field - Units: m - Comment: Accumulated altitude along the segment at the described point - Nullable field value to be set - - - - - - returns number of elements in field LeaderTime - - - - Retrieves the LeaderTime field - Units: s - Comment: Accumualted time each leader board member required to reach the described point. This value is zero for all leader board members at the starting point of the segment. - 0 based index of LeaderTime element to retrieve - Returns nullable float representing the LeaderTime field - - - - Set LeaderTime field - Units: s - Comment: Accumualted time each leader board member required to reach the described point. This value is zero for all leader board members at the starting point of the segment. - 0 based index of leader_time - Nullable field value to be set - - - - Retrieves the EnhancedAltitude field - Units: m - Comment: Accumulated altitude along the segment at the described point - Returns nullable float representing the EnhancedAltitude field - - - - Set EnhancedAltitude field - Units: m - Comment: Accumulated altitude along the segment at the described point - Nullable field value to be set - - - - Implements the Session profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Comment: Selected bit is set for the current session. - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Comment: Selected bit is set for the current session. - Nullable field value to be set - - - - Retrieves the Timestamp field - Units: s - Comment: Sesson end time. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Sesson end time. - Nullable field value to be set - - - - Retrieves the Event field - Comment: session - Returns nullable Event enum representing the Event field - - - - Set Event field - Comment: session - Nullable field value to be set - - - - Retrieves the EventType field - Comment: stop - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Comment: stop - Nullable field value to be set - - - - Retrieves the StartTime field - Returns DateTime representing the StartTime field - - - - Set StartTime field - Nullable field value to be set - - - - Retrieves the StartPositionLat field - Units: semicircles - Returns nullable int representing the StartPositionLat field - - - - Set StartPositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the StartPositionLong field - Units: semicircles - Returns nullable int representing the StartPositionLong field - - - - Set StartPositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Returns nullable float representing the TotalElapsedTime field - - - - Set TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Nullable field value to be set - - - - Retrieves the TotalDistance field - Units: m - Returns nullable float representing the TotalDistance field - - - - Set TotalDistance field - Units: m - Nullable field value to be set - - - - Retrieves the TotalCycles field - Units: cycles - Returns nullable uint representing the TotalCycles field - - - - Set TotalCycles field - Units: cycles - Nullable field value to be set - - - - Retrieves the TotalStrides subfield - Units: strides - Nullable uint representing the TotalStrides subfield - - - - - Set TotalStrides subfield - Units: strides - Subfield value to be set - - - - Retrieves the TotalStrokes subfield - Units: strokes - Nullable uint representing the TotalStrokes subfield - - - - - Set TotalStrokes subfield - Units: strokes - Subfield value to be set - - - - Retrieves the TotalCalories field - Units: kcal - Returns nullable ushort representing the TotalCalories field - - - - Set TotalCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the TotalFatCalories field - Units: kcal - Returns nullable ushort representing the TotalFatCalories field - - - - Set TotalFatCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the AvgSpeed field - Units: m/s - Comment: total_distance / total_timer_time - Returns nullable float representing the AvgSpeed field - - - - Set AvgSpeed field - Units: m/s - Comment: total_distance / total_timer_time - Nullable field value to be set - - - - Retrieves the MaxSpeed field - Units: m/s - Returns nullable float representing the MaxSpeed field - - - - Set MaxSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgHeartRate field - Units: bpm - Comment: average heart rate (excludes pause time) - Returns nullable byte representing the AvgHeartRate field - - - - Set AvgHeartRate field - Units: bpm - Comment: average heart rate (excludes pause time) - Nullable field value to be set - - - - Retrieves the MaxHeartRate field - Units: bpm - Returns nullable byte representing the MaxHeartRate field - - - - Set MaxHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Returns nullable byte representing the AvgCadence field - - - - Set AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Nullable field value to be set - - - - Retrieves the AvgRunningCadence subfield - Units: strides/min - Nullable byte representing the AvgRunningCadence subfield - - - - - Set AvgRunningCadence subfield - Units: strides/min - Subfield value to be set - - - - Retrieves the MaxCadence field - Units: rpm - Returns nullable byte representing the MaxCadence field - - - - Set MaxCadence field - Units: rpm - Nullable field value to be set - - - - Retrieves the MaxRunningCadence subfield - Units: strides/min - Nullable byte representing the MaxRunningCadence subfield - - - - - Set MaxRunningCadence subfield - Units: strides/min - Subfield value to be set - - - - Retrieves the AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Returns nullable ushort representing the AvgPower field - - - - Set AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Nullable field value to be set - - - - Retrieves the MaxPower field - Units: watts - Returns nullable ushort representing the MaxPower field - - - - Set MaxPower field - Units: watts - Nullable field value to be set - - - - Retrieves the TotalAscent field - Units: m - Returns nullable ushort representing the TotalAscent field - - - - Set TotalAscent field - Units: m - Nullable field value to be set - - - - Retrieves the TotalDescent field - Units: m - Returns nullable ushort representing the TotalDescent field - - - - Set TotalDescent field - Units: m - Nullable field value to be set - - - - Retrieves the TotalTrainingEffect field - Returns nullable float representing the TotalTrainingEffect field - - - - Set TotalTrainingEffect field - Nullable field value to be set - - - - Retrieves the FirstLapIndex field - Returns nullable ushort representing the FirstLapIndex field - - - - Set FirstLapIndex field - Nullable field value to be set - - - - Retrieves the NumLaps field - Returns nullable ushort representing the NumLaps field - - - - Set NumLaps field - Nullable field value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Retrieves the Trigger field - Returns nullable SessionTrigger enum representing the Trigger field - - - - Set Trigger field - Nullable field value to be set - - - - Retrieves the NecLat field - Units: semicircles - Comment: North east corner latitude - Returns nullable int representing the NecLat field - - - - Set NecLat field - Units: semicircles - Comment: North east corner latitude - Nullable field value to be set - - - - Retrieves the NecLong field - Units: semicircles - Comment: North east corner longitude - Returns nullable int representing the NecLong field - - - - Set NecLong field - Units: semicircles - Comment: North east corner longitude - Nullable field value to be set - - - - Retrieves the SwcLat field - Units: semicircles - Comment: South west corner latitude - Returns nullable int representing the SwcLat field - - - - Set SwcLat field - Units: semicircles - Comment: South west corner latitude - Nullable field value to be set - - - - Retrieves the SwcLong field - Units: semicircles - Comment: South west corner longitude - Returns nullable int representing the SwcLong field - - - - Set SwcLong field - Units: semicircles - Comment: South west corner longitude - Nullable field value to be set - - - - Retrieves the NumLengths field - Units: lengths - Comment: # of lengths of swim pool - Returns nullable ushort representing the NumLengths field - - - - Set NumLengths field - Units: lengths - Comment: # of lengths of swim pool - Nullable field value to be set - - - - Retrieves the NormalizedPower field - Units: watts - Returns nullable ushort representing the NormalizedPower field - - - - Set NormalizedPower field - Units: watts - Nullable field value to be set - - - - Retrieves the TrainingStressScore field - Units: tss - Returns nullable float representing the TrainingStressScore field - - - - Set TrainingStressScore field - Units: tss - Nullable field value to be set - - - - Retrieves the IntensityFactor field - Units: if - Returns nullable float representing the IntensityFactor field - - - - Set IntensityFactor field - Units: if - Nullable field value to be set - - - - Retrieves the LeftRightBalance field - Returns nullable ushort representing the LeftRightBalance field - - - - Set LeftRightBalance field - Nullable field value to be set - - - - Retrieves the AvgStrokeCount field - Units: strokes/lap - Returns nullable float representing the AvgStrokeCount field - - - - Set AvgStrokeCount field - Units: strokes/lap - Nullable field value to be set - - - - Retrieves the AvgStrokeDistance field - Units: m - Returns nullable float representing the AvgStrokeDistance field - - - - Set AvgStrokeDistance field - Units: m - Nullable field value to be set - - - - Retrieves the SwimStroke field - Units: swim_stroke - Returns nullable SwimStroke enum representing the SwimStroke field - - - - Set SwimStroke field - Units: swim_stroke - Nullable field value to be set - - - - Retrieves the PoolLength field - Units: m - Returns nullable float representing the PoolLength field - - - - Set PoolLength field - Units: m - Nullable field value to be set - - - - Retrieves the ThresholdPower field - Units: watts - Returns nullable ushort representing the ThresholdPower field - - - - Set ThresholdPower field - Units: watts - Nullable field value to be set - - - - Retrieves the PoolLengthUnit field - Returns nullable DisplayMeasure enum representing the PoolLengthUnit field - - - - Set PoolLengthUnit field - Nullable field value to be set - - - - Retrieves the NumActiveLengths field - Units: lengths - Comment: # of active lengths of swim pool - Returns nullable ushort representing the NumActiveLengths field - - - - Set NumActiveLengths field - Units: lengths - Comment: # of active lengths of swim pool - Nullable field value to be set - - - - Retrieves the TotalWork field - Units: J - Returns nullable uint representing the TotalWork field - - - - Set TotalWork field - Units: J - Nullable field value to be set - - - - Retrieves the AvgAltitude field - Units: m - Returns nullable float representing the AvgAltitude field - - - - Set AvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the MaxAltitude field - Units: m - Returns nullable float representing the MaxAltitude field - - - - Set MaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the GpsAccuracy field - Units: m - Returns nullable byte representing the GpsAccuracy field - - - - Set GpsAccuracy field - Units: m - Nullable field value to be set - - - - Retrieves the AvgGrade field - Units: % - Returns nullable float representing the AvgGrade field - - - - Set AvgGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgPosGrade field - Units: % - Returns nullable float representing the AvgPosGrade field - - - - Set AvgPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgNegGrade field - Units: % - Returns nullable float representing the AvgNegGrade field - - - - Set AvgNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxPosGrade field - Units: % - Returns nullable float representing the MaxPosGrade field - - - - Set MaxPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxNegGrade field - Units: % - Returns nullable float representing the MaxNegGrade field - - - - Set MaxNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgTemperature field - Units: C - Returns nullable sbyte representing the AvgTemperature field - - - - Set AvgTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MaxTemperature field - Units: C - Returns nullable sbyte representing the MaxTemperature field - - - - Set MaxTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the TotalMovingTime field - Units: s - Returns nullable float representing the TotalMovingTime field - - - - Set TotalMovingTime field - Units: s - Nullable field value to be set - - - - Retrieves the AvgPosVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgPosVerticalSpeed field - - - - Set AvgPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgNegVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgNegVerticalSpeed field - - - - Set AvgNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxPosVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxPosVerticalSpeed field - - - - Set MaxPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxNegVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxNegVerticalSpeed field - - - - Set MaxNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MinHeartRate field - Units: bpm - Returns nullable byte representing the MinHeartRate field - - - - Set MinHeartRate field - Units: bpm - Nullable field value to be set - - - - - - returns number of elements in field TimeInHrZone - - - - Retrieves the TimeInHrZone field - Units: s - 0 based index of TimeInHrZone element to retrieve - Returns nullable float representing the TimeInHrZone field - - - - Set TimeInHrZone field - Units: s - 0 based index of time_in_hr_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInSpeedZone - - - - Retrieves the TimeInSpeedZone field - Units: s - 0 based index of TimeInSpeedZone element to retrieve - Returns nullable float representing the TimeInSpeedZone field - - - - Set TimeInSpeedZone field - Units: s - 0 based index of time_in_speed_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInCadenceZone - - - - Retrieves the TimeInCadenceZone field - Units: s - 0 based index of TimeInCadenceZone element to retrieve - Returns nullable float representing the TimeInCadenceZone field - - - - Set TimeInCadenceZone field - Units: s - 0 based index of time_in_cadence_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInPowerZone - - - - Retrieves the TimeInPowerZone field - Units: s - 0 based index of TimeInPowerZone element to retrieve - Returns nullable float representing the TimeInPowerZone field - - - - Set TimeInPowerZone field - Units: s - 0 based index of time_in_power_zone - Nullable field value to be set - - - - Retrieves the AvgLapTime field - Units: s - Returns nullable float representing the AvgLapTime field - - - - Set AvgLapTime field - Units: s - Nullable field value to be set - - - - Retrieves the BestLapIndex field - Returns nullable ushort representing the BestLapIndex field - - - - Set BestLapIndex field - Nullable field value to be set - - - - Retrieves the MinAltitude field - Units: m - Returns nullable float representing the MinAltitude field - - - - Set MinAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the PlayerScore field - Returns nullable ushort representing the PlayerScore field - - - - Set PlayerScore field - Nullable field value to be set - - - - Retrieves the OpponentScore field - Returns nullable ushort representing the OpponentScore field - - - - Set OpponentScore field - Nullable field value to be set - - - - Retrieves the OpponentName field - Returns byte[] representing the OpponentName field - - - - Retrieves the OpponentName field - Returns String representing the OpponentName field - - - - Set OpponentName field - field value to be set - - - - Set OpponentName field - field value to be set - - - - - - returns number of elements in field StrokeCount - - - - Retrieves the StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of StrokeCount element to retrieve - Returns nullable ushort representing the StrokeCount field - - - - Set StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of stroke_count - Nullable field value to be set - - - - - - returns number of elements in field ZoneCount - - - - Retrieves the ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of ZoneCount element to retrieve - Returns nullable ushort representing the ZoneCount field - - - - Set ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of zone_count - Nullable field value to be set - - - - Retrieves the MaxBallSpeed field - Units: m/s - Returns nullable float representing the MaxBallSpeed field - - - - Set MaxBallSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgBallSpeed field - Units: m/s - Returns nullable float representing the AvgBallSpeed field - - - - Set AvgBallSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgVerticalOscillation field - Units: mm - Returns nullable float representing the AvgVerticalOscillation field - - - - Set AvgVerticalOscillation field - Units: mm - Nullable field value to be set - - - - Retrieves the AvgStanceTimePercent field - Units: percent - Returns nullable float representing the AvgStanceTimePercent field - - - - Set AvgStanceTimePercent field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStanceTime field - Units: ms - Returns nullable float representing the AvgStanceTime field - - - - Set AvgStanceTime field - Units: ms - Nullable field value to be set - - - - Retrieves the AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Returns nullable float representing the AvgFractionalCadence field - - - - Set AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Nullable field value to be set - - - - Retrieves the MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Returns nullable float representing the MaxFractionalCadence field - - - - Set MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Nullable field value to be set - - - - Retrieves the TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Returns nullable float representing the TotalFractionalCycles field - - - - Set TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Nullable field value to be set - - - - - - returns number of elements in field AvgTotalHemoglobinConc - - - - Retrieves the AvgTotalHemoglobinConc field - Units: g/dL - Comment: Avg saturated and unsaturated hemoglobin - 0 based index of AvgTotalHemoglobinConc element to retrieve - Returns nullable float representing the AvgTotalHemoglobinConc field - - - - Set AvgTotalHemoglobinConc field - Units: g/dL - Comment: Avg saturated and unsaturated hemoglobin - 0 based index of avg_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field MinTotalHemoglobinConc - - - - Retrieves the MinTotalHemoglobinConc field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - 0 based index of MinTotalHemoglobinConc element to retrieve - Returns nullable float representing the MinTotalHemoglobinConc field - - - - Set MinTotalHemoglobinConc field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - 0 based index of min_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field MaxTotalHemoglobinConc - - - - Retrieves the MaxTotalHemoglobinConc field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - 0 based index of MaxTotalHemoglobinConc element to retrieve - Returns nullable float representing the MaxTotalHemoglobinConc field - - - - Set MaxTotalHemoglobinConc field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - 0 based index of max_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field AvgSaturatedHemoglobinPercent - - - - Retrieves the AvgSaturatedHemoglobinPercent field - Units: % - Comment: Avg percentage of hemoglobin saturated with oxygen - 0 based index of AvgSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the AvgSaturatedHemoglobinPercent field - - - - Set AvgSaturatedHemoglobinPercent field - Units: % - Comment: Avg percentage of hemoglobin saturated with oxygen - 0 based index of avg_saturated_hemoglobin_percent - Nullable field value to be set - - - - - - returns number of elements in field MinSaturatedHemoglobinPercent - - - - Retrieves the MinSaturatedHemoglobinPercent field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - 0 based index of MinSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the MinSaturatedHemoglobinPercent field - - - - Set MinSaturatedHemoglobinPercent field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - 0 based index of min_saturated_hemoglobin_percent - Nullable field value to be set - - - - - - returns number of elements in field MaxSaturatedHemoglobinPercent - - - - Retrieves the MaxSaturatedHemoglobinPercent field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - 0 based index of MaxSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the MaxSaturatedHemoglobinPercent field - - - - Set MaxSaturatedHemoglobinPercent field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - 0 based index of max_saturated_hemoglobin_percent - Nullable field value to be set - - - - Retrieves the AvgLeftTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgLeftTorqueEffectiveness field - - - - Set AvgLeftTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgRightTorqueEffectiveness field - - - - Set AvgRightTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgLeftPedalSmoothness field - Units: percent - Returns nullable float representing the AvgLeftPedalSmoothness field - - - - Set AvgLeftPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightPedalSmoothness field - Units: percent - Returns nullable float representing the AvgRightPedalSmoothness field - - - - Set AvgRightPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgCombinedPedalSmoothness field - Units: percent - Returns nullable float representing the AvgCombinedPedalSmoothness field - - - - Set AvgCombinedPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the SportIndex field - Returns nullable byte representing the SportIndex field - - - - Set SportIndex field - Nullable field value to be set - - - - Retrieves the TimeStanding field - Units: s - Comment: Total time spend in the standing position - Returns nullable float representing the TimeStanding field - - - - Set TimeStanding field - Units: s - Comment: Total time spend in the standing position - Nullable field value to be set - - - - Retrieves the StandCount field - Comment: Number of transitions to the standing state - Returns nullable ushort representing the StandCount field - - - - Set StandCount field - Comment: Number of transitions to the standing state - Nullable field value to be set - - - - Retrieves the AvgLeftPco field - Units: mm - Comment: Average platform center offset Left - Returns nullable sbyte representing the AvgLeftPco field - - - - Set AvgLeftPco field - Units: mm - Comment: Average platform center offset Left - Nullable field value to be set - - - - Retrieves the AvgRightPco field - Units: mm - Comment: Average platform center offset Right - Returns nullable sbyte representing the AvgRightPco field - - - - Set AvgRightPco field - Units: mm - Comment: Average platform center offset Right - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhase - - - - Retrieves the AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhase element to retrieve - Returns nullable float representing the AvgLeftPowerPhase field - - - - Set AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Indexes defined by power_phase_type. - 0 based index of avg_left_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhasePeak - - - - Retrieves the AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhasePeak element to retrieve - Returns nullable float representing the AvgLeftPowerPhasePeak field - - - - Set AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of avg_left_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhase - - - - Retrieves the AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhase element to retrieve - Returns nullable float representing the AvgRightPowerPhase field - - - - Set AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhasePeak - - - - Retrieves the AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhasePeak element to retrieve - Returns nullable float representing the AvgRightPowerPhasePeak field - - - - Set AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgPowerPosition - - - - Retrieves the AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of AvgPowerPosition element to retrieve - Returns nullable ushort representing the AvgPowerPosition field - - - - Set AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of avg_power_position - Nullable field value to be set - - - - - - returns number of elements in field MaxPowerPosition - - - - Retrieves the MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of MaxPowerPosition element to retrieve - Returns nullable ushort representing the MaxPowerPosition field - - - - Set MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of max_power_position - Nullable field value to be set - - - - - - returns number of elements in field AvgCadencePosition - - - - Retrieves the AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of AvgCadencePosition element to retrieve - Returns nullable byte representing the AvgCadencePosition field - - - - Set AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of avg_cadence_position - Nullable field value to be set - - - - - - returns number of elements in field MaxCadencePosition - - - - Retrieves the MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of MaxCadencePosition element to retrieve - Returns nullable byte representing the MaxCadencePosition field - - - - Set MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of max_cadence_position - Nullable field value to be set - - - - Retrieves the EnhancedAvgSpeed field - Units: m/s - Comment: total_distance / total_timer_time - Returns nullable float representing the EnhancedAvgSpeed field - - - - Set EnhancedAvgSpeed field - Units: m/s - Comment: total_distance / total_timer_time - Nullable field value to be set - - - - Retrieves the EnhancedMaxSpeed field - Units: m/s - Returns nullable float representing the EnhancedMaxSpeed field - - - - Set EnhancedMaxSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the EnhancedAvgAltitude field - Units: m - Returns nullable float representing the EnhancedAvgAltitude field - - - - Set EnhancedAvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMinAltitude field - Units: m - Returns nullable float representing the EnhancedMinAltitude field - - - - Set EnhancedMinAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMaxAltitude field - Units: m - Returns nullable float representing the EnhancedMaxAltitude field - - - - Set EnhancedMaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the AvgLevMotorPower field - Units: watts - Comment: lev average motor power during session - Returns nullable ushort representing the AvgLevMotorPower field - - - - Set AvgLevMotorPower field - Units: watts - Comment: lev average motor power during session - Nullable field value to be set - - - - Retrieves the MaxLevMotorPower field - Units: watts - Comment: lev maximum motor power during session - Returns nullable ushort representing the MaxLevMotorPower field - - - - Set MaxLevMotorPower field - Units: watts - Comment: lev maximum motor power during session - Nullable field value to be set - - - - Retrieves the LevBatteryConsumption field - Units: percent - Comment: lev battery consumption during session - Returns nullable float representing the LevBatteryConsumption field - - - - Set LevBatteryConsumption field - Units: percent - Comment: lev battery consumption during session - Nullable field value to be set - - - - Retrieves the AvgVerticalRatio field - Units: percent - Returns nullable float representing the AvgVerticalRatio field - - - - Set AvgVerticalRatio field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStanceTimeBalance field - Units: percent - Returns nullable float representing the AvgStanceTimeBalance field - - - - Set AvgStanceTimeBalance field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStepLength field - Units: mm - Returns nullable float representing the AvgStepLength field - - - - Set AvgStepLength field - Units: mm - Nullable field value to be set - - - - Retrieves the TotalAnaerobicTrainingEffect field - Returns nullable float representing the TotalAnaerobicTrainingEffect field - - - - Set TotalAnaerobicTrainingEffect field - Nullable field value to be set - - - - Retrieves the AvgVam field - Units: m/s - Returns nullable float representing the AvgVam field - - - - Set AvgVam field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgDepth field - Units: m - Comment: 0 if above water - Returns nullable float representing the AvgDepth field - - - - Set AvgDepth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the MaxDepth field - Units: m - Comment: 0 if above water - Returns nullable float representing the MaxDepth field - - - - Set MaxDepth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the SurfaceInterval field - Units: s - Comment: Time since end of last dive - Returns nullable uint representing the SurfaceInterval field - - - - Set SurfaceInterval field - Units: s - Comment: Time since end of last dive - Nullable field value to be set - - - - Retrieves the StartCns field - Units: percent - Returns nullable byte representing the StartCns field - - - - Set StartCns field - Units: percent - Nullable field value to be set - - - - Retrieves the EndCns field - Units: percent - Returns nullable byte representing the EndCns field - - - - Set EndCns field - Units: percent - Nullable field value to be set - - - - Retrieves the StartN2 field - Units: percent - Returns nullable ushort representing the StartN2 field - - - - Set StartN2 field - Units: percent - Nullable field value to be set - - - - Retrieves the EndN2 field - Units: percent - Returns nullable ushort representing the EndN2 field - - - - Set EndN2 field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRespirationRate field - Returns nullable byte representing the AvgRespirationRate field - - - - Set AvgRespirationRate field - Nullable field value to be set - - - - Retrieves the MaxRespirationRate field - Returns nullable byte representing the MaxRespirationRate field - - - - Set MaxRespirationRate field - Nullable field value to be set - - - - Retrieves the MinRespirationRate field - Returns nullable byte representing the MinRespirationRate field - - - - Set MinRespirationRate field - Nullable field value to be set - - - - Retrieves the MinTemperature field - Units: C - Returns nullable sbyte representing the MinTemperature field - - - - Set MinTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the O2Toxicity field - Units: OTUs - Returns nullable ushort representing the O2Toxicity field - - - - Set O2Toxicity field - Units: OTUs - Nullable field value to be set - - - - Retrieves the DiveNumber field - Returns nullable uint representing the DiveNumber field - - - - Set DiveNumber field - Nullable field value to be set - - - - Retrieves the TrainingLoadPeak field - Returns nullable float representing the TrainingLoadPeak field - - - - Set TrainingLoadPeak field - Nullable field value to be set - - - - Retrieves the EnhancedAvgRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedAvgRespirationRate field - - - - Set EnhancedAvgRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the EnhancedMaxRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedMaxRespirationRate field - - - - Set EnhancedMaxRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the EnhancedMinRespirationRate field - Returns nullable float representing the EnhancedMinRespirationRate field - - - - Set EnhancedMinRespirationRate field - Nullable field value to be set - - - - Retrieves the TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the TotalGrit field - - - - Set TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the TotalFlow field - - - - Set TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the JumpCount field - Returns nullable ushort representing the JumpCount field - - - - Set JumpCount field - Nullable field value to be set - - - - Retrieves the AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the AvgGrit field - - - - Set AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the AvgFlow field - - - - Set AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Returns nullable float representing the TotalFractionalAscent field - - - - Set TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Nullable field value to be set - - - - Retrieves the TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Returns nullable float representing the TotalFractionalDescent field - - - - Set TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Nullable field value to be set - - - - Retrieves the AvgCoreTemperature field - Units: C - Returns nullable float representing the AvgCoreTemperature field - - - - Set AvgCoreTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MinCoreTemperature field - Units: C - Returns nullable float representing the MinCoreTemperature field - - - - Set MinCoreTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MaxCoreTemperature field - Units: C - Returns nullable float representing the MaxCoreTemperature field - - - - Set MaxCoreTemperature field - Units: C - Nullable field value to be set - - - - Implements the Set profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Comment: Timestamp of the set - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Comment: Timestamp of the set - Nullable field value to be set - - - - Retrieves the Duration field - Units: s - Returns nullable float representing the Duration field - - - - Set Duration field - Units: s - Nullable field value to be set - - - - Retrieves the Repetitions field - Comment: # of repitions of the movement - Returns nullable ushort representing the Repetitions field - - - - Set Repetitions field - Comment: # of repitions of the movement - Nullable field value to be set - - - - Retrieves the Weight field - Units: kg - Comment: Amount of weight applied for the set - Returns nullable float representing the Weight field - - - - Set Weight field - Units: kg - Comment: Amount of weight applied for the set - Nullable field value to be set - - - - Retrieves the SetType field - Returns nullable byte representing the SetType field - - - - Set SetType field - Nullable field value to be set - - - - Retrieves the StartTime field - Comment: Start time of the set - Returns DateTime representing the StartTime field - - - - Set StartTime field - Comment: Start time of the set - Nullable field value to be set - - - - - - returns number of elements in field Category - - - - Retrieves the Category field - 0 based index of Category element to retrieve - Returns nullable ushort representing the Category field - - - - Set Category field - 0 based index of category - Nullable field value to be set - - - - - - returns number of elements in field CategorySubtype - - - - Retrieves the CategorySubtype field - Comment: Based on the associated category, see [category]_exercise_names - 0 based index of CategorySubtype element to retrieve - Returns nullable ushort representing the CategorySubtype field - - - - Set CategorySubtype field - Comment: Based on the associated category, see [category]_exercise_names - 0 based index of category_subtype - Nullable field value to be set - - - - Retrieves the WeightDisplayUnit field - Returns nullable ushort representing the WeightDisplayUnit field - - - - Set WeightDisplayUnit field - Nullable field value to be set - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the WktStepIndex field - Returns nullable ushort representing the WktStepIndex field - - - - Set WktStepIndex field - Nullable field value to be set - - - - Implements the SlaveDevice profile message. - - - - - Field Numbers for - - - - - Retrieves the Manufacturer field - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Nullable field value to be set - - - - Retrieves the Product field - Returns nullable ushort representing the Product field - - - - Set Product field - Nullable field value to be set - - - - Retrieves the FaveroProduct subfield - Nullable ushort representing the FaveroProduct subfield - - - - - Set FaveroProduct subfield - Subfield value to be set - - - - Retrieves the GarminProduct subfield - Nullable ushort representing the GarminProduct subfield - - - - - Set GarminProduct subfield - Subfield value to be set - - - - Implements the Software profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Version field - Returns nullable float representing the Version field - - - - Set Version field - Nullable field value to be set - - - - Retrieves the PartNumber field - Returns byte[] representing the PartNumber field - - - - Retrieves the PartNumber field - Returns String representing the PartNumber field - - - - Set PartNumber field - field value to be set - - - - Set PartNumber field - field value to be set - - - - Implements the SpeedZone profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HighValue field - Units: m/s - Returns nullable float representing the HighValue field - - - - Set HighValue field - Units: m/s - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Implements the Split profile message. - - - - - Field Numbers for - - - - - Retrieves the SplitType field - Returns nullable SplitType enum representing the SplitType field - - - - Set SplitType field - Nullable field value to be set - - - - Retrieves the TotalElapsedTime field - Units: s - Returns nullable float representing the TotalElapsedTime field - - - - Set TotalElapsedTime field - Units: s - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Nullable field value to be set - - - - Retrieves the TotalDistance field - Units: m - Returns nullable float representing the TotalDistance field - - - - Set TotalDistance field - Units: m - Nullable field value to be set - - - - Retrieves the StartTime field - Returns DateTime representing the StartTime field - - - - Set StartTime field - Nullable field value to be set - - - - Implements the Sport profile message. - - - - - Field Numbers for - - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Implements the StressLevel profile message. - - - - - Field Numbers for - - - - - Retrieves the StressLevelValue field - Returns nullable short representing the StressLevelValue field - - - - Set StressLevelValue field - Nullable field value to be set - - - - Retrieves the StressLevelTime field - Units: s - Comment: Time stress score was calculated - Returns DateTime representing the StressLevelTime field - - - - Set StressLevelTime field - Units: s - Comment: Time stress score was calculated - Nullable field value to be set - - - - Implements the TankSummary profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Sensor field - Returns nullable uint representing the Sensor field - - - - Set Sensor field - Nullable field value to be set - - - - Retrieves the StartPressure field - Units: bar - Returns nullable float representing the StartPressure field - - - - Set StartPressure field - Units: bar - Nullable field value to be set - - - - Retrieves the EndPressure field - Units: bar - Returns nullable float representing the EndPressure field - - - - Set EndPressure field - Units: bar - Nullable field value to be set - - - - Retrieves the VolumeUsed field - Units: L - Returns nullable float representing the VolumeUsed field - - - - Set VolumeUsed field - Units: L - Nullable field value to be set - - - - Implements the TankUpdate profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Sensor field - Returns nullable uint representing the Sensor field - - - - Set Sensor field - Nullable field value to be set - - - - Retrieves the Pressure field - Units: bar - Returns nullable float representing the Pressure field - - - - Set Pressure field - Units: bar - Nullable field value to be set - - - - Implements the ThreeDSensorCalibration profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the SensorType field - Comment: Indicates which sensor the calibration is for - Returns nullable SensorType enum representing the SensorType field - - - - Set SensorType field - Comment: Indicates which sensor the calibration is for - Nullable field value to be set - - - - Retrieves the CalibrationFactor field - Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - Returns nullable uint representing the CalibrationFactor field - - - - Set CalibrationFactor field - Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - Nullable field value to be set - - - - Retrieves the AccelCalFactor subfield - Units: g - Comment: Accelerometer calibration factor - Nullable uint representing the AccelCalFactor subfield - - - - - Set AccelCalFactor subfield - Units: g - Comment: Accelerometer calibration factor - Subfield value to be set - - - - Retrieves the GyroCalFactor subfield - Units: deg/s - Comment: Gyro calibration factor - Nullable uint representing the GyroCalFactor subfield - - - - - Set GyroCalFactor subfield - Units: deg/s - Comment: Gyro calibration factor - Subfield value to be set - - - - Retrieves the CalibrationDivisor field - Units: counts - Comment: Calibration factor divisor - Returns nullable uint representing the CalibrationDivisor field - - - - Set CalibrationDivisor field - Units: counts - Comment: Calibration factor divisor - Nullable field value to be set - - - - Retrieves the LevelShift field - Comment: Level shift value used to shift the ADC value back into range - Returns nullable uint representing the LevelShift field - - - - Set LevelShift field - Comment: Level shift value used to shift the ADC value back into range - Nullable field value to be set - - - - - - returns number of elements in field OffsetCal - - - - Retrieves the OffsetCal field - Comment: Internal calibration factors, one for each: xy, yx, zx - 0 based index of OffsetCal element to retrieve - Returns nullable int representing the OffsetCal field - - - - Set OffsetCal field - Comment: Internal calibration factors, one for each: xy, yx, zx - 0 based index of offset_cal - Nullable field value to be set - - - - - - returns number of elements in field OrientationMatrix - - - - Retrieves the OrientationMatrix field - Comment: 3 x 3 rotation matrix (row major) - 0 based index of OrientationMatrix element to retrieve - Returns nullable float representing the OrientationMatrix field - - - - Set OrientationMatrix field - Comment: 3 x 3 rotation matrix (row major) - 0 based index of orientation_matrix - Nullable field value to be set - - - - Implements the TimeInZone profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the ReferenceMesg field - Returns nullable ushort representing the ReferenceMesg field - - - - Set ReferenceMesg field - Nullable field value to be set - - - - Retrieves the ReferenceIndex field - Returns nullable ushort representing the ReferenceIndex field - - - - Set ReferenceIndex field - Nullable field value to be set - - - - - - returns number of elements in field TimeInHrZone - - - - Retrieves the TimeInHrZone field - Units: s - 0 based index of TimeInHrZone element to retrieve - Returns nullable float representing the TimeInHrZone field - - - - Set TimeInHrZone field - Units: s - 0 based index of time_in_hr_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInSpeedZone - - - - Retrieves the TimeInSpeedZone field - Units: s - 0 based index of TimeInSpeedZone element to retrieve - Returns nullable float representing the TimeInSpeedZone field - - - - Set TimeInSpeedZone field - Units: s - 0 based index of time_in_speed_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInCadenceZone - - - - Retrieves the TimeInCadenceZone field - Units: s - 0 based index of TimeInCadenceZone element to retrieve - Returns nullable float representing the TimeInCadenceZone field - - - - Set TimeInCadenceZone field - Units: s - 0 based index of time_in_cadence_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInPowerZone - - - - Retrieves the TimeInPowerZone field - Units: s - 0 based index of TimeInPowerZone element to retrieve - Returns nullable float representing the TimeInPowerZone field - - - - Set TimeInPowerZone field - Units: s - 0 based index of time_in_power_zone - Nullable field value to be set - - - - - - returns number of elements in field HrZoneHighBoundary - - - - Retrieves the HrZoneHighBoundary field - Units: bpm - 0 based index of HrZoneHighBoundary element to retrieve - Returns nullable byte representing the HrZoneHighBoundary field - - - - Set HrZoneHighBoundary field - Units: bpm - 0 based index of hr_zone_high_boundary - Nullable field value to be set - - - - - - returns number of elements in field SpeedZoneHighBoundary - - - - Retrieves the SpeedZoneHighBoundary field - Units: m/s - 0 based index of SpeedZoneHighBoundary element to retrieve - Returns nullable float representing the SpeedZoneHighBoundary field - - - - Set SpeedZoneHighBoundary field - Units: m/s - 0 based index of speed_zone_high_boundary - Nullable field value to be set - - - - - - returns number of elements in field CadenceZoneHighBondary - - - - Retrieves the CadenceZoneHighBondary field - Units: rpm - 0 based index of CadenceZoneHighBondary element to retrieve - Returns nullable byte representing the CadenceZoneHighBondary field - - - - Set CadenceZoneHighBondary field - Units: rpm - 0 based index of cadence_zone_high_bondary - Nullable field value to be set - - - - - - returns number of elements in field PowerZoneHighBoundary - - - - Retrieves the PowerZoneHighBoundary field - Units: watts - 0 based index of PowerZoneHighBoundary element to retrieve - Returns nullable ushort representing the PowerZoneHighBoundary field - - - - Set PowerZoneHighBoundary field - Units: watts - 0 based index of power_zone_high_boundary - Nullable field value to be set - - - - Retrieves the HrCalcType field - Returns nullable HrZoneCalc enum representing the HrCalcType field - - - - Set HrCalcType field - Nullable field value to be set - - - - Retrieves the MaxHeartRate field - Returns nullable byte representing the MaxHeartRate field - - - - Set MaxHeartRate field - Nullable field value to be set - - - - Retrieves the RestingHeartRate field - Returns nullable byte representing the RestingHeartRate field - - - - Set RestingHeartRate field - Nullable field value to be set - - - - Retrieves the ThresholdHeartRate field - Returns nullable byte representing the ThresholdHeartRate field - - - - Set ThresholdHeartRate field - Nullable field value to be set - - - - Retrieves the PwrCalcType field - Returns nullable PwrZoneCalc enum representing the PwrCalcType field - - - - Set PwrCalcType field - Nullable field value to be set - - - - Retrieves the FunctionalThresholdPower field - Returns nullable ushort representing the FunctionalThresholdPower field - - - - Set FunctionalThresholdPower field - Nullable field value to be set - - - - Implements the TimestampCorrelation profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of UTC timestamp at the time the system timestamp was recorded. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of UTC timestamp at the time the system timestamp was recorded. - Nullable field value to be set - - - - Retrieves the FractionalTimestamp field - Units: s - Comment: Fractional part of the UTC timestamp at the time the system timestamp was recorded. - Returns nullable float representing the FractionalTimestamp field - - - - Set FractionalTimestamp field - Units: s - Comment: Fractional part of the UTC timestamp at the time the system timestamp was recorded. - Nullable field value to be set - - - - Retrieves the SystemTimestamp field - Units: s - Comment: Whole second part of the system timestamp - Returns DateTime representing the SystemTimestamp field - - - - Set SystemTimestamp field - Units: s - Comment: Whole second part of the system timestamp - Nullable field value to be set - - - - Retrieves the FractionalSystemTimestamp field - Units: s - Comment: Fractional part of the system timestamp - Returns nullable float representing the FractionalSystemTimestamp field - - - - Set FractionalSystemTimestamp field - Units: s - Comment: Fractional part of the system timestamp - Nullable field value to be set - - - - Retrieves the LocalTimestamp field - Units: s - Comment: timestamp epoch expressed in local time used to convert timestamps to local time - Returns nullable uint representing the LocalTimestamp field - - - - Set LocalTimestamp field - Units: s - Comment: timestamp epoch expressed in local time used to convert timestamps to local time - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the UTC timestamp at the time the system timestamp was recorded. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the UTC timestamp at the time the system timestamp was recorded. - Nullable field value to be set - - - - Retrieves the SystemTimestampMs field - Units: ms - Comment: Millisecond part of the system timestamp - Returns nullable ushort representing the SystemTimestampMs field - - - - Set SystemTimestampMs field - Units: ms - Comment: Millisecond part of the system timestamp - Nullable field value to be set - - - - Implements the Totals profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the TimerTime field - Units: s - Comment: Excludes pauses - Returns nullable uint representing the TimerTime field - - - - Set TimerTime field - Units: s - Comment: Excludes pauses - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Returns nullable uint representing the Distance field - - - - Set Distance field - Units: m - Nullable field value to be set - - - - Retrieves the Calories field - Units: kcal - Returns nullable uint representing the Calories field - - - - Set Calories field - Units: kcal - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the ElapsedTime field - Units: s - Comment: Includes pauses - Returns nullable uint representing the ElapsedTime field - - - - Set ElapsedTime field - Units: s - Comment: Includes pauses - Nullable field value to be set - - - - Retrieves the Sessions field - Returns nullable ushort representing the Sessions field - - - - Set Sessions field - Nullable field value to be set - - - - Retrieves the ActiveTime field - Units: s - Returns nullable uint representing the ActiveTime field - - - - Set ActiveTime field - Units: s - Nullable field value to be set - - - - Retrieves the SportIndex field - Returns nullable byte representing the SportIndex field - - - - Set SportIndex field - Nullable field value to be set - - - - Implements the TrainingFile profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable File enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Manufacturer field - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Nullable field value to be set - - - - Retrieves the Product field - Returns nullable ushort representing the Product field - - - - Set Product field - Nullable field value to be set - - - - Retrieves the FaveroProduct subfield - Nullable ushort representing the FaveroProduct subfield - - - - - Set FaveroProduct subfield - Subfield value to be set - - - - Retrieves the GarminProduct subfield - Nullable ushort representing the GarminProduct subfield - - - - - Set GarminProduct subfield - Subfield value to be set - - - - Retrieves the SerialNumber field - Returns nullable uint representing the SerialNumber field - - - - Set SerialNumber field - Nullable field value to be set - - - - Retrieves the TimeCreated field - Returns DateTime representing the TimeCreated field - - - - Set TimeCreated field - Nullable field value to be set - - - - Implements the UserProfile profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the FriendlyName field - Returns byte[] representing the FriendlyName field - - - - Retrieves the FriendlyName field - Returns String representing the FriendlyName field - - - - Set FriendlyName field - field value to be set - - - - Set FriendlyName field - field value to be set - - - - Retrieves the Gender field - Returns nullable Gender enum representing the Gender field - - - - Set Gender field - Nullable field value to be set - - - - Retrieves the Age field - Units: years - Returns nullable byte representing the Age field - - - - Set Age field - Units: years - Nullable field value to be set - - - - Retrieves the Height field - Units: m - Returns nullable float representing the Height field - - - - Set Height field - Units: m - Nullable field value to be set - - - - Retrieves the Weight field - Units: kg - Returns nullable float representing the Weight field - - - - Set Weight field - Units: kg - Nullable field value to be set - - - - Retrieves the Language field - Returns nullable Language enum representing the Language field - - - - Set Language field - Nullable field value to be set - - - - Retrieves the ElevSetting field - Returns nullable DisplayMeasure enum representing the ElevSetting field - - - - Set ElevSetting field - Nullable field value to be set - - - - Retrieves the WeightSetting field - Returns nullable DisplayMeasure enum representing the WeightSetting field - - - - Set WeightSetting field - Nullable field value to be set - - - - Retrieves the RestingHeartRate field - Units: bpm - Returns nullable byte representing the RestingHeartRate field - - - - Set RestingHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the DefaultMaxRunningHeartRate field - Units: bpm - Returns nullable byte representing the DefaultMaxRunningHeartRate field - - - - Set DefaultMaxRunningHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the DefaultMaxBikingHeartRate field - Units: bpm - Returns nullable byte representing the DefaultMaxBikingHeartRate field - - - - Set DefaultMaxBikingHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the DefaultMaxHeartRate field - Units: bpm - Returns nullable byte representing the DefaultMaxHeartRate field - - - - Set DefaultMaxHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the HrSetting field - Returns nullable DisplayHeart enum representing the HrSetting field - - - - Set HrSetting field - Nullable field value to be set - - - - Retrieves the SpeedSetting field - Returns nullable DisplayMeasure enum representing the SpeedSetting field - - - - Set SpeedSetting field - Nullable field value to be set - - - - Retrieves the DistSetting field - Returns nullable DisplayMeasure enum representing the DistSetting field - - - - Set DistSetting field - Nullable field value to be set - - - - Retrieves the PowerSetting field - Returns nullable DisplayPower enum representing the PowerSetting field - - - - Set PowerSetting field - Nullable field value to be set - - - - Retrieves the ActivityClass field - Returns nullable ActivityClass enum representing the ActivityClass field - - - - Set ActivityClass field - Nullable field value to be set - - - - Retrieves the PositionSetting field - Returns nullable DisplayPosition enum representing the PositionSetting field - - - - Set PositionSetting field - Nullable field value to be set - - - - Retrieves the TemperatureSetting field - Returns nullable DisplayMeasure enum representing the TemperatureSetting field - - - - Set TemperatureSetting field - Nullable field value to be set - - - - Retrieves the LocalId field - Returns nullable ushort representing the LocalId field - - - - Set LocalId field - Nullable field value to be set - - - - - - returns number of elements in field GlobalId - - - - Retrieves the GlobalId field - 0 based index of GlobalId element to retrieve - Returns nullable byte representing the GlobalId field - - - - Set GlobalId field - 0 based index of global_id - Nullable field value to be set - - - - Retrieves the WakeTime field - Comment: Typical wake time - Returns nullable uint representing the WakeTime field - - - - Set WakeTime field - Comment: Typical wake time - Nullable field value to be set - - - - Retrieves the SleepTime field - Comment: Typical bed time - Returns nullable uint representing the SleepTime field - - - - Set SleepTime field - Comment: Typical bed time - Nullable field value to be set - - - - Retrieves the HeightSetting field - Returns nullable DisplayMeasure enum representing the HeightSetting field - - - - Set HeightSetting field - Nullable field value to be set - - - - Retrieves the UserRunningStepLength field - Units: m - Comment: User defined running step length set to 0 for auto length - Returns nullable float representing the UserRunningStepLength field - - - - Set UserRunningStepLength field - Units: m - Comment: User defined running step length set to 0 for auto length - Nullable field value to be set - - - - Retrieves the UserWalkingStepLength field - Units: m - Comment: User defined walking step length set to 0 for auto length - Returns nullable float representing the UserWalkingStepLength field - - - - Set UserWalkingStepLength field - Units: m - Comment: User defined walking step length set to 0 for auto length - Nullable field value to be set - - - - Retrieves the DepthSetting field - Returns nullable DisplayMeasure enum representing the DepthSetting field - - - - Set DepthSetting field - Nullable field value to be set - - - - Retrieves the DiveCount field - Returns nullable uint representing the DiveCount field - - - - Set DiveCount field - Nullable field value to be set - - - - Implements the VideoClip profile message. - - - - - Field Numbers for - - - - - Retrieves the ClipNumber field - Returns nullable ushort representing the ClipNumber field - - - - Set ClipNumber field - Nullable field value to be set - - - - Retrieves the StartTimestamp field - Returns DateTime representing the StartTimestamp field - - - - Set StartTimestamp field - Nullable field value to be set - - - - Retrieves the StartTimestampMs field - Returns nullable ushort representing the StartTimestampMs field - - - - Set StartTimestampMs field - Nullable field value to be set - - - - Retrieves the EndTimestamp field - Returns DateTime representing the EndTimestamp field - - - - Set EndTimestamp field - Nullable field value to be set - - - - Retrieves the EndTimestampMs field - Returns nullable ushort representing the EndTimestampMs field - - - - Set EndTimestampMs field - Nullable field value to be set - - - - Retrieves the ClipStart field - Units: ms - Comment: Start of clip in video time - Returns nullable uint representing the ClipStart field - - - - Set ClipStart field - Units: ms - Comment: Start of clip in video time - Nullable field value to be set - - - - Retrieves the ClipEnd field - Units: ms - Comment: End of clip in video time - Returns nullable uint representing the ClipEnd field - - - - Set ClipEnd field - Units: ms - Comment: End of clip in video time - Nullable field value to be set - - - - Implements the VideoDescription profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Comment: Long descriptions will be split into multiple parts - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Comment: Long descriptions will be split into multiple parts - Nullable field value to be set - - - - Retrieves the MessageCount field - Comment: Total number of description parts - Returns nullable ushort representing the MessageCount field - - - - Set MessageCount field - Comment: Total number of description parts - Nullable field value to be set - - - - Retrieves the Text field - Returns byte[] representing the Text field - - - - Retrieves the Text field - Returns String representing the Text field - - - - Set Text field - field value to be set - - - - Set Text field - field value to be set - - - - Implements the VideoFrame profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - Retrieves the FrameNumber field - Comment: Number of the frame that the timestamp and timestamp_ms correlate to - Returns nullable uint representing the FrameNumber field - - - - Set FrameNumber field - Comment: Number of the frame that the timestamp and timestamp_ms correlate to - Nullable field value to be set - - - - Implements the Video profile message. - - - - - Field Numbers for - - - - - Retrieves the Url field - Returns byte[] representing the Url field - - - - Retrieves the Url field - Returns String representing the Url field - - - - Set Url field - field value to be set - - - - Set Url field - field value to be set - - - - Retrieves the HostingProvider field - Returns byte[] representing the HostingProvider field - - - - Retrieves the HostingProvider field - Returns String representing the HostingProvider field - - - - Set HostingProvider field - field value to be set - - - - Set HostingProvider field - field value to be set - - - - Retrieves the Duration field - Units: ms - Comment: Playback time of video - Returns nullable uint representing the Duration field - - - - Set Duration field - Units: ms - Comment: Playback time of video - Nullable field value to be set - - - - Implements the VideoTitle profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Comment: Long titles will be split into multiple parts - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Comment: Long titles will be split into multiple parts - Nullable field value to be set - - - - Retrieves the MessageCount field - Comment: Total number of title parts - Returns nullable ushort representing the MessageCount field - - - - Set MessageCount field - Comment: Total number of title parts - Nullable field value to be set - - - - Retrieves the Text field - Returns byte[] representing the Text field - - - - Retrieves the Text field - Returns String representing the Text field - - - - Set Text field - field value to be set - - - - Set Text field - field value to be set - - - - Implements the WatchfaceSettings profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Mode field - Returns nullable WatchfaceMode enum representing the Mode field - - - - Set Mode field - Nullable field value to be set - - - - Retrieves the Layout field - Returns nullable byte representing the Layout field - - - - Set Layout field - Nullable field value to be set - - - - Retrieves the DigitalLayout subfield - Nullable DigitalWatchfaceLayout enum representing the DigitalLayout subfield - - - - - Set DigitalLayout subfield - Subfield value to be set - - - - Retrieves the AnalogLayout subfield - Nullable AnalogWatchfaceLayout enum representing the AnalogLayout subfield - - - - - Set AnalogLayout subfield - Subfield value to be set - - - - Implements the WeatherAlert profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the ReportId field - Comment: Unique identifier from GCS report ID string, length is 12 - Returns byte[] representing the ReportId field - - - - Retrieves the ReportId field - Comment: Unique identifier from GCS report ID string, length is 12 - Returns String representing the ReportId field - - - - Set ReportId field - Comment: Unique identifier from GCS report ID string, length is 12 - field value to be set - - - - Set ReportId field - Comment: Unique identifier from GCS report ID string, length is 12 - field value to be set - - - - Retrieves the IssueTime field - Comment: Time alert was issued - Returns DateTime representing the IssueTime field - - - - Set IssueTime field - Comment: Time alert was issued - Nullable field value to be set - - - - Retrieves the ExpireTime field - Comment: Time alert expires - Returns DateTime representing the ExpireTime field - - - - Set ExpireTime field - Comment: Time alert expires - Nullable field value to be set - - - - Retrieves the Severity field - Comment: Warning, Watch, Advisory, Statement - Returns nullable WeatherSeverity enum representing the Severity field - - - - Set Severity field - Comment: Warning, Watch, Advisory, Statement - Nullable field value to be set - - - - Retrieves the Type field - Comment: Tornado, Severe Thunderstorm, etc. - Returns nullable WeatherSevereType enum representing the Type field - - - - Set Type field - Comment: Tornado, Severe Thunderstorm, etc. - Nullable field value to be set - - - - Implements the WeatherConditions profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Comment: time of update for current conditions, else forecast time - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Comment: time of update for current conditions, else forecast time - Nullable field value to be set - - - - Retrieves the WeatherReport field - Comment: Current or forecast - Returns nullable WeatherReport enum representing the WeatherReport field - - - - Set WeatherReport field - Comment: Current or forecast - Nullable field value to be set - - - - Retrieves the Temperature field - Units: C - Returns nullable sbyte representing the Temperature field - - - - Set Temperature field - Units: C - Nullable field value to be set - - - - Retrieves the Condition field - Comment: Corresponds to GSC Response weatherIcon field - Returns nullable WeatherStatus enum representing the Condition field - - - - Set Condition field - Comment: Corresponds to GSC Response weatherIcon field - Nullable field value to be set - - - - Retrieves the WindDirection field - Units: degrees - Returns nullable ushort representing the WindDirection field - - - - Set WindDirection field - Units: degrees - Nullable field value to be set - - - - Retrieves the WindSpeed field - Units: m/s - Returns nullable float representing the WindSpeed field - - - - Set WindSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the PrecipitationProbability field - Comment: range 0-100 - Returns nullable byte representing the PrecipitationProbability field - - - - Set PrecipitationProbability field - Comment: range 0-100 - Nullable field value to be set - - - - Retrieves the TemperatureFeelsLike field - Units: C - Comment: Heat Index if GCS heatIdx above or equal to 90F or wind chill if GCS windChill below or equal to 32F - Returns nullable sbyte representing the TemperatureFeelsLike field - - - - Set TemperatureFeelsLike field - Units: C - Comment: Heat Index if GCS heatIdx above or equal to 90F or wind chill if GCS windChill below or equal to 32F - Nullable field value to be set - - - - Retrieves the RelativeHumidity field - Returns nullable byte representing the RelativeHumidity field - - - - Set RelativeHumidity field - Nullable field value to be set - - - - Retrieves the Location field - Comment: string corresponding to GCS response location string - Returns byte[] representing the Location field - - - - Retrieves the Location field - Comment: string corresponding to GCS response location string - Returns String representing the Location field - - - - Set Location field - Comment: string corresponding to GCS response location string - field value to be set - - - - Set Location field - Comment: string corresponding to GCS response location string - field value to be set - - - - Retrieves the ObservedAtTime field - Returns DateTime representing the ObservedAtTime field - - - - Set ObservedAtTime field - Nullable field value to be set - - - - Retrieves the ObservedLocationLat field - Units: semicircles - Returns nullable int representing the ObservedLocationLat field - - - - Set ObservedLocationLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the ObservedLocationLong field - Units: semicircles - Returns nullable int representing the ObservedLocationLong field - - - - Set ObservedLocationLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the DayOfWeek field - Returns nullable DayOfWeek enum representing the DayOfWeek field - - - - Set DayOfWeek field - Nullable field value to be set - - - - Retrieves the HighTemperature field - Units: C - Returns nullable sbyte representing the HighTemperature field - - - - Set HighTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the LowTemperature field - Units: C - Returns nullable sbyte representing the LowTemperature field - - - - Set LowTemperature field - Units: C - Nullable field value to be set - - - - Implements the WeightScale profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Weight field - Units: kg - Returns nullable float representing the Weight field - - - - Set Weight field - Units: kg - Nullable field value to be set - - - - Retrieves the PercentFat field - Units: % - Returns nullable float representing the PercentFat field - - - - Set PercentFat field - Units: % - Nullable field value to be set - - - - Retrieves the PercentHydration field - Units: % - Returns nullable float representing the PercentHydration field - - - - Set PercentHydration field - Units: % - Nullable field value to be set - - - - Retrieves the VisceralFatMass field - Units: kg - Returns nullable float representing the VisceralFatMass field - - - - Set VisceralFatMass field - Units: kg - Nullable field value to be set - - - - Retrieves the BoneMass field - Units: kg - Returns nullable float representing the BoneMass field - - - - Set BoneMass field - Units: kg - Nullable field value to be set - - - - Retrieves the MuscleMass field - Units: kg - Returns nullable float representing the MuscleMass field - - - - Set MuscleMass field - Units: kg - Nullable field value to be set - - - - Retrieves the BasalMet field - Units: kcal/day - Returns nullable float representing the BasalMet field - - - - Set BasalMet field - Units: kcal/day - Nullable field value to be set - - - - Retrieves the PhysiqueRating field - Returns nullable byte representing the PhysiqueRating field - - - - Set PhysiqueRating field - Nullable field value to be set - - - - Retrieves the ActiveMet field - Units: kcal/day - Comment: ~4kJ per kcal, 0.25 allows max 16384 kcal - Returns nullable float representing the ActiveMet field - - - - Set ActiveMet field - Units: kcal/day - Comment: ~4kJ per kcal, 0.25 allows max 16384 kcal - Nullable field value to be set - - - - Retrieves the MetabolicAge field - Units: years - Returns nullable byte representing the MetabolicAge field - - - - Set MetabolicAge field - Units: years - Nullable field value to be set - - - - Retrieves the VisceralFatRating field - Returns nullable byte representing the VisceralFatRating field - - - - Set VisceralFatRating field - Nullable field value to be set - - - - Retrieves the UserProfileIndex field - Comment: Associates this weight scale message to a user. This corresponds to the index of the user profile message in the weight scale file. - Returns nullable ushort representing the UserProfileIndex field - - - - Set UserProfileIndex field - Comment: Associates this weight scale message to a user. This corresponds to the index of the user profile message in the weight scale file. - Nullable field value to be set - - - - Implements the Workout profile message. - - - - - Field Numbers for - - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the Capabilities field - Returns nullable uint representing the Capabilities field - - - - Set Capabilities field - Nullable field value to be set - - - - Retrieves the NumValidSteps field - Comment: number of valid steps - Returns nullable ushort representing the NumValidSteps field - - - - Set NumValidSteps field - Comment: number of valid steps - Nullable field value to be set - - - - Retrieves the WktName field - Returns byte[] representing the WktName field - - - - Retrieves the WktName field - Returns String representing the WktName field - - - - Set WktName field - field value to be set - - - - Set WktName field - field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the PoolLength field - Units: m - Returns nullable float representing the PoolLength field - - - - Set PoolLength field - Units: m - Nullable field value to be set - - - - Retrieves the PoolLengthUnit field - Returns nullable DisplayMeasure enum representing the PoolLengthUnit field - - - - Set PoolLengthUnit field - Nullable field value to be set - - - - Implements the WorkoutSession profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the NumValidSteps field - Returns nullable ushort representing the NumValidSteps field - - - - Set NumValidSteps field - Nullable field value to be set - - - - Retrieves the FirstStepIndex field - Returns nullable ushort representing the FirstStepIndex field - - - - Set FirstStepIndex field - Nullable field value to be set - - - - Retrieves the PoolLength field - Units: m - Returns nullable float representing the PoolLength field - - - - Set PoolLength field - Units: m - Nullable field value to be set - - - - Retrieves the PoolLengthUnit field - Returns nullable DisplayMeasure enum representing the PoolLengthUnit field - - - - Set PoolLengthUnit field - Nullable field value to be set - - - - Implements the WorkoutStep profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the WktStepName field - Returns byte[] representing the WktStepName field - - - - Retrieves the WktStepName field - Returns String representing the WktStepName field - - - - Set WktStepName field - field value to be set - - - - Set WktStepName field - field value to be set - - - - Retrieves the DurationType field - Returns nullable WktStepDuration enum representing the DurationType field - - - - Set DurationType field - Nullable field value to be set - - - - Retrieves the DurationValue field - Returns nullable uint representing the DurationValue field - - - - Set DurationValue field - Nullable field value to be set - - - - Retrieves the DurationTime subfield - Units: s - Nullable float representing the DurationTime subfield - - - - - Set DurationTime subfield - Units: s - Subfield value to be set - - - - Retrieves the DurationDistance subfield - Units: m - Nullable float representing the DurationDistance subfield - - - - - Set DurationDistance subfield - Units: m - Subfield value to be set - - - - Retrieves the DurationHr subfield - Units: % or bpm - Nullable uint representing the DurationHr subfield - - - - - Set DurationHr subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the DurationCalories subfield - Units: calories - Nullable uint representing the DurationCalories subfield - - - - - Set DurationCalories subfield - Units: calories - Subfield value to be set - - - - Retrieves the DurationStep subfield - Comment: message_index of step to loop back to. Steps are assumed to be in the order by message_index. custom_name and intensity members are undefined for this duration type. - Nullable uint representing the DurationStep subfield - - - - - Set DurationStep subfield - Comment: message_index of step to loop back to. Steps are assumed to be in the order by message_index. custom_name and intensity members are undefined for this duration type. - Subfield value to be set - - - - Retrieves the DurationPower subfield - Units: % or watts - Nullable uint representing the DurationPower subfield - - - - - Set DurationPower subfield - Units: % or watts - Subfield value to be set - - - - Retrieves the DurationReps subfield - Nullable uint representing the DurationReps subfield - - - - - Set DurationReps subfield - Subfield value to be set - - - - Retrieves the TargetType field - Returns nullable WktStepTarget enum representing the TargetType field - - - - Set TargetType field - Nullable field value to be set - - - - Retrieves the TargetValue field - Returns nullable uint representing the TargetValue field - - - - Set TargetValue field - Nullable field value to be set - - - - Retrieves the TargetSpeedZone subfield - Comment: speed zone (1-10);Custom =0; - Nullable uint representing the TargetSpeedZone subfield - - - - - Set TargetSpeedZone subfield - Comment: speed zone (1-10);Custom =0; - Subfield value to be set - - - - Retrieves the TargetHrZone subfield - Comment: hr zone (1-5);Custom =0; - Nullable uint representing the TargetHrZone subfield - - - - - Set TargetHrZone subfield - Comment: hr zone (1-5);Custom =0; - Subfield value to be set - - - - Retrieves the TargetCadenceZone subfield - Comment: Zone (1-?); Custom = 0; - Nullable uint representing the TargetCadenceZone subfield - - - - - Set TargetCadenceZone subfield - Comment: Zone (1-?); Custom = 0; - Subfield value to be set - - - - Retrieves the TargetPowerZone subfield - Comment: Power Zone ( 1-7); Custom = 0; - Nullable uint representing the TargetPowerZone subfield - - - - - Set TargetPowerZone subfield - Comment: Power Zone ( 1-7); Custom = 0; - Subfield value to be set - - - - Retrieves the RepeatSteps subfield - Comment: # of repetitions - Nullable uint representing the RepeatSteps subfield - - - - - Set RepeatSteps subfield - Comment: # of repetitions - Subfield value to be set - - - - Retrieves the RepeatTime subfield - Units: s - Nullable float representing the RepeatTime subfield - - - - - Set RepeatTime subfield - Units: s - Subfield value to be set - - - - Retrieves the RepeatDistance subfield - Units: m - Nullable float representing the RepeatDistance subfield - - - - - Set RepeatDistance subfield - Units: m - Subfield value to be set - - - - Retrieves the RepeatCalories subfield - Units: calories - Nullable uint representing the RepeatCalories subfield - - - - - Set RepeatCalories subfield - Units: calories - Subfield value to be set - - - - Retrieves the RepeatHr subfield - Units: % or bpm - Nullable uint representing the RepeatHr subfield - - - - - Set RepeatHr subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the RepeatPower subfield - Units: % or watts - Nullable uint representing the RepeatPower subfield - - - - - Set RepeatPower subfield - Units: % or watts - Subfield value to be set - - - - Retrieves the TargetStrokeType subfield - Nullable SwimStroke enum representing the TargetStrokeType subfield - - - - - Set TargetStrokeType subfield - Subfield value to be set - - - - Retrieves the CustomTargetValueLow field - Returns nullable uint representing the CustomTargetValueLow field - - - - Set CustomTargetValueLow field - Nullable field value to be set - - - - Retrieves the CustomTargetSpeedLow subfield - Units: m/s - Nullable float representing the CustomTargetSpeedLow subfield - - - - - Set CustomTargetSpeedLow subfield - Units: m/s - Subfield value to be set - - - - Retrieves the CustomTargetHeartRateLow subfield - Units: % or bpm - Nullable uint representing the CustomTargetHeartRateLow subfield - - - - - Set CustomTargetHeartRateLow subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the CustomTargetCadenceLow subfield - Units: rpm - Nullable uint representing the CustomTargetCadenceLow subfield - - - - - Set CustomTargetCadenceLow subfield - Units: rpm - Subfield value to be set - - - - Retrieves the CustomTargetPowerLow subfield - Units: % or watts - Nullable uint representing the CustomTargetPowerLow subfield - - - - - Set CustomTargetPowerLow subfield - Units: % or watts - Subfield value to be set - - - - Retrieves the CustomTargetValueHigh field - Returns nullable uint representing the CustomTargetValueHigh field - - - - Set CustomTargetValueHigh field - Nullable field value to be set - - - - Retrieves the CustomTargetSpeedHigh subfield - Units: m/s - Nullable float representing the CustomTargetSpeedHigh subfield - - - - - Set CustomTargetSpeedHigh subfield - Units: m/s - Subfield value to be set - - - - Retrieves the CustomTargetHeartRateHigh subfield - Units: % or bpm - Nullable uint representing the CustomTargetHeartRateHigh subfield - - - - - Set CustomTargetHeartRateHigh subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the CustomTargetCadenceHigh subfield - Units: rpm - Nullable uint representing the CustomTargetCadenceHigh subfield - - - - - Set CustomTargetCadenceHigh subfield - Units: rpm - Subfield value to be set - - - - Retrieves the CustomTargetPowerHigh subfield - Units: % or watts - Nullable uint representing the CustomTargetPowerHigh subfield - - - - - Set CustomTargetPowerHigh subfield - Units: % or watts - Subfield value to be set - - - - Retrieves the Intensity field - Returns nullable Intensity enum representing the Intensity field - - - - Set Intensity field - Nullable field value to be set - - - - Retrieves the Notes field - Returns byte[] representing the Notes field - - - - Retrieves the Notes field - Returns String representing the Notes field - - - - Set Notes field - field value to be set - - - - Set Notes field - field value to be set - - - - Retrieves the Equipment field - Returns nullable WorkoutEquipment enum representing the Equipment field - - - - Set Equipment field - Nullable field value to be set - - - - Retrieves the ExerciseCategory field - Returns nullable ushort representing the ExerciseCategory field - - - - Set ExerciseCategory field - Nullable field value to be set - - - - Retrieves the ExerciseName field - Returns nullable ushort representing the ExerciseName field - - - - Set ExerciseName field - Nullable field value to be set - - - - Retrieves the ExerciseWeight field - Units: kg - Returns nullable float representing the ExerciseWeight field - - - - Set ExerciseWeight field - Units: kg - Nullable field value to be set - - - - Retrieves the WeightDisplayUnit field - Returns nullable ushort representing the WeightDisplayUnit field - - - - Set WeightDisplayUnit field - Nullable field value to be set - - - - Retrieves the SecondaryTargetType field - Returns nullable WktStepTarget enum representing the SecondaryTargetType field - - - - Set SecondaryTargetType field - Nullable field value to be set - - - - Retrieves the SecondaryTargetValue field - Returns nullable uint representing the SecondaryTargetValue field - - - - Set SecondaryTargetValue field - Nullable field value to be set - - - - Retrieves the SecondaryTargetSpeedZone subfield - Comment: speed zone (1-10);Custom =0; - Nullable uint representing the SecondaryTargetSpeedZone subfield - - - - - Set SecondaryTargetSpeedZone subfield - Comment: speed zone (1-10);Custom =0; - Subfield value to be set - - - - Retrieves the SecondaryTargetHrZone subfield - Comment: hr zone (1-5);Custom =0; - Nullable uint representing the SecondaryTargetHrZone subfield - - - - - Set SecondaryTargetHrZone subfield - Comment: hr zone (1-5);Custom =0; - Subfield value to be set - - - - Retrieves the SecondaryTargetCadenceZone subfield - Comment: Zone (1-?); Custom = 0; - Nullable uint representing the SecondaryTargetCadenceZone subfield - - - - - Set SecondaryTargetCadenceZone subfield - Comment: Zone (1-?); Custom = 0; - Subfield value to be set - - - - Retrieves the SecondaryTargetPowerZone subfield - Comment: Power Zone ( 1-7); Custom = 0; - Nullable uint representing the SecondaryTargetPowerZone subfield - - - - - Set SecondaryTargetPowerZone subfield - Comment: Power Zone ( 1-7); Custom = 0; - Subfield value to be set - - - - Retrieves the SecondaryTargetStrokeType subfield - Nullable SwimStroke enum representing the SecondaryTargetStrokeType subfield - - - - - Set SecondaryTargetStrokeType subfield - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetValueLow field - Returns nullable uint representing the SecondaryCustomTargetValueLow field - - - - Set SecondaryCustomTargetValueLow field - Nullable field value to be set - - - - Retrieves the SecondaryCustomTargetSpeedLow subfield - Units: m/s - Nullable float representing the SecondaryCustomTargetSpeedLow subfield - - - - - Set SecondaryCustomTargetSpeedLow subfield - Units: m/s - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetHeartRateLow subfield - Units: % or bpm - Nullable uint representing the SecondaryCustomTargetHeartRateLow subfield - - - - - Set SecondaryCustomTargetHeartRateLow subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetCadenceLow subfield - Units: rpm - Nullable uint representing the SecondaryCustomTargetCadenceLow subfield - - - - - Set SecondaryCustomTargetCadenceLow subfield - Units: rpm - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetPowerLow subfield - Units: % or watts - Nullable uint representing the SecondaryCustomTargetPowerLow subfield - - - - - Set SecondaryCustomTargetPowerLow subfield - Units: % or watts - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetValueHigh field - Returns nullable uint representing the SecondaryCustomTargetValueHigh field - - - - Set SecondaryCustomTargetValueHigh field - Nullable field value to be set - - - - Retrieves the SecondaryCustomTargetSpeedHigh subfield - Units: m/s - Nullable float representing the SecondaryCustomTargetSpeedHigh subfield - - - - - Set SecondaryCustomTargetSpeedHigh subfield - Units: m/s - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetHeartRateHigh subfield - Units: % or bpm - Nullable uint representing the SecondaryCustomTargetHeartRateHigh subfield - - - - - Set SecondaryCustomTargetHeartRateHigh subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetCadenceHigh subfield - Units: rpm - Nullable uint representing the SecondaryCustomTargetCadenceHigh subfield - - - - - Set SecondaryCustomTargetCadenceHigh subfield - Units: rpm - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetPowerHigh subfield - Units: % or watts - Nullable uint representing the SecondaryCustomTargetPowerHigh subfield - - - - - Set SecondaryCustomTargetPowerHigh subfield - Units: % or watts - Subfield value to be set - - - - Implements the ZonesTarget profile message. - - - - - Field Numbers for - - - - - Retrieves the MaxHeartRate field - Returns nullable byte representing the MaxHeartRate field - - - - Set MaxHeartRate field - Nullable field value to be set - - - - Retrieves the ThresholdHeartRate field - Returns nullable byte representing the ThresholdHeartRate field - - - - Set ThresholdHeartRate field - Nullable field value to be set - - - - Retrieves the FunctionalThresholdPower field - Returns nullable ushort representing the FunctionalThresholdPower field - - - - Set FunctionalThresholdPower field - Nullable field value to be set - - - - Retrieves the HrCalcType field - Returns nullable HrZoneCalc enum representing the HrCalcType field - - - - Set HrCalcType field - Nullable field value to be set - - - - Retrieves the PwrCalcType field - Returns nullable PwrZoneCalc enum representing the PwrCalcType field - - - - Set PwrCalcType field - Nullable field value to be set - - - - Implements the profile Activity type as an enum - - - - - Implements the profile ActivityClass type as an enum - - - - - Implements the profile ActivityLevel type as an enum - - - - - Implements the profile ActivitySubtype type as an enum - - - - - Implements the profile ActivityType type as an enum - - - - - Implements the profile AnalogWatchfaceLayout type as an enum - - - - - Implements the profile AntChannelId type as a class - - - - - Implements the profile AntNetwork type as an enum - - - - - Implements the profile AntplusDeviceType type as a class - - - - - Implements the profile AttitudeStage type as an enum - - - - - Implements the profile AttitudeValidity type as a class - - - - - Implements the profile AutoActivityDetect type as a class - - - - - Implements the profile AutolapTrigger type as an enum - - - - - Implements the profile Autoscroll type as an enum - - - - - Implements the profile AutoSyncFrequency type as an enum - - - - - Implements the profile BacklightMode type as an enum - - - - - Implements the profile BacklightTimeout type as a class - - - - - Implements the profile BatteryStatus type as a class - - - - - Implements the profile BenchPressExerciseName type as a class - - - - - Implements the profile BikeLightBeamAngleMode type as a class - - - - - Implements the profile BikeLightNetworkConfigType type as an enum - - - - - Implements the profile BleDeviceType type as a class - - - - - Implements the profile BodyLocation type as an enum - - - - - Implements the profile Bool type as an enum - - - - - Implements the profile BpStatus type as an enum - - - - - Implements the profile CalfRaiseExerciseName type as a class - - - - - Implements the profile CameraEventType type as an enum - - - - - Implements the profile CameraOrientationType type as an enum - - - - - Implements the profile CardioExerciseName type as a class - - - - - Implements the profile CarryExerciseName type as a class - - - - - Implements the profile CcrSetpointSwitchMode type as an enum - - - - - Implements the profile Checksum type as a class - - - - - Implements the profile ChopExerciseName type as a class - - - - - Implements the profile ClimbProEvent type as an enum - - - - - Implements the profile CommTimeoutType type as a class - - - - - Implements the profile ConnectivityCapabilities type as a class - - - - - Implements the profile CoreExerciseName type as a class - - - - - Implements the profile CourseCapabilities type as a class - - - - - Implements the profile CoursePoint type as an enum - - - - - Implements the profile CrunchExerciseName type as a class - - - - - Implements the profile CurlExerciseName type as a class - - - - - Implements the profile DateMode type as an enum - - - - - The DateTime class implements the Fit date_time type which references - UTC 00:00 Dec 31 1989 in second resolution - - - - - Implements the profile DayOfWeek type as an enum - - - - - Implements the profile DeadliftExerciseName type as a class - - - - - Implements the profile DeviceIndex type as a class - - - - - Implements the profile DigitalWatchfaceLayout type as an enum - - - - - Implements the profile DisplayHeart type as an enum - - - - - Implements the profile DisplayMeasure type as an enum - - - - - Implements the profile DisplayOrientation type as an enum - - - - - Implements the profile DisplayPosition type as an enum - - - - - Implements the profile DisplayPower type as an enum - - - - - Implements the profile DiveAlarmType type as an enum - - - - - Implements the profile DiveAlert type as an enum - - - - - Implements the profile DiveBacklightMode type as an enum - - - - - Implements the profile DiveGasMode type as an enum - - - - - Implements the profile DiveGasStatus type as an enum - - - - - Implements the profile Event type as an enum - - - - - Implements the profile EventType type as an enum - - - - - Implements the profile ExdDataUnits type as an enum - - - - - Implements the profile ExdDescriptors type as an enum - - - - - Implements the profile ExdDisplayType type as an enum - - - - - Implements the profile ExdLayout type as an enum - - - - - Implements the profile ExdQualifiers type as an enum - - - - - Implements the profile ExerciseCategory type as a class - - - - - Implements the profile FaveroProduct type as a class - - - - - Implements the profile File type as an enum - - - - - Implements the profile FileFlags type as a class - - - - - Implements the profile FitBaseType type as a class - - - - - Implements the profile FitBaseUnit type as a class - - - - - Implements the profile FitnessEquipmentState type as an enum - - - - - Implements the profile FlyeExerciseName type as a class - - - - - Implements the profile GarminProduct type as a class - - - - - Implements the profile GasConsumptionRateType type as an enum - - - - - Implements the profile Gender type as an enum - - - - - Implements the profile Goal type as an enum - - - - - Implements the profile GoalRecurrence type as an enum - - - - - Implements the profile GoalSource type as an enum - - - - - Implements the profile HipRaiseExerciseName type as a class - - - - - Implements the profile HipStabilityExerciseName type as a class - - - - - Implements the profile HipSwingExerciseName type as a class - - - - - Implements the profile HrType type as an enum - - - - - Implements the profile HrZoneCalc type as an enum - - - - - Implements the profile HyperextensionExerciseName type as a class - - - - - Implements the profile Intensity type as an enum - - - - - Implements the profile Language type as an enum - - - - - Implements the profile LanguageBits0 type as a class - - - - - Implements the profile LanguageBits1 type as a class - - - - - Implements the profile LanguageBits2 type as a class - - - - - Implements the profile LanguageBits3 type as a class - - - - - Implements the profile LanguageBits4 type as a class - - - - - Implements the profile LapTrigger type as an enum - - - - - Implements the profile LateralRaiseExerciseName type as a class - - - - - Implements the profile LeftRightBalance type as a class - - - - - Implements the profile LeftRightBalance100 type as a class - - - - - Implements the profile LegCurlExerciseName type as a class - - - - - Implements the profile LegRaiseExerciseName type as a class - - - - - Implements the profile LengthType type as an enum - - - - - Implements the profile LocalDateTime type as a class - - - - - Implements the profile LocalDeviceType type as a class - - - - - Implements the profile LocaltimeIntoDay type as a class - - - - - Implements the profile LungeExerciseName type as a class - - - - - Implements the profile Manufacturer type as a class - - - - - Implements the profile MesgCount type as an enum - - - - - Implements the profile MesgNum type as a class - - - - - Implements the profile MessageIndex type as a class - - - - - Implements the profile NoFlyTimeMode type as an enum - - - - - Implements the profile OlympicLiftExerciseName type as a class - - - - - Implements the profile PlankExerciseName type as a class - - - - - Implements the profile PlyoExerciseName type as a class - - - - - Implements the profile PowerPhaseType type as an enum - - - - - Implements the profile PullUpExerciseName type as a class - - - - - Implements the profile PushUpExerciseName type as a class - - - - - Implements the profile PwrZoneCalc type as an enum - - - - - Implements the profile RadarThreatLevelType type as an enum - - - - - Implements the profile RiderPositionType type as an enum - - - - - Implements the profile RowExerciseName type as a class - - - - - Implements the profile RunExerciseName type as a class - - - - - Implements the profile Schedule type as an enum - - - - - Implements the profile SegmentDeleteStatus type as an enum - - - - - Implements the profile SegmentLapStatus type as an enum - - - - - Implements the profile SegmentLeaderboardType type as an enum - - - - - Implements the profile SegmentSelectionType type as an enum - - - - - Implements the profile SensorType type as an enum - - - - - Implements the profile SessionTrigger type as an enum - - - - - Implements the profile SetType type as a class - - - - - Implements the profile ShoulderPressExerciseName type as a class - - - - - Implements the profile ShoulderStabilityExerciseName type as a class - - - - - Implements the profile ShrugExerciseName type as a class - - - - - Implements the profile Side type as an enum - - - - - Implements the profile SitUpExerciseName type as a class - - - - - Implements the profile SourceType type as an enum - - - - - Implements the profile SplitType type as an enum - - - - - Implements the profile Sport type as an enum - - - - - Implements the profile SportBits0 type as a class - - - - - Implements the profile SportBits1 type as a class - - - - - Implements the profile SportBits2 type as a class - - - - - Implements the profile SportBits3 type as a class - - - - - Implements the profile SportBits4 type as a class - - - - - Implements the profile SportBits5 type as a class - - - - - Implements the profile SportBits6 type as a class - - - - - Implements the profile SportEvent type as an enum - - - - - Implements the profile SquatExerciseName type as a class - - - - - Implements the profile StrokeType type as an enum - - - - - Implements the profile SubSport type as an enum - - - - - Implements the profile SupportedExdScreenLayouts type as a class - - - - - Implements the profile SwimStroke type as an enum - - - - - Implements the profile Switch type as an enum - - - - - Implements the profile TapSensitivity type as an enum - - - - - Implements the profile TimeIntoDay type as a class - - - - - Implements the profile TimeMode type as an enum - - - - - Implements the profile TimerTrigger type as an enum - - - - - Implements the profile TimeZone type as an enum - - - - - Implements the profile TissueModelType type as an enum - - - - - Implements the profile Tone type as an enum - - - - - Implements the profile TotalBodyExerciseName type as a class - - - - - Implements the profile TricepsExtensionExerciseName type as a class - - - - - Implements the profile TurnType type as an enum - - - - - Implements the profile UserLocalId type as a class - - - - - Implements the profile WarmUpExerciseName type as a class - - - - - Implements the profile WatchfaceMode type as an enum - - - - - Implements the profile WaterType type as an enum - - - - - Implements the profile WeatherReport type as an enum - - - - - Implements the profile WeatherSevereType type as an enum - - - - - Implements the profile WeatherSeverity type as an enum - - - - - Implements the profile WeatherStatus type as an enum - - - - - Implements the profile Weight type as a class - - - - - Implements the profile WktStepDuration type as an enum - - - - - Implements the profile WktStepTarget type as an enum - - - - - Implements the profile WorkoutCapabilities type as a class - - - - - Implements the profile WorkoutEquipment type as an enum - - - - - Implements the profile WorkoutHr type as a class - - - - - Implements the profile WorkoutPower type as a class - - - - - Validate if a Message is compatible with a protocol version - - Message to validate - true if message is compatible. false otherwise - - - - Validate if a MessageDefinition is compatible with a protocol version - - Definition to validate - true if definition is compatible. false otherwise - - - - Validates Protocol Features for a given give version - - - - - Validate if a Message is compatible with a protocol version - - Message to validate - true if message is compatible. false otherwise - - - - Validate if a MessageDefinition is compatible with a protocol version - - Definition to validate - true if definition is compatible. false otherwise - - - - Validate if a Message is compatible with a protocol version - - Message to validate - true if message is compatible. false otherwise - - - - Validate if a MessageDefinition is compatible with a protocol version - - Definition to validate - true if definition is compatible. false otherwise - - - - The Subfield class represents an alternative field definition used - by dynamic fields. They can only be associated with a containing - field object. - - - - - The SubfieldMap class tracks the reference field/value pairs which indicate a field - should use the alternate subfield definition rather than the usual defn (allows Dynamic Fields) - - - - - Checks if the reference fields in a given message indicate the subfield (alternate) - definition should be used - - message of interest - true if the subfield is active - - - - Checks if the reference fields in a given message indicate the subfield (alternate) - definition should be used - - message of interest - true if the subfield is active - - - - Extend framework BinaryReader to support BigEndian datasources. - When reading multibyte values, the bytes are reordered appropriately. - - - - - Extend framework BinaryWriter to support BigEndian destinations. - When writing multibyte values, the bytes are reordered appropriately. - - - - diff --git a/src/Garmin/FitSdk/plugins/HrToRecordMesgBroadcastPlugin.cs b/src/Garmin/FitSdk/plugins/HrToRecordMesgBroadcastPlugin.cs deleted file mode 100644 index 18dd1d874..000000000 --- a/src/Garmin/FitSdk/plugins/HrToRecordMesgBroadcastPlugin.cs +++ /dev/null @@ -1,192 +0,0 @@ -#region Copyright -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2015 Garmin Canada Inc. -//////////////////////////////////////////////////////////////////////////////// -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - class HrToRecordMesgBroadcastPlugin : IMesgBroadcastPlugin - { - #region Fields - private bool isActivityFile = false; - private static readonly int INVALID_INDEX = -1; - private DateTime record_range_start_time = new DateTime(0); - private int mesg_count = 0; - private int hr_start_index = INVALID_INDEX; - private int hr_start_sub_index = INVALID_INDEX; - #endregion - - public HrToRecordMesgBroadcastPlugin() - { - } - - public void OnIncomingMesg(object sender, IncomingMesgEventArgs e) - { - switch (e.mesg.Num) { - case MesgNum.FileId: - FileIdMesg fileIdMesg = new FileIdMesg(e.mesg); - if (fileIdMesg.GetType() == File.Activity) - isActivityFile = true; - break; - case MesgNum.Session: - SessionMesg sessionMesg = new SessionMesg(e.mesg); - record_range_start_time = new DateTime(sessionMesg.GetStartTime()); - break; - - case MesgNum.Hr: - if( hr_start_index == HrToRecordMesgBroadcastPlugin.INVALID_INDEX ) { - // Mark the first appearance of an HR message - hr_start_index = mesg_count; - hr_start_sub_index = 0; - } - break; - - default: - break; - } // switch - - mesg_count++; - } - - public void OnBroadcast(object sender, MesgBroadcastEventArgs e) - { - List mesgs = e.mesgs; - if (isActivityFile && (hr_start_index != HrToRecordMesgBroadcastPlugin.INVALID_INDEX)) { - float? hr_anchor_event_timestamp = 0.0f; - DateTime hr_anchor_timestamp = new DateTime(0); - bool hr_anchor_set = false; - byte? last_valid_hr = 0; - DateTime last_valid_hr_time = new DateTime(0); - - for (int mesgCounter = 0; mesgCounter < mesgs.Count; mesgCounter++) { - Mesg mesg = mesgs[mesgCounter]; - - if (mesg.Num == MesgNum.Record) { - long hrSum = 0; - long hrSumCount = 0; - - // Cast message to record message - RecordMesg recordMesg = new RecordMesg(mesg); - - // Obtain the time for which the record message is valid - DateTime record_range_end_time = new DateTime(recordMesg.GetTimestamp()); - - // Need to determine timestamp range which applies to this record - bool findingInRangeHrMesgs = true; - - // Start searching HR mesgs where we left off - int hr_mesg_counter = hr_start_index; - int hr_sub_mesg_counter = hr_start_sub_index; - - while(findingInRangeHrMesgs && (hr_mesg_counter < mesgs.Count)) { - - // Skip over any non HR messages - if(mesgs[hr_mesg_counter].Num == MesgNum.Hr) { - HrMesg hrMesg = new HrMesg(mesgs[hr_mesg_counter]); - - // Update HR timestamp anchor, if present - if(hrMesg.GetTimestamp() != null && hrMesg.GetTimestamp().GetTimeStamp() != 0) { - hr_anchor_timestamp = new DateTime(hrMesg.GetTimestamp()); - hr_anchor_set = true; - - if(hrMesg.GetFractionalTimestamp() != null) - hr_anchor_timestamp.Add((double)hrMesg.GetFractionalTimestamp()); - - if(hrMesg.GetNumEventTimestamp() == 1) { - hr_anchor_event_timestamp = hrMesg.GetEventTimestamp(0); - } - else { - throw new FitException("FIT HrToRecordMesgBroadcastPlugin Error: Anchor HR mesg must have 1 event_timestamp"); - } - } - - if(hr_anchor_set == false) { - // We cannot process any HR messages if we have not received a timestamp anchor - throw new FitException("FIT HrToRecordMesgBroadcastPlugin Error: No anchor timestamp received in a HR mesg before diff HR mesgs"); - } - else if(hrMesg.GetNumEventTimestamp() != hrMesg.GetNumFilteredBpm()) { - throw new FitException("FIT HrToRecordMesgBroadcastPlugin Error: HR mesg with mismatching event timestamp and filtered bpm"); - } - for(int j = hr_sub_mesg_counter; j < hrMesg.GetNumEventTimestamp(); j++) { - - // Build up timestamp for each message using the anchor and event_timestamp - DateTime hrMesgTime = new DateTime(hr_anchor_timestamp); - float? event_timestamp = hrMesg.GetEventTimestamp(j); - - // Deal with roll over case - if(event_timestamp < hr_anchor_event_timestamp) { - if ((hr_anchor_event_timestamp - event_timestamp) > ( 1 << 21 )) { - event_timestamp += ( 1 << 22 ); - } - else { - throw new FitException("FIT HrToRecordMesgBroadcastPlugin Error: Anchor event_timestamp is greater than subsequent event_timestamp. This does not allow for correct delta calculation."); - } - } - hrMesgTime.Add((double)(event_timestamp - hr_anchor_event_timestamp)); - - // Check if hrMesgTime is gt record start time - // and if hrMesgTime is lte to record end time - if((hrMesgTime.CompareTo(record_range_start_time) > 0) && - (hrMesgTime.CompareTo(record_range_end_time) <= 0)) { - hrSum += (long)hrMesg.GetFilteredBpm(j); - hrSumCount++; - last_valid_hr_time = new DateTime(hrMesgTime); - - } - // check if hrMesgTime exceeds the record time - else if(hrMesgTime.CompareTo(record_range_end_time) > 0) { - - // Remember where we left off - hr_start_index = hr_mesg_counter; - hr_start_sub_index = j; - findingInRangeHrMesgs = false; - - if(hrSumCount > 0) { - // Update record heart rate - last_valid_hr = (byte?)System.Math.Round((((float)hrSum) / hrSumCount), MidpointRounding.AwayFromZero); - recordMesg.SetHeartRate(last_valid_hr); - mesgs[mesgCounter] = (Mesg)recordMesg; - } - // If no stored HR is available, fill in record messages with the - // last valid filtered hr for a maximum of 5 seconds - else if((record_range_start_time.CompareTo(last_valid_hr_time) > 0) && - ((record_range_start_time.GetTimeStamp() - last_valid_hr_time.GetTimeStamp()) < 5)) { - recordMesg.SetHeartRate(last_valid_hr); - mesgs[mesgCounter] = (Mesg)recordMesg; - } - - // Reset HR average - hrSum = 0; - hrSumCount = 0; - - record_range_start_time = new DateTime(record_range_end_time); - - // Breaks out of looping within the event_timestamp array - break; - } - } - } - hr_mesg_counter++; - hr_sub_mesg_counter = 0; - } - } - } - } - } - } -} \ No newline at end of file diff --git a/src/Garmin/FitSdk/plugins/ThreeDSensorAdjustmentPlugin.cs b/src/Garmin/FitSdk/plugins/ThreeDSensorAdjustmentPlugin.cs deleted file mode 100644 index ab72bb468..000000000 --- a/src/Garmin/FitSdk/plugins/ThreeDSensorAdjustmentPlugin.cs +++ /dev/null @@ -1,262 +0,0 @@ -#region copyright -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2016 Garmin Canada Inc. -//////////////////////////////////////////////////////////////////////////////// -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - public class ThreeDSensorAdjustmentPlugin : IMesgBroadcastPlugin - { - - #region Fields - private const int NUM_AXIS = 3; - private const int NUM_COLUMNS = 3; - private const int NUM_ROWS = 3; - private const int X_AXIS_OFFSET = 0; - private const int Y_AXIS_OFFSET = 1; - private const int Z_AXIS_OFFSET = 2; - private const ushort accelDataFieldNum = MesgNum.AccelerometerData; - private readonly string[] accelDataFieldNameXYZ = { "CalibratedAccelX", "CalibratedAccelY", "CalibratedAccelZ" }; - private const ushort gyroDataFieldNum = MesgNum.GyroscopeData; - private readonly string[] gyroDataFieldNameXYZ = {"CalibratedGyroX", "CalibratedGyroY", "CalibratedGyroZ"}; - private const ushort magDataFieldNum = MesgNum.MagnetometerData; - private readonly string[] magDataFieldNameXYZ = {"CalibratedMagX", "CalibratedMagY", "CalibratedMagZ"}; - private bool haveAccelCal = false; - private bool haveGyroCal = false; - private bool haveMagCal = false; - private CalibrationParameters accelCalParams = new CalibrationParameters(); - private CalibrationParameters gyroCalParams = new CalibrationParameters(); - private CalibrationParameters magCalParams = new CalibrationParameters(); - #endregion - - #region Construcotrs - public ThreeDSensorAdjustmentPlugin() - { - } - #endregion - - private class CalibrationParameters - { - #region Fields - private long[] channelOffset = new long[NUM_ROWS]; - private float[,] rotationMatrix = new float[NUM_COLUMNS, NUM_ROWS]; - #endregion - - #region Properties - internal long CalDivisor { get; private set; } - internal long CalFactor { get; private set; } - internal long[] ChannelOffset - { - get { return channelOffset; } - } - internal long LevelShift { get; private set; } - internal float[,] RotationMatrix - { - get { return rotationMatrix; } - } - #endregion - - #region Methods - public void LoadParams(ThreeDSensorCalibrationMesg calMesg) - { - this.CalFactor = (long)calMesg.GetCalibrationFactor(); - this.CalDivisor = (long)calMesg.GetCalibrationDivisor(); - this.LevelShift = (long)calMesg.GetLevelShift(); - - this.channelOffset[X_AXIS_OFFSET] = (long)calMesg.GetOffsetCal(X_AXIS_OFFSET); - this.channelOffset[Y_AXIS_OFFSET] = (long)calMesg.GetOffsetCal(Y_AXIS_OFFSET); - this.channelOffset[Z_AXIS_OFFSET] = (long)calMesg.GetOffsetCal(Z_AXIS_OFFSET); - - // Rotation Matrix row major - this.rotationMatrix[0,0] = (float)calMesg.GetOrientationMatrix(0); - this.rotationMatrix[0,1] = (float)calMesg.GetOrientationMatrix(1); - this.rotationMatrix[0,2] = (float)calMesg.GetOrientationMatrix(2); - this.rotationMatrix[1,0] = (float)calMesg.GetOrientationMatrix(3); - this.rotationMatrix[1,1] = (float)calMesg.GetOrientationMatrix(4); - this.rotationMatrix[1,2] = (float)calMesg.GetOrientationMatrix(5); - this.rotationMatrix[2,0] = (float)calMesg.GetOrientationMatrix(6); - this.rotationMatrix[2,1] = (float)calMesg.GetOrientationMatrix(7); - this.rotationMatrix[2,2] = (float)calMesg.GetOrientationMatrix(8); - } - #endregion - } - - #region Methods - public void OnIncomingMesg(object sender, IncomingMesgEventArgs e) - { - switch (e.mesg.Num) - { - case MesgNum.ThreeDSensorCalibration: - ThreeDSensorCalibrationMesg calMesg = new ThreeDSensorCalibrationMesg(e.mesg); - switch (calMesg.GetSensorType()) - { - case SensorType.Accelerometer: - accelCalParams.LoadParams(calMesg); - haveAccelCal = true; - break; - case SensorType.Gyroscope: - gyroCalParams.LoadParams(calMesg); - haveGyroCal = true; - break; - case SensorType.Compass: - magCalParams.LoadParams(calMesg); - haveMagCal = true; - break; - default: - break; - - } // switch - break; - default: - break; - - } //switch - } - - private float[] AdjustSensorData(int[] rawData, CalibrationParameters calParams) - { - float[] calibratedValues = new float[rawData.Length]; - float[] rotatedValues = new float[rawData.Length]; - - //Apply the calibration parameters - for (int i = 0; i < rawData.Length; i++) - { - calibratedValues[i] = (float)rawData[i]; - calibratedValues[i] -= calParams.LevelShift; - calibratedValues[i] -= calParams.ChannelOffset[i]; - calibratedValues[i] *= calParams.CalFactor; - calibratedValues[i] /= calParams.CalDivisor; - } - - // Apply the rotation matrix - // [Rotation] * [XYZ] - rotatedValues[0] = (calParams.RotationMatrix[0, 0] * calibratedValues[0]) + (calParams.RotationMatrix[0, 1] * calibratedValues[1]) + (calParams.RotationMatrix[0, 2] * calibratedValues[2]); - rotatedValues[1] = (calParams.RotationMatrix[1, 0] * calibratedValues[0]) + (calParams.RotationMatrix[1, 1] * calibratedValues[1]) + (calParams.RotationMatrix[1, 2] * calibratedValues[2]); - rotatedValues[2] = (calParams.RotationMatrix[2, 0] * calibratedValues[0]) + (calParams.RotationMatrix[2, 1] * calibratedValues[1]) + (calParams.RotationMatrix[2, 2] * calibratedValues[2]); - - return rotatedValues; - } - - public void OnBroadcast(object sender, MesgBroadcastEventArgs e) - { - float[] calibratedXYZ; - int count; - List mesgs = e.mesgs; - int[] rawXYZ = new int[NUM_AXIS]; - - foreach (Mesg mesg in mesgs) - { - switch (mesg.Num) - { - case MesgNum.AccelerometerData: - if (haveAccelCal) - { - AccelerometerDataMesg accelData = new AccelerometerDataMesg(mesg); - count = accelData.GetNumAccelX(); - for(int i = 0; i < count; i++ ) - { - //Extract the uncalibrated accel data from incoming message - rawXYZ[X_AXIS_OFFSET] = Convert.ToInt32(accelData.GetAccelX(i)); - rawXYZ[Y_AXIS_OFFSET] = Convert.ToInt32(accelData.GetAccelY(i)); - rawXYZ[Z_AXIS_OFFSET] = Convert.ToInt32(accelData.GetAccelZ(i)); - - // Apply calibration to the values - calibratedXYZ = AdjustSensorData( rawXYZ, accelCalParams ); - - // Update the message - ProcessCalibrationFactor( mesg, accelDataFieldNameXYZ, calibratedXYZ, accelDataFieldNum ); - } - } - break; - case MesgNum.GyroscopeData: - if (haveGyroCal) - { - GyroscopeDataMesg gyroData = new GyroscopeDataMesg(mesg); - count = gyroData.GetNumGyroX(); - for (int i = 0; i < count; i++) - { - //Extract the uncalibrated gyro data from incoming message - rawXYZ[X_AXIS_OFFSET] = Convert.ToInt32(gyroData.GetGyroX(i)); - rawXYZ[Y_AXIS_OFFSET] = Convert.ToInt32(gyroData.GetGyroY(i)); - rawXYZ[Z_AXIS_OFFSET] = Convert.ToInt32(gyroData.GetGyroZ(i)); - - // Apply calibration to the values - calibratedXYZ = AdjustSensorData( rawXYZ, gyroCalParams); - - // Update the message - ProcessCalibrationFactor( mesg, gyroDataFieldNameXYZ, calibratedXYZ, gyroDataFieldNum ); - } - } - break; - case MesgNum.MagnetometerData: - if (haveMagCal) - { - MagnetometerDataMesg magData = new MagnetometerDataMesg(mesg); - count = magData.GetNumMagX(); - for (int i = 0; i < count; i++) - { - //Extract the uncalibrated mag data from incoming message - rawXYZ[X_AXIS_OFFSET] = Convert.ToInt32(magData.GetMagX(i)); - rawXYZ[Y_AXIS_OFFSET] = Convert.ToInt32(magData.GetMagY(i)); - rawXYZ[Z_AXIS_OFFSET] = Convert.ToInt32(magData.GetMagZ(i)); - - // Apply calibration to the values - calibratedXYZ = AdjustSensorData( rawXYZ, magCalParams); - - // Update the message - ProcessCalibrationFactor( mesg, magDataFieldNameXYZ, calibratedXYZ, magDataFieldNum ); - } - } - break; - default: - break; - }// switch - }// foreach - } - - private void ProcessCalibrationFactor( Mesg mesg, string[] fieldsXYZ, float[] calibratedXYZ, ushort globalMesgNum ) - { - if ((fieldsXYZ.Length != NUM_AXIS) || (calibratedXYZ.Length != NUM_AXIS)) - { - //Invalid number of arguments - return; - } - - //Add the newly calculated calibrated values to the calibrated data fields - if ( mesg.GetField(fieldsXYZ[X_AXIS_OFFSET]) == null ) - { - mesg.SetField(new Field(Profile.GetField(globalMesgNum, fieldsXYZ[X_AXIS_OFFSET]))); - } - - if (mesg.GetField(fieldsXYZ[Y_AXIS_OFFSET]) == null) - { - mesg.SetField(new Field(Profile.GetField(globalMesgNum, fieldsXYZ[Y_AXIS_OFFSET]))); - } - - if (mesg.GetField(fieldsXYZ[Z_AXIS_OFFSET]) == null) - { - mesg.SetField(new Field(Profile.GetField(globalMesgNum, fieldsXYZ[Z_AXIS_OFFSET]))); - } - - mesg.GetField(fieldsXYZ[X_AXIS_OFFSET]).AddValue(calibratedXYZ[X_AXIS_OFFSET]); - mesg.GetField(fieldsXYZ[Y_AXIS_OFFSET]).AddValue(calibratedXYZ[Y_AXIS_OFFSET]); - mesg.GetField(fieldsXYZ[Z_AXIS_OFFSET]).AddValue(calibratedXYZ[Z_AXIS_OFFSET]); - } - #endregion - } // Class -} // namespace diff --git a/src/Garmin/FitSdk/plugins/examples/HrToMessageBroadcastExample/HrToMessageBroadcastExample.csproj b/src/Garmin/FitSdk/plugins/examples/HrToMessageBroadcastExample/HrToMessageBroadcastExample.csproj deleted file mode 100644 index 589364e62..000000000 --- a/src/Garmin/FitSdk/plugins/examples/HrToMessageBroadcastExample/HrToMessageBroadcastExample.csproj +++ /dev/null @@ -1,66 +0,0 @@ - - - - - Debug - AnyCPU - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78} - Exe - Properties - hrToMessageBroadcastExample - hrToMessageBroadcastExample - v4.6 - 512 - - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - - - - ..\..\..\Fit.dll - - - - - - - - - - - HrToRecordMesgBroadcastPlugin.cs - - - - - - - - - - \ No newline at end of file diff --git a/src/Garmin/FitSdk/plugins/examples/HrToMessageBroadcastExample/Program.cs b/src/Garmin/FitSdk/plugins/examples/HrToMessageBroadcastExample/Program.cs deleted file mode 100644 index c5f0afebc..000000000 --- a/src/Garmin/FitSdk/plugins/examples/HrToMessageBroadcastExample/Program.cs +++ /dev/null @@ -1,184 +0,0 @@ -#region Copyright -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2015 Garmin Canada Inc. -//////////////////////////////////////////////////////////////////////////////// -#endregion -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Diagnostics; -using System.IO; - -using Dynastream.Fit; - -namespace HrToRecordMesgBroadcastDemo -{ - class Program - { - static FileStream fitSource; - - static void Main(string[] args) - { - if (args.Length != 1) - { - Console.WriteLine("Usage: decode.exe "); - return; - } - - try - { - // Attempt to open .FIT file - fitSource = new FileStream(args[0], FileMode.Open); - Console.WriteLine("Opening {0}", args[0]); - - //Attempt to create an output file - String fileName = String.Format("{0}.csv",args[0].Split('.')); //Strip off the first part of the file name - FileStream fs = new FileStream(fileName, FileMode.Create); - // First, save the standard output. - StreamWriter sw = new StreamWriter(fs); - sw.AutoFlush = true; - Console.SetOut(sw); - } - catch(Exception ex) - { - Console.WriteLine("DecodeDemo caught Exception: " + ex.Message); - return; - } - - Decode decodeDemo = new Decode(); - BufferedMesgBroadcaster mesgBroadcaster = new BufferedMesgBroadcaster(); - - // Connect the Broadcaster to our event (message) source (in this case the Decoder) - decodeDemo.MesgEvent += mesgBroadcaster.OnMesg; - decodeDemo.MesgDefinitionEvent += mesgBroadcaster.OnMesgDefinition; - - // Subscribe to message events of interest by connecting to the Broadcaster - mesgBroadcaster.MesgEvent += new MesgEventHandler(OnMesg); - - IMesgBroadcastPlugin plugin = new HrToRecordMesgBroadcastPlugin(); - mesgBroadcaster.RegisterMesgBroadcastPlugin(plugin); - - // Process the file - - try - { - //Attempt to decode the file - Console.WriteLine("Type,Local Number,Message,Field 1,Value 1,Units 1,Field 2,Value 2,Units 2,Field 3,Value 3,Units 3,Field 4,Value 4,Units 4,Field 5,Value 5,Units 5,Field 6,Value 6,Units 6"); - decodeDemo.Read(fitSource); - mesgBroadcaster.Broadcast(); - } - catch (FitException ex) - { - Console.WriteLine("DecodeDemo caught FitException: " + ex.Message); - } - - fitSource.Close(); - return; - } - - #region Message Handlers - - static void OnMesg(object sender, MesgEventArgs e) - { - Mesg msg = e.mesg; - - if( msg.Num == MesgNum.Record) - { - RecordMesg recordMesg = new RecordMesg(msg); - Console.Write("Data,{0},record,", msg.LocalNum); - if(recordMesg.GetTimestamp() != null) - { - Console.Write("timestamp,{0},s,", recordMesg.GetTimestamp().GetTimeStamp()); - } - if ( ( recordMesg.GetDistance() != null ) && ( recordMesg.GetDistance() != (uint)Fit.BaseType[Fit.UInt32].invalidValue ) ) - { - Console.Write("distance, {0:0.0}, m,", recordMesg.GetDistance()); - } - if ( ( recordMesg.GetSpeed() != null ) && ( recordMesg.GetSpeed() != (ushort)Fit.BaseType[Fit.UInt16].invalidValue ) ) - { - Console.Write("speed,{0:0.000},m/s,", recordMesg.GetSpeed()); - } - if ( ( recordMesg.GetCadence() != null ) && ( recordMesg.GetCadence() != (byte)Fit.BaseType[Fit.UInt8].invalidValue ) ) - { - Console.Write("cadence,{0},rpm,", recordMesg.GetCadence()); - } - if ( ( recordMesg.GetEnhancedSpeed() != null ) && ( recordMesg.GetEnhancedSpeed() != (uint)Fit.BaseType[Fit.UInt32].invalidValue ) ) - { - Console.Write("enhanced_speed,{0:0.000},m/s,", recordMesg.GetEnhancedSpeed()); - } - if ( ( recordMesg.GetHeartRate() != null ) && ( recordMesg.GetHeartRate() != (byte)Fit.BaseType[Fit.UInt8].invalidValue ) ) - { - Console.Write("heart_rate,{0},bpm,", recordMesg.GetHeartRate()); - } - Console.Write("\n"); - } - else if( msg.Num == MesgNum.Hr ) - { - HrMesg hrMesg = new HrMesg(msg); - Console.Write("Data,{0},hr,", msg.LocalNum); - int count; - if ( ( hrMesg.GetTimestamp() != null ) && ( hrMesg.GetTimestamp().GetTimeStamp() != (uint)Fit.BaseType[Fit.UInt32].invalidValue ) ) - { - Console.Write("timestamp,{0},,", hrMesg.GetTimestamp().GetTimeStamp()); - } - if ( hrMesg.GetNumFilteredBpm() > 0 ) - { - Console.Write("filtered_bpm,"); - count = hrMesg.GetNumFilteredBpm(); - for (int i = 0; i < count; i++) - { - Console.Write("{0}", hrMesg.GetFilteredBpm(i)); - if (i < count - 1) - { - Console.Write("|"); - } - } - Console.Write(",bpm,"); - } - if ( hrMesg.GetNumEventTimestamp12() > 0 ) - { - Console.Write("event_timestamp_12,"); - count = hrMesg.GetNumEventTimestamp12(); - for (int i = 0; i < count; i++) - { - Console.Write("{0}", hrMesg.GetEventTimestamp12(i)); - if (i < count - 1) - { - Console.Write("|"); - } - } - Console.Write(",,"); - } - if ( hrMesg.GetNumEventTimestamp() > 0 ) - { - Console.Write("event_timestamp,"); - count = hrMesg.GetNumEventTimestamp(); - for (int i = 0; i < count; i++) - { - Console.Write("{0:G}", hrMesg.GetEventTimestamp(i)); - if (i < count - 1) - { - Console.Write("|"); - } - } - Console.Write(",s,"); - } - if (hrMesg.GetFractionalTimestamp() != null) - { - Console.Write("fractional_timestamp,{0:0.######},s,", hrMesg.GetFractionalTimestamp()); - } - Console.Write("\n"); - } - } - #endregion - } -} diff --git a/src/Garmin/FitSdk/plugins/examples/HrToMessageBroadcastExample/Properties/AssemblyInfo.cs b/src/Garmin/FitSdk/plugins/examples/HrToMessageBroadcastExample/Properties/AssemblyInfo.cs deleted file mode 100644 index 70fcf0598..000000000 --- a/src/Garmin/FitSdk/plugins/examples/HrToMessageBroadcastExample/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("HrToMessageBroadcastExample")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Garmin")] -[assembly: AssemblyProduct("HrToMessageBroadcastExample")] -[assembly: AssemblyCopyright("Copyright © Garmin 2015")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("9758fef4-2c31-4d1b-a514-47e2e184e40e")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/Garmin/FitSdk/plugins/examples/HrToMessageBroadcastExample/app.config b/src/Garmin/FitSdk/plugins/examples/HrToMessageBroadcastExample/app.config deleted file mode 100644 index 92ed82822..000000000 --- a/src/Garmin/FitSdk/plugins/examples/HrToMessageBroadcastExample/app.config +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/Garmin/FitSdk/plugins/examples/ThreeDSensorAdjustmentPluginExample/App.config b/src/Garmin/FitSdk/plugins/examples/ThreeDSensorAdjustmentPluginExample/App.config deleted file mode 100644 index fad249e40..000000000 --- a/src/Garmin/FitSdk/plugins/examples/ThreeDSensorAdjustmentPluginExample/App.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/src/Garmin/FitSdk/plugins/examples/ThreeDSensorAdjustmentPluginExample/Program.cs b/src/Garmin/FitSdk/plugins/examples/ThreeDSensorAdjustmentPluginExample/Program.cs deleted file mode 100644 index 7f4afb67f..000000000 --- a/src/Garmin/FitSdk/plugins/examples/ThreeDSensorAdjustmentPluginExample/Program.cs +++ /dev/null @@ -1,186 +0,0 @@ -#region copyright -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2016 Garmin Canada Inc. -//////////////////////////////////////////////////////////////////////////////// -#endregion - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Diagnostics; -using System.IO; - -using Dynastream.Fit; - -namespace ThreeDSensorAdjustmentPluginExample -{ - class Program - { - private static FileStream fitSource; - - static void Main(string[] args) - { - StreamWriter sw; - if (args.Length != 1) - { - Console.WriteLine("Usage: ThreeDSensorAdjustmentPluginExample.exe "); - return; - } - try - { - // Attempt to open .FIT file - fitSource = new FileStream(args[0], FileMode.Open); - Console.WriteLine("Opening {0}", args[0]); - - //Attempt to create an output file - string fileName = String.Format("{0}.csv", args[0].Split('.')); //Strip off the first part of the file name - FileStream fs = new FileStream(fileName, FileMode.Create); - - // First, save the standard output. - sw = new StreamWriter(fs); - sw.AutoFlush = true; - Console.SetOut(sw); - } - catch (Exception ex) - { - Console.WriteLine("ThreeDSensorAdjustmentPluginExample caught Exception: " + ex.Message); - return; - } - - Decode decodeDemo = new Decode(); - BufferedMesgBroadcaster mesgBroadcaster = new BufferedMesgBroadcaster(); - - // Connect the Broadcaster to our events (message) source (in this case the Decoder) - decodeDemo.MesgEvent += mesgBroadcaster.OnMesg; - decodeDemo.MesgDefinitionEvent += mesgBroadcaster.OnMesgDefinition; - - //Subscribe to the message events of the interest by connecting to the Broadcaster - mesgBroadcaster.MesgEvent += OnMesg; - - IMesgBroadcastPlugin plugin = new ThreeDSensorAdjustmentPlugin(); - mesgBroadcaster.RegisterMesgBroadcastPlugin(plugin); - - try - { - //Writing headers for columns - int maxFieldNum = 9; - Console.Write("Type,Local Number,Message,"); - for (int i = 1; i <= maxFieldNum; i++) - { - Console.Write("Field {0},Value {0},Units {0},", i); - } - Console.WriteLine(); - - //Attempting to Decode the file - decodeDemo.Read(fitSource); - mesgBroadcaster.Broadcast(); - } - catch (FitException ex) - { - Console.WriteLine("ThreeDSensorAdjustmentPluginExample caught Exception: decoding threw a FitException: " + ex.Message); - } - - fitSource.Close(); - sw.Close(); - return; - } - - static void OnMesg(object sender, MesgEventArgs e) - { - Mesg mesg = e.mesg; - switch (mesg.Num) - { - case MesgNum.FileId: - FileIdMesg fileIdMesg = new FileIdMesg(mesg); - Console.Write("Data,{0},{1},", fileIdMesg.LocalNum, fileIdMesg.Name); - PrintField(fileIdMesg); - break; - - case MesgNum.ThreeDSensorCalibration: - ThreeDSensorCalibrationMesg calMesg = new ThreeDSensorCalibrationMesg(mesg); - Console.Write("Data,{0},{1},", calMesg.LocalNum, calMesg.Name); - PrintField(calMesg); - break; - - case MesgNum.AccelerometerData: - AccelerometerDataMesg accelMesg = new AccelerometerDataMesg(mesg); - Console.Write("Data,{0},{1},", accelMesg.LocalNum, accelMesg.Name); - PrintField(accelMesg); - break; - - case MesgNum.GyroscopeData: - GyroscopeDataMesg gyroMesg = new GyroscopeDataMesg(mesg); - Console.Write("Data,{0},{1},", gyroMesg.LocalNum, gyroMesg.Name); - PrintField(gyroMesg); - break; - - case MesgNum.MagnetometerData: - MagnetometerDataMesg magMesg = new MagnetometerDataMesg(mesg); - Console.Write("Data,{0},{1},", magMesg.LocalNum, magMesg.Name); - PrintField(magMesg); - break; - - default: - break; - } - } - - private static void PrintField(Mesg mesg) - { - ushort activeSubfieldIndex; - string name; - string value; - string units; - - //Loop through each field - foreach (Field field in mesg.Fields) - { - if (mesg.GetFieldValue(field.Num) != null) - { - //Set the name, value, and units to their standard values - name = field.Name; - value = (field.GetValue()).ToString(); - units = field.GetUnits(); - - //Checks if there is an active subfield and updates the name and units appropriately - activeSubfieldIndex = mesg.GetActiveSubFieldIndex(field.Num); - if (activeSubfieldIndex != Fit.SubfieldIndexMainField) - { - name = field.GetName((byte)activeSubfieldIndex); - units = field.GetUnits((byte)activeSubfieldIndex); - } - - //Checks if a field has multiple values and updates value appropriately - if (field.GetNumValues() > 1) - { - value = FieldArrayToString(field); - } - - Console.Write("{0},{1},{2},", name, value, units); - } - } - Console.WriteLine(); - } - - //Grabs all the values in a field and creates a string of them joined together by "|" - private static string FieldArrayToString(Field field) - { - string fieldArrayString = (field.GetValue(0)).ToString(); - int count = field.GetNumValues(); - for (int i = 1; i < count; i++) - { - fieldArrayString = String.Concat(fieldArrayString, ("|" + (field.GetValue((byte)i))).ToString()); - } - return fieldArrayString; - } - } -} diff --git a/src/Garmin/FitSdk/plugins/examples/ThreeDSensorAdjustmentPluginExample/Properties/AssemblyInfo.cs b/src/Garmin/FitSdk/plugins/examples/ThreeDSensorAdjustmentPluginExample/Properties/AssemblyInfo.cs deleted file mode 100644 index 9a03b0666..000000000 --- a/src/Garmin/FitSdk/plugins/examples/ThreeDSensorAdjustmentPluginExample/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("ThreeDSensorAdjustmentPluginExample")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Microsoft")] -[assembly: AssemblyProduct("ThreeDSensorAdjustmentPluginExample")] -[assembly: AssemblyCopyright("Copyright © Microsoft 2016")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("c6b9bd05-1121-4548-b3b0-931bc58bd754")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/Garmin/FitSdk/plugins/examples/ThreeDSensorAdjustmentPluginExample/ThreeDSensorAdjustmentPluginExample.csproj b/src/Garmin/FitSdk/plugins/examples/ThreeDSensorAdjustmentPluginExample/ThreeDSensorAdjustmentPluginExample.csproj deleted file mode 100644 index c86414b35..000000000 --- a/src/Garmin/FitSdk/plugins/examples/ThreeDSensorAdjustmentPluginExample/ThreeDSensorAdjustmentPluginExample.csproj +++ /dev/null @@ -1,98 +0,0 @@ - - - - - Debug - AnyCPU - {1744F547-0A1B-48AA-A944-6AB04243E6C5} - Exe - Properties - ThreeDSensorAdjustmentPluginExample - ThreeDSensorAdjustmentPluginExample - v4.5 - 512 - false - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - true - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - ThreeDSensorAdjustmentPluginExample.Program - - - - ..\..\..\Fit.dll - - - - - - - - - - - - - ThreeDSensorAdjustmentPlugin.cs - - - - - - - - False - Microsoft .NET Framework 4.5 %28x86 and x64%29 - true - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - false - - - - - \ No newline at end of file diff --git a/src/Garmin/FitSdk/plugins/examples/pluginExamples.sln b/src/Garmin/FitSdk/plugins/examples/pluginExamples.sln deleted file mode 100644 index ed330c810..000000000 --- a/src/Garmin/FitSdk/plugins/examples/pluginExamples.sln +++ /dev/null @@ -1,45 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.21005.1 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HrToMessageBroadcastExample", "HrToMessageBroadcastExample\HrToMessageBroadcastExample.csproj", "{DDA43731-2575-4B5D-8FB0-E015B0C3BE78}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ThreeDSensorAdjustmentPluginExample", "ThreeDSensorAdjustmentPluginExample\ThreeDSensorAdjustmentPluginExample.csproj", "{1744F547-0A1B-48AA-A944-6AB04243E6C5}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|Mixed Platforms = Debug|Mixed Platforms - Debug|Win32 = Debug|Win32 - Release|Any CPU = Release|Any CPU - Release|Mixed Platforms = Release|Mixed Platforms - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78}.Debug|Win32.ActiveCfg = Release|Any CPU - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78}.Debug|Win32.Build.0 = Release|Any CPU - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78}.Release|Any CPU.Build.0 = Release|Any CPU - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78}.Release|Win32.ActiveCfg = Release|Any CPU - {1744F547-0A1B-48AA-A944-6AB04243E6C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1744F547-0A1B-48AA-A944-6AB04243E6C5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1744F547-0A1B-48AA-A944-6AB04243E6C5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {1744F547-0A1B-48AA-A944-6AB04243E6C5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {1744F547-0A1B-48AA-A944-6AB04243E6C5}.Debug|Win32.ActiveCfg = Debug|Any CPU - {1744F547-0A1B-48AA-A944-6AB04243E6C5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1744F547-0A1B-48AA-A944-6AB04243E6C5}.Release|Any CPU.Build.0 = Release|Any CPU - {1744F547-0A1B-48AA-A944-6AB04243E6C5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {1744F547-0A1B-48AA-A944-6AB04243E6C5}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {1744F547-0A1B-48AA-A944-6AB04243E6C5}.Release|Win32.ActiveCfg = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/src/Garmin/FitSdk/v21.105.txt b/src/Garmin/FitSdk/v21.105.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/.vscode/extensions.json b/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/.vscode/extensions.json deleted file mode 100644 index 180e233d1..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/.vscode/extensions.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - // See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations. - // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp - - // List of extensions which should be recommended for users of this workspace. - "recommendations": [ - "ms-dotnettools.csharp", - "mechatroner.rainbow-csv" - ], - // List of extensions recommended by VS Code that should not be recommended for users of this workspace. - "unwantedRecommendations": [ - - ] -} \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/.vscode/launch.json b/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/.vscode/launch.json deleted file mode 100644 index 0f6f71f6d..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/.vscode/launch.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - // Use IntelliSense to find out which attributes exist for C# debugging - // Use hover for the description of the existing attributes - // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md - "version": "0.2.0", - "configurations": [ - { - "name": ".NET Core Launch (console)", - "type": "coreclr", - "request": "launch", - "preLaunchTask": "build", - // If you have changed target frameworks, make sure to update the program path. - "program": "${workspaceFolder}/bin/Debug/netcoreapp3.1/ActivityDecode.dll", - "args": ["${workspaceFolder}/../../../examples/activity.fit"], - "cwd": "${workspaceFolder}", - // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console - "console": "internalConsole", - "stopAtEntry": false - }, - { - "name": ".NET Core Attach", - "type": "coreclr", - "request": "attach", - "processId": "${command:pickProcess}" - } - ] -} \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/.vscode/tasks.json b/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/.vscode/tasks.json deleted file mode 100644 index 1df4bcb5f..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/.vscode/tasks.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "version": "2.0.0", - "tasks": [ - { - "label": "build", - "command": "dotnet", - "type": "process", - "args": [ - "build", - "${workspaceFolder}/ActivityDecode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - }, - { - "label": "publish", - "command": "dotnet", - "type": "process", - "args": [ - "publish", - "${workspaceFolder}/ActivityDecode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - }, - { - "label": "watch", - "command": "dotnet", - "type": "process", - "args": [ - "watch", - "run", - "${workspaceFolder}/ActivityDecode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - } - ] -} \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/ActivityDecode.csproj b/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/ActivityDecode.csproj deleted file mode 100644 index 4e1dba9cd..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/ActivityDecode.csproj +++ /dev/null @@ -1,12 +0,0 @@ - - - - Exe - netcoreapp3.1 - - - - ..\..\Dynastream.Fit.Portable.dll - - - diff --git a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/ActivityParser.cs b/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/ActivityParser.cs deleted file mode 100644 index c148d9327..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/ActivityParser.cs +++ /dev/null @@ -1,96 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using System; -using System.Collections.Generic; -using System.Linq; -using Dynastream.Fit; -using Extensions; - -public class ActivityParser -{ - private FitMessages _messages; - public bool IsActivityFile => _messages?.FileId != null ? (_messages?.FileId?.GetType() ?? File.Invalid) == File.Activity : false; - - public ActivityParser(FitMessages messages) - { - _messages = messages; - } - - public List ParseSessions() - { - if (!IsActivityFile) - { - throw new Exception($"Expected FIT File Type: Activity, recieved File Type: {_messages?.FileId?.GetType()}"); - } - - // When there are no Sessions but there are Records create a Session message to recover as much data as possible - if (_messages.Sessions.Count == 0 && _messages.Records.Count > 0) - { - Dynastream.Fit.DateTime startTime = _messages.Records[0].GetTimestamp(); - Dynastream.Fit.DateTime timestamp = _messages.Records[_messages.Records.Count - 1].GetTimestamp(); - - var session = new SessionMesg(); - session.SetStartTime(startTime); - session.SetTimestamp(timestamp); - session.SetTotalElapsedTime(timestamp.GetTimeStamp() - startTime.GetTimeStamp()); - session.SetTotalTimerTime(timestamp.GetTimeStamp() - startTime.GetTimeStamp()); - - _messages.Sessions.Add(session); - } - - int recordsTaken = 0; - - var sessions = new List(_messages.Sessions.Count); - foreach (SessionMesg sessionMesg in _messages.Sessions) - { - var session = new SessionMessages(sessionMesg) - { - Laps = _messages.Laps.Skip(sessionMesg.GetFirstLapIndex() ?? 0).Take(sessionMesg.GetNumLaps() ?? 0).ToList(), - - ClimbPros = _messages.ClimbPros.Where(climb => climb.Within(sessionMesg)).ToList(), - Events = _messages.Events.Where(evt => evt.Within(sessionMesg)).ToList(), - DeviceInfos = _messages.DeviceInfos.Where(deviceInfo => deviceInfo.Within(sessionMesg)).ToList(), - Lengths = _messages.Lengths.Where(length => length.Overlaps(sessionMesg)).ToList(), - Records = _messages.Records.Skip(recordsTaken).Where(record => record.Within(sessionMesg)).ToList(), - SegmentLaps = _messages.SegmentLaps.Where(segmentLap => segmentLap.Overlaps(sessionMesg)).ToList(), - - TimerEvents = _messages.Events.Where(evt => evt.GetEvent() == Event.Timer && evt.Within(sessionMesg)).ToList(), - FrontGearChangeEvents = _messages.Events.Where(evt => evt.GetEvent() == Event.FrontGearChange && evt.Within(sessionMesg)).ToList(), - RearGearChangeEvents = _messages.Events.Where(evt => evt.GetEvent() == Event.RearGearChange && evt.Within(sessionMesg)).ToList(), - RiderPositionChangeEvents = _messages.Events.Where(evt => evt.GetEvent() == Event.RiderPositionChange && evt.Within(sessionMesg)).ToList(), - - Activity = _messages.Activity, - FileId = _messages.FileId, - RecordFieldNames = _messages.RecordFieldNames, - RecordDeveloperFieldNames = _messages.RecordDeveloperFieldNames, - UserProfile = _messages.UserProfile, - Workout = _messages.Workout, - WorkoutSteps = _messages.WorkoutSteps, - ZonesTarget = _messages.ZonesTarget, - }; - - recordsTaken += session.Records.Count; - sessions.Add(session); - } - - return sessions; - } - - public List DevicesWhereBatteryStatusIsLow() - { - var batteryStatus = new List() { BatteryStatus.Critical, BatteryStatus.Low }; - var deviceInfos = new List(); - - deviceInfos = _messages.DeviceInfos.Where(info => batteryStatus.Contains(info.GetBatteryStatus() ?? BatteryStatus.Unknown)).ToList(); - return deviceInfos; - } -} diff --git a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/Export.cs b/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/Export.cs deleted file mode 100644 index 6753723c2..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/Export.cs +++ /dev/null @@ -1,139 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Dynastream.Fit; -using Extensions; - -public class Export -{ - private const string Unknown = "unknown"; - private const double MetersToYards = 1.09361; - private const double DefaultPoolLength = 25.0; - - static public string RecordsToCSV(SessionMessages session) - { - var stringBuilder = new StringBuilder(); - - // Add a comment row with: Sport Type, Sub Sport, Date/Time, Total Distance (meters), Calories, Duration (seconds) - stringBuilder.AppendLine($"#Records,{session.Session.GetSport().ToString()},{session.Session.GetSubSport().ToString()},{session.Session.GetStartTime().GetDateTime().ToString("yyyy-MM-dd HH:mm:ss")},{session.Session.GetTotalDistance()},{session.Session.GetTotalCalories() ?? 0},{session.Session.GetTotalElapsedTime() ?? 0}"); - - // Create the header row - stringBuilder.Append("Seconds,"); - stringBuilder.Append($"{string.Join(",", session.RecordFieldNames)},"); - - if (session.RecordDeveloperFieldNames.Count > 0) - { - stringBuilder.Append($"developerdata_{string.Join(",developerdata_", session.RecordDeveloperFieldNames).Replace(" ","_")},"); - } - - stringBuilder.Append("TimerEvent,Lap"); - stringBuilder.AppendLine(); - - var lapQueue = new Queue(session.Laps); - var lap = lapQueue.Count > 0 ? lapQueue.Dequeue() : null; - var lapId = 1; - - uint firstTimeStamp = session.Records[0].GetTimestamp().GetTimeStamp(); - - foreach (ExtendedRecordMesg record in session.Records) - { - while (lap != null && record.GetTimestamp().GetTimeStamp() > lap.GetTimestamp().GetTimeStamp()) - { - lap = lapQueue.Count > 0 ? lapQueue.Dequeue() : null; - lapId++; - } - - stringBuilder.Append($"{record.GetTimestamp().GetTimeStamp() - firstTimeStamp},"); - - foreach (string fieldName in session.RecordFieldNames) - { - var numFieldValues = record.GetNumFieldValues(fieldName); - if (numFieldValues > 1) - { - for (int i = 0; i < numFieldValues; i++) - { - stringBuilder.Append($"{record.GetFieldValue(fieldName, i)}|"); - } - stringBuilder.Length--; - stringBuilder.Append($","); - } - else - { - stringBuilder.Append($"{record.GetFieldValue(fieldName)},"); - } - } - - foreach (string devFieldName in session.RecordDeveloperFieldNames) - { - DeveloperField devField = record.DeveloperFields.Where(f => f.Name == devFieldName).FirstOrDefault(); - if (devField != null) - { - stringBuilder.Append($"{devField.GetValue(0)}"); - } - stringBuilder.Append(","); - } - - stringBuilder.Append($"{(record.EventType == EventType.Invalid ? "" : record.EventType.ToString())},"); - stringBuilder.Append($"{lapId}"); - - stringBuilder.AppendLine(); - } - - return stringBuilder.ToString(); - } - - static public string LengthsToCSV(SessionMessages session) - { - var isMetric = session.Session.GetPoolLengthUnit() == DisplayMeasure.Metric; - var unitConversion = isMetric ? 1.0 : MetersToYards; - double poolLength = session.Session.GetPoolLength() ?? DefaultPoolLength; - var poolLengthString = $"{Math.Round(poolLength * unitConversion)}"; - var totalDistance = Math.Round((session.Session.GetNumActiveLengths() ?? 0) * poolLength * unitConversion); - - var stringBuilder = new StringBuilder(); - - // Add a comment row with: Sport Type, Sub Sport, Date/Time, Total Distance, Pool Length, Units, Calories, Duration (Seconds) - stringBuilder.AppendLine($"#Lengths,{session.Session.GetSport().ToString()},{session.Session.GetSubSport().ToString()},{session.Session.GetStartTime().GetDateTime().ToString("yyyy-MM-dd HH:mm:ss")},{totalDistance},{poolLengthString},{(isMetric ? "meters" : "yards")},{session.Session.GetTotalCalories() ?? 0},{session.Session.GetTotalElapsedTime() ?? 0}"); - - // Create the header row - stringBuilder.AppendLine($"LENGTH TYPE,DURATION (seconds),DISTANCE ({(isMetric ? "meters" : "yards")}),PACE,STOKE COUNT,SWOLF,DPS,STROKE RATE,STROKE TYPE"); - - foreach (LengthMesg length in session.Lengths) - { - var type = length.GetLengthType() ?? LengthType.Invalid; - float elapsedTime = length.GetTotalElapsedTime() ?? 0; - double speed = (length.GetAvgSpeed() ?? 0) * unitConversion; - ushort? totalStrokes = length.GetTotalStrokes(); - var swolf = elapsedTime + (totalStrokes ?? 0); - double? distancePerStroke = totalStrokes.HasValue ? Math.Round(poolLength * unitConversion / totalStrokes ?? 1, 2) : (double?)null; - - stringBuilder.Append($"{type.ToString()},"); - stringBuilder.Append($"{elapsedTime},"); - stringBuilder.Append($"{(type == LengthType.Active ? poolLengthString : "")},"); - stringBuilder.Append($"{(type == LengthType.Active ? Math.Round(speed, 2).ToString() : "")},"); - stringBuilder.Append($"{(type == LengthType.Active ? totalStrokes.ToString() : "")},"); - stringBuilder.Append($"{(type == LengthType.Active ? swolf.ToString() : "")},"); - stringBuilder.Append($"{(type == LengthType.Active ? distancePerStroke.ToString() : "")},"); - stringBuilder.Append($"{length.GetAvgSwimmingCadence().ToString() ?? ""},"); - stringBuilder.Append($"{length.GetSwimStroke().ToString() ?? ""}"); - - stringBuilder.AppendLine(); - } - - return stringBuilder.ToString(); - - } -} - diff --git a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/ExtendedRecordMesg.cs b/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/ExtendedRecordMesg.cs deleted file mode 100644 index a39c9fe69..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/ExtendedRecordMesg.cs +++ /dev/null @@ -1,27 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using Dynastream.Fit; -public class ExtendedRecordMesg : RecordMesg -{ - public EventType EventType {get; private set;} - - public ExtendedRecordMesg(RecordMesg mesg) : base(mesg) - { - EventType = EventType.Invalid; - } - - public ExtendedRecordMesg(EventMesg mesg) - { - SetTimestamp(mesg.GetTimestamp()); - EventType = mesg.GetEventType() ?? EventType.Invalid; - } -} \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/Extensions.cs b/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/Extensions.cs deleted file mode 100644 index 33765cf70..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/Extensions.cs +++ /dev/null @@ -1,122 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using System; -using System.Text; -using Dynastream.Fit; - -namespace Extensions -{ - public static class FitExtensions - { - public static System.DateTime FitEpoch = new System.DateTime(1989, 12, 31, 0, 0, 0, System.DateTimeKind.Utc); - private const byte TimestampFieldId = 253; - - public static TimeSpan? TimezoneOffset(this ActivityMesg activity) - { - if (activity == null) - { - return null; - } - - if (!activity.GetLocalTimestamp().HasValue) - { - return null; - } - return TimeSpan.FromSeconds((int)activity.GetLocalTimestamp() - (int)activity.GetTimestamp().GetTimeStamp()); - } - public static System.DateTime LocalTimestampAsSystemDateTime(this ActivityMesg activity) - { - return new System.DateTime((long)(activity.GetLocalTimestamp() ?? 0) * 10000000L + FitEpoch.Ticks, DateTimeKind.Local); - } - - public static Dynastream.Fit.DateTime LocalTimestampAsFitDateTime(this ActivityMesg activity) - { - return new Dynastream.Fit.DateTime(activity.GetLocalTimestamp() ?? 0); - } - - public static Dynastream.Fit.DateTime GetTimestamp(this Mesg mesg) - { - Object val = mesg.GetFieldValue(TimestampFieldId); - if (val == null) - { - return null; - } - - return mesg.TimestampToDateTime(Convert.ToUInt32(val)); - } - - public static Dynastream.Fit.DateTime GetStartTime(this Mesg mesg) - { - Object val = mesg.GetFieldValue("StartTime"); - if (val == null) - { - return null; - } - - return mesg.TimestampToDateTime(Convert.ToUInt32(val)); - - } - public static Dynastream.Fit.DateTime GetEndTime(this Mesg mesg) - { - var startTime = mesg.GetStartTime(); - if(startTime == null) - { - return null; - } - - Object val = mesg.GetFieldValue("TotalElapsedTime"); - if (val == null) - { - return null; - } - - startTime.Add(Convert.ToUInt32(val)); - return startTime; - - } - - public static string GetValueAsString(this Mesg mesg, String name) - { - Field field = mesg.GetField(name, false); - if(field == null) - { - return null; - } - - byte[] data = (byte[])field.GetValue(); - - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - public static bool Overlaps(this Mesg mesg, SessionMesg session) - { - if(mesg.GetStartTime() == null || mesg.GetEndTime() == null || session.GetStartTime() == null || session.GetEndTime() == null) - { - return false; - } - - return Math.Max(mesg.GetStartTime().GetTimeStamp(),session.GetStartTime().GetTimeStamp()) <= - Math.Min(mesg.GetEndTime().GetTimeStamp(),session.GetEndTime().GetTimeStamp()); - } - - public static bool Within(this Mesg mesg, SessionMesg session) - { - if(mesg.GetTimestamp() == null || session.GetStartTime() == null || session.GetEndTime() == null) - { - return false; - } - - return mesg.GetTimestamp().GetDateTime() >= session.GetStartTime().GetDateTime() - && mesg.GetTimestamp().GetDateTime() <= session.GetEndTime().GetDateTime(); - } - } -} \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/FileTypeException.cs b/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/FileTypeException.cs deleted file mode 100644 index 73e74bb67..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/FileTypeException.cs +++ /dev/null @@ -1,29 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using System; - -public class FileTypeException : Exception -{ - public FileTypeException() - { - } - - public FileTypeException(string message) - : base(message) - { - } - - public FileTypeException(string message, Exception inner) - : base(message, inner) - { - } -} \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/FitDecoder.cs b/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/FitDecoder.cs deleted file mode 100644 index e707cac68..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/FitDecoder.cs +++ /dev/null @@ -1,216 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using System.IO; - -using Dynastream.Fit; - -public class FitDecoder -{ - public FitMessages Messages { get; private set; } - private Stream inputStream; - private Dynastream.Fit.File fileType; - - public FitDecoder(Stream stream, Dynastream.Fit.File fileType) - { - inputStream = stream; - this.fileType = fileType; - - Messages = new FitMessages(); - } - - public bool Decode() - { - // Create the Decode Object - Decode decoder = new Decode(); - - // Check that this is a FIT file - if (!decoder.IsFIT(inputStream)) - { - throw new FileTypeException($"Expected FIT File Type: {fileType}, received a non FIT file."); - } - - // Create the Message Broadcaster Object - MesgBroadcaster mesgBroadcaster = new MesgBroadcaster(); - - // Connect the the Decode and Message Broadcaster Objects - decoder.MesgEvent += mesgBroadcaster.OnMesg; - decoder.MesgDefinitionEvent += mesgBroadcaster.OnMesgDefinition; - decoder.DeveloperFieldDescriptionEvent += OnDeveloperFieldDescriptionEvent; - - // Connect the Message Broadcaster Events to the Message Listener Delegates - mesgBroadcaster.ActivityMesgEvent += OnActivityMesg; - mesgBroadcaster.ClimbProMesgEvent += OnClimbProMesg; - mesgBroadcaster.CourseMesgEvent += OnCourseMesg; - mesgBroadcaster.CoursePointMesgEvent += OnCoursePointMesg; - mesgBroadcaster.DeviceInfoMesgEvent += OnDeviceInfoMesg; - mesgBroadcaster.EventMesgEvent += OnEventMesg; - mesgBroadcaster.FileIdMesgEvent += OnFileIdMesg; - mesgBroadcaster.HrMesgEvent += OnHrMesg; - mesgBroadcaster.HrvMesgEvent += OnHrvMesg; - mesgBroadcaster.LapMesgEvent += OnLapMesg; - mesgBroadcaster.LengthMesgEvent += OnLengthMesg; - mesgBroadcaster.RecordMesgEvent += OnRecordMesg; - mesgBroadcaster.SegmentLapMesgEvent += OnSegmentLapMesg; - mesgBroadcaster.SessionMesgEvent += OnSessionMesg; - mesgBroadcaster.UserProfileMesgEvent += OnUserProfileMesg; - mesgBroadcaster.WorkoutMesgEvent += OnWorkoutMesg; - mesgBroadcaster.WorkoutStepMesgEvent += OnWorkoutStepMesg; - mesgBroadcaster.ZonesTargetMesgEvent += OnZonesTargetMesg; - - // Decode the FIT File - try - { - bool readOK = decoder.Read(inputStream); - - // If there are HR messages, merge the heart-rate data with the Record messages. - if (readOK && Messages.HeartRates.Count > 0) - { - HrToRecordMesgWithoutPlugin.MergeHeartRates(Messages); - } - - return readOK; - } - catch (FileTypeException ex) - { - throw (ex); - } - catch (FitException ex) - { - throw (ex); - } - catch (System.Exception ex) - { - throw (ex); - } - finally - { - } - } - - public void OnActivityMesg(object sender, MesgEventArgs e) - { - Messages.Activity = (ActivityMesg)e.mesg; - } - - public void OnClimbProMesg(object sender, MesgEventArgs e) - { - Messages.ClimbPros.Add(e.mesg as ClimbProMesg); - } - - public void OnCourseMesg(object sender, MesgEventArgs e) - { - Messages.Course = (CourseMesg)e.mesg; - } - - public void OnCoursePointMesg(object sender, MesgEventArgs e) - { - Messages.CoursePoints.Add(e.mesg as CoursePointMesg); - } - - public void OnDeviceInfoMesg(object sender, MesgEventArgs e) - { - Messages.DeviceInfos.Add(e.mesg as DeviceInfoMesg); - } - - public void OnEventMesg(object sender, MesgEventArgs e) - { - var eventMesg = e.mesg as EventMesg; - Messages.Events.Add(eventMesg); - - if (eventMesg?.GetEvent() == Event.Timer && eventMesg?.GetTimestamp() != null) - { - Messages.Records.Add(new ExtendedRecordMesg(eventMesg)); - } - } - - public void OnFileIdMesg(object sender, MesgEventArgs e) - { - Messages.FileId = (FileIdMesg)e.mesg; - if ((e.mesg as FileIdMesg).GetType() != fileType) - { - throw new FileTypeException($"Expected FIT File Type: {fileType}, recieved File Type: {(e.mesg as FileIdMesg).GetType()}"); - } - } - - public void OnHrMesg(object sender, MesgEventArgs e) - { - Messages.HeartRates.Add(e.mesg as HrMesg); - } - - public void OnHrvMesg(object sender, MesgEventArgs e) - { - Messages.HeartRateVariabilites.Add(e.mesg as HrvMesg); - } - - public void OnLapMesg(object sender, MesgEventArgs e) - { - Messages.Laps.Add(e.mesg as LapMesg); - } - - public void OnLengthMesg(object sender, MesgEventArgs e) - { - Messages.Lengths.Add(e.mesg as LengthMesg); - } - - public void OnRecordMesg(object sender, MesgEventArgs e) - { - Messages.Records.Add(new ExtendedRecordMesg(e.mesg as RecordMesg)); - - foreach (Field field in e.mesg.Fields) - { - if (field.Name.ToLower() != "unknown") - { - Messages.RecordFieldNames.Add(field.Name); - } - } - - foreach (DeveloperField devField in e.mesg.DeveloperFields) - { - Messages.RecordDeveloperFieldNames.Add(devField.Name); - } - } - - public void OnSegmentLapMesg(object sender, MesgEventArgs e) - { - Messages.SegmentLaps.Add(e.mesg as SegmentLapMesg); - } - - public void OnSessionMesg(object sender, MesgEventArgs e) - { - Messages.Sessions.Add(e.mesg as SessionMesg); - } - - public void OnUserProfileMesg(object sender, MesgEventArgs e) - { - Messages.UserProfile = (UserProfileMesg)e.mesg; - } - - public void OnWorkoutMesg(object sender, MesgEventArgs e) - { - Messages.Workout = (WorkoutMesg)e.mesg; - } - - public void OnWorkoutStepMesg(object sender, MesgEventArgs e) - { - Messages.WorkoutSteps.Add(e.mesg as WorkoutStepMesg); - } - - public void OnZonesTargetMesg(object sender, MesgEventArgs e) - { - Messages.ZonesTarget = (ZonesTargetMesg)e.mesg; - } - - private void OnDeveloperFieldDescriptionEvent(object sender, DeveloperFieldDescriptionEventArgs e) - { - Messages.DeveloperFieldDescriptions.Add(e.Description as DeveloperFieldDescription); - } -} diff --git a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/FitMessages.cs b/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/FitMessages.cs deleted file mode 100644 index b1521d8ff..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/FitMessages.cs +++ /dev/null @@ -1,42 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using System.Collections.Generic; -using Dynastream.Fit; - -public class FitMessages -{ - public ActivityMesg Activity; - public List ClimbPros = new List(); - public CourseMesg Course; - public List CoursePoints = new List(); - public List DeviceInfos = new List(); - public List Events = new List(); - public FileIdMesg FileId; - public List HeartRates = new List(); - public List HeartRateVariabilites = new List(); - public List Laps = new List(); - public List Lengths = new List(); - public List Records = new List(); - public List SegmentLaps = new List(); - public List Sessions = new List(); - public UserProfileMesg UserProfile; - public WorkoutMesg Workout; - public List WorkoutSteps = new List(); - public ZonesTargetMesg ZonesTarget; - public List DeveloperFieldDescriptions = new List(); - public HashSet RecordFieldNames = new HashSet(); - public HashSet RecordDeveloperFieldNames = new HashSet(); - - public FitMessages() - { - } -} diff --git a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/HrToRecordMesgWithoutPlugin.cs b/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/HrToRecordMesgWithoutPlugin.cs deleted file mode 100644 index a2d316ba1..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/HrToRecordMesgWithoutPlugin.cs +++ /dev/null @@ -1,151 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using Dynastream.Fit; - -public class HrToRecordMesgWithoutPlugin -{ - public static void MergeHeartRates(FitMessages messages) - { - float? hr_anchor_event_timestamp = 0.0f; - DateTime hr_anchor_timestamp = new DateTime(0); - bool hr_anchor_set = false; - byte? last_valid_hr = 0; - DateTime last_valid_hr_time = new DateTime(0); - - DateTime record_range_start_time = new DateTime(messages.Records[0].GetTimestamp()); - int hr_start_index = 0; - int hr_start_sub_index = 0; - - // - // Update this foreach() to loop through just the Record messages - // - foreach (RecordMesg recordMesg in messages.Records) - { - long hrSum = 0; - long hrSumCount = 0; - - // Obtain the time for which the record message is valid - DateTime record_range_end_time = new DateTime(recordMesg.GetTimestamp()); - - // Need to determine timestamp range which applies to this record - bool findingInRangeHrMesgs = true; - - // Start searching HR mesgs where we left off - int hr_mesg_counter = hr_start_index; - int hr_sub_mesg_counter = hr_start_sub_index; - - // - // Update this while() to loop through just the HR messages - // - while (findingInRangeHrMesgs && (hr_mesg_counter < messages.HeartRates.Count)) - { - HrMesg hrMesg = new HrMesg(messages.HeartRates[hr_mesg_counter]); - - // Update HR timestamp anchor, if present - if (hrMesg.GetTimestamp() != null && hrMesg.GetTimestamp().GetTimeStamp() != 0) - { - hr_anchor_timestamp = new DateTime(hrMesg.GetTimestamp()); - hr_anchor_set = true; - - if (hrMesg.GetFractionalTimestamp() != null) - hr_anchor_timestamp.Add((double)hrMesg.GetFractionalTimestamp()); - - if (hrMesg.GetNumEventTimestamp() == 1) - { - hr_anchor_event_timestamp = hrMesg.GetEventTimestamp(0); - } - else - { - throw new FitException("FIT HrToRecordMesgBroadcastPlugin Error: Anchor HR mesg must have 1 event_timestamp"); - } - } - - if (hr_anchor_set == false) - { - // We cannot process any HR messages if we have not received a timestamp anchor - throw new FitException("FIT HrToRecordMesgBroadcastPlugin Error: No anchor timestamp received in a HR mesg before diff HR mesgs"); - } - else if (hrMesg.GetNumEventTimestamp() != hrMesg.GetNumFilteredBpm()) - { - throw new FitException("FIT HrToRecordMesgBroadcastPlugin Error: HR mesg with mismatching event timestamp and filtered bpm"); - } - for (int j = hr_sub_mesg_counter; j < hrMesg.GetNumEventTimestamp(); j++) - { - // Build up timestamp for each message using the anchor and event_timestamp - DateTime hrMesgTime = new DateTime(hr_anchor_timestamp); - float? event_timestamp = hrMesg.GetEventTimestamp(j); - - // Deal with roll over case - if (event_timestamp < hr_anchor_event_timestamp) - { - if ((hr_anchor_event_timestamp - event_timestamp) > (1 << 21)) - { - event_timestamp += (1 << 22); - } - else - { - throw new FitException("FIT HrToRecordMesgBroadcastPlugin Error: Anchor event_timestamp is greater than subsequent event_timestamp. This does not allow for correct delta calculation."); - } - } - hrMesgTime.Add((double)(event_timestamp - hr_anchor_event_timestamp)); - - // Check if hrMesgTime is gt record start time - // and if hrMesgTime is lte to record end time - if ((hrMesgTime.CompareTo(record_range_start_time) > 0) && - (hrMesgTime.CompareTo(record_range_end_time) <= 0)) - { - hrSum += (long)hrMesg.GetFilteredBpm(j); - hrSumCount++; - last_valid_hr_time = new DateTime(hrMesgTime); - - } - // check if hrMesgTime exceeds the record time - else if (hrMesgTime.CompareTo(record_range_end_time) > 0) - { - // Remember where we left off - hr_start_index = hr_mesg_counter; - hr_start_sub_index = j; - findingInRangeHrMesgs = false; - - if (hrSumCount > 0) - { - // Update record heart rate - last_valid_hr = (byte?)System.Math.Round((((float)hrSum) / hrSumCount), System.MidpointRounding.AwayFromZero); - recordMesg.SetHeartRate(last_valid_hr); - messages.RecordFieldNames.Add("HeartRate"); - } - // If no stored HR is available, fill in record messages with the - // last valid filtered hr for a maximum of 5 seconds - else if ((record_range_start_time.CompareTo(last_valid_hr_time) > 0) && - ((record_range_start_time.GetTimeStamp() - last_valid_hr_time.GetTimeStamp()) < 5)) - { - recordMesg.SetHeartRate(last_valid_hr); - messages.RecordFieldNames.Add("HeartRate"); - } - - // Reset HR average - hrSum = 0; - hrSumCount = 0; - - record_range_start_time = new DateTime(record_range_end_time); - - // Breaks out of looping within the event_timestamp array - break; - } - } - - hr_mesg_counter++; - hr_sub_mesg_counter = 0; - } - } - } -} \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/Program.cs b/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/Program.cs deleted file mode 100644 index 6130c0d7e..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/Program.cs +++ /dev/null @@ -1,117 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using System; -using System.IO; -using Dynastream.Fit; -using Extensions; - -namespace ActivityParse -{ - class Program - { - static void Main(string[] args) - { - Console.WriteLine("FIT Decode Example Application"); - - if (args.Length != 1) - { - Console.WriteLine("Usage: decode.exe "); - return; - } - - try - { - // Attempt to open the input file - FileStream fileStream = new FileStream(args[0], FileMode.Open); - Console.WriteLine($"Opening {args[0]}"); - - // Create our FIT Decoder - FitDecoder fitDecoder = new FitDecoder(fileStream, Dynastream.Fit.File.Activity); - - // Decode the FIT file - try - { - Console.WriteLine("Decoding..."); - fitDecoder.Decode(); - } - catch (FileTypeException ex) - { - Console.WriteLine("DecodeDemo caught FileTypeException: " + ex.Message); - return; - } - catch (FitException ex) - { - Console.WriteLine("DecodeDemo caught FitException: " + ex.Message); - } - catch (Exception ex) - { - Console.WriteLine("DecodeDemo caught Exception: " + ex.Message); - } - finally - { - fileStream.Close(); - } - - // Check the time zone offset in the Activity message. - var timezoneOffset = fitDecoder.Messages.Activity.TimezoneOffset(); - Console.WriteLine($"The timezone offset for this activity file is {timezoneOffset?.TotalHours ?? 0} hours."); - - // Create the Activity Parser and group the messages into individual sessions. - ActivityParser activityParser = new ActivityParser(fitDecoder.Messages); - var sessions = activityParser.ParseSessions(); - - // Export a CSV file for each Activity Session - foreach (SessionMessages session in sessions) - { - if (session.Records.Count > 0) - { - var recordsCSV = Export.RecordsToCSV(session); - - var recordsPath = Path.Combine(Path.GetDirectoryName(args[0]), $"{Path.GetFileNameWithoutExtension(args[0])}_{session.Session.GetStartTime().GetDateTime().ToString("yyyyMMddHHmmss")}_{session.Session.GetSport()}_Records.csv"); - - using (StreamWriter outputFile = new StreamWriter(recordsPath)) - { - outputFile.WriteLine(recordsCSV); - } - - Console.WriteLine($"The file {recordsPath} has been saved."); - } - - if (session.Session.GetSport() == Sport.Swimming && session.Session.GetSubSport() == SubSport.LapSwimming && session.Lengths.Count > 0) - { - var lengthsCSV = Export.LengthsToCSV(session); - - var lengthsPath = Path.Combine(Path.GetDirectoryName(args[0]), $"{Path.GetFileNameWithoutExtension(args[0])}_{session.Session.GetStartTime().GetDateTime().ToString("yyyyMMddHHmmss")}_{session.Session.GetSport()}_Lengths.csv"); - - using (StreamWriter outputFile = new StreamWriter(lengthsPath)) - { - outputFile.WriteLine(lengthsCSV); - } - - Console.WriteLine($"The file {lengthsPath} has been saved."); - } - } - - // How are the sensor batteries? - var deviceInfos = activityParser.DevicesWhereBatteryStatusIsLow(); - foreach (DeviceInfoMesg info in deviceInfos) - { - Console.WriteLine($"Device Type {info.GetAntplusDeviceType()} has a low battery."); - } - } - catch (Exception ex) - { - Console.WriteLine($"Exception {ex}"); - } - } - } -} diff --git a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/SessionMessages.cs b/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/SessionMessages.cs deleted file mode 100644 index 1f6610ce1..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/ActivityDecode/SessionMessages.cs +++ /dev/null @@ -1,43 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using System.Collections.Generic; -using Dynastream.Fit; - -public class SessionMessages -{ - public ActivityMesg Activity; - public List ClimbPros = new List(); - public List DeviceInfos = new List(); - public List Events = new List(); - public FileIdMesg FileId; - public List Laps = new List(); - public List Lengths = new List(); - public List Records = new List(); - public HashSet RecordFieldNames = new HashSet(); - public HashSet RecordDeveloperFieldNames = new HashSet(); - public List SegmentLaps = new List(); - public SessionMesg Session; - public UserProfileMesg UserProfile; - public WorkoutMesg Workout; - public List WorkoutSteps = new List(); - public ZonesTargetMesg ZonesTarget; - - public List TimerEvents = new List(); - public List FrontGearChangeEvents = new List(); - public List RearGearChangeEvents = new List(); - public List RiderPositionChangeEvents = new List(); - - public SessionMessages(SessionMesg session) - { - Session = session; - } -} \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/Cookbook/ActivityEncode/.vscode/extensions.json b/src/Garmin/FitSdk_prev/Cookbook/ActivityEncode/.vscode/extensions.json deleted file mode 100644 index 8c76df3fe..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/ActivityEncode/.vscode/extensions.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - // See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations. - // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp - - // List of extensions which should be recommended for users of this workspace. - "recommendations": [ - "ms-dotnettools.csharp" - ], - // List of extensions recommended by VS Code that should not be recommended for users of this workspace. - "unwantedRecommendations": [ - - ] -} \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/Cookbook/ActivityEncode/.vscode/launch.json b/src/Garmin/FitSdk_prev/Cookbook/ActivityEncode/.vscode/launch.json deleted file mode 100644 index 0e9683a02..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/ActivityEncode/.vscode/launch.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - // Use IntelliSense to find out which attributes exist for C# debugging - // Use hover for the description of the existing attributes - // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md - "version": "0.2.0", - "configurations": [ - { - "name": ".NET Core Launch (console)", - "type": "coreclr", - "request": "launch", - "preLaunchTask": "build", - // If you have changed target frameworks, make sure to update the program path. - "program": "${workspaceFolder}/bin/Debug/netcoreapp3.1/ActivityEncode.dll", - "args": [], - "cwd": "${workspaceFolder}", - // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console - "console": "internalConsole", - "stopAtEntry": false - }, - { - "name": ".NET Core Attach", - "type": "coreclr", - "request": "attach", - "processId": "${command:pickProcess}" - } - ] -} \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/Cookbook/ActivityEncode/.vscode/tasks.json b/src/Garmin/FitSdk_prev/Cookbook/ActivityEncode/.vscode/tasks.json deleted file mode 100644 index 5c455a310..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/ActivityEncode/.vscode/tasks.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "version": "2.0.0", - "tasks": [ - { - "label": "build", - "command": "dotnet", - "type": "process", - "args": [ - "build", - "${workspaceFolder}/ActivityEncode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - }, - { - "label": "publish", - "command": "dotnet", - "type": "process", - "args": [ - "publish", - "${workspaceFolder}/ActivityEncode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - }, - { - "label": "watch", - "command": "dotnet", - "type": "process", - "args": [ - "watch", - "run", - "${workspaceFolder}/ActivityEncode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - } - ] -} \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/Cookbook/ActivityEncode/ActivityEncode.csproj b/src/Garmin/FitSdk_prev/Cookbook/ActivityEncode/ActivityEncode.csproj deleted file mode 100644 index 2700d3e31..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/ActivityEncode/ActivityEncode.csproj +++ /dev/null @@ -1,12 +0,0 @@ - - - - Exe - netcoreapp3.1 - - - - ..\..\Dynastream.Fit.Portable.dll - - - diff --git a/src/Garmin/FitSdk_prev/Cookbook/ActivityEncode/Program.cs b/src/Garmin/FitSdk_prev/Cookbook/ActivityEncode/Program.cs deleted file mode 100644 index 48c4c2fe6..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/ActivityEncode/Program.cs +++ /dev/null @@ -1,433 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using System; -using System.Collections.Generic; -using System.IO; -using Dynastream.Fit; - -namespace ActivityEncode -{ - class Program - { - static void Main(string[] args) - { - CreateTimeBasedActivity(); - CreateLapSwimActivity(); - } - static public void CreateTimeBasedActivity() - { - const double TwoPI = Math.PI * 2.0; - const double SemicirclesPerMeter = 107.173; - const string FileName = "ActivityEncodeRecipe.fit"; - - var messages = new List(); - - // The starting timestamp for the activity - var startTime = new Dynastream.Fit.DateTime(System.DateTime.UtcNow); - - // Timer Events are a BEST PRACTICE for FIT ACTIVITY files - var eventMesgStart = new EventMesg(); - eventMesgStart.SetTimestamp(startTime); - eventMesgStart.SetEvent(Event.Timer); - eventMesgStart.SetEventType(EventType.Start); - messages.Add(eventMesgStart); - - // Create the Developer Id message for the developer data fields. - var developerIdMesg = new DeveloperDataIdMesg(); - // It is a BEST PRACTICE to reuse the same Guid for all FIT files created by your platform - byte[] appId = new Guid("00010203-0405-0607-0809-0A0B0C0D0E0F").ToByteArray(); - for (int i = 0; i < appId.Length; i++) - { - developerIdMesg.SetApplicationId(i, appId[i]); - } - developerIdMesg.SetDeveloperDataIndex(0); - developerIdMesg.SetApplicationVersion(110); - messages.Add(developerIdMesg); - - // Create the Developer Data Field Descriptions - var doughnutsFieldDescMesg = new FieldDescriptionMesg(); - doughnutsFieldDescMesg.SetDeveloperDataIndex(0); - doughnutsFieldDescMesg.SetFieldDefinitionNumber(0); - doughnutsFieldDescMesg.SetFitBaseTypeId(FitBaseType.Float32); - doughnutsFieldDescMesg.SetFieldName(0, "Doughnuts Earned"); - doughnutsFieldDescMesg.SetUnits(0, "doughnuts"); - doughnutsFieldDescMesg.SetNativeMesgNum(MesgNum.Session); - messages.Add(doughnutsFieldDescMesg); - - FieldDescriptionMesg hrFieldDescMesg = new FieldDescriptionMesg(); - hrFieldDescMesg.SetDeveloperDataIndex(0); - hrFieldDescMesg.SetFieldDefinitionNumber(1); - hrFieldDescMesg.SetFitBaseTypeId(FitBaseType.Uint8); - hrFieldDescMesg.SetFieldName(0, "Heart Rate"); - hrFieldDescMesg.SetUnits(0, "bpm"); - hrFieldDescMesg.SetNativeFieldNum(RecordMesg.FieldDefNum.HeartRate); - hrFieldDescMesg.SetNativeMesgNum(MesgNum.Record); - messages.Add(hrFieldDescMesg); - - // Every FIT ACTIVITY file MUST contain Record messages - var timestamp = new Dynastream.Fit.DateTime(startTime); - - // Create one hour (3600 seconds) of Record data - for (uint i = 0; i <= 3600; i++) - { - // Create a new Record message and set the timestamp - var recordMesg = new RecordMesg(); - recordMesg.SetTimestamp(timestamp); - - // Fake Record Data of Various Signal Patterns - recordMesg.SetDistance(i); // Ramp - recordMesg.SetSpeed(1); // Flatline - recordMesg.SetHeartRate((byte)((Math.Sin(TwoPI * (0.01 * i + 10)) + 1.0) * 127.0)); // Sine - recordMesg.SetCadence((byte)(i % 255)); // Sawtooth - recordMesg.SetPower((ushort)((i % 255) < 127 ? 150 : 250)); // Square - recordMesg.SetAltitude((float)Math.Abs(((double)i % 255.0) - 127.0)); // Triangle - recordMesg.SetPositionLat(0); - recordMesg.SetPositionLong((int)Math.Round(i * SemicirclesPerMeter)); - - // Add a Developer Field to the Record Message - var hrDevField = new DeveloperField(hrFieldDescMesg, developerIdMesg); - recordMesg.SetDeveloperField(hrDevField); - hrDevField.SetValue((byte)((Math.Sin(TwoPI * (0.01 * i + 10)) + 1.0) * 127.0)); // Sine - - // Write the Rercord message to the output stream - messages.Add(recordMesg); - - // Increment the timestamp by one second - timestamp.Add(1); - } - - // Timer Events are a BEST PRACTICE for FIT ACTIVITY files - var eventMesgStop = new EventMesg(); - eventMesgStop.SetTimestamp(timestamp); - eventMesgStop.SetEvent(Event.Timer); - eventMesgStop.SetEventType(EventType.StopAll); - messages.Add(eventMesgStop); - - // Every FIT ACTIVITY file MUST contain at least one Lap message - var lapMesg = new LapMesg(); - lapMesg.SetMessageIndex(0); - lapMesg.SetTimestamp(timestamp); - lapMesg.SetStartTime(startTime); - lapMesg.SetTotalElapsedTime(timestamp.GetTimeStamp() - startTime.GetTimeStamp()); - lapMesg.SetTotalTimerTime(timestamp.GetTimeStamp() - startTime.GetTimeStamp()); - messages.Add(lapMesg); - - // Every FIT ACTIVITY file MUST contain at least one Session message - var sessionMesg = new SessionMesg(); - sessionMesg.SetMessageIndex(0); - sessionMesg.SetTimestamp(timestamp); - sessionMesg.SetStartTime(startTime); - sessionMesg.SetTotalElapsedTime(timestamp.GetTimeStamp() - startTime.GetTimeStamp()); - sessionMesg.SetTotalTimerTime(timestamp.GetTimeStamp() - startTime.GetTimeStamp()); - sessionMesg.SetSport(Sport.StandUpPaddleboarding); - sessionMesg.SetSubSport(SubSport.Generic); - sessionMesg.SetFirstLapIndex(0); - sessionMesg.SetNumLaps(1); - - // Add a Developer Field to the Session message - var doughnutsEarnedDevField = new DeveloperField(doughnutsFieldDescMesg, developerIdMesg); - doughnutsEarnedDevField.SetValue(sessionMesg.GetTotalElapsedTime() / 1200.0f); - sessionMesg.SetDeveloperField(doughnutsEarnedDevField); - messages.Add(sessionMesg); - - // Every FIT ACTIVITY file MUST contain EXACTLY one Activity message - var activityMesg = new ActivityMesg(); - activityMesg.SetTimestamp(timestamp); - activityMesg.SetNumSessions(1); - var timezoneOffset = (int)TimeZoneInfo.Local.BaseUtcOffset.TotalSeconds; - activityMesg.SetLocalTimestamp((uint)((int)timestamp.GetTimeStamp() + timezoneOffset)); - activityMesg.SetTotalTimerTime(timestamp.GetTimeStamp() - startTime.GetTimeStamp()); - messages.Add(activityMesg); - - CreateActivityFile(messages, FileName, startTime); - - } - - static public void CreateLapSwimActivity() - { - // Example Swim Data representing a 500 yard pool swim using different strokes and drills. - var swimData = new List>() - { - new Dictionary(){{"type", "Active"},{"duration",20U},{"stroke","Freestyle"},{"strokes",30U}}, - new Dictionary(){{"type", "Active"},{"duration",25U},{"stroke","Freestyle"},{"strokes",20U}}, - new Dictionary(){{"type", "Active"},{"duration",30U},{"stroke","Freestyle"},{"strokes",10U}}, - new Dictionary(){{"type", "Active"},{"duration",35U},{"stroke","Freestyle"},{"strokes",20U}}, - new Dictionary(){{"type", "Lap"}}, - new Dictionary(){{"type", "Idle"},{"duration",60U}}, - new Dictionary(){{"type", "Lap"}}, - new Dictionary(){{"type", "Active"},{"duration",20U},{"stroke","Backstroke"},{"strokes",30U}}, - new Dictionary(){{"type", "Active"},{"duration",25U},{"stroke","Backstroke"},{"strokes",20U}}, - new Dictionary(){{"type", "Active"},{"duration",30U},{"stroke","Backstroke"},{"strokes",10U}}, - new Dictionary(){{"type", "Active"},{"duration",35U},{"stroke","Backstroke"},{"strokes",20U}}, - new Dictionary(){{"type", "Lap"}}, - new Dictionary(){{"type", "Idle"},{"duration",60U}}, - new Dictionary(){{"type", "Lap"}}, - new Dictionary(){{"type", "Active"},{"duration",20U},{"stroke","Breaststroke"},{"strokes",30U}}, - new Dictionary(){{"type", "Active"},{"duration",25U},{"stroke","Breaststroke"},{"strokes",20U}}, - new Dictionary(){{"type", "Active"},{"duration",30U},{"stroke","Breaststroke"},{"strokes",10U}}, - new Dictionary(){{"type", "Active"},{"duration",35U},{"stroke","Breaststroke"},{"strokes",20U}}, - new Dictionary(){{"type", "Lap"}}, - new Dictionary(){{"type", "Idle"},{"duration",60U}}, - new Dictionary(){{"type", "Lap"}}, - new Dictionary(){{"type", "Active"},{"duration",20U},{"stroke","Butterfly"},{"strokes",30U}}, - new Dictionary(){{"type", "Active"},{"duration",25U},{"stroke","Butterfly"},{"strokes",20U}}, - new Dictionary(){{"type", "Active"},{"duration",30U},{"stroke","Butterfly"},{"strokes",10U}}, - new Dictionary(){{"type", "Active"},{"duration",35U},{"stroke","Butterfly"},{"strokes",20U}}, - new Dictionary(){{"type", "Lap"}}, - new Dictionary(){{"type", "Idle"},{"duration",60U}}, - new Dictionary(){{"type", "Lap"}}, - new Dictionary(){{"type", "Active"},{"duration",40U},{"stroke","Drill"}}, - new Dictionary(){{"type", "Active"},{"duration",40U},{"stroke","Drill"}}, - new Dictionary(){{"type", "Active"},{"duration",40U},{"stroke","Drill"}}, - new Dictionary(){{"type", "Active"},{"duration",40U},{"stroke","Drill"}}, - new Dictionary(){{"type", "Lap"}}, - }; - - const string FileName = "ActivityEncodeRecipeLapSwim.fit"; - var messages = new List(); - - // The starting timestamp for the activity - var startTime = new Dynastream.Fit.DateTime(System.DateTime.UtcNow); - - - // Timer Events are a BEST PRACTICE for FIT ACTIVITY files - var eventMesgStart = new EventMesg(); - eventMesgStart.SetTimestamp(startTime); - eventMesgStart.SetEvent(Event.Timer); - eventMesgStart.SetEventType(EventType.Start); - messages.Add(eventMesgStart); - - // - // Create a Length or Lap message for each item in the sample swim data. Calculate - // distance, duration, and stroke count for each lap and the overall session. - // - - // Session Accumulators - uint sessionTotalElapsedTime = 0; - float sessionDistance = 0; - ushort sessionNumLengths = 0; - ushort sessionNumActiveLengths = 0; - ushort sessionTotalStrokes = 0; - ushort sessionNumLaps = 0; - - // Lap accumulators - uint lapTotalElapsedTime = 0; - float lapDistance = 0; - ushort lapNumActiveLengths = 0; - ushort lapNumLengths = 0; - ushort lapFirstLengthIndex = 0; - ushort lapTotalStrokes = 0; - var lapStartTime = new Dynastream.Fit.DateTime(startTime); - - var poolLength = 22.86f; - var poolLengthUnit = DisplayMeasure.Statute; - var timestamp = new Dynastream.Fit.DateTime(startTime); - ushort messageIndex = 0; - - foreach (var swimLength in swimData) - { - string type = (string)swimLength["type"]; - - if (type.Equals("Lap")) - { - // Create a Lap message, set its fields, and write it to the file - var lapMesg = new LapMesg(); - lapMesg.SetMessageIndex(sessionNumLaps); - lapMesg.SetTimestamp(timestamp); - lapMesg.SetStartTime(lapStartTime); - lapMesg.SetTotalElapsedTime(lapTotalElapsedTime); - lapMesg.SetTotalTimerTime(lapTotalElapsedTime); - lapMesg.SetTotalDistance(lapDistance); - lapMesg.SetFirstLengthIndex(lapFirstLengthIndex); - lapMesg.SetNumActiveLengths(lapNumActiveLengths); - lapMesg.SetNumLengths(lapNumLengths); - lapMesg.SetTotalStrokes(lapTotalStrokes); - lapMesg.SetAvgStrokeDistance(lapDistance / lapTotalStrokes); - lapMesg.SetSport(Sport.Swimming); - lapMesg.SetSubSport(SubSport.LapSwimming); - messages.Add(lapMesg); - - sessionNumLaps++; - - // Reset the Lap accumulators - lapFirstLengthIndex = messageIndex; - lapNumActiveLengths = 0; - lapNumLengths = 0; - lapTotalElapsedTime = 0; - lapDistance = 0; - lapTotalStrokes = 0; - lapStartTime = new Dynastream.Fit.DateTime(timestamp); - } - else - { - uint duration = (uint)swimLength["duration"]; - var lengthType = (LengthType)Enum.Parse(typeof(LengthType), type); - - // Create a Length message and its fields - var lengthMesg = new LengthMesg(); - lengthMesg.SetMessageIndex(messageIndex++); - lengthMesg.SetStartTime(timestamp); - lengthMesg.SetTotalElapsedTime(duration); - lengthMesg.SetTotalTimerTime(duration); - lengthMesg.SetLengthType(lengthType); - - timestamp.Add(duration); - lengthMesg.SetTimestamp(timestamp); - - // Create the Record message that pairs with the Length Message - var recordMesg = new RecordMesg(); - recordMesg.SetTimestamp(timestamp); - recordMesg.SetDistance(sessionDistance + poolLength); - - // Is this an Active Length? - if (lengthType == LengthType.Active) - { - // Get the Active data from the model - string stroke = swimLength.ContainsKey("stroke") ? (String)swimLength["stroke"] : "Freestyle"; - uint strokes = swimLength.ContainsKey("strokes") ? (uint)swimLength["strokes"] : 0; - SwimStroke swimStroke = (SwimStroke)Enum.Parse(typeof(SwimStroke), stroke); - - // Set the Active data on the Length Message - lengthMesg.SetAvgSpeed(poolLength / (float)duration); - lengthMesg.SetSwimStroke(swimStroke); - - if (strokes > 0) - { - lengthMesg.SetTotalStrokes((ushort)strokes); - lengthMesg.SetAvgSwimmingCadence((byte)(strokes * 60U / duration)); - } - - // Set the Active data on the Record Message - recordMesg.SetSpeed(poolLength / (float)duration); - if (strokes > 0) - { - recordMesg.SetCadence((byte)((strokes * 60U) / duration)); - } - - // Increment the "Active" accumulators - sessionNumActiveLengths++; - lapNumActiveLengths++; - sessionDistance += poolLength; - lapDistance += poolLength; - sessionTotalStrokes += (ushort)strokes; - lapTotalStrokes += (ushort)strokes; - } - - // Write the messages to the file - messages.Add(recordMesg); - messages.Add(lengthMesg); - - // Increment the "Total" accumulators - sessionTotalElapsedTime += duration; - lapTotalElapsedTime += duration; - sessionNumLengths++; - lapNumLengths++; - } - } - - // Timer Events are a BEST PRACTICE for FIT ACTIVITY files - var eventMesgStop = new EventMesg(); - eventMesgStop.SetTimestamp(timestamp); - eventMesgStop.SetEvent(Event.Timer); - eventMesgStop.SetEventType(EventType.StopAll); - messages.Add(eventMesgStop); - - // Every FIT ACTIVITY file MUST contain at least one Session message - var sessionMesg = new SessionMesg(); - sessionMesg.SetMessageIndex(0); - sessionMesg.SetTimestamp(timestamp); - sessionMesg.SetStartTime(startTime); - sessionMesg.SetTotalElapsedTime(sessionTotalElapsedTime); - sessionMesg.SetTotalTimerTime(sessionTotalElapsedTime); - sessionMesg.SetTotalDistance(sessionDistance); - sessionMesg.SetSport(Sport.Swimming); - sessionMesg.SetSubSport(SubSport.LapSwimming); - sessionMesg.SetFirstLapIndex(0); - sessionMesg.SetNumLaps(sessionNumLaps); - sessionMesg.SetPoolLength(poolLength); - sessionMesg.SetPoolLengthUnit(poolLengthUnit); - sessionMesg.SetNumLengths(sessionNumLengths); - sessionMesg.SetNumActiveLengths(sessionNumActiveLengths); - sessionMesg.SetTotalStrokes(sessionTotalStrokes); - sessionMesg.SetAvgStrokeDistance(sessionDistance / sessionTotalStrokes); - messages.Add(sessionMesg); - - // Every FIT ACTIVITY file MUST contain EXACTLY one Activity message - var activityMesg = new ActivityMesg(); - activityMesg.SetTimestamp(timestamp); - activityMesg.SetNumSessions(1); - var timezoneOffset = (int)TimeZoneInfo.Local.BaseUtcOffset.TotalSeconds; - activityMesg.SetLocalTimestamp((uint)((int)timestamp.GetTimeStamp() + timezoneOffset)); - activityMesg.SetTotalTimerTime(sessionTotalElapsedTime); - messages.Add(activityMesg); - - CreateActivityFile(messages, FileName, startTime); - } - - static void CreateActivityFile(List messages, String filename, Dynastream.Fit.DateTime startTime) - { - // The combination of file type, manufacturer id, product id, and serial number should be unique. - // When available, a non-random serial number should be used. - Dynastream.Fit.File fileType = Dynastream.Fit.File.Activity; - ushort manufacturerId = Manufacturer.Development; - ushort productId = 0; - float softwareVersion = 1.0f; - - Random random = new Random(); - uint serialNumber = (uint)random.Next(); - - // Every FIT file MUST contain a File ID message - var fileIdMesg = new FileIdMesg(); - fileIdMesg.SetType(fileType); - fileIdMesg.SetManufacturer(manufacturerId); - fileIdMesg.SetProduct(productId); - fileIdMesg.SetTimeCreated(startTime); - fileIdMesg.SetSerialNumber(serialNumber); - - // A Device Info message is a BEST PRACTICE for FIT ACTIVITY files - var deviceInfoMesg = new DeviceInfoMesg(); - deviceInfoMesg.SetDeviceIndex(DeviceIndex.Creator); - deviceInfoMesg.SetManufacturer(Manufacturer.Development); - deviceInfoMesg.SetProduct(productId); - deviceInfoMesg.SetProductName("FIT Cookbook"); // Max 20 Chars - deviceInfoMesg.SetSerialNumber(serialNumber); - deviceInfoMesg.SetSoftwareVersion(softwareVersion); - deviceInfoMesg.SetTimestamp(startTime); - - // Create the output stream, this can be any type of stream, including a file or memory stream. Must have read/write access - FileStream fitDest = new FileStream(filename, FileMode.Create, FileAccess.ReadWrite, FileShare.Read); - - // Create a FIT Encode object - Encode encoder = new Encode(ProtocolVersion.V20); - - // Write the FIT header to the output stream - encoder.Open(fitDest); - - // Write the messages to the file, in the proper sequence - encoder.Write(fileIdMesg); - encoder.Write(deviceInfoMesg); - - foreach (Mesg message in messages) - { - encoder.Write(message); - } - - // Update the data size in the header and calculate the CRC - encoder.Close(); - - // Close the output stream - fitDest.Close(); - - Console.WriteLine($"Encoded FIT file {fitDest.Name}"); - } - } -} diff --git a/src/Garmin/FitSdk_prev/Cookbook/CourseEncode/.vscode/extensions.json b/src/Garmin/FitSdk_prev/Cookbook/CourseEncode/.vscode/extensions.json deleted file mode 100644 index 2ec794d54..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/CourseEncode/.vscode/extensions.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - // See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations. - // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp - - // List of extensions which should be recommended for users of this workspace. - "recommendations": [ - "ms-dotnettools.csharp", - ], - // List of extensions recommended by VS Code that should not be recommended for users of this workspace. - "unwantedRecommendations": [ - - ] -} \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/Cookbook/CourseEncode/.vscode/launch.json b/src/Garmin/FitSdk_prev/Cookbook/CourseEncode/.vscode/launch.json deleted file mode 100644 index 3332041bc..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/CourseEncode/.vscode/launch.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - // Use IntelliSense to find out which attributes exist for C# debugging - // Use hover for the description of the existing attributes - // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md - "version": "0.2.0", - "configurations": [ - { - "name": ".NET Core Launch (console)", - "type": "coreclr", - "request": "launch", - "preLaunchTask": "build", - // If you have changed target frameworks, make sure to update the program path. - "program": "${workspaceFolder}/bin/Debug/netcoreapp3.1/CourseEncode.dll", - "args": [], - "cwd": "${workspaceFolder}", - // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console - "console": "internalConsole", - "stopAtEntry": false - }, - { - "name": ".NET Core Attach", - "type": "coreclr", - "request": "attach", - "processId": "${command:pickProcess}" - } - ] -} \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/Cookbook/CourseEncode/.vscode/tasks.json b/src/Garmin/FitSdk_prev/Cookbook/CourseEncode/.vscode/tasks.json deleted file mode 100644 index e791fefee..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/CourseEncode/.vscode/tasks.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "version": "2.0.0", - "tasks": [ - { - "label": "build", - "command": "dotnet", - "type": "process", - "args": [ - "build", - "${workspaceFolder}/CourseEncode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - }, - { - "label": "publish", - "command": "dotnet", - "type": "process", - "args": [ - "publish", - "${workspaceFolder}/CourseEncode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - }, - { - "label": "watch", - "command": "dotnet", - "type": "process", - "args": [ - "watch", - "run", - "${workspaceFolder}/CourseEncode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - } - ] -} \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/Cookbook/CourseEncode/CourseEncode.csproj b/src/Garmin/FitSdk_prev/Cookbook/CourseEncode/CourseEncode.csproj deleted file mode 100644 index 795570060..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/CourseEncode/CourseEncode.csproj +++ /dev/null @@ -1,12 +0,0 @@ - - - - Exe - netcoreapp3.1 - - - - ..\..\Dynastream.Fit.Portable.dll - - - diff --git a/src/Garmin/FitSdk_prev/Cookbook/CourseEncode/Program.cs b/src/Garmin/FitSdk_prev/Cookbook/CourseEncode/Program.cs deleted file mode 100644 index 3fe7e7956..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/CourseEncode/Program.cs +++ /dev/null @@ -1,151 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// -using System; -using System.Collections.Generic; -using System.IO; -using Dynastream.Fit; - -namespace CourseEncode -{ - class Program - { - public const ushort ProductId = 0; - - static void Main(string[] args) - { - EncodeCourse(); - } - - public static void EncodeCourse() - { - const string filename = "CourseEncodeRecipe.fit"; - - // Example Record Data Defining a Course - var courseData = new List>() - { - new Dictionary(){{"timestamp",961262849U},{"position_lat",463583114},{"position_long",-1131028903},{"altitude",329f},{"distance",0f},{"speed",0f}}, - new Dictionary(){{"timestamp",961262855U},{"position_lat",463583127},{"position_long",-1131031938},{"altitude",328.6f},{"distance",22.03f},{"speed",3.0f}}, - new Dictionary(){{"timestamp",961262869U},{"position_lat",463583152},{"position_long",-1131038159},{"altitude",327.6f},{"distance",67.29f},{"speed",3.0f}}, - new Dictionary(){{"timestamp",961262876U},{"position_lat",463583164},{"position_long",-1131041346},{"altitude",327f},{"distance",90.52f},{"speed",3.0f}}, - new Dictionary(){{"timestamp",961262876U},{"position_lat",463583164},{"position_long",-1131041319},{"altitude",327f},{"distance",90.72f},{"speed",3.0f}}, - new Dictionary(){{"timestamp",961262891U},{"position_lat",463588537},{"position_long",-1131041383},{"altitude",327f},{"distance",140.72f},{"speed",3.0f}}, - new Dictionary(){{"timestamp",961262891U},{"position_lat",463588549},{"position_long",-1131041383},{"altitude",327f},{"distance",140.82f},{"speed",3.0f}}, - new Dictionary(){{"timestamp",961262897U},{"position_lat",463588537},{"position_long",-1131038293},{"altitude",327.6f},{"distance",163.26f},{"speed",3.0f}}, - new Dictionary(){{"timestamp",961262911U},{"position_lat",463588512},{"position_long",-1131032041},{"altitude",328.4f},{"distance",208.75f},{"speed",3.0f}}, - new Dictionary(){{"timestamp",961262918U},{"position_lat",463588499},{"position_long",-1131028879},{"altitude",329f},{"distance",231.8f},{"speed",3.0f}}, - new Dictionary(){{"timestamp",961262918U},{"position_lat",463588499},{"position_long",-1131028903},{"altitude",329f},{"distance",231.97f},{"speed",3.0f}}, - new Dictionary(){{"timestamp",961262933U},{"position_lat",463583127},{"position_long",-1131028903},{"altitude",329f},{"distance",281.96f},{"speed",3.0f}}, - }; - - // Create the output stream, this can be any type of stream, including a file or memory stream. Must have read/write access. - FileStream fitDest = new FileStream(filename, FileMode.Create, FileAccess.ReadWrite, FileShare.Read); - - // Create a FIT Encode object - Encode encoder = new Encode(ProtocolVersion.V10); - - // Write the FIT header to the output stream - encoder.Open(fitDest); - - // Reference points for the course - var firstRecord = courseData[0]; - var lastRecord = courseData[courseData.Count - 1]; - var halfwayRecord = courseData[courseData.Count / 2]; - var startTimestamp = (uint)firstRecord["timestamp"]; - var endTimestamp = (uint)lastRecord["timestamp"]; - var startDateTime = new Dynastream.Fit.DateTime(startTimestamp); - var endDateTime = new Dynastream.Fit.DateTime(endTimestamp); - - // Every FIT file MUST contain a File ID message - var fileIdMesg = new FileIdMesg(); - fileIdMesg.SetType(Dynastream.Fit.File.Course); - fileIdMesg.SetManufacturer(Manufacturer.Development); - fileIdMesg.SetProduct(ProductId); - fileIdMesg.SetTimeCreated(startDateTime); - fileIdMesg.SetSerialNumber(startDateTime.GetTimeStamp()); - encoder.Write(fileIdMesg); - - // Every FIT file MUST contain a Course message - var courseMesg = new CourseMesg(); - courseMesg.SetName("Garmin Field Day"); - courseMesg.SetSport(Sport.Cycling); - encoder.Write(courseMesg); - - // Every FIT COURSE file MUST contain a Lap message - var lapMesg = new LapMesg(); - lapMesg.SetStartTime(startDateTime); - lapMesg.SetTimestamp(startDateTime); - lapMesg.SetTotalElapsedTime(endTimestamp - startTimestamp); - lapMesg.SetTotalTimerTime(endTimestamp - startTimestamp); - lapMesg.SetStartPositionLat((int)firstRecord["position_lat"]); - lapMesg.SetStartPositionLong((int)firstRecord["position_long"]); - lapMesg.SetEndPositionLat((int)lastRecord["position_lat"]); - lapMesg.SetEndPositionLong((int)lastRecord["position_long"]); - lapMesg.SetTotalDistance((float)lastRecord["distance"]); - encoder.Write(lapMesg); - - // Timer Events are REQUIRED for FIT COURSE files - var eventMesgStart = new EventMesg(); - eventMesgStart.SetTimestamp(startDateTime); - eventMesgStart.SetEvent(Event.Timer); - eventMesgStart.SetEventType(EventType.Start); - encoder.Write(eventMesgStart); - - // Every FIT COURSE file MUST contain Record messages - foreach (var record in courseData) - { - var timestamp = (uint)record["timestamp"]; - var latitude = (int)record["position_lat"]; - var longitude = (int)record["position_long"]; - var distance = (float)record["distance"]; - var speed = (float)record["speed"]; - var altitude = (float)record["altitude"]; - - var recordMesg = new RecordMesg(); - recordMesg.SetTimestamp(new Dynastream.Fit.DateTime(timestamp)); - recordMesg.SetPositionLat(latitude); - recordMesg.SetPositionLong(longitude); - recordMesg.SetDistance(distance); - recordMesg.SetSpeed(speed); - recordMesg.SetAltitude(altitude); - encoder.Write(recordMesg); - - // Add a Course Point at the halfway point of the route - if (record == halfwayRecord) - { - var coursePointMesg = new CoursePointMesg(); - coursePointMesg.SetTimestamp(new Dynastream.Fit.DateTime(timestamp)); - coursePointMesg.SetName("Halfway"); - coursePointMesg.SetType(CoursePoint.Generic); - coursePointMesg.SetPositionLat(latitude); - coursePointMesg.SetPositionLong(longitude); - coursePointMesg.SetDistance(distance); - encoder.Write(coursePointMesg); - } - } - - // Timer Events are REQUIRED for FIT COURSE files - var eventMesgStop = new EventMesg(); - eventMesgStop.SetTimestamp(endDateTime); - eventMesgStop.SetEvent(Event.Timer); - eventMesgStop.SetEventType(EventType.StopAll); - encoder.Write(eventMesgStop); - - // Update the data size in the header and calculate the CRC - encoder.Close(); - - // Close the output stream - fitDest.Close(); - - Console.WriteLine($"Encoded FIT file {fitDest.Name}"); - } - } -} diff --git a/src/Garmin/FitSdk_prev/Cookbook/WorkoutEncode/.vscode/extensions.json b/src/Garmin/FitSdk_prev/Cookbook/WorkoutEncode/.vscode/extensions.json deleted file mode 100644 index 8c76df3fe..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/WorkoutEncode/.vscode/extensions.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - // See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations. - // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp - - // List of extensions which should be recommended for users of this workspace. - "recommendations": [ - "ms-dotnettools.csharp" - ], - // List of extensions recommended by VS Code that should not be recommended for users of this workspace. - "unwantedRecommendations": [ - - ] -} \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/Cookbook/WorkoutEncode/.vscode/launch.json b/src/Garmin/FitSdk_prev/Cookbook/WorkoutEncode/.vscode/launch.json deleted file mode 100644 index 7ffbbcc81..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/WorkoutEncode/.vscode/launch.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - // Use IntelliSense to find out which attributes exist for C# debugging - // Use hover for the description of the existing attributes - // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md - "version": "0.2.0", - "configurations": [ - { - "name": ".NET Core Launch (console)", - "type": "coreclr", - "request": "launch", - "preLaunchTask": "build", - // If you have changed target frameworks, make sure to update the program path. - "program": "${workspaceFolder}/bin/Debug/netcoreapp3.1/WorkoutEncode.dll", - "args": [], - "cwd": "${workspaceFolder}", - // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console - "console": "internalConsole", - "stopAtEntry": false - }, - { - "name": ".NET Core Attach", - "type": "coreclr", - "request": "attach", - "processId": "${command:pickProcess}" - } - ] - } \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/Cookbook/WorkoutEncode/.vscode/tasks.json b/src/Garmin/FitSdk_prev/Cookbook/WorkoutEncode/.vscode/tasks.json deleted file mode 100644 index b21e0977e..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/WorkoutEncode/.vscode/tasks.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "version": "2.0.0", - "tasks": [ - { - "label": "build", - "command": "dotnet", - "type": "process", - "args": [ - "build", - "${workspaceFolder}/WorkoutEncode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - }, - { - "label": "publish", - "command": "dotnet", - "type": "process", - "args": [ - "publish", - "${workspaceFolder}/WorkoutEncode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - }, - { - "label": "watch", - "command": "dotnet", - "type": "process", - "args": [ - "watch", - "run", - "${workspaceFolder}/WorkoutEncode.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - } - ] -} \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/Cookbook/WorkoutEncode/Program.cs b/src/Garmin/FitSdk_prev/Cookbook/WorkoutEncode/Program.cs deleted file mode 100644 index 5bbb8dfd7..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/WorkoutEncode/Program.cs +++ /dev/null @@ -1,339 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin International, Inc. -//////////////////////////////////////////////////////////////////////////////// - -using System; -using System.Collections.Generic; -using System.IO; -using Dynastream.Fit; - -namespace WorkoutEncode -{ - class Program - { - static void Main(string[] args) - { - CreateBikeTempoWorkout(); - CreateRun800RepeatsWorkout(); - CreateCustomTargetValuesWorkout(); - CreatePoolSwimWorkout(); - } - - static void CreateBikeTempoWorkout() - { - var workoutSteps = new List(); - - workoutSteps.Add(CreateWorkoutStep(messageIndex: workoutSteps.Count, - durationType: WktStepDuration.Time, - durationValue: 600000, // milliseconds - targetType: WktStepTarget.HeartRate, - targetValue: 1, - intensity: Intensity.Warmup)); - - workoutSteps.Add(CreateWorkoutStep(messageIndex: workoutSteps.Count, - durationType: WktStepDuration.Time, - durationValue: 2400000, // milliseconds - targetType: WktStepTarget.Power, - targetValue: 3)); - - workoutSteps.Add(CreateWorkoutStep(messageIndex: workoutSteps.Count, - intensity: Intensity.Cooldown)); - - var workoutMesg = new WorkoutMesg(); - workoutMesg.SetWktName("Tempo Bike"); - workoutMesg.SetSport(Sport.Cycling); - workoutMesg.SetSubSport(SubSport.Invalid); - workoutMesg.SetNumValidSteps((ushort)workoutSteps.Count); - - CreateWorkout(workoutMesg, workoutSteps); - } - - - static void CreateRun800RepeatsWorkout() - { - var workoutSteps = new List(); - - workoutSteps.Add(CreateWorkoutStep(messageIndex: workoutSteps.Count, - durationType: WktStepDuration.Distance, - durationValue: 400000, // centimeters - targetType: WktStepTarget.HeartRate, - targetValue: 1, - intensity: Intensity.Warmup)); - - workoutSteps.Add(CreateWorkoutStep(messageIndex: workoutSteps.Count, - durationType: WktStepDuration.Distance, - durationValue: 80000, // centimeters - targetType: WktStepTarget.HeartRate, - targetValue: 4)); - - workoutSteps.Add(CreateWorkoutStep(messageIndex: workoutSteps.Count, - durationType: WktStepDuration.Distance, - durationValue: 20000, // centimeters - targetType: WktStepTarget.HeartRate, - targetValue: 2, - intensity: Intensity.Rest)); - - workoutSteps.Add(CreateWorkoutStepRepeat(messageIndex: workoutSteps.Count, repeatFrom: 1, repetitions: 5)); - - workoutSteps.Add(CreateWorkoutStep(messageIndex: workoutSteps.Count, - durationType: WktStepDuration.Distance, - durationValue: 100000, // centimeters - targetType: WktStepTarget.HeartRate, - targetValue: 2, - intensity: Intensity.Cooldown)); - - var workoutMesg = new WorkoutMesg(); - workoutMesg.SetWktName("Running 800m Repeats"); - workoutMesg.SetSport(Sport.Running); - workoutMesg.SetSubSport(SubSport.Invalid); - workoutMesg.SetNumValidSteps((ushort)workoutSteps.Count); - - CreateWorkout(workoutMesg, workoutSteps); - } - - static void CreateCustomTargetValuesWorkout() - { - var workoutSteps = new List(); - - workoutSteps.Add(CreateWorkoutStep(messageIndex: workoutSteps.Count, - durationType: WktStepDuration.Time, - durationValue: 600000, // milliseconds - targetType: WktStepTarget.HeartRate, - customTargetValueLow: 235, // 135 + 100 - customTargetValueHigh: 255, // 155 + 100 - intensity: Intensity.Warmup)); - - workoutSteps.Add(CreateWorkoutStep(messageIndex: workoutSteps.Count, - durationType: WktStepDuration.Time, - durationValue: 2400000, // milliseconds - targetType: WktStepTarget.Power, - customTargetValueLow: 1175, // 175 + 1000 - customTargetValueHigh: 1195)); // 195 + 1000 - - workoutSteps.Add(CreateWorkoutStep(messageIndex: workoutSteps.Count, - durationType: WktStepDuration.Time, - durationValue: 600000, // milliseconds - targetType: WktStepTarget.Speed, - customTargetValueLow: 5556, // 5.556 meters/second * 1000 - customTargetValueHigh: 6944, // 6.944 meters/second * 1000 - intensity: Intensity.Cooldown)); - - var workoutMesg = new WorkoutMesg(); - workoutMesg.SetWktName("Custom Target Values"); - workoutMesg.SetSport(Sport.Cycling); - workoutMesg.SetSubSport(SubSport.Invalid); - workoutMesg.SetNumValidSteps((ushort)workoutSteps.Count); - - CreateWorkout(workoutMesg, workoutSteps); - } - - static void CreatePoolSwimWorkout() - { - var workoutSteps = new List(); - - // Warm Up 200 yds - workoutSteps.Add(CreateWorkoutStepSwim(messageIndex: workoutSteps.Count, - distance: 182.88f, - intensity: Intensity.Warmup)); - // Rest until lap button pressed - workoutSteps.Add(CreateWorkoutStepSwimRest(messageIndex: workoutSteps.Count)); - - // Drill w/ kickboard 200 yds - workoutSteps.Add(CreateWorkoutStepSwim(messageIndex: workoutSteps.Count, - distance: 182.88f, - swimStroke: SwimStroke.Drill, - equipment: WorkoutEquipment.SwimKickboard)); - // Rest until lap button pressed - workoutSteps.Add(CreateWorkoutStepSwimRest(messageIndex: workoutSteps.Count)); - - // 5 x 100 yds on 2:00 - workoutSteps.Add(CreateWorkoutStepSwim(messageIndex: workoutSteps.Count, - distance: 91.44f, - swimStroke: SwimStroke.Freestyle)); - - workoutSteps.Add(CreateWorkoutStepSwimRest(messageIndex: workoutSteps.Count, - durationType: WktStepDuration.RepetitionTime, - durationTime: 120.0f)); - - workoutSteps.Add(CreateWorkoutStepRepeat(messageIndex: workoutSteps.Count, repeatFrom: 4, repetitions: 5)); - - // Rest until lap button pressed - workoutSteps.Add(CreateWorkoutStepSwimRest(messageIndex: workoutSteps.Count)); - - // Cool Down 100 yds - workoutSteps.Add(CreateWorkoutStepSwim(messageIndex: workoutSteps.Count, - distance: 91.44f, - intensity: Intensity.Cooldown)); - - var workoutMesg = new WorkoutMesg(); - workoutMesg.SetWktName("Pool Swim"); - workoutMesg.SetSport(Sport.Swimming); - workoutMesg.SetSubSport(SubSport.LapSwimming); - workoutMesg.SetPoolLength(22.86f); // 25 yards - workoutMesg.SetPoolLengthUnit(DisplayMeasure.Statute); - workoutMesg.SetNumValidSteps((ushort)workoutSteps.Count); - - CreateWorkout(workoutMesg, workoutSteps); - } - - static void CreateWorkout(WorkoutMesg workoutMesg, List workoutSteps) - { - // The combination of file type, manufacturer id, product id, and serial number should be unique. - // When available, a non-random serial number should be used. - Dynastream.Fit.File fileType = Dynastream.Fit.File.Workout; - ushort manufacturerId = Manufacturer.Development; - ushort productId = 0; - Random random = new Random(); - uint serialNumber = (uint)random.Next(); - - // Every FIT file MUST contain a File ID message - var fileIdMesg = new FileIdMesg(); - fileIdMesg.SetType(fileType); - fileIdMesg.SetManufacturer(manufacturerId); - fileIdMesg.SetProduct(productId); - fileIdMesg.SetTimeCreated(new Dynastream.Fit.DateTime(System.DateTime.UtcNow)); - fileIdMesg.SetSerialNumber(serialNumber); - - // Create the output stream, this can be any type of stream, including a file or memory stream. Must have read/write access - FileStream fitDest = new FileStream($"{workoutMesg.GetWktNameAsString().Replace(' ', '_')}.fit", FileMode.Create, FileAccess.ReadWrite, FileShare.Read); - - // Create a FIT Encode object - Encode encoder = new Encode(ProtocolVersion.V10); - - // Write the FIT header to the output stream - encoder.Open(fitDest); - - // Write the messages to the file, in the proper sequence - encoder.Write(fileIdMesg); - encoder.Write(workoutMesg); - - foreach (WorkoutStepMesg workoutStep in workoutSteps) - { - encoder.Write(workoutStep); - } - - // Update the data size in the header and calculate the CRC - encoder.Close(); - - // Close the output stream - fitDest.Close(); - - Console.WriteLine($"Encoded FIT file {fitDest.Name}"); - } - - private static WorkoutStepMesg CreateWorkoutStep(int messageIndex, String name = null, String notes = null, Intensity intensity = Intensity.Active, WktStepDuration durationType = WktStepDuration.Open, uint? durationValue = null, WktStepTarget targetType = WktStepTarget.Open, uint targetValue = 0, uint? customTargetValueLow = null, uint? customTargetValueHigh = null) - { - if (durationType == WktStepDuration.Invalid) - { - return null; - } - - var workoutStepMesg = new WorkoutStepMesg(); - workoutStepMesg.SetMessageIndex((ushort)messageIndex); - - if (name != null) - { - workoutStepMesg.SetWktStepName(name); - } - - if (notes != null) - { - workoutStepMesg.SetNotes(notes); - } - - workoutStepMesg.SetIntensity(intensity); - workoutStepMesg.SetDurationType(durationType); - - if (durationValue.HasValue) - { - workoutStepMesg.SetDurationValue(durationValue); - } - - if (targetType != WktStepTarget.Invalid && customTargetValueLow.HasValue && customTargetValueHigh.HasValue) - { - workoutStepMesg.SetTargetType(targetType); - workoutStepMesg.SetTargetValue(0); - workoutStepMesg.SetCustomTargetValueLow(customTargetValueLow); - workoutStepMesg.SetCustomTargetValueHigh(customTargetValueHigh); - } - else if (targetType != WktStepTarget.Invalid) - { - workoutStepMesg.SetTargetType(targetType); - workoutStepMesg.SetTargetValue(targetValue); - workoutStepMesg.SetCustomTargetValueLow(0); - workoutStepMesg.SetCustomTargetValueHigh(0); - } - - return workoutStepMesg; - } - - private static WorkoutStepMesg CreateWorkoutStepRepeat(int messageIndex, uint repeatFrom, uint repetitions) - { - var workoutStepMesg = new WorkoutStepMesg(); - workoutStepMesg.SetMessageIndex((ushort)messageIndex); - - workoutStepMesg.SetDurationType(WktStepDuration.RepeatUntilStepsCmplt); - workoutStepMesg.SetDurationValue(repeatFrom); - - workoutStepMesg.SetTargetType(WktStepTarget.Open); - workoutStepMesg.SetTargetValue(repetitions); - - return workoutStepMesg; - } - - private static WorkoutStepMesg CreateWorkoutStepSwim(int messageIndex, float distance, String name = null, String notes = null, Intensity intensity = Intensity.Active, SwimStroke swimStroke = SwimStroke.Invalid, WorkoutEquipment? equipment = null) - { - var workoutStepMesg = new WorkoutStepMesg(); - workoutStepMesg.SetMessageIndex((ushort)messageIndex); - - if (name != null) - { - workoutStepMesg.SetWktStepName(name); - } - - if (notes != null) - { - workoutStepMesg.SetNotes(notes); - } - - workoutStepMesg.SetIntensity(intensity); - - workoutStepMesg.SetDurationType(WktStepDuration.Distance); - workoutStepMesg.SetDurationDistance(distance); - - workoutStepMesg.SetTargetType(WktStepTarget.SwimStroke); - - workoutStepMesg.SetTargetStrokeType((byte)swimStroke); - - if (equipment.HasValue) - { - workoutStepMesg.SetEquipment(equipment); - } - - return workoutStepMesg; - } - - private static WorkoutStepMesg CreateWorkoutStepSwimRest(int messageIndex, WktStepDuration durationType = WktStepDuration.Open, float? durationTime = null) - { - var workoutStepMesg = new WorkoutStepMesg(); - workoutStepMesg.SetMessageIndex((ushort)messageIndex); - - workoutStepMesg.SetDurationType(durationType); - workoutStepMesg.SetDurationTime(durationTime); - - workoutStepMesg.SetTargetType(WktStepTarget.Open); - - workoutStepMesg.SetIntensity(Intensity.Rest); - - return workoutStepMesg; - } - } -} diff --git a/src/Garmin/FitSdk_prev/Cookbook/WorkoutEncode/WorkoutEncode.csproj b/src/Garmin/FitSdk_prev/Cookbook/WorkoutEncode/WorkoutEncode.csproj deleted file mode 100644 index 2700d3e31..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/WorkoutEncode/WorkoutEncode.csproj +++ /dev/null @@ -1,12 +0,0 @@ - - - - Exe - netcoreapp3.1 - - - - ..\..\Dynastream.Fit.Portable.dll - - - diff --git a/src/Garmin/FitSdk_prev/Cookbook/readme.md b/src/Garmin/FitSdk_prev/Cookbook/readme.md deleted file mode 100644 index 2bf86504a..000000000 --- a/src/Garmin/FitSdk_prev/Cookbook/readme.md +++ /dev/null @@ -1,19 +0,0 @@ -# FIT SDK Cookbook - -The FIT SDK Cookbook contains examples of using the FIT SDK to solve real-world problems. There are recipes for encoding and decoding Activity, Workout, and Course files; and recipes that provide tips for working with the FIT SDK. - -The example projects provided in the cookbook are C# console apps written with .NET Core 3.1. All example projects in the cookbook use Visual Studio Code and can be compiled and executed on Windows, Mac, and Linux systems. The source code for the recipes is included with the FIT SDK and is located at /path/to/fit/sdk/cs/cookbook. The recipes are written in C#, but the concepts can be applied to the Java and C++ versions of the FIT SDK. - -The Cookbook projects reference the precompiled Dynastream.Fit.Portable.dll that is included with the FIT SDK. If needed, the C# FIT SDK source files can be directly included in the projects. - -## Prerequisites - -The following prerequisites are required for working with the example projects found in the cookbook. - -1. [Visual Studio Code](https://code.visualstudio.com/) with the [C# extension](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) installed. -2. The [NET Core SDK v3.1](https://dotnet.microsoft.com/download/dotnet-core) or later installed. - -## Using the recipes - -1. Open project folder in Visual Studio Code and install any extensions that are suggested for the project. -2. To start debugging press F5, or from the menu choose Run -> Start debugging. \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/Dynastream.Fit.Portable.dll b/src/Garmin/FitSdk_prev/Dynastream.Fit.Portable.dll deleted file mode 100644 index 518455333..000000000 Binary files a/src/Garmin/FitSdk_prev/Dynastream.Fit.Portable.dll and /dev/null differ diff --git a/src/Garmin/FitSdk_prev/Dynastream.Fit.Portable.pdb b/src/Garmin/FitSdk_prev/Dynastream.Fit.Portable.pdb deleted file mode 100644 index 918cbb76a..000000000 Binary files a/src/Garmin/FitSdk_prev/Dynastream.Fit.Portable.pdb and /dev/null differ diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/AccumulatedField.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/AccumulatedField.cs deleted file mode 100644 index f352c1a7f..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/AccumulatedField.cs +++ /dev/null @@ -1,54 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace Dynastream.Fit -{ - public class AccumulatedField - { - public int mesgNum; - public int destFieldNum; - private long lastValue; - private long accumulatedValue; - - public AccumulatedField(int mesgNum, int destFieldNum) - { - this.mesgNum = mesgNum; - this.destFieldNum = destFieldNum; - this.lastValue = 0; - this.accumulatedValue = 0; - } - - public long Accumulate(long value, int bits) - { - long mask = (1L << bits) - 1; - - accumulatedValue += (value - lastValue) & mask; - lastValue = value; - - return accumulatedValue; - } - - public long Set(long value) - { - accumulatedValue = value; - this.lastValue = value; - return accumulatedValue; - } - } -} diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Accumulator.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Accumulator.cs deleted file mode 100644 index 2e50d644e..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Accumulator.cs +++ /dev/null @@ -1,74 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace Dynastream.Fit -{ - public class Accumulator - { - List accumulatedFields; - - public Accumulator() - { - accumulatedFields = new List(); - } - - public void Set(int mesgNum, int destFieldNum, long value) - { - AccumulatedField accumField = null; - int i; - - for (i = 0; i < accumulatedFields.Count; i++) - { - accumField = accumulatedFields[i]; - - if ((accumField.mesgNum == mesgNum) && (accumField.destFieldNum == destFieldNum)) - break; - } - - if (i == accumulatedFields.Count) - { - accumField = new AccumulatedField(mesgNum, destFieldNum); - accumulatedFields.Add(accumField); - } - - accumField.Set(value); - } - - public long Accumulate(int mesgNum, int destFieldNum, long value, int bits) - { - AccumulatedField accumField = null; - int i; - for (i = 0; i < accumulatedFields.Count; i++) - { - accumField = accumulatedFields[i]; - - if ((accumField.mesgNum == mesgNum) && (accumField.destFieldNum == destFieldNum)) - break; - } - - if (i == accumulatedFields.Count) - { - accumField = new AccumulatedField(mesgNum, destFieldNum); - accumulatedFields.Add(accumField); - } - - return accumField.Accumulate(value, bits); - } - } -} diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/BufferedMesgBroadcaster.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/BufferedMesgBroadcaster.cs deleted file mode 100644 index c846ce2c0..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/BufferedMesgBroadcaster.cs +++ /dev/null @@ -1,113 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -using Dynastream.Utility; -using Dynastream.Fit; - -namespace Dynastream.Fit -{ - public delegate void MesgBroadcastEventHandler(object sender, MesgBroadcastEventArgs e); - public delegate void IncomingMesgEventHandler(object sender, IncomingMesgEventArgs e); - - public class MesgBroadcastEventArgs : EventArgs - { - public List mesgs = null; - - public MesgBroadcastEventArgs() - { - } - - public MesgBroadcastEventArgs(List newMesgs) - { - mesgs = newMesgs; - } - } - - public class IncomingMesgEventArgs : EventArgs - { - public Mesg mesg = null; - - public IncomingMesgEventArgs() - { - } - - public IncomingMesgEventArgs(Mesg newMesg) - { - mesg = new Mesg(newMesg); - } - } - - /// - /// - /// BufferedMesgBroadcaster intercepts the incoming messages - /// from the given decode stream, buffers them, and offers - /// an opportunity to edit the messages before broadcasting - /// the messages to all registered listeners. - /// - /// - /// To edit the messages, an IMesgBroadcastPlugin must be - /// registered. All registered IMesgBroadcastPlugins are given - /// the opportunity to see each message as they are decoded, - /// as well as to see and edit the final list of - /// messages before broadcast to listeners - /// - /// - public class BufferedMesgBroadcaster : MesgBroadcaster - { - #region Fields - private List mesgs = new List(); - public event MesgBroadcastEventHandler MesgBroadcastEvent; - public event IncomingMesgEventHandler IncomingMesgEvent; - #endregion - - #region Methods - - public void RegisterMesgBroadcastPlugin(IMesgBroadcastPlugin plugin) - { - MesgBroadcastEvent += plugin.OnBroadcast; - IncomingMesgEvent += plugin.OnIncomingMesg; - } - - public new void OnMesg(object sender, MesgEventArgs e) - { - // Notify any subscribers of either our general mesg event or specific profile mesg event - mesgs.Add(e.mesg); - if (IncomingMesgEvent != null) - { - IncomingMesgEvent(sender, new IncomingMesgEventArgs(e.mesg)); - } - } - - public void Broadcast() - { - if (MesgBroadcastEvent != null) - { - MesgBroadcastEvent(this, new MesgBroadcastEventArgs(mesgs)); - } - - foreach (Mesg mesg in mesgs) - { - base.OnMesg(this, new MesgEventArgs(mesg)); - } - - } - #endregion - } -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Crc.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Crc.cs deleted file mode 100644 index da979358c..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Crc.cs +++ /dev/null @@ -1,64 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - /// - /// Implements Dynastream CRC16 function - /// - public static class CRC - { - private static ushort[] crcTable = new ushort[] - { - 0x0000, 0xCC01, 0xD801, 0x1400, 0xF001, 0x3C00, 0x2800, 0xE401, - 0xA001, 0x6C00, 0x7800, 0xB401, 0x5000, 0x9C01, 0x8801, 0x4400 - }; - - #region Methods - public static ushort Get16(ushort crc, byte data) - { - ushort tmp; - - // compute checksum of lower four bits of byte - tmp = crcTable[crc & 0xF]; - crc = (ushort)((crc >> 4) & 0x0FFF); - crc = (ushort)(crc ^ tmp ^ crcTable[data & 0xF]); - - // compute checksum of upper four bits of byte - tmp = crcTable[crc & 0xF]; - crc = (ushort)((crc >> 4) & 0x0FFF); - crc = (ushort)(crc ^ tmp ^ crcTable[(data >> 4) & 0xF]); - - return crc; - } - - public static ushort Calc16(byte[] dataBlock, int size) - { - ushort crc = 0; - - for (int i = 0; i < size; i++) - { - crc = CRC.Get16(crc, dataBlock[i]); - } - return crc; - } - #endregion // Methods - } -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Decode.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Decode.cs deleted file mode 100644 index d6132be9a..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Decode.cs +++ /dev/null @@ -1,507 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Event Args Class associated with the DeveloperFieldDescrtiption Event - /// - public class DeveloperFieldDescriptionEventArgs : EventArgs - { - public DeveloperFieldDescription Description { get; private set; } - - public DeveloperFieldDescriptionEventArgs(DeveloperFieldDescription description) - { - Description = description; - } - } - - /// - /// This class will decode a .fit file reading the file header and any definition or data messages. - /// - public class Decode - { - private const long CRCSIZE = 2; - private const uint INVALID_DATA_SIZE = 0; - - #region Fields - private MesgDefinition[] localMesgDefs = new MesgDefinition[Fit.MaxLocalMesgs]; - private Header fileHeader; - private uint timestamp = 0; - private int lastTimeOffset = 0; - private bool invalidDataSize = false; - private Accumulator accumulator = new Accumulator(); - - private readonly DeveloperDataLookup m_lookup = new DeveloperDataLookup(); - #endregion - - #region Properties - public bool InvalidDataSize - { - get - { - return invalidDataSize; - } - set - { - invalidDataSize = value; - } - } - #endregion - - #region Constructors - public Decode() - { - } - #endregion - - #region Methods - public event MesgEventHandler MesgEvent; - public event MesgDefinitionEventHandler MesgDefinitionEvent; - public event EventHandler DeveloperFieldDescriptionEvent; - - /// - /// Reads the file header to check if the file is FIT. - /// Does not check CRC. - /// Returns true if file is FIT. - /// - /// Seekable (file)stream to parse - public bool IsFIT(Stream fitStream) - { - long position = fitStream.Position; - bool status = false; - try - { - // Does the header contain the flag string ".FIT"? - Header header = new Header(fitStream); - fitStream.Position = position; - status = header.IsValid(); - } - // If the header is malformed the ctor could throw an exception - catch (FitException) - { - } - - fitStream.Position = position; - return status; - } - - /// - /// Reads the FIT binary file header and crc to check compatibility and integrity. - /// Also checks data reords size. - /// Returns true if file is ok (not corrupt). - /// - /// Seekable (file)stream to parse. - public bool CheckIntegrity(Stream fitStream) - { - bool isValid = true; - long position = fitStream.Position; - long fileSize = 0; - - try - { - while ((fitStream.Position < fitStream.Length) && isValid) - { - // Is there a valid header? - Header header = new Header(fitStream); - isValid = header.IsValid(); - - // Get the file size from the header - // When the data size is 0 set flags, don't calculate CRC - if (header.DataSize > INVALID_DATA_SIZE) - { - fileSize = header.Size + header.DataSize + CRCSIZE; - - // Is the file CRC ok? - // Need to rewind the header size because the header is part of the CRC calculation. - byte[] data = new byte[fileSize]; - fitStream.Position = fitStream.Position - header.Size; - fitStream.Read(data, 0, data.Length); - isValid &= (CRC.Calc16(data, data.Length) == 0x0000); - } - else - { - invalidDataSize = true; - isValid = false; - } - } - } - catch (FitException) - { - isValid = false; - } - - fitStream.Position = position; - return isValid; - } - - /// - /// Reads a FIT binary file. - /// - /// Seekable (file)stream to parse. - /// - /// Returns true if reading finishes successfully. - /// - public bool Read(Stream fitStream) - { - bool status = true; - long position = fitStream.Position; - - while ((fitStream.Position < fitStream.Length) && status) - { - status = Read(fitStream, DecodeMode.Normal); - } - - fitStream.Position = position; - - return status; - } - - /// - /// Reads a FIT binary file. - /// - /// Seekable (file)stream to parse. - /// When true, skip file header. Also CRC will not be calculated. - /// - /// Returns true if reading finishes successfully. - /// - [Obsolete( - "Arguments to this function are ambiguous, " + - "use Read(stream, DecodeMode) instead. " + - "Function will be removed after 20.30.00", - false)] - public bool Read(Stream fitStream, bool skipHeader) - { - return Read(fitStream, skipHeader ? DecodeMode.InvalidHeader : DecodeMode.Normal); - } - - - /// - /// Reads a FIT binary File - /// - /// Seekable (file)stream to parse. - /// Decode Mode to use for reading the file - /// - /// Returns true if reading finishes successfully. - /// - public bool Read(Stream fitStream, DecodeMode mode) - { - bool readOK = true; - long fileSize = 0; - long filePosition = fitStream.Position; - - try - { - // Attempt to read header - if (mode == DecodeMode.Normal) - { - fileHeader = new Header(fitStream); - readOK &= fileHeader.IsValid(); - - // Get the file size from the header - // When the data size is invalid set the file size to the fitstream length - if (!invalidDataSize) - { - fileSize = fileHeader.Size + fileHeader.DataSize + CRCSIZE; - } - else - { - fileSize = fitStream.Length; - } - - if (!readOK) - { - throw new FitException("FIT decode error: File is not FIT format. Check file header data type. Error at stream position: " + fitStream.Position); - } - if ((fileHeader.ProtocolVersion & Fit.ProtocolVersionMajorMask) > (Fit.ProtocolMajorVersion << Fit.ProtocolVersionMajorShift)) - { - // The decoder does not support decode accross protocol major revisions - throw new FitException(String.Format("FIT decode error: Protocol Version {0}.X not supported by SDK Protocol Ver{1}.{2} ", (fileHeader.ProtocolVersion & Fit.ProtocolVersionMajorMask) >> Fit.ProtocolVersionMajorShift, Fit.ProtocolMajorVersion, Fit.ProtocolMinorVersion)); - } - } - else if(mode == DecodeMode.InvalidHeader) - { - // When skipping the header force the stream position to be at the beginning of the data - // Also the fileSize is the length of the filestream. - fitStream.Position += Fit.HeaderWithCRCSize; - fileSize = fitStream.Length; - } - else if (mode == DecodeMode.DataOnly) - { - // When the stream is only data move the position of the stream - // to the start. FileSize is the length of the stream - fitStream.Position = 0; - fileSize = fitStream.Length; - } - else - { - throw new FitException("Invalid Decode Mode Provided to read"); - } - - // Read data messages and definitions - while (fitStream.Position < (filePosition + fileSize - CRCSIZE)) - { - DecodeNextMessage(fitStream); - } - - // Is the file CRC ok? - if ((mode == DecodeMode.Normal) && !invalidDataSize) - { - byte[] data = new byte[fileSize]; - fitStream.Position = filePosition; - fitStream.Read(data, 0, data.Length); - readOK &= (CRC.Calc16(data, data.Length) == 0x0000); - fitStream.Position = filePosition + fileSize; - } - } - catch (EndOfStreamException e) - { - readOK = false; - Debug.WriteLine("{0} caught and ignored. ", e.GetType().Name); - throw new FitException("Decode:Read - Unexpected End of File at stream position" + fitStream.Position, e); - } - catch (FitException e) - { - // When attempting to decode files with invalid data size this indicates the EOF. - if (!invalidDataSize) - { - throw e; - } - } - return readOK; - } - - public void DecodeNextMessage(Stream fitStream) - { - BinaryReader br = new BinaryReader(fitStream); - byte nextByte = br.ReadByte(); - - // Is it a compressed timestamp mesg? - if ((nextByte & Fit.CompressedHeaderMask) == Fit.CompressedHeaderMask) - { - MemoryStream mesgBuffer = new MemoryStream(); - - int timeOffset = nextByte & Fit.CompressedTimeMask; - timestamp += (uint)((timeOffset - lastTimeOffset) & Fit.CompressedTimeMask); - lastTimeOffset = timeOffset; - Field timestampField = new Field(Profile.GetMesg(MesgNum.Record).GetField("Timestamp")); - timestampField.SetValue(timestamp); - - byte localMesgNum = (byte)((nextByte & Fit.CompressedLocalMesgNumMask) >> 5); - mesgBuffer.WriteByte(localMesgNum); - if (localMesgDefs[localMesgNum] == null) - { - throw new FitException("Decode:DecodeNextMessage - FIT decode error: Missing message definition for local message number " + localMesgNum + " at stream position " + fitStream.Position); - } - int fieldsSize = localMesgDefs[localMesgNum].GetMesgSize() - 1; - try - { - byte[] read = br.ReadBytes(fieldsSize); - if( read.Length < fieldsSize ) - { - throw new Exception("Field size mismatch, expected: " + fieldsSize + "received: " + read.Length); - } - mesgBuffer.Write(read, 0, fieldsSize); - } - catch (Exception e) - { - throw new FitException("Decode:DecodeNextMessage - Compressed Data Message unexpected end of file. Wanted " + fieldsSize + " bytes at stream position " + fitStream.Position, e); - } - - Mesg newMesg = new Mesg(mesgBuffer, localMesgDefs[localMesgNum]); - newMesg.InsertField(0, timestampField); - RaiseMesgEvent(newMesg); - } - // Is it a mesg def? - else if ((nextByte & Fit.MesgDefinitionMask) == Fit.MesgDefinitionMask) - { - MemoryStream mesgDefBuffer = new MemoryStream(); - - // Figure out number of fields (length) of our defn and build buffer - mesgDefBuffer.WriteByte(nextByte); - mesgDefBuffer.Write(br.ReadBytes(4), 0, 4); - byte numFields = br.ReadByte(); - mesgDefBuffer.WriteByte(numFields); - int numBytes = numFields * 3; //3 Bytes per field - try - { - byte[] read = br.ReadBytes(numBytes); - if( read.Length < numBytes ) - { - throw new Exception("Message Definition size mismatch, expected: " + numBytes + "received: " + read.Length); - } - mesgDefBuffer.Write(read, 0, numBytes); - - if ((nextByte & Fit.DevDataMask) == Fit.DevDataMask) - { - // Definition Contains Dev Data - byte numDevFields = br.ReadByte(); - mesgDefBuffer.WriteByte(numDevFields); - - numBytes = numDevFields * 3; - read = br.ReadBytes(numBytes); - if( read.Length < numBytes ) - { - throw new Exception("Message Definition size mismatch, expected: " + numBytes + "received: " + read.Length); - } - - // Read Dev Data - mesgDefBuffer.Write(read, 0, numBytes); - } - } - catch (Exception e) - { - throw new FitException("Decode:DecodeNextMessage - Defn Message unexpected end of file. Wanted " + numBytes + " bytes at stream position " + fitStream.Position, e); - } - - MesgDefinition newMesgDef = new MesgDefinition(mesgDefBuffer, m_lookup); - localMesgDefs[newMesgDef.LocalMesgNum] = newMesgDef; - if (MesgDefinitionEvent != null) - { - MesgDefinitionEvent(this, new MesgDefinitionEventArgs(newMesgDef)); - } - } - // Is it a data mesg? - else if ((nextByte & Fit.MesgDefinitionMask) == Fit.MesgHeaderMask) - { - MemoryStream mesgBuffer = new MemoryStream(); - - byte localMesgNum = (byte)(nextByte & Fit.LocalMesgNumMask); - mesgBuffer.WriteByte(localMesgNum); - if (localMesgDefs[localMesgNum] == null) - { - throw new FitException("Decode:DecodeNextMessage - FIT decode error: Missing message definition for local message number " + localMesgNum + " at stream position " + fitStream.Position); - } - int fieldsSize = localMesgDefs[localMesgNum].GetMesgSize() - 1; - try - { - byte[] read = br.ReadBytes(fieldsSize); - if( read.Length < fieldsSize ) - { - throw new Exception("Field size mismatch, expected: " + fieldsSize + "received: " + read.Length); - } - mesgBuffer.Write(read, 0, fieldsSize); - } - catch (Exception e) - { - throw new FitException("Decode:DecodeNextMessage - Data Message unexpected end of file. Wanted " + fieldsSize + " bytes at stream position " + fitStream.Position, e); - } - - Mesg newMesg = new Mesg(mesgBuffer, localMesgDefs[localMesgNum]); - - // If the new message contains a timestamp field, record the value to use as - // a reference for compressed timestamp headers - Field timestampField = newMesg.GetField("Timestamp"); - if (timestampField != null) - { - object tsValue = timestampField.GetValue(); - if (tsValue != null) - { - timestamp = (uint)tsValue; - lastTimeOffset = (int)timestamp & Fit.CompressedTimeMask; - } - } - - foreach (Field field in newMesg.FieldsList) - { - if (field.IsAccumulated) - { - int i; - for (i = 0; i < field.GetNumValues(); i++) - { - long value = Convert.ToInt64(field.GetRawValue(i)); - - foreach (Field fieldIn in newMesg.FieldsList) - { - foreach (FieldComponent fc in fieldIn.components) - { - if ((fc.fieldNum == field.Num) && (fc.accumulate)) - { - value = (long) ((((value / field.Scale) - field.Offset) + fc.offset) * fc.scale); - } - } - } - accumulator.Set(newMesg.Num, field.Num, value); - } - } - } - - // Now that the entire message is decoded we can evaluate subfields and expand any components - newMesg.ExpandComponents(accumulator); - - RaiseMesgEvent(newMesg); - } - else - { - throw new FitException("Decode:Read - FIT decode error: Unexpected Record Header Byte 0x" + nextByte.ToString("X") + " at stream position: " + fitStream.Position); - } - } - - /// - /// - /// - /// - /// - private void RaiseMesgEvent(Mesg newMesg) - { - if ((newMesg.Num == MesgNum.DeveloperDataId) || - (newMesg.Num == MesgNum.FieldDescription)) - { - HandleMetaData(newMesg); - } - - if (MesgEvent != null) - { - MesgEvent(this, new MesgEventArgs(newMesg)); - } - } - - private void HandleMetaData(Mesg newMesg) - { - if (newMesg.Num == MesgNum.DeveloperDataId) - { - var mesg = new DeveloperDataIdMesg(newMesg); - m_lookup.Add(mesg); - } - else if (newMesg.Num == MesgNum.FieldDescription) - { - var mesg = new FieldDescriptionMesg(newMesg); - DeveloperFieldDescription desc = m_lookup.Add(mesg); - if (desc != null) - { - OnDeveloperFieldDescriptionEvent( - new DeveloperFieldDescriptionEventArgs(desc)); - } - } - } - #endregion - - protected virtual void OnDeveloperFieldDescriptionEvent(DeveloperFieldDescriptionEventArgs e) - { - EventHandler handler = - DeveloperFieldDescriptionEvent; - - if (handler != null) - { - handler(this, e); - } - } - } // class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/DecodeMode.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/DecodeMode.cs deleted file mode 100644 index fc7ebfa01..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/DecodeMode.cs +++ /dev/null @@ -1,37 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Mode used for Read Operations - /// - public enum DecodeMode - { - /// - /// Indicates that file contains valid Header and CRC data - /// - Normal, - - /// - /// Indicates that the Stream Contains a Header that is Corrupt - /// - InvalidHeader, - - /// - /// Indicates that the Stream does not contain a Header or CRC - /// - DataOnly - } -} diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Defines.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Defines.cs deleted file mode 100644 index 85332d8d3..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Defines.cs +++ /dev/null @@ -1,181 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; - -namespace Dynastream.Fit -{ - public enum ProtocolVersion - { - V10, - V20 - } - - public static class ProtocolVersionExtensions - { - private class DetailedProtocolVersion - { - public byte MajorVersion { get; private set; } - public byte MinorVersion { get; private set; } - - public byte Version - { - get - { - return (byte) ((MajorVersion << Fit.ProtocolVersionMajorShift) | - MinorVersion); - } - } - - public DetailedProtocolVersion(byte major, byte minor) - { - MajorVersion = major; - MinorVersion = minor; - } - } - - public static byte GetMajorVersion(this ProtocolVersion protocolVersion) - { - return s_versionMap[protocolVersion].MajorVersion; - } - - public static byte GetMinorVersion(this ProtocolVersion protocolVersion) - { - return s_versionMap[protocolVersion].MinorVersion; - } - - public static byte GetVersionByte(this ProtocolVersion protocolVersion) - - { - return s_versionMap[protocolVersion].Version; - } - - private static readonly Dictionary s_versionMap = - new Dictionary - { - {ProtocolVersion.V10, new DetailedProtocolVersion(1, 0)}, - {ProtocolVersion.V20, new DetailedProtocolVersion(2, 0)} - }; - } - - - public class Fit - { - public const byte ProtocolVersionMajorShift = 4; - public const byte ProtocolVersionMajorMask = (0x0F << ProtocolVersionMajorShift); - - public static readonly byte ProtocolVersion = Dynastream.Fit.ProtocolVersion.V20.GetVersionByte(); - public static readonly byte ProtocolMajorVersion = Dynastream.Fit.ProtocolVersion.V20.GetMajorVersion(); - public static readonly byte ProtocolMinorVersion = Dynastream.Fit.ProtocolVersion.V20.GetMinorVersion(); - - public const ushort ProfileVersion = ((ProfileMajorVersion * 100) + ProfileMinorVersion); - public const ushort ProfileMajorVersion = 21; - public const ushort ProfileMinorVersion = 101; - - public const byte HeaderTypeMask = 0xF0; - public const byte CompressedHeaderMask = 0x80; - public const byte CompressedTimeMask = 0x1F; - public const byte CompressedLocalMesgNumMask = 0x60; - - public const byte MesgDefinitionMask = 0x40; - public const byte DevDataMask = 0x20; - public const byte MesgHeaderMask = 0x00; - public const byte LocalMesgNumMask = 0x0F; - public const byte MaxLocalMesgs = LocalMesgNumMask + 1; - - public const byte MesgDefinitionReserved = 0x00; - public const byte LittleEndian = 0x00; - public const byte BigEndian = 0x01; - - public const ushort MaxMesgSize = 65535; - public const byte MaxFieldSize = 255; - - public const byte HeaderWithCRCSize = 14; - public const byte HeaderWithoutCRCSize = (HeaderWithCRCSize - 2); - - public const byte FieldNumInvalid = 255; - public const byte FieldNumTimeStamp = 253; - - public const ushort SubfieldIndexMainField = SubfieldIndexActiveSubfield + 1; - public const ushort SubfieldIndexActiveSubfield = 0xFFFE; - public const string SubfieldNameMainField = ""; - - public static FitType[] BaseType = new FitType[] - { - new FitType(false, 0x00, "enum", (byte)0xFF, 1, false, false), - new FitType(false, 0x01, "sint8", (sbyte)0x7F, 1, true, true), - new FitType(false, 0x02, "uint8", (byte)0xFF, 1, false, true), - new FitType(true, 0x83, "sint16", (short)0x7FFF, 2, true, true), - new FitType(true, 0x84, "uint16", (ushort)0xFFFF, 2, false, true), - new FitType(true, 0x85, "sint32", (int)0x7FFFFFFF, 4, true, true), - new FitType(true, 0x86, "uint32", (uint)0xFFFFFFFF, 4, false, true), - new FitType(false, 0x07, "string", (byte)0x00, 1, false, false), - new FitType(true, 0x88, "float32", BitConverter.ToSingle(new byte[] {0xFF, 0xFF, 0xFF, 0xFF}, 0), 4, true, false), - new FitType(true, 0x89, "float64", BitConverter.ToDouble(new byte[] {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, 0), 8, true, false), - new FitType(false, 0x0A, "uint8z", (byte)0x00, 1, false, true), - new FitType(true, 0x8B, "uint16z", (ushort)0x0000, 2, false, true), - new FitType(true, 0x8C, "uint32z", (uint)0x00000000, 4, false, true), - new FitType(false, 0x0D, "byte", (byte)0xFF, 1, false, false), - new FitType(true, 0x8E, "sint64", (long)0x7FFFFFFFFFFFFFFFL, 8, true, true), - new FitType(true, 0x8F, "uint64", (ulong)0xFFFFFFFFFFFFFFFFL, 8, false, true), - new FitType(true, 0x90, "uint64z", (ulong)0x0000000000000000L, 8, false, true), - }; - - - public struct FitType - { - public bool endianAbility; - public byte baseTypeField; - public string typeName; - public object invalidValue; - public byte size; - public bool isSigned; - public bool isInteger; - - public FitType(bool endianAbility, byte baseTypeField, string typeName, object invalidValue, byte size, bool isSigned, bool isInt) - { - this.endianAbility = endianAbility; - this.baseTypeField = baseTypeField; - this.typeName = typeName; - this.invalidValue = invalidValue; - this.size = size; - this.isSigned = isSigned; - this.isInteger = isInt; - } - } - - // Index into the BaseTypes array - public const byte Enum = 0x00; - public const byte SInt8 = 0x01; - public const byte UInt8 = 0x02; - public const byte SInt16 = 0x03; - public const byte UInt16 = 0x04; - public const byte SInt32 = 0x05; - public const byte UInt32 = 0x06; - public const byte String = 0x07; - public const byte Float32 = 0x08; - public const byte Float64 = 0x09; - public const byte UInt8z = 0x0A; - public const byte UInt16z = 0x0B; - public const byte UInt32z = 0x0C; - public const byte Byte = 0x0D; - public const byte SInt64 = 0x0E; - public const byte UInt64 = 0x0F; - public const byte UInt64z = 0x10; - - // And this with the type defn to get the index - public const byte BaseTypeNumMask = 0x1F; - } -} diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/DeveloperDataKey.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/DeveloperDataKey.cs deleted file mode 100644 index 480468246..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/DeveloperDataKey.cs +++ /dev/null @@ -1,99 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.IO; - -namespace Dynastream.Fit -{ - internal class DeveloperDataKey - : IComparable - { - public byte DeveloperDataIndex { get; private set; } - public byte FieldDefNum { get; private set; } - - public DeveloperDataKey(byte developerDataIndex, byte fieldDefNum) - { - DeveloperDataIndex = developerDataIndex; - FieldDefNum = fieldDefNum; - } - - /// - /// Determines whether the specified is equal to the current . - /// - /// - /// true if the specified is equal to the current ; otherwise, false. - /// - /// The to compare with the current . - public override bool Equals(object obj) - { - if (ReferenceEquals(null, obj)) return false; - if (ReferenceEquals(this, obj)) return true; - if (obj.GetType() != GetType()) return false; - return Equals(obj as DeveloperDataKey); - } - - /// - /// Determines whether the specified is equal to the current . - /// - /// - /// true if the specified is equal to the current ; otherwise, false. - /// - /// - /// The to compare with the current . - /// - protected bool Equals(DeveloperDataKey other) - { - return (DeveloperDataIndex == other.DeveloperDataIndex) && - (FieldDefNum == other.FieldDefNum); - } - - /// - /// Serves as a hash function for a particular type. - /// - /// - /// A hash code for the current . - /// - public override int GetHashCode() - { - unchecked - { - return (DeveloperDataIndex.GetHashCode() * 397) ^ - FieldDefNum.GetHashCode(); - } - } - - /// - /// Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - /// - /// - /// A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: Value Meaning Less than zero This instance precedes in the sort order. Zero This instance occurs in the same position in the sort order as . Greater than zero This instance follows in the sort order. - /// - /// An object to compare with this instance. is not the same type as this instance. - public int CompareTo(object obj) - { - var other = obj as DeveloperDataKey; - if (other == null) - { - throw new InvalidOperationException("Cannot compare"); - } - - if (DeveloperDataIndex > other.DeveloperDataIndex) return 1; - if (DeveloperDataIndex < other.DeveloperDataIndex) return -1; - if (FieldDefNum > other.FieldDefNum) return 1; - if (FieldDefNum < other.FieldDefNum) return -1; - return 0; - } - } -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/DeveloperDataLookup.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/DeveloperDataLookup.cs deleted file mode 100644 index 3556606ca..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/DeveloperDataLookup.cs +++ /dev/null @@ -1,100 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - - -#endregion - -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - internal class DeveloperDataLookup - { - private readonly Dictionary m_fieldDescriptionMesgs; - private readonly Dictionary m_developerDataIdMesgs; - - public DeveloperDataLookup() - { - m_fieldDescriptionMesgs = new Dictionary(); - m_developerDataIdMesgs = new Dictionary(); - } - - public Tuple GetMesgs(DeveloperDataKey key) - { - DeveloperDataIdMesg devIdMesg; - FieldDescriptionMesg descriptionMesg; - - m_developerDataIdMesgs.TryGetValue(key.DeveloperDataIndex, out devIdMesg); - m_fieldDescriptionMesgs.TryGetValue(key, out descriptionMesg); - - if (devIdMesg != null && descriptionMesg != null) - { - return new Tuple( - devIdMesg, - descriptionMesg); - } - - return null; - } - - public void Add(DeveloperDataIdMesg mesg) - { - byte? index = mesg.GetDeveloperDataIndex(); - if (index == null) - return; - - m_developerDataIdMesgs[index.Value] = mesg; - - // Remove all fields currently associated with this developer - var keysToRemove = - m_fieldDescriptionMesgs.Keys - .Where( - x => - x.DeveloperDataIndex == - index) - .ToList(); - foreach (var key in keysToRemove) - { - m_fieldDescriptionMesgs.Remove(key); - } - } - - public DeveloperFieldDescription Add(FieldDescriptionMesg mesg) - { - DeveloperFieldDescription desc = null; - - byte? developerDataIndex = mesg.GetDeveloperDataIndex(); - byte? fieldDefinitionNumber = mesg.GetFieldDefinitionNumber(); - if ((developerDataIndex != null) && - (fieldDefinitionNumber != null)) - { - var key = new DeveloperDataKey( - (byte)developerDataIndex, - (byte)fieldDefinitionNumber); - - m_fieldDescriptionMesgs[key] = mesg; - - // Build a Description of the pairing we just created - var pair = GetMesgs(key); - if (pair != null) - { - desc = new DeveloperFieldDescription(pair.Item1, pair.Item2); - } - } - - return desc; - } - } -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/DeveloperField.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/DeveloperField.cs deleted file mode 100644 index 77f2412bb..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/DeveloperField.cs +++ /dev/null @@ -1,191 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.IO; - -namespace Dynastream.Fit -{ - public class DeveloperField - : FieldBase - { - #region Fields - private readonly DeveloperFieldDefinition m_definition; - #endregion - - #region Properties - - public bool IsDefined - { - get { return m_definition.IsDefined; } - } - - public byte Num - { - get { return m_definition.FieldNum; } - } - - public byte DeveloperDataIndex - { - get { return m_definition.DeveloperDataIndex; } - } - - public uint AppVersion - { - get - { - if (m_definition.IsDefined) - { - return m_definition.DeveloperIdMesg.GetApplicationVersion() ?? 0; - } - - return 0; - } - } - - public byte[] AppId - { - get - { - if (m_definition.IsDefined) - { - var msg = m_definition.DeveloperIdMesg; - byte[] appId = new byte[msg.GetNumApplicationId()]; - - for (int i = 0; i < appId.Length; i++) - { - appId[i] = msg.GetApplicationId(i) ?? 0xFF; - } - - return appId; - } - - return null; - } - } - - public override string Name - { - get - { - return m_definition.IsDefined ? - m_definition.DescriptionMesg.GetFieldNameAsString(0) : null; - } - } - - public override byte Type - { - get - { - if (m_definition.IsDefined) - { - return m_definition.DescriptionMesg.GetFitBaseTypeId() ?? Fit.UInt8; - } - - return Fit.UInt8; - } - } - - public override double Scale - { - get - { - if (m_definition.IsDefined) - { - return m_definition.DescriptionMesg.GetScale() ?? 1.0; - } - - return 1.0; - } - } - - public override double Offset - { - get - { - if (m_definition.IsDefined) - { - return m_definition.DescriptionMesg.GetOffset() ?? 0.0; - } - - return 0.0; - } - } - - public override string Units - { - get - { - return m_definition.IsDefined ? - m_definition.DescriptionMesg.GetUnitsAsString(0) : null; - } - } - - /// - /// Retrieve the Native Field Number that this Developer Field Overrides - /// - /// - /// Native Field Number that is overridden if applicable, - /// otherwise - /// - public byte NativeOverride - { - get - { - if (m_definition.IsDefined) - { - return m_definition.DescriptionMesg.GetNativeFieldNum() ?? Fit.FieldNumInvalid; - } - - return Fit.FieldNumInvalid; - } - } - - #endregion - - #region Constructors - public DeveloperField(DeveloperField other) - : base(other) - { - m_definition = other.m_definition; - } - - internal DeveloperField(DeveloperFieldDefinition definition) - { - m_definition = definition; - } - - public DeveloperField(FieldDescriptionMesg description, DeveloperDataIdMesg developerDataIdMesg) - { - m_definition = new DeveloperFieldDefinition(description, developerDataIdMesg, 0); - } - - #endregion - - #region Methods - internal override Subfield GetSubfield(string subfieldName) - { - // Developer Fields do not currently support Sub Fields - return null; - } - - internal override Subfield GetSubfield(int subfieldIndex) - { - // Developer Fields do not currently support Sub Fields - return null; - } - - #endregion - } -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/DeveloperFieldDefinition.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/DeveloperFieldDefinition.cs deleted file mode 100644 index 142b80e60..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/DeveloperFieldDefinition.cs +++ /dev/null @@ -1,103 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; - -namespace Dynastream.Fit -{ - /// - /// Represents a Developer Field Definition - /// - internal class DeveloperFieldDefinition - { - private readonly FieldDescriptionMesg m_descriptionMesg; - private readonly DeveloperDataIdMesg m_developerIdMesg; - - /// - /// Gets a boolean indicating if the Field Definition has associated meta - /// data - /// - public bool IsDefined - { - get { return !ReferenceEquals(m_descriptionMesg, null); } - } - - /// - /// Gets the Field Number associated with the Developer Field - /// - public byte FieldNum { get; private set; } - - /// - /// Gets the Number of bytes associated with the Developer Field - /// - public byte Size { get; private set; } - - /// - /// Gets the developer index of the Developer Field - /// - public byte DeveloperDataIndex { get; private set; } - - /// - /// Gets the current description message for the field - /// - internal FieldDescriptionMesg DescriptionMesg - { - get { return m_descriptionMesg; } - } - - /// - /// Gets the Associated Developer Id for the message - /// - internal DeveloperDataIdMesg DeveloperIdMesg - { - get { return m_developerIdMesg; } - } - - public DeveloperFieldDefinition(byte fieldNum, byte size, byte developerDataIndex) - { - m_descriptionMesg = null; - FieldNum = fieldNum; - Size = size; - DeveloperDataIndex = developerDataIndex; - } - - /// - /// - /// - /// - /// - /// - /// - /// If description parameter is invalid - /// - public DeveloperFieldDefinition(FieldDescriptionMesg desc, DeveloperDataIdMesg devId, byte size) - { - byte? fieldDefinitionNumber = desc.GetFieldDefinitionNumber(); - byte? developerDataIndex = desc.GetDeveloperDataIndex(); - if ((developerDataIndex != null) && - (fieldDefinitionNumber != null)) - { - m_descriptionMesg = desc; - m_developerIdMesg = devId; - Size = size; - FieldNum = (byte)fieldDefinitionNumber; - DeveloperDataIndex = (byte)developerDataIndex; - } - else - { - throw new FitException("Description Message must have a valid developer data index and field definition number"); - } - } - } -} diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/DeveloperFieldDescription.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/DeveloperFieldDescription.cs deleted file mode 100644 index c7d007d9f..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/DeveloperFieldDescription.cs +++ /dev/null @@ -1,94 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - - - -#endregion - -using System; -using System.Globalization; -using System.IO; - -namespace Dynastream.Fit -{ - public class DeveloperFieldDescription - { - private readonly DeveloperDataIdMesg m_developerDataId; - private readonly FieldDescriptionMesg m_fieldDescription; - - /// - /// Gets the Value of the Application Version for the Field Description - /// - public uint ApplicationVersion - { - get { return m_developerDataId.GetApplicationVersion() ?? uint.MaxValue; } - } - - /// - /// Gets the Value of the Application Id for the Field Description - /// - public Guid ApplicationId - { - get - { - // If the Application Id is not exactly 16 bytes - // (see size of UUID) return Empty - if (m_developerDataId.GetNumApplicationId() != 16) - return Guid.Empty; - - // Read the App Id - byte[] appId = new byte[m_developerDataId.GetNumApplicationId()]; - for (int i = 0; i < appId.Length; i++) - { - appId[i] = m_developerDataId.GetApplicationId(i) ?? 0xFF; - } - - // The SDK Treats these UUIDs in Java format so we need to convert to - // a CLS Compliant Array where the array is in the form - // u32, u16, u16, u8, u8, u8, u8, u8, u8, u8, u8 and flipping from big endian to - // little endian - byte[] net = new byte[appId.Length]; - for (int i = 8; i < 16; i++) - { - net[i] = appId[i]; - } - - // Flip The endianness of the u32 and u16 values - net[3] = appId[0]; - net[2] = appId[1]; - net[1] = appId[2]; - net[0] = appId[3]; - net[5] = appId[4]; - net[4] = appId[5]; - net[7] = appId[6]; - net[6] = appId[7]; - return new Guid(net); - } - } - - /// - /// Gets the Value of the Field Definition Number for thbe Field Description - /// - public byte FieldDefinitionNumber - { - get { return m_fieldDescription.GetFieldDefinitionNumber() ?? byte.MaxValue; } - } - - internal DeveloperFieldDescription( - DeveloperDataIdMesg developerDataId, - FieldDescriptionMesg fieldDescription) - { - m_developerDataId = developerDataId; - m_fieldDescription = fieldDescription; - } - } -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Encode.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Encode.cs deleted file mode 100644 index fb3beabd5..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Encode.cs +++ /dev/null @@ -1,169 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - /// - /// Supports generating binary .FIT files. Header, Message Definition and Message - /// data may be written. - /// - public class Encode - { - #region Fields - private MesgDefinition[] lastMesgDef = new MesgDefinition[Fit.MaxLocalMesgs]; - private bool open = false; - private Stream fitDest; - - private readonly IValidator validator; - - /// - /// If default ctor is used Header object may be manipulated if desired before Open is called. - /// - public Header header; - #endregion // Fields - - #region Properties - - #endregion // Properties - - #region Constructors - - - [Obsolete("Encode supports multiple Protocol Versions. Use constructor that selects correct version")] - public Encode() - : this(null, ProtocolVersion.V10) - { - } - - [Obsolete("Encode supports multiple Protocol Versions. Use constructor that selects correct version")] - public Encode(Stream fitDest) - : this(fitDest, ProtocolVersion.V10) - { - } - - public Encode(ProtocolVersion version) - : this(null, version) - { - } - - public Encode(Stream fitDest, ProtocolVersion version) - { - header = new Header(version); - validator = new ProtocolValidator(version); - - if (fitDest != null) - { - Open(fitDest); - } - } - #endregion // Constructors - - #region Methods - - public void Open(Stream fitDest) - { - this.fitDest = fitDest; - open = true; - - // Write header so we are ready to append messages - header.Write(this.fitDest); - } - - public void OnMesgDefinition(MesgDefinition newMesgDefinition) - { - Write(newMesgDefinition); - } - - public void OnMesg(Mesg newMesg) - { - Write(newMesg); - } - - public void Write(MesgDefinition mesgDefinition) - { - if (open == false) - { - throw new FitException("Encode:Write - Encode not opened yet, must call Encode:Open()"); - } - - if (!validator.ValidateMesgDefn(mesgDefinition)) - { - throw new FitException("Encode:Write - mesgDefinition contains incompatible protocol Features"); - } - - mesgDefinition.Write(fitDest); - lastMesgDef[mesgDefinition.LocalMesgNum] = mesgDefinition; - } - - public void Write(Mesg mesg) - { - if (open == false) - { - throw new FitException("Encode:Write - Encode not opened yet, must call Encode:Open()"); - } - - if (!validator.ValidateMesg(mesg)) - { - throw new FitException("Encode:Write - mesg contains incompatible protocol Features"); - } - - // Fit file must always contain a defn message before data messages - if ((lastMesgDef[mesg.LocalNum] == null) || !lastMesgDef[mesg.LocalNum].Supports(mesg)) - { - Write(new MesgDefinition(mesg)); - } - mesg.Write(fitDest, lastMesgDef[mesg.LocalNum]); - } - - public void Write(IEnumerable mesgs) - { - foreach (Mesg mesg in mesgs) - { - Write(mesg); - } - } - - /// - /// Updates the data size and CRC in the file header - /// Updates file CRC - /// - public void Close() - { - if (open == false) - { - throw new FitException("Encode:Close - Encode not opened yet, must call Encode:Open()"); - } - - // Rewrites the header now that the datasize is known - header.DataSize = (uint)(fitDest.Length - header.Size); - header.UpdateCRC(); - header.Write(fitDest); - - // Compute and write the file CRC to the end of the file - byte[] data = new byte[fitDest.Length]; - fitDest.Position = 0; - fitDest.Read(data, 0, data.Length); - ushort fileCrc = CRC.Calc16(data, data.Length); - byte[] buffer = BitConverter.GetBytes(fileCrc); - fitDest.Write(buffer, 0, 2); - } - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Field.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Field.cs deleted file mode 100644 index 13710e333..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Field.cs +++ /dev/null @@ -1,181 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System.Collections.Generic; -using System.Linq; - -namespace Dynastream.Fit -{ - public class Field - : FieldBase - { - #region Fields - private string name; - private byte type; - private double scale; - private double offset; - private string units; - private bool isAccumulated; - private Profile.Type profileType; - - internal List subfields = new List(); - internal List components = new List(); - #endregion - - #region Properties - public override string Name - { - get - { - return name; - } - } - - public byte Num { get; set; } - - public override byte Type - { - get - { - return type; - } - } - - public override double Scale - { - get - { - return scale; - } - } - - public override double Offset - { - get - { - return offset; - } - } - - public override string Units - { - get - { - return units; - } - } - - public bool IsAccumulated - { - get - { - return isAccumulated; - } - } - - public Profile.Type ProfileType - { - get - { - return profileType; - } - } - - public bool IsExpandedField { get; set; } - #endregion - - #region Constructors - public Field(Field other) - : base(other) - { - if (other == null) - { - this.name = "unknown"; - this.Num = Fit.FieldNumInvalid; - this.type = 0; - this.scale = 1f; - this.offset = 0f; - this.units = ""; - this.isAccumulated = false; - this.profileType = Profile.Type.Enum; - this.IsExpandedField = false; - return; - } - - this.name = other.Name; - this.Num = other.Num; - this.type = other.Type; - this.scale = other.Scale; - this.offset = other.Offset; - this.units = other.units; - this.isAccumulated = other.isAccumulated; - this.profileType = other.profileType; - this.IsExpandedField = other.IsExpandedField; - - foreach (Subfield subfield in other.subfields) - { - this.subfields.Add(new Subfield(subfield)); - } - foreach (FieldComponent component in other.components) - { - this.components.Add(new FieldComponent(component)); - } - } - - internal Field(string name, byte num, byte type, double scale, double offset, string units, bool accumulated, Profile.Type profileType) - { - this.name = name; - this.Num = num; - this.type = type; - this.scale = scale; - this.offset = offset; - this.units = units; - this.isAccumulated = accumulated; - this.profileType = profileType; - this.IsExpandedField = false; - } - - internal Field(byte num, byte type) - : this("unknown", num, type, 1.0d, 0.0d, "", false, Profile.Type.NumTypes) - { - } - #endregion - - #region Methods - - internal void SetType(byte value) - { - type = value; - } - - internal override Subfield GetSubfield(string subfieldName) - { - return subfields.FirstOrDefault(subfield => subfield.Name == subfieldName); - } - - internal override Subfield GetSubfield(int subfieldIndex) - { - // SubfieldIndexActiveSubfield and SubfieldIndexMainField - // will be out of this range - if (subfieldIndex >= 0 && subfieldIndex < subfields.Count) - { - return subfields[subfieldIndex]; - } - - return null; - - } - #endregion - } -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/FieldBase.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/FieldBase.cs deleted file mode 100644 index 09f68ef1b..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/FieldBase.cs +++ /dev/null @@ -1,803 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; - -namespace Dynastream.Fit -{ - public abstract class FieldBase - { - #region Fields - private readonly List values; - #endregion - - #region Properties - public abstract string Name { get; } - public abstract byte Type { get; } - public abstract double Scale { get; } - public abstract double Offset { get; } - public abstract string Units { get; } - #endregion - - #region Constructors - - protected FieldBase(FieldBase other) - : this() - { - if (other != null) - { - foreach (object obj in other.values) - { - values.Add(obj); - } - } - } - - protected FieldBase() - { - values = new List(); - } - #endregion - - #region Methods - - internal abstract Subfield GetSubfield(string subfieldName); - internal abstract Subfield GetSubfield(int subfieldIndex); - - public string GetName() - { - return GetName((Subfield)null); - } - - public string GetName(byte subfieldIndex) - { - return GetName(GetSubfield(subfieldIndex)); - } - - public string GetName(string subFieldName) - { - return GetName(GetSubfield(subFieldName)); - } - - private string GetName(Subfield subfield) - { - return subfield == null ? Name : subfield.Name; - } - - public new byte GetType() - { - return GetType((Subfield)null); - } - - public byte GetType(byte subfieldIndex) - { - return GetType(GetSubfield(subfieldIndex)); - } - - public byte GetType(string subFieldName) - { - return GetType(GetSubfield(subFieldName)); - } - - private byte GetType(Subfield subfield) - { - return subfield == null ? Type : subfield.Type; - } - - public string GetUnits() - { - return GetUnits((Subfield)null); - } - - public string GetUnits(byte subfieldIndex) - { - return GetUnits(GetSubfield(subfieldIndex)); - } - - public string GetUnits(string subFieldName) - { - return GetUnits(GetSubfield(subFieldName)); - } - - private string GetUnits(Subfield subfield) - { - return subfield == null ? Units : subfield.Units; - } - - public byte GetSize() - { - byte size = 0; - - switch (Type & Fit.BaseTypeNumMask) - { - case Fit.Enum: - case Fit.SInt8: - case Fit.UInt8: - case Fit.SInt16: - case Fit.UInt16: - case Fit.SInt32: - case Fit.UInt32: - case Fit.Float32: - case Fit.Float64: - case Fit.UInt8z: - case Fit.UInt16z: - case Fit.UInt32z: - case Fit.SInt64: - case Fit.UInt64: - case Fit.UInt64z: - case Fit.Byte: - size = (byte)(GetNumValues() * Fit.BaseType[Type & Fit.BaseTypeNumMask].size); - break; - - case Fit.String: - // Each string may be of differing length - // The fit binary must also include a null terminator - foreach (byte[] element in values) - { - size += (byte)(element.Length); - } - break; - - default: - break; - } - return size; - } - - internal bool IsSigned() - { - return IsSigned((Subfield)null); - } - - internal bool IsSigned(int subfieldIndex) - { - return IsSigned(GetSubfield(subfieldIndex)); - } - - internal bool IsSigned(string subfieldName) - { - return IsSigned(GetSubfield(subfieldName)); - } - - internal bool IsSigned(Subfield subfield) - { - byte type = subfield == null ? Type : subfield.Type; - type &= Fit.BaseTypeNumMask; - return Fit.BaseType[type].isSigned; - } - - public void AddValue(Object value) - { - values.Add(value); - } - - public int GetNumValues() - { - return values.Count; - } - - public long? GetBitsValue(int offset, int bits, byte componentType) - { - long? value = 0; - long data = 0; - long mask; - int index = 0; - int bitsInValue = 0; - int bitsInData; - - // Ensure the destination type can hold the desired number of bits. - // We don't support arrays in the destination at this time. - if ((Fit.BaseType[componentType & Fit.BaseTypeNumMask].size * 8) < bits) - { - bits = Fit.BaseType[componentType & Fit.BaseTypeNumMask].size * 8; - } - - if (values.Count == 0) - return null; - - while (bitsInValue < bits) - { - // If we run out of bits it likely is because our profile is newer and defines - // additional components not present in the field - if (index == values.Count) - return null; - - data = Convert.ToInt64(this.values[index++]); - - // Shift data to reach desired bits starting at 'offset' - // If offset is larger than the containing types size, - // we must grab additional elements - data >>= offset; - bitsInData = Fit.BaseType[Type & Fit.BaseTypeNumMask].size * 8 - offset; - offset -= Fit.BaseType[Type & Fit.BaseTypeNumMask].size * 8; - - if (bitsInData > 0) - { - // We have reached desired data, pull off bits until we - // get enough - offset = 0; - // If there are more bits available in data than we need - // just capture those we need - if (bitsInData > (bits - bitsInValue)) - { - bitsInData = bits - bitsInValue; - } - mask = (1L << bitsInData) - 1; - value |= ((data & mask) << bitsInValue); - bitsInValue += bitsInData; - } - } - - // Sign extend if needed - if (Fit.BaseType[componentType & Fit.BaseTypeNumMask].isSigned == true && - Fit.BaseType[componentType & Fit.BaseTypeNumMask].isInteger == true) - { - long signBit = (1L << (bits - 1)); - - if ((value & signBit) != 0) - { - value = -signBit + (value & (signBit - 1)); - } - } - return value; - } - - public object GetValue() - { - return GetValue(0, (Subfield)null); - } - - public object GetValue(int index) - { - return GetValue(index, (Subfield)null); - } - - public object GetValue(int index, int subfieldIndex) - { - return GetValue(index, GetSubfield(subfieldIndex)); - } - - public object GetValue(int index, string subfieldName) - { - return GetValue(index, GetSubfield(subfieldName)); - } - - public object GetValue(int index, Subfield subfield) - { - double scale, offset; - - if (index >= values.Count || index < 0) - { - return null; - } - - if (subfield == null) - { - scale = Scale; - offset = Offset; - } - else - { - scale = subfield.Scale; - offset = subfield.Offset; - } - - object value; - bool castToFloat = false; - - switch (Type & Fit.BaseTypeNumMask) - { - case Fit.Enum: - case Fit.Byte: - case Fit.UInt8: - case Fit.UInt8z: - value = Convert.ToByte(values[index]); - if (((byte)value == (byte)Fit.BaseType[Type & Fit.BaseTypeNumMask].invalidValue) && - (scale != 1.0)) - castToFloat = true; - break; - - case Fit.SInt8: - value = Convert.ToSByte(values[index]); - if (((sbyte)value == (sbyte)Fit.BaseType[Type & Fit.BaseTypeNumMask].invalidValue) && - (scale != 1.0)) - castToFloat = true; - break; - - case Fit.SInt16: - value = Convert.ToInt16(values[index]); - if (((short)value == (short)Fit.BaseType[Type & Fit.BaseTypeNumMask].invalidValue) && - (scale != 1.0)) - castToFloat = true; - break; - - case Fit.UInt16: - case Fit.UInt16z: - value = Convert.ToUInt16(values[index]); - if (((ushort)value == (ushort)Fit.BaseType[Type & Fit.BaseTypeNumMask].invalidValue) && - (scale != 1.0)) - castToFloat = true; - break; - - case Fit.SInt32: - value = Convert.ToInt32(values[index]); - if (((int)value == (int)Fit.BaseType[Type & Fit.BaseTypeNumMask].invalidValue) && - (scale != 1.0)) - castToFloat = true; - break; - - case Fit.UInt32: - case Fit.UInt32z: - value = Convert.ToUInt32(values[index]); - if (((uint)value == (uint)Fit.BaseType[Type & Fit.BaseTypeNumMask].invalidValue) && - (scale != 1.0)) - castToFloat = true; - break; - - case Fit.SInt64: - value = Convert.ToInt64(values[index]); - if (((long)value == (long)Fit.BaseType[Type & Fit.BaseTypeNumMask].invalidValue) && - (scale != 1.0)) - castToFloat = true; - break; - - case Fit.UInt64: - case Fit.UInt64z: - value = Convert.ToUInt64(values[index]); - if (((ulong)value == (ulong)Fit.BaseType[Type & Fit.BaseTypeNumMask].invalidValue) && - (scale != 1.0)) - castToFloat = true; - break; - - case Fit.Float32: - value = Convert.ToSingle(values[index]); - if (float.IsNaN((float)value) && - (scale != 1.0)) - castToFloat = true; - break; - - case Fit.Float64: - value = Convert.ToDouble(values[index]); - if (double.IsNaN((double)value) && - (scale != 1.0)) - castToFloat = true; - break; - - case Fit.String: - value = values[index]; - break; - - default: - value = null; - break; - } - - if (castToFloat == true) - { - //Cast to Single Precision (float) since its expecting a float value if scale > 1 - value = Convert.ToSingle(value); - return value; - } - - if (IsNumeric()) - { - if (scale != 1.0 || Offset != 0.0) - { - value = (float)((Convert.ToSingle(value) / scale) - offset); - } - } - return value; - } - - public void SetValue(object value) - { - SetValue(0, value, (Subfield)null); - } - - public void SetValue(object value, int subfieldIndex) - { - SetValue(0, value, GetSubfield(subfieldIndex)); - } - - public void SetValue(object value, string subfieldName) - { - SetValue(0, value, GetSubfield(subfieldName)); - } - - public void SetValue(int index, object value) - { - SetValue(index, value, (Subfield)null); - } - - public void SetValue(int index, object value, int subfieldIndex) - { - SetValue(index, value, GetSubfield(subfieldIndex)); - } - - public void SetValue(int index, object value, string subfieldName) - { - SetValue(index, value, GetSubfield(subfieldName)); - } - - public void SetValue(int index, object value, Subfield subfield) - { - double scale, offset; - - while (index >= GetNumValues()) - { - // Add placeholders of the correct type so GetSize() will - // still compute correctly - switch (Type & Fit.BaseTypeNumMask) - { - case Fit.Enum: - case Fit.Byte: - case Fit.UInt8: - case Fit.UInt8z: - values.Add(new byte()); - break; - - case Fit.SInt8: - values.Add(new sbyte()); - break; - - case Fit.SInt16: - values.Add(new short()); - break; - - case Fit.UInt16: - case Fit.UInt16z: - values.Add(new ushort()); - break; - - case Fit.SInt32: - values.Add(new int()); - break; - - case Fit.UInt32: - case Fit.UInt32z: - values.Add(new uint()); - break; - - case Fit.SInt64: - values.Add(new long()); - break; - - case Fit.UInt64: - case Fit.UInt64z: - values.Add(new ulong()); - break; - - case Fit.Float32: - values.Add(new float()); - break; - - case Fit.Float64: - values.Add(new double()); - break; - - case Fit.String: - values.Add(new byte[0]); - break; - - default: - break; - } - } - - if (subfield == null) - { - scale = Scale; - offset = Offset; - } - else - { - scale = subfield.Scale; - offset = Offset; - } - - // Cast to long as scale and offset only apply to integer based types - // and we want to make sure we have maximum precision. - long invalidValue = 0; - long castedValue = 0; - - if (IsNumeric()) - { - // Cast to long as scale and offset only apply to integer based types - // and we want to make sure we have maximum precision. - invalidValue = (long)Convert.ToDouble(Fit.BaseType[Type & Fit.BaseTypeNumMask].invalidValue); - castedValue = (long)Convert.ToDouble(value); - - // If the field is numeric, check if the value is less than the base - // type's invalid value. For "z" base types where 0 is invalid, check - // that the value is > 0. Apply scale and offset if valid. - if ( ( castedValue < invalidValue ) || - ( ( invalidValue == 0 ) && ( castedValue > 0 ) ) ) - { - if (scale != 1.0 || Offset != 0.0) - { - value = Convert.ToSingle(value); - value = ((float)value + offset) * scale; - } - } - } - - // Must convert value back to the base type, if there was a scale or offset it will - // have been converted to float. Caller also may have passed in an unexpected type. - bool success = false; - - switch (Type & Fit.BaseTypeNumMask) - { - case Fit.Enum: - case Fit.Byte: - case Fit.UInt8: - case Fit.UInt8z: - if ( ( Convert.ToDouble(value) >= byte.MinValue ) && ( Convert.ToDouble(value) <= byte.MaxValue ) ) - { - value = Convert.ToByte(value); - success = true; - } - break; - - case Fit.SInt8: - if ( ( Convert.ToDouble(value) >= sbyte.MinValue ) && ( Convert.ToDouble(value) <= sbyte.MaxValue ) ) - { - value = Convert.ToSByte(value); - success = true; - } - break; - - case Fit.SInt16: - if ( ( Convert.ToDouble(value) >= short.MinValue) && ( Convert.ToDouble(value) <= short.MaxValue ) ) - { - value = Convert.ToInt16(value); - success = true; - } - break; - - case Fit.UInt16: - case Fit.UInt16z: - if ( ( Convert.ToDouble(value) >= ushort.MinValue ) && ( Convert.ToDouble(value) <= ushort.MaxValue ) ) - { - value = Convert.ToUInt16(value); - success = true; - } - break; - - case Fit.SInt32: - if ( ( Convert.ToDouble(value) >= int.MinValue ) && ( Convert.ToDouble(value) <= int.MaxValue ) ) - { - value = Convert.ToInt32(value); - success = true; - } - break; - - case Fit.UInt32: - case Fit.UInt32z: - if ( ( Convert.ToDouble(value) >= uint.MinValue ) && ( Convert.ToDouble(value) <= uint.MaxValue ) ) - { - value = Convert.ToUInt32(value); - success = true; - } - break; - - case Fit.SInt64: - value = Convert.ToInt64(value); - success = true; - break; - - case Fit.UInt64: - case Fit.UInt64z: - value = Convert.ToUInt64(value); - success = true; - break; - - case Fit.Float32: - if ( ( Convert.ToDouble(value) >= float.MinValue ) && ( Convert.ToDouble(value) <= float.MaxValue ) ) - { - value = Convert.ToSingle(value); - success = true; - } - break; - - case Fit.Float64: - if ( ( (double)value >= double.MinValue ) && ( (double)value <= double.MaxValue ) ) - { - value = Convert.ToDouble(value); - success = true; - } - break; - - case Fit.String: - success = true; - break; - - default: - break; - } - - // If the conversion failed, set the value to invalid - if (success == false) - { - value = Fit.BaseType[Type & Fit.BaseTypeNumMask].invalidValue; - } - values[index] = value; - } - - public void SetRawValue(int index, object value) - { - while (index >= GetNumValues()) - { - // Add placeholders of the correct type so GetSize() will - // still compute correctly - switch (Type & Fit.BaseTypeNumMask) - { - case Fit.Enum: - case Fit.Byte: - case Fit.UInt8: - case Fit.UInt8z: - values.Add(new byte()); - break; - - case Fit.SInt8: - values.Add(new sbyte()); - break; - - case Fit.SInt16: - values.Add(new short()); - break; - - case Fit.UInt16: - case Fit.UInt16z: - values.Add(new ushort()); - break; - - case Fit.SInt32: - values.Add(new int()); - break; - - case Fit.UInt32: - case Fit.UInt32z: - values.Add(new uint()); - break; - - case Fit.SInt64: - values.Add(new long()); - break; - - case Fit.UInt64: - case Fit.UInt64z: - values.Add(new ulong()); - break; - - case Fit.Float32: - values.Add(new float()); - break; - - case Fit.Float64: - values.Add(new double()); - break; - - case Fit.String: - values.Add(new byte[0]); - break; - - default: - break; - } - } - // Must convert value back to the base type, caller may have passed in an unexpected type. - switch (Type & Fit.BaseTypeNumMask) - { - case Fit.Enum: - case Fit.Byte: - case Fit.UInt8: - case Fit.UInt8z: - value = Convert.ToByte(value); - break; - - case Fit.SInt8: - value = Convert.ToSByte(value); - break; - - case Fit.SInt16: - value = Convert.ToInt16(value); - break; - - case Fit.UInt16: - case Fit.UInt16z: - value = Convert.ToUInt16(value); - break; - - case Fit.SInt32: - value = Convert.ToInt32(value); - break; - - case Fit.UInt32: - case Fit.UInt32z: - value = Convert.ToUInt32(value); - break; - - case Fit.SInt64: - value = Convert.ToInt64(value); - break; - - case Fit.UInt64: - case Fit.UInt64z: - value = Convert.ToUInt64(value); - break; - - case Fit.Float32: - value = Convert.ToSingle(value); - break; - - case Fit.Float64: - value = Convert.ToDouble(value); - break; - - default: - break; - - } - values[index] = value; - } - - public object GetRawValue(int index) - { - if (index >= values.Count || index < 0) - { - return null; - } - object value = values[index]; - return value; - } - - public bool IsNumeric() - { - bool isNumeric; - switch (Type & Fit.BaseTypeNumMask) - { - case Fit.Enum: - case Fit.String: - isNumeric = false; - break; - - case Fit.SInt8: - case Fit.UInt8: - case Fit.SInt16: - case Fit.UInt16: - case Fit.SInt32: - case Fit.UInt32: - case Fit.Float32: - case Fit.Float64: - case Fit.UInt8z: - case Fit.UInt16z: - case Fit.UInt32z: - case Fit.Byte: - case Fit.SInt64: - case Fit.UInt64: - case Fit.UInt64z: - isNumeric = true; - break; - - default: - throw new FitException("Field:IsNumeric - Unexpected Fit Type" + this.Type); - - } - return isNumeric; - } - #endregion - - } -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/FieldComponent.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/FieldComponent.cs deleted file mode 100644 index b6b0c291c..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/FieldComponent.cs +++ /dev/null @@ -1,76 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - /// - /// - /// - internal class FieldComponent - { - #region Fields - internal byte fieldNum; - internal bool accumulate; - internal int bits; - internal double scale; - internal double offset; - - internal long accumulatedValue = 0; - internal long lastValue = 0; - #endregion // Fields - - #region Properties - #endregion // Properties - - #region Constructors - internal FieldComponent(byte fieldNum, bool accumulate, int bits, double scale, double offset) - { - this.fieldNum = fieldNum; - this.accumulate = accumulate; - this.bits = bits; - this.scale = scale; - this.offset = offset; - } - - internal FieldComponent(FieldComponent component) - { - this.fieldNum = component.fieldNum; - this.accumulate = component.accumulate; - this.bits = component.bits; - this.scale = component.scale; - this.offset = component.offset; - this.accumulatedValue = component.accumulatedValue; - this.lastValue = component.lastValue; - } - #endregion // Constructors - - #region Methods - public long Accumulate(long value) - { - long mask = (1L << bits) - 1; - - accumulatedValue += (value - lastValue) & mask; - lastValue = value; - - return accumulatedValue; - } - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/FieldDefinition.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/FieldDefinition.cs deleted file mode 100644 index e471be8e1..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/FieldDefinition.cs +++ /dev/null @@ -1,65 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// - /// - public class FieldDefinition - { - #region Fields - - #endregion - - #region Properties - // Opt for the simpler form until we need a backing field - public byte Num { get; private set; } - public byte Size { get; private set; } - public byte Type { get; private set; } - #endregion - - #region Constructors - public FieldDefinition() - { - - } - - public FieldDefinition(Field field) - { - Num = field.Num; - Size = field.GetSize(); - Type = field.Type; - } - - public FieldDefinition(byte newNum, byte newSize, byte newType) - { - Num = newNum; - Size = newSize; - Type = newType; - } - - public FieldDefinition(FieldDefinition fieldDef) - { - Num = fieldDef.Num; - Size = fieldDef.Size; - Type = fieldDef.Type; - } - #endregion - - #region Methods - - #endregion - } -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/FitException.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/FitException.cs deleted file mode 100644 index aea27fbc7..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/FitException.cs +++ /dev/null @@ -1,45 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - /// - /// Extends System.Exception to provide application specific exceptions. - /// - public class FitException : Exception - { - #region Constructors - public FitException() - : base() - { - } - - public FitException(string message) - : base(message) - { - } - - public FitException(string str, Exception e) - : base(str, e) - { - } - #endregion - } -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Header.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Header.cs deleted file mode 100644 index 33f3adda7..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Header.cs +++ /dev/null @@ -1,174 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - /// - /// Implements .FIT header encode/decode. - /// - public class Header - { - #region Fields - private char[] dataType; - private byte size; - #endregion - - #region Properties - public byte Size - { - get - { - return size; - } - set - { - if (value == Fit.HeaderWithCRCSize || value == Fit.HeaderWithoutCRCSize) - { - size = value; - } - else - { - throw new FitException("Tried to set Header Size to " + value); - } - } - } - public byte ProtocolVersion { get; set; } - public ushort ProfileVersion { get; set; } - public uint DataSize { get; set; } - public ushort Crc { get; set; } - #endregion - - #region Constructors - /// - /// Build a standard header with CRC. The CRC will be - /// precomputed and it is assumed no data is present yet. - /// - [Obsolete("Headers now support multiple Protocol versions.")] - public Header() - : this(Dynastream.Fit.ProtocolVersion.V10) - { - } - - /// - /// Build a standard header with CRC. The CRC will be - /// precomputed and it is assumed no data is present yet. - /// - public Header(ProtocolVersion version) - { - Size = Fit.HeaderWithCRCSize; - ProtocolVersion = version.GetVersionByte(); - ProfileVersion = Fit.ProfileVersion; - DataSize = 0; - dataType = new char[] { '.', 'F', 'I', 'T' }; - - UpdateCRC(); - } - - /// - /// Build header by decoding callers stream. - /// - /// - public Header(Stream fitStream) - { - Read(fitStream); - } - #endregion - - #region Methods - /// - /// Verify Header format is valid. - /// - /// - public bool IsValid() - { - if (new string(dataType) == ".FIT") - { - // Don't enforce header CRC anymore - return true; - } - return false; - } - - /// - /// Populate header object by decoding callers stream - /// - /// Readable stream - public void Read(Stream fitStream) - { - BinaryReader binReader = new BinaryReader(fitStream); - try - { - Size = binReader.ReadByte(); - ProtocolVersion = binReader.ReadByte(); - ProfileVersion = binReader.ReadUInt16(); - DataSize = binReader.ReadUInt32(); - dataType = binReader.ReadChars(4); - if (Size == Fit.HeaderWithCRCSize) - { - Crc = binReader.ReadUInt16(); - } - else - { - Crc = 0x0000; - } - } - catch (EndOfStreamException e) - { - throw new FitException("Header:Read() Failed at byte " + fitStream.Position + " - ", e); - } - } - - /// - /// Output header object to beginning of callers writeable stream. Crc should - /// be recalculated before calling. - /// - /// Writeable, Seekable stream. Position set to end of header - public void Write(Stream fitStream) - { - BinaryWriter bw = new BinaryWriter(fitStream); - - bw.BaseStream.Position = 0; - - bw.Write(Size); - bw.Write(ProtocolVersion); - bw.Write(ProfileVersion); - bw.Write(DataSize); - bw.Write(dataType); - if (Size == Fit.HeaderWithCRCSize) - { - bw.Write(Crc); - } - } - - /// - /// Recompute the header CRC based on the current contents of the header object - /// - public void UpdateCRC() - { - using (MemoryStream ms = new MemoryStream()) - { - Write(ms); - byte[] headerBuffer = ms.ToArray(); - Crc = CRC.Calc16(headerBuffer, headerBuffer.Length - 2); - } - } - #endregion // methods - } // class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/IMesgBroadcastPlugin.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/IMesgBroadcastPlugin.cs deleted file mode 100644 index 6e8cda799..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/IMesgBroadcastPlugin.cs +++ /dev/null @@ -1,27 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - public interface IMesgBroadcastPlugin - { - void OnBroadcast(object sender, MesgBroadcastEventArgs e); - void OnIncomingMesg(object sender, IncomingMesgEventArgs e); - } -} \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Mesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Mesg.cs deleted file mode 100644 index de90b7f32..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Mesg.cs +++ /dev/null @@ -1,1144 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using Dynastream.Utility; - -namespace Dynastream.Fit -{ - /// - /// - /// - public class Mesg - { - #region Fields - protected byte localNum = 0; - protected uint systemTimeOffset = 0; - private List fields = new List(); - private readonly Dictionary developerFields - = new Dictionary(); - #endregion - - #region Properties - public string Name { get; set; } - public ushort Num { get; set; } - public byte LocalNum - { - get - { - return localNum; - } - set - { - if (value > Fit.LocalMesgNumMask) - { - throw new FitException("Mesg:LocalNum - Invalid Local message number " + value + ". Local message number must be < " + Fit.LocalMesgNumMask); - } - else - { - localNum = value; - } - } - } - - public IEnumerable Fields - { - get { return fields; } - } - - internal IList FieldsList - { - get { return fields; } - } - - public IEnumerable DeveloperFields - { - get { return developerFields.Values; } - } - #endregion - - #region Constructors - public Mesg(Mesg mesg) - { - if (mesg == null) - { - this.Name = "unknown"; - this.Num = (ushort)MesgNum.Invalid; - return; - } - this.Name = mesg.Name; - this.Num = mesg.Num; - this.LocalNum = mesg.LocalNum; - this.systemTimeOffset = mesg.systemTimeOffset; - foreach (Field field in mesg.FieldsList) - { - if (field.GetNumValues() > 0) - { - this.FieldsList.Add(new Field(field)); - } - } - - foreach (var fld in mesg.DeveloperFields) - { - if (fld.GetNumValues() > 0) - { - var key = new DeveloperDataKey(fld.DeveloperDataIndex, fld.Num); - developerFields[key] = new DeveloperField(fld); - } - } - } - - public Mesg(string name, ushort num) - { - this.Name = name; - this.Num = num; - } - - internal Mesg(ushort mesgNum) - : this(Profile.GetMesg(mesgNum)) - { - } - - public Mesg(Stream fitStream, MesgDefinition defnMesg) - : this(defnMesg.GlobalMesgNum) - { - Read(fitStream, defnMesg); - } - #endregion - - #region Methods - public void Read(Stream inStream, MesgDefinition defnMesg) - { - inStream.Position = 1; - EndianBinaryReader mesgReader = new EndianBinaryReader(inStream, defnMesg.IsBigEndian); - - LocalNum = defnMesg.LocalMesgNum; - - foreach (FieldDefinition fieldDef in defnMesg.GetFields()) - { - bool read = true; - - // It's possible the field type found in the field definition may - // not agree with the type defined in the profile. The profile - // type will be preferred for decode. - Field field = GetField(fieldDef.Num); - if (field == null) - { - // We normally won't have fields attached to our skeleton message, - // as we add values we need to add the fields too based on the mesg,field - // combo in the profile. Must derive from the profile so the scale etc - // is correct - field = new Field(Profile.GetMesg(this.Num).GetField(fieldDef.Num)); - if (field.Num == Fit.FieldNumInvalid) - { - // If there was no info in the profile the FieldNum will get set to invalid - // so preserve the unknown fields info while we know it - field.Num = fieldDef.Num; - field.SetType(fieldDef.Type); - } - SetField(field); - } - - if (field.Type != fieldDef.Type) - { - int fieldSize = Fit.BaseType[field.Type & Fit.BaseTypeNumMask].size; - int defSize = Fit.BaseType[fieldDef.Type & Fit.BaseTypeNumMask].size; - - if (defSize < fieldSize) - { - field.SetType(fieldDef.Type); - } - else if(defSize != fieldSize) - { - // Demotion is hard. Don't read the field if the - // sizes are different. Use the profile type if the - // signedness of the field has changed. - read = false; - } - } - - if (read) - { - ReadFieldValue(field, fieldDef.Size, mesgReader); - } - else - { - // Skip the bytes for the field if we aren't going to bother reading them - mesgReader.ReadBytes(fieldDef.Size); - } - } - - foreach (DeveloperFieldDefinition fldDef in defnMesg.DeveloperFieldDefinitions) - { - DeveloperField fld = GetDeveloperField(fldDef.FieldNum, fldDef.DeveloperDataIndex); - if (ReferenceEquals(fld, null)) - { - fld = new DeveloperField(fldDef); - SetDeveloperField(fld); - } - - ReadFieldValue(fld, fldDef.Size, mesgReader); - } - } - - private static void ReadFieldValue( - FieldBase field, - byte size, - EndianBinaryReader mesgReader) - { - byte baseType = (byte)(field.Type & Fit.BaseTypeNumMask); - // strings may be an array and are of variable length - if (baseType == Fit.String) - { - byte[] bytes = mesgReader.ReadBytes(size); - List utf8Bytes = new List(); - - if (!Array.Exists(bytes, x => x != 0)) - { - // Array has no non zero values, don't add any strings - return; - } - - for (int i = 0; i < size; i++) - { - byte b = bytes[i]; - utf8Bytes.Add(b); - - if (b == 0x00) - { - field.AddValue(utf8Bytes.ToArray()); - utf8Bytes.Clear(); - } - } - - if (utf8Bytes.Count != 0) - { - // Add a Null Terminator - utf8Bytes.Add(0); - field.AddValue(utf8Bytes.ToArray()); - utf8Bytes.Clear(); - } - } - else - { - int numElements = size / Fit.BaseType[baseType].size; - for (int i = 0; i < numElements; i++) - { - object value; - bool invalid = TryReadValue( - out value, - field.Type, - mesgReader, - size); - - if (!invalid || numElements > 1) - { - field.SetRawValue(i, value); - } - } - } - } - - private static bool TryReadValue( - out object value, - byte type, - EndianBinaryReader mesgReader, - byte size) - { - bool invalid = true; - byte baseTypeNum = (byte)(type & Fit.BaseTypeNumMask); - switch (baseTypeNum) - { - case Fit.Enum: - case Fit.Byte: - case Fit.UInt8: - case Fit.UInt8z: - value = mesgReader.ReadByte(); - if ((byte) value != (byte) Fit.BaseType[baseTypeNum].invalidValue) - { - invalid = false; - } - break; - - case Fit.SInt8: - value = mesgReader.ReadSByte(); - if ((sbyte) value != (sbyte) Fit.BaseType[baseTypeNum].invalidValue) - { - invalid = false; - } - break; - - case Fit.SInt16: - value = mesgReader.ReadInt16(); - if ((short) value != (short) Fit.BaseType[baseTypeNum].invalidValue) - { - invalid = false; - } - break; - - case Fit.UInt16: - case Fit.UInt16z: - value = mesgReader.ReadUInt16(); - if ((ushort) value != - (ushort) Fit.BaseType[baseTypeNum].invalidValue) - { - invalid = false; - } - break; - - case Fit.SInt32: - value = mesgReader.ReadInt32(); - if ((int) value != (int) Fit.BaseType[baseTypeNum].invalidValue) - { - invalid = false; - } - break; - - case Fit.UInt32: - case Fit.UInt32z: - value = mesgReader.ReadUInt32(); - if ((uint) value != (uint) Fit.BaseType[baseTypeNum].invalidValue) - { - invalid = false; - } - break; - - case Fit.SInt64: - value = mesgReader.ReadInt64(); - if ((long) value != (long) Fit.BaseType[baseTypeNum].invalidValue) - { - invalid = false; - } - break; - - case Fit.UInt64: - case Fit.UInt64z: - value = mesgReader.ReadUInt64(); - if ((ulong) value != (ulong) Fit.BaseType[baseTypeNum].invalidValue) - { - invalid = false; - } - break; - - case Fit.Float32: - value = mesgReader.ReadSingle(); - if (!float.IsNaN((float)value)) - { - invalid = false; - } - break; - - case Fit.Float64: - value = mesgReader.ReadDouble(); - if (!double.IsNaN((double)value)) - { - invalid = false; - } - break; - - default: - value = mesgReader.ReadBytes(size); - break; - } - - return invalid; - } - - public void Write(Stream outStream) - { - Write(outStream, null); - } - - public void Write(Stream outStream, MesgDefinition mesgDef) - { - if (mesgDef == null) - { - mesgDef = new MesgDefinition(this); - } - - EndianBinaryWriter bw = new EndianBinaryWriter(outStream, mesgDef.IsBigEndian); - bw.Write(LocalNum); - - foreach (FieldDefinition fieldDef in mesgDef.GetFields()) - { - Field field = GetField(fieldDef.Num); - if (null == field) - { - field = Profile.GetField(this.Num, fieldDef.Num); - if( null != field ) - { - FieldsList.Add(field); - } - else - { - field = new Field(fieldDef.Num, fieldDef.Type); - } - } - - WriteField(field, fieldDef.Size, bw); - } - - foreach (DeveloperFieldDefinition fieldDef in mesgDef.DeveloperFieldDefinitions) - { - DeveloperField field = GetDeveloperField(fieldDef.FieldNum, fieldDef.DeveloperDataIndex); - - if (field == null) - { - field = new DeveloperField(fieldDef); - SetDeveloperField(field); - } - - WriteField(field, fieldDef.Size, bw); - } - } - - private static void WriteField(FieldBase field, byte size, BinaryWriter bw) - { - byte baseType = (byte)(field.Type & Fit.BaseTypeNumMask); - - // The field could be blank, correctly formed or partially filled - while (field.GetSize() < size) - { - if (baseType == Fit.String) - { - // Figure out how much we have to pad - byte padAmount = (byte)(size - field.GetSize()); - //Has to be a string. - try - { - // Get the Last Value of the field - byte[] value = (byte[]) field.GetValue( field.GetNumValues() - 1 ); - List temp = new List(); - - if (value != null) - { - temp.AddRange(value); - } - - for(byte i = 0; i < padAmount; i++) - { - temp.Add( - Convert.ToByte( - Fit.BaseType[baseType].invalidValue)); - } - - field.SetValue(temp.ToArray()); - } - catch (Exception) - { - throw new FitException( - "Exception occurred while resizing field to match definition."); - } - } - else - { - field.AddValue(Fit.BaseType[baseType].invalidValue); - } - } - - for (int i = 0; i < field.GetNumValues(); i++) - { - object value = field.GetRawValue(i); - if (value == null) - { - value = Fit.BaseType[baseType].invalidValue; - } - - switch (baseType) - { - case Fit.Enum: - case Fit.Byte: - case Fit.UInt8: - case Fit.UInt8z: - bw.Write((byte) value); - break; - - case Fit.SInt8: - bw.Write((sbyte) value); - break; - - case Fit.SInt16: - bw.Write((short) value); - break; - - case Fit.UInt16: - case Fit.UInt16z: - bw.Write((ushort) value); - break; - - case Fit.SInt32: - bw.Write((int) value); - break; - - case Fit.UInt32: - case Fit.UInt32z: - bw.Write((uint) value); - break; - - case Fit.SInt64: - bw.Write((long) value); - break; - - case Fit.UInt64: - case Fit.UInt64z: - bw.Write((ulong) value); - break; - - case Fit.Float32: - bw.Write((float) value); - break; - - case Fit.Float64: - bw.Write((double) value); - break; - - case Fit.String: - bw.Write((byte[]) value); - break; - - default: - break; - } - } - } - - #region FieldList Manipulation Functions - public bool HasField(byte fieldNum) - { - foreach (Field field in FieldsList) - { - if (field.Num == fieldNum) - { - return true; - } - } - return false; - } - - public void SetDeveloperField(DeveloperField field) - { - var devKey = new DeveloperDataKey(field.DeveloperDataIndex, field.Num); - developerFields[devKey] = field; - } - - /// - /// Replace an existing field, otherwise add a reference to fields list - /// - /// Caller allocated field - public void SetField(Field field) - { - for (int i = 0; i < FieldsList.Count; i++) - { - if (FieldsList[i].Num == field.Num) - { - FieldsList[i] = field; - return; - } - } - FieldsList.Add(field); - } - - /// - /// Insert a field at the desired index. If the field already exists in the mesg it is first removed. - /// - /// Index to insert the field, if index is out of range, the field is added to the end of the list - /// Caller allocated field - public void InsertField(int index, Field field) - { - // if message already contains this field, remove it - for (int i = 0; i < FieldsList.Count; i++) - { - if (FieldsList[i].Num == field.Num) - { - FieldsList.RemoveAt(i); - } - } - // if the index is out of range, add to the end - if (index < 0 || index > FieldsList.Count) - { - FieldsList.Add(field); - } - // insert the new field at desired index - else - { - FieldsList.Insert(index, field); - } - } - - public void SetFields(Mesg mesg) - { - if (mesg.Num != Num) - { - return; - } - foreach (Field field in mesg.FieldsList) - { - SetField(new Field(field)); - } - } - - public int GetNumFields() - { - return FieldsList.Count; - } - - private DeveloperField GetDeveloperField(byte fieldNum, byte developerIndex) - { - var devKey = new DeveloperDataKey(developerIndex, fieldNum); - return developerFields.ContainsKey(devKey) ? developerFields[devKey] : null; - } - - public IEnumerable GetOverrideField(byte fieldNum) - { - LinkedList localFields = new LinkedList(); - - Field nativeField = GetField(fieldNum); - if (null != nativeField) - { - localFields.AddLast(nativeField); - } - - foreach(DeveloperField field in DeveloperFields.Where(x => x.NativeOverride == fieldNum)) - { - localFields.AddLast(field); - } - - return localFields; - } - - public Field GetField(byte fieldNum) - { - foreach (Field field in FieldsList) - { - if (field.Num == fieldNum) - { - return field; - } - } - - return null; - } - - public Field GetField(string fieldName) - { - return GetField(fieldName, true); - } - - public Field GetField(string fieldName, bool checkMesgSupportForSubFields) - { - foreach (Field field in FieldsList) - { - if (field.Name == fieldName) - { - return field; - } - - foreach (Subfield subfield in field.subfields) - { - if ((subfield.Name == fieldName) && (!checkMesgSupportForSubFields || (subfield.CanMesgSupport(this)))) - { - return field; - } - } - } - return null; - } - - public ushort GetActiveSubFieldIndex(byte fieldNum) - { - Field testField = new Field(this.GetField(fieldNum)); - - for (ushort i = 0; i < testField.subfields.Count; i++) - { - if (testField.subfields[i].CanMesgSupport(this)) - { - return i; - } - } - return Fit.SubfieldIndexMainField; - } - - public string GetActiveSubFieldName(byte fieldNum) - { - Field testField = new Field(this.GetField(fieldNum)); - - foreach (Subfield subfield in testField.subfields) - { - if (subfield.CanMesgSupport(this)) - { - return subfield.Name; - } - } - return Fit.SubfieldNameMainField; - } - - /// - /// Removes the specified field from this message. - /// - /// The Field to be removed from this message. - public void RemoveField(Field field) - { - FieldsList.Remove(field); - } - #endregion - - public int GetNumFieldValues(byte fieldNum) - { - Field field = GetField(fieldNum); - - if (field != null) - { - return field.GetNumValues(); - } - return 0; - } - - public int GetNumFieldValues(String fieldName) - { - Field field = GetField(fieldName); - - if (field != null) - { - return field.GetNumValues(); - } - return 0; - } - - public int GetNumFieldValues(byte fieldNum, ushort subfieldIndex) - { - Field field = GetField(fieldNum); - - if (field == null) - { - return 0; - } - - if (subfieldIndex == Fit.SubfieldIndexActiveSubfield) - { - return field.GetNumValues(); - } - - Subfield subfield = field.GetSubfield(subfieldIndex); - if ((subfield == null) || (subfield.CanMesgSupport(this))) - { - return field.GetNumValues(); - } - else - { - return 0; - } - } - - public int GetNumFieldValues(byte fieldNum, string subfieldName) - { - Field field = GetField(fieldNum); - - if (field == null) - { - return 0; - } - - Subfield subfield = field.GetSubfield(subfieldName); - if ((subfield == null) || (subfield.CanMesgSupport(this))) - { - return field.GetNumValues(); - } - else - { - return 0; - } - } - - public object GetFieldValue(byte fieldNum) - { - return GetFieldValue(fieldNum, 0, Fit.SubfieldIndexActiveSubfield); - } - - public object GetFieldValue(byte fieldNum, int fieldArrayIndex) - { - return GetFieldValue(fieldNum, fieldArrayIndex, Fit.SubfieldIndexActiveSubfield); - } - - public object GetFieldValue(byte fieldNum, int fieldArrayIndex, ushort subFieldIndex) - { - Field field = GetField(fieldNum); - - if (field == null) - { - return null; - } - - if (subFieldIndex == Fit.SubfieldIndexActiveSubfield) - { - return field.GetValue(fieldArrayIndex, GetActiveSubFieldIndex(fieldNum)); - } - else - { - Subfield subfield = field.GetSubfield(subFieldIndex); - - if ((subfield == null) || (subfield.CanMesgSupport(this))) - { - return field.GetValue(fieldArrayIndex, subFieldIndex); - } - else - { - return null; - } - } - } - - public object GetFieldValue(byte fieldNum, int fieldArrayIndex, string subfieldName) - { - Field field = GetField(fieldNum); - - if (field == null) - { - return null; - } - - Subfield subfield = field.GetSubfield(subfieldName); - - if ((subfield == null) || (subfield.CanMesgSupport(this))) - { - return field.GetValue(fieldArrayIndex, subfieldName); - } - else - { - return null; - } - } - - public object GetFieldValue(string name) - { - return GetFieldValue(name, 0); - } - - public object GetFieldValue(string name, int fieldArrayIndex) - { - Field field = GetField(name, false); - - if (field == null) - { - return null; - } - - Subfield subfield = field.GetSubfield(name); - - if ((subfield == null) || (subfield.CanMesgSupport(this))) - { - return field.GetValue(fieldArrayIndex, name); - } - else - { - return null; - } - } - - public bool GetIsFieldAccumulated(byte num) - { - Field field = GetField(num); - if (field != null) - { - return field.IsAccumulated; - } - return false; - } - - public void SetFieldValue(byte fieldNum, Object value) - { - SetFieldValue(fieldNum, 0, value, Fit.SubfieldIndexActiveSubfield); - } - - public void SetFieldValue(byte fieldNum, int fieldArrayIndex, Object value) - { - SetFieldValue(fieldNum, fieldArrayIndex, value, Fit.SubfieldIndexActiveSubfield); - } - - public void SetFieldValue(byte fieldNum, int fieldArrayIndex, Object value, ushort subfieldIndex) - { - if (subfieldIndex == Fit.SubfieldIndexActiveSubfield) - { - subfieldIndex = GetActiveSubFieldIndex(fieldNum); - } - else - { - Field testField = new Field(this.GetField(fieldNum)); - Subfield subfield = testField.GetSubfield(subfieldIndex); - - if ((subfield != null) && !(subfield.CanMesgSupport(this))) - { - return; - } - } - - Field field = GetField(fieldNum); - - if (field == null) - { - // We normally won't have fields attached to our skeleton message, - // as we add values we need to add the fields too based on the mesg,field - // combo in the profile. - field = new Field(Profile.GetMesg(this.Num).GetField(fieldNum)); - if (field.Num == Fit.FieldNumInvalid) - { - // If there was no info in the profile our FieldNum will get set to invalid, - // at least preserve FieldNum while we know it - field.Num = fieldNum; - } - SetField(field); - } - field.SetValue(fieldArrayIndex, value, subfieldIndex); - } - - public void SetFieldValue(byte fieldNum, int fieldArrayIndex, Object value, String subfieldName) - { - Field testField = new Field(this.GetField(fieldNum)); - Subfield subfield = testField.GetSubfield(subfieldName); - - if ((subfield != null) && !(subfield.CanMesgSupport(this))) - { - return; - } - - Field field = GetField(fieldNum); - - if (field == null) - { - // We normally won't have fields attached to our skeleton message, - // as we add values we need to add the fields too based on the mesg,field - // combo in the profile. - field = new Field(Profile.GetMesg(this.Num).GetField(fieldNum)); - if (field.Num == Fit.FieldNumInvalid) - { - // If there was no info in the profile our FieldNum will get set to invalid, - // at least preserve FieldNum while we know it - field.Num = fieldNum; - } - SetField(field); - } - field.SetValue(fieldArrayIndex, value, subfieldName); - } - - public void SetFieldValue(String name, Object value) - { - SetFieldValue(name, 0, value); - } - - public void SetFieldValue(String name, int fieldArrayIndex, Object value) - { - Field testField = new Field(this.GetField(name)); - Subfield subfield = testField.GetSubfield(name); - - if ((subfield != null) && !(subfield.CanMesgSupport(this))) - { - return; - } - - Field field = GetField(name, false); - - if (field == null) - { - field = new Field(Profile.GetMesg(this.Num).GetField(name)); - SetField(field); - } - - field.SetValue(fieldArrayIndex, value, name); - } - - public DateTime TimestampToDateTime(uint timestamp) - { - DateTime dateTime = new DateTime(timestamp); - dateTime.ConvertSystemTimeToUTC(systemTimeOffset); - - return dateTime; - } - - public DateTime TimestampToDateTime(uint? timestamp) - { - DateTime dateTime = null; - if (timestamp != null) - { - dateTime = new DateTime(timestamp ?? 0); - dateTime.ConvertSystemTimeToUTC(systemTimeOffset); - } - - return dateTime; - } - - /// - /// Removes all fields from this message that have been generated through - /// component expansion while decoding the source .FIT file. - /// - public void RemoveExpandedFields() - { - fields.RemoveAll(x => x.IsExpandedField); - } - - private IEnumerable ExpandComponentsInList(List componentList, Field currentField, int offset, Accumulator accumulator) - { - // When components.Count > 0 a field will be created and appended to the field list - if ((componentList != null) && (componentList.Count > 0)) - { - foreach (FieldComponent fC in componentList) - { - if (fC.fieldNum != Fit.FieldNumInvalid) - { - //Create a new field to expand into - Field newField = new Field(Profile.GetMesg(this.Num).GetField(fC.fieldNum)); - - // Mark that this field has been generated through expansion - newField.IsExpandedField = true; - - //cache a field that we use to set properties on - Field f = this.GetField(newField.Num); - - // GetBitsValue will not return more bits than the componentField type can hold. - // This means strings are built one letter at a time when using components - // which is a bad idea to start with) - long? bitsValue = currentField.GetBitsValue(offset, fC.bits, newField.Type); - if (bitsValue == null) - { - break; - } - - if (true == fC.accumulate) - { - bitsValue = accumulator.Accumulate(this.Num, fC.fieldNum, bitsValue.Value, fC.bits); - } - - if (newField.IsNumeric()) - { - // If the field is invalid, set the raw value so that - // the invalid value is not scaled or offset. - if (FitBaseType.IsNumericInvalid((long)bitsValue, newField.GetType())) - { - if (this.HasField(newField.Num)) - { - f.SetRawValue(f.GetNumValues(), bitsValue); - } - else - { - newField.SetRawValue(0, bitsValue); - } - } - else - { - double fbitsValue = Convert.ToDouble(bitsValue); - - fbitsValue = ((double)fbitsValue / fC.scale) - fC.offset; - - if (this.HasField(newField.Num)) - { - f.SetValue(f.GetNumValues(), fbitsValue); - } - else - { - newField.SetValue(fbitsValue); - } - } - } - // Shouldn't apply scale/offset to string or enum - else - { - object nonNumericBitsValue; - // Ensure strings are added as byte[] - if ((newField.Type & Fit.BaseTypeNumMask) == Fit.String) - { - nonNumericBitsValue = new byte[] { (byte)bitsValue }; - } - else - { - nonNumericBitsValue = bitsValue; - } - if (HasField(newField.Num)) - { - f.SetValue(f.GetNumValues(), nonNumericBitsValue); - } - else - { - newField.SetValue(nonNumericBitsValue); - } - } - offset += fC.bits; - - //Return each field as we iterate - yield return new FieldComponentExpansion(newField, offset); - } - } - } - } - - public void ExpandComponents() - { - ExpandComponents(null); - } - - public void ExpandComponents(Accumulator accumulator) - { - // Traverse the field list - // Change to for loop so we can add items as we iterate - for (int i = 0; i < FieldsList.Count; ++i) - { - List componentList = null; - // Determine the active subfield - ushort activeSubfield = GetActiveSubFieldIndex(FieldsList[i].Num); - - if (activeSubfield == Fit.SubfieldIndexMainField) - { - componentList = FieldsList[i].components; - } - else - { - componentList = FieldsList[i].GetSubfield(activeSubfield).Components; - } - - // Traverse the component list - int offset = 0; - foreach (FieldComponentExpansion f in ExpandComponentsInList(componentList, FieldsList[i], offset, accumulator)) - { - //Add the new field - FieldsList.Add(f.GetField()); - //update offset - offset = f.GetOffset(); - } - } - } - #endregion - } - - internal class FieldComponentExpansion - { - private int offset; - private Field field; - - public FieldComponentExpansion(Field f, int offset) - { - field = f; - this.offset = offset; - } - - public int GetOffset() - { - return offset; - } - - public Field GetField() - { - return field; - } - } -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/MesgBroadcaster.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/MesgBroadcaster.cs deleted file mode 100644 index add65afd4..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/MesgBroadcaster.cs +++ /dev/null @@ -1,1187 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - // Define our necessary event types (EventArgs and the delegate) - public delegate void MesgEventHandler(object sender, MesgEventArgs e); - public delegate void MesgDefinitionEventHandler(object sender, MesgDefinitionEventArgs e); - - public class MesgEventArgs : EventArgs - { - public Mesg mesg = null; - - public MesgEventArgs() - { - } - - public MesgEventArgs(Mesg newMesg) - { - mesg = new Mesg(newMesg); - } - } - - public class MesgDefinitionEventArgs : EventArgs - { - public MesgDefinition mesgDef = null; - - public MesgDefinitionEventArgs() - { - } - - public MesgDefinitionEventArgs(MesgDefinition newDefn) - { - mesgDef = new MesgDefinition(newDefn); - } - } - - /// - /// The MesgBroadcaster manages Mesg and MesgDefinition events. Its - /// handlers should be connected to the source of Mesg and MesgDef events - /// (such as a file decoder). - /// Clients may subscribe to the Broadcasters events (Mesg, Mesg Def - /// or specofic Profile Mesg) - /// - public class MesgBroadcaster - { - #region Methods & Events - public event MesgDefinitionEventHandler MesgDefinitionEvent; - public event MesgEventHandler MesgEvent; - // One event for every Profile Mesg - - - public event MesgEventHandler FileIdMesgEvent; - - public event MesgEventHandler FileCreatorMesgEvent; - - public event MesgEventHandler TimestampCorrelationMesgEvent; - - public event MesgEventHandler SoftwareMesgEvent; - - public event MesgEventHandler SlaveDeviceMesgEvent; - - public event MesgEventHandler CapabilitiesMesgEvent; - - public event MesgEventHandler FileCapabilitiesMesgEvent; - - public event MesgEventHandler MesgCapabilitiesMesgEvent; - - public event MesgEventHandler FieldCapabilitiesMesgEvent; - - public event MesgEventHandler DeviceSettingsMesgEvent; - - public event MesgEventHandler UserProfileMesgEvent; - - public event MesgEventHandler HrmProfileMesgEvent; - - public event MesgEventHandler SdmProfileMesgEvent; - - public event MesgEventHandler BikeProfileMesgEvent; - - public event MesgEventHandler ConnectivityMesgEvent; - - public event MesgEventHandler WatchfaceSettingsMesgEvent; - - public event MesgEventHandler OhrSettingsMesgEvent; - - public event MesgEventHandler TimeInZoneMesgEvent; - - public event MesgEventHandler ZonesTargetMesgEvent; - - public event MesgEventHandler SportMesgEvent; - - public event MesgEventHandler HrZoneMesgEvent; - - public event MesgEventHandler SpeedZoneMesgEvent; - - public event MesgEventHandler CadenceZoneMesgEvent; - - public event MesgEventHandler PowerZoneMesgEvent; - - public event MesgEventHandler MetZoneMesgEvent; - - public event MesgEventHandler DiveSettingsMesgEvent; - - public event MesgEventHandler DiveAlarmMesgEvent; - - public event MesgEventHandler DiveGasMesgEvent; - - public event MesgEventHandler GoalMesgEvent; - - public event MesgEventHandler ActivityMesgEvent; - - public event MesgEventHandler SessionMesgEvent; - - public event MesgEventHandler LapMesgEvent; - - public event MesgEventHandler LengthMesgEvent; - - public event MesgEventHandler RecordMesgEvent; - - public event MesgEventHandler EventMesgEvent; - - public event MesgEventHandler DeviceInfoMesgEvent; - - public event MesgEventHandler DeviceAuxBatteryInfoMesgEvent; - - public event MesgEventHandler TrainingFileMesgEvent; - - public event MesgEventHandler WeatherConditionsMesgEvent; - - public event MesgEventHandler WeatherAlertMesgEvent; - - public event MesgEventHandler GpsMetadataMesgEvent; - - public event MesgEventHandler CameraEventMesgEvent; - - public event MesgEventHandler GyroscopeDataMesgEvent; - - public event MesgEventHandler AccelerometerDataMesgEvent; - - public event MesgEventHandler MagnetometerDataMesgEvent; - - public event MesgEventHandler BarometerDataMesgEvent; - - public event MesgEventHandler ThreeDSensorCalibrationMesgEvent; - - public event MesgEventHandler OneDSensorCalibrationMesgEvent; - - public event MesgEventHandler VideoFrameMesgEvent; - - public event MesgEventHandler ObdiiDataMesgEvent; - - public event MesgEventHandler NmeaSentenceMesgEvent; - - public event MesgEventHandler AviationAttitudeMesgEvent; - - public event MesgEventHandler VideoMesgEvent; - - public event MesgEventHandler VideoTitleMesgEvent; - - public event MesgEventHandler VideoDescriptionMesgEvent; - - public event MesgEventHandler VideoClipMesgEvent; - - public event MesgEventHandler SetMesgEvent; - - public event MesgEventHandler JumpMesgEvent; - - public event MesgEventHandler SplitMesgEvent; - - public event MesgEventHandler ClimbProMesgEvent; - - public event MesgEventHandler FieldDescriptionMesgEvent; - - public event MesgEventHandler DeveloperDataIdMesgEvent; - - public event MesgEventHandler CourseMesgEvent; - - public event MesgEventHandler CoursePointMesgEvent; - - public event MesgEventHandler SegmentIdMesgEvent; - - public event MesgEventHandler SegmentLeaderboardEntryMesgEvent; - - public event MesgEventHandler SegmentPointMesgEvent; - - public event MesgEventHandler SegmentLapMesgEvent; - - public event MesgEventHandler SegmentFileMesgEvent; - - public event MesgEventHandler WorkoutMesgEvent; - - public event MesgEventHandler WorkoutSessionMesgEvent; - - public event MesgEventHandler WorkoutStepMesgEvent; - - public event MesgEventHandler ExerciseTitleMesgEvent; - - public event MesgEventHandler ScheduleMesgEvent; - - public event MesgEventHandler TotalsMesgEvent; - - public event MesgEventHandler WeightScaleMesgEvent; - - public event MesgEventHandler BloodPressureMesgEvent; - - public event MesgEventHandler MonitoringInfoMesgEvent; - - public event MesgEventHandler MonitoringMesgEvent; - - public event MesgEventHandler HrMesgEvent; - - public event MesgEventHandler StressLevelMesgEvent; - - public event MesgEventHandler MemoGlobMesgEvent; - - public event MesgEventHandler AntChannelIdMesgEvent; - - public event MesgEventHandler AntRxMesgEvent; - - public event MesgEventHandler AntTxMesgEvent; - - public event MesgEventHandler ExdScreenConfigurationMesgEvent; - - public event MesgEventHandler ExdDataFieldConfigurationMesgEvent; - - public event MesgEventHandler ExdDataConceptConfigurationMesgEvent; - - public event MesgEventHandler DiveSummaryMesgEvent; - - public event MesgEventHandler HrvMesgEvent; - - public event MesgEventHandler PadMesgEvent; - - - public void OnMesg(object sender, MesgEventArgs e) - { - // Notify any subscribers of either our general mesg event or specific profile mesg event - if (MesgEvent != null) - { - MesgEvent(sender, e); - } - - switch (e.mesg.Num) - { - - case (ushort)MesgNum.FileId: - if (FileIdMesgEvent != null) - { - FileIdMesg fileIdMesg = new FileIdMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = fileIdMesg; - FileIdMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.FileCreator: - if (FileCreatorMesgEvent != null) - { - FileCreatorMesg fileCreatorMesg = new FileCreatorMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = fileCreatorMesg; - FileCreatorMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.TimestampCorrelation: - if (TimestampCorrelationMesgEvent != null) - { - TimestampCorrelationMesg timestampCorrelationMesg = new TimestampCorrelationMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = timestampCorrelationMesg; - TimestampCorrelationMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Software: - if (SoftwareMesgEvent != null) - { - SoftwareMesg softwareMesg = new SoftwareMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = softwareMesg; - SoftwareMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.SlaveDevice: - if (SlaveDeviceMesgEvent != null) - { - SlaveDeviceMesg slaveDeviceMesg = new SlaveDeviceMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = slaveDeviceMesg; - SlaveDeviceMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Capabilities: - if (CapabilitiesMesgEvent != null) - { - CapabilitiesMesg capabilitiesMesg = new CapabilitiesMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = capabilitiesMesg; - CapabilitiesMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.FileCapabilities: - if (FileCapabilitiesMesgEvent != null) - { - FileCapabilitiesMesg fileCapabilitiesMesg = new FileCapabilitiesMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = fileCapabilitiesMesg; - FileCapabilitiesMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.MesgCapabilities: - if (MesgCapabilitiesMesgEvent != null) - { - MesgCapabilitiesMesg mesgCapabilitiesMesg = new MesgCapabilitiesMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = mesgCapabilitiesMesg; - MesgCapabilitiesMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.FieldCapabilities: - if (FieldCapabilitiesMesgEvent != null) - { - FieldCapabilitiesMesg fieldCapabilitiesMesg = new FieldCapabilitiesMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = fieldCapabilitiesMesg; - FieldCapabilitiesMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.DeviceSettings: - if (DeviceSettingsMesgEvent != null) - { - DeviceSettingsMesg deviceSettingsMesg = new DeviceSettingsMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = deviceSettingsMesg; - DeviceSettingsMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.UserProfile: - if (UserProfileMesgEvent != null) - { - UserProfileMesg userProfileMesg = new UserProfileMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = userProfileMesg; - UserProfileMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.HrmProfile: - if (HrmProfileMesgEvent != null) - { - HrmProfileMesg hrmProfileMesg = new HrmProfileMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = hrmProfileMesg; - HrmProfileMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.SdmProfile: - if (SdmProfileMesgEvent != null) - { - SdmProfileMesg sdmProfileMesg = new SdmProfileMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = sdmProfileMesg; - SdmProfileMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.BikeProfile: - if (BikeProfileMesgEvent != null) - { - BikeProfileMesg bikeProfileMesg = new BikeProfileMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = bikeProfileMesg; - BikeProfileMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Connectivity: - if (ConnectivityMesgEvent != null) - { - ConnectivityMesg connectivityMesg = new ConnectivityMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = connectivityMesg; - ConnectivityMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.WatchfaceSettings: - if (WatchfaceSettingsMesgEvent != null) - { - WatchfaceSettingsMesg watchfaceSettingsMesg = new WatchfaceSettingsMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = watchfaceSettingsMesg; - WatchfaceSettingsMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.OhrSettings: - if (OhrSettingsMesgEvent != null) - { - OhrSettingsMesg ohrSettingsMesg = new OhrSettingsMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = ohrSettingsMesg; - OhrSettingsMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.TimeInZone: - if (TimeInZoneMesgEvent != null) - { - TimeInZoneMesg timeInZoneMesg = new TimeInZoneMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = timeInZoneMesg; - TimeInZoneMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.ZonesTarget: - if (ZonesTargetMesgEvent != null) - { - ZonesTargetMesg zonesTargetMesg = new ZonesTargetMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = zonesTargetMesg; - ZonesTargetMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Sport: - if (SportMesgEvent != null) - { - SportMesg sportMesg = new SportMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = sportMesg; - SportMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.HrZone: - if (HrZoneMesgEvent != null) - { - HrZoneMesg hrZoneMesg = new HrZoneMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = hrZoneMesg; - HrZoneMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.SpeedZone: - if (SpeedZoneMesgEvent != null) - { - SpeedZoneMesg speedZoneMesg = new SpeedZoneMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = speedZoneMesg; - SpeedZoneMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.CadenceZone: - if (CadenceZoneMesgEvent != null) - { - CadenceZoneMesg cadenceZoneMesg = new CadenceZoneMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = cadenceZoneMesg; - CadenceZoneMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.PowerZone: - if (PowerZoneMesgEvent != null) - { - PowerZoneMesg powerZoneMesg = new PowerZoneMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = powerZoneMesg; - PowerZoneMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.MetZone: - if (MetZoneMesgEvent != null) - { - MetZoneMesg metZoneMesg = new MetZoneMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = metZoneMesg; - MetZoneMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.DiveSettings: - if (DiveSettingsMesgEvent != null) - { - DiveSettingsMesg diveSettingsMesg = new DiveSettingsMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = diveSettingsMesg; - DiveSettingsMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.DiveAlarm: - if (DiveAlarmMesgEvent != null) - { - DiveAlarmMesg diveAlarmMesg = new DiveAlarmMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = diveAlarmMesg; - DiveAlarmMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.DiveGas: - if (DiveGasMesgEvent != null) - { - DiveGasMesg diveGasMesg = new DiveGasMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = diveGasMesg; - DiveGasMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Goal: - if (GoalMesgEvent != null) - { - GoalMesg goalMesg = new GoalMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = goalMesg; - GoalMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Activity: - if (ActivityMesgEvent != null) - { - ActivityMesg activityMesg = new ActivityMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = activityMesg; - ActivityMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Session: - if (SessionMesgEvent != null) - { - SessionMesg sessionMesg = new SessionMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = sessionMesg; - SessionMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Lap: - if (LapMesgEvent != null) - { - LapMesg lapMesg = new LapMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = lapMesg; - LapMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Length: - if (LengthMesgEvent != null) - { - LengthMesg lengthMesg = new LengthMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = lengthMesg; - LengthMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Record: - if (RecordMesgEvent != null) - { - RecordMesg recordMesg = new RecordMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = recordMesg; - RecordMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Event: - if (EventMesgEvent != null) - { - EventMesg eventMesg = new EventMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = eventMesg; - EventMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.DeviceInfo: - if (DeviceInfoMesgEvent != null) - { - DeviceInfoMesg deviceInfoMesg = new DeviceInfoMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = deviceInfoMesg; - DeviceInfoMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.DeviceAuxBatteryInfo: - if (DeviceAuxBatteryInfoMesgEvent != null) - { - DeviceAuxBatteryInfoMesg deviceAuxBatteryInfoMesg = new DeviceAuxBatteryInfoMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = deviceAuxBatteryInfoMesg; - DeviceAuxBatteryInfoMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.TrainingFile: - if (TrainingFileMesgEvent != null) - { - TrainingFileMesg trainingFileMesg = new TrainingFileMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = trainingFileMesg; - TrainingFileMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.WeatherConditions: - if (WeatherConditionsMesgEvent != null) - { - WeatherConditionsMesg weatherConditionsMesg = new WeatherConditionsMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = weatherConditionsMesg; - WeatherConditionsMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.WeatherAlert: - if (WeatherAlertMesgEvent != null) - { - WeatherAlertMesg weatherAlertMesg = new WeatherAlertMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = weatherAlertMesg; - WeatherAlertMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.GpsMetadata: - if (GpsMetadataMesgEvent != null) - { - GpsMetadataMesg gpsMetadataMesg = new GpsMetadataMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = gpsMetadataMesg; - GpsMetadataMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.CameraEvent: - if (CameraEventMesgEvent != null) - { - CameraEventMesg cameraEventMesg = new CameraEventMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = cameraEventMesg; - CameraEventMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.GyroscopeData: - if (GyroscopeDataMesgEvent != null) - { - GyroscopeDataMesg gyroscopeDataMesg = new GyroscopeDataMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = gyroscopeDataMesg; - GyroscopeDataMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.AccelerometerData: - if (AccelerometerDataMesgEvent != null) - { - AccelerometerDataMesg accelerometerDataMesg = new AccelerometerDataMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = accelerometerDataMesg; - AccelerometerDataMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.MagnetometerData: - if (MagnetometerDataMesgEvent != null) - { - MagnetometerDataMesg magnetometerDataMesg = new MagnetometerDataMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = magnetometerDataMesg; - MagnetometerDataMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.BarometerData: - if (BarometerDataMesgEvent != null) - { - BarometerDataMesg barometerDataMesg = new BarometerDataMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = barometerDataMesg; - BarometerDataMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.ThreeDSensorCalibration: - if (ThreeDSensorCalibrationMesgEvent != null) - { - ThreeDSensorCalibrationMesg threeDSensorCalibrationMesg = new ThreeDSensorCalibrationMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = threeDSensorCalibrationMesg; - ThreeDSensorCalibrationMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.OneDSensorCalibration: - if (OneDSensorCalibrationMesgEvent != null) - { - OneDSensorCalibrationMesg oneDSensorCalibrationMesg = new OneDSensorCalibrationMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = oneDSensorCalibrationMesg; - OneDSensorCalibrationMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.VideoFrame: - if (VideoFrameMesgEvent != null) - { - VideoFrameMesg videoFrameMesg = new VideoFrameMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = videoFrameMesg; - VideoFrameMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.ObdiiData: - if (ObdiiDataMesgEvent != null) - { - ObdiiDataMesg obdiiDataMesg = new ObdiiDataMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = obdiiDataMesg; - ObdiiDataMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.NmeaSentence: - if (NmeaSentenceMesgEvent != null) - { - NmeaSentenceMesg nmeaSentenceMesg = new NmeaSentenceMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = nmeaSentenceMesg; - NmeaSentenceMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.AviationAttitude: - if (AviationAttitudeMesgEvent != null) - { - AviationAttitudeMesg aviationAttitudeMesg = new AviationAttitudeMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = aviationAttitudeMesg; - AviationAttitudeMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Video: - if (VideoMesgEvent != null) - { - VideoMesg videoMesg = new VideoMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = videoMesg; - VideoMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.VideoTitle: - if (VideoTitleMesgEvent != null) - { - VideoTitleMesg videoTitleMesg = new VideoTitleMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = videoTitleMesg; - VideoTitleMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.VideoDescription: - if (VideoDescriptionMesgEvent != null) - { - VideoDescriptionMesg videoDescriptionMesg = new VideoDescriptionMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = videoDescriptionMesg; - VideoDescriptionMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.VideoClip: - if (VideoClipMesgEvent != null) - { - VideoClipMesg videoClipMesg = new VideoClipMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = videoClipMesg; - VideoClipMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Set: - if (SetMesgEvent != null) - { - SetMesg setMesg = new SetMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = setMesg; - SetMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Jump: - if (JumpMesgEvent != null) - { - JumpMesg jumpMesg = new JumpMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = jumpMesg; - JumpMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Split: - if (SplitMesgEvent != null) - { - SplitMesg splitMesg = new SplitMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = splitMesg; - SplitMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.ClimbPro: - if (ClimbProMesgEvent != null) - { - ClimbProMesg climbProMesg = new ClimbProMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = climbProMesg; - ClimbProMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.FieldDescription: - if (FieldDescriptionMesgEvent != null) - { - FieldDescriptionMesg fieldDescriptionMesg = new FieldDescriptionMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = fieldDescriptionMesg; - FieldDescriptionMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.DeveloperDataId: - if (DeveloperDataIdMesgEvent != null) - { - DeveloperDataIdMesg developerDataIdMesg = new DeveloperDataIdMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = developerDataIdMesg; - DeveloperDataIdMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Course: - if (CourseMesgEvent != null) - { - CourseMesg courseMesg = new CourseMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = courseMesg; - CourseMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.CoursePoint: - if (CoursePointMesgEvent != null) - { - CoursePointMesg coursePointMesg = new CoursePointMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = coursePointMesg; - CoursePointMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.SegmentId: - if (SegmentIdMesgEvent != null) - { - SegmentIdMesg segmentIdMesg = new SegmentIdMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = segmentIdMesg; - SegmentIdMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.SegmentLeaderboardEntry: - if (SegmentLeaderboardEntryMesgEvent != null) - { - SegmentLeaderboardEntryMesg segmentLeaderboardEntryMesg = new SegmentLeaderboardEntryMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = segmentLeaderboardEntryMesg; - SegmentLeaderboardEntryMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.SegmentPoint: - if (SegmentPointMesgEvent != null) - { - SegmentPointMesg segmentPointMesg = new SegmentPointMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = segmentPointMesg; - SegmentPointMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.SegmentLap: - if (SegmentLapMesgEvent != null) - { - SegmentLapMesg segmentLapMesg = new SegmentLapMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = segmentLapMesg; - SegmentLapMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.SegmentFile: - if (SegmentFileMesgEvent != null) - { - SegmentFileMesg segmentFileMesg = new SegmentFileMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = segmentFileMesg; - SegmentFileMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Workout: - if (WorkoutMesgEvent != null) - { - WorkoutMesg workoutMesg = new WorkoutMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = workoutMesg; - WorkoutMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.WorkoutSession: - if (WorkoutSessionMesgEvent != null) - { - WorkoutSessionMesg workoutSessionMesg = new WorkoutSessionMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = workoutSessionMesg; - WorkoutSessionMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.WorkoutStep: - if (WorkoutStepMesgEvent != null) - { - WorkoutStepMesg workoutStepMesg = new WorkoutStepMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = workoutStepMesg; - WorkoutStepMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.ExerciseTitle: - if (ExerciseTitleMesgEvent != null) - { - ExerciseTitleMesg exerciseTitleMesg = new ExerciseTitleMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = exerciseTitleMesg; - ExerciseTitleMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Schedule: - if (ScheduleMesgEvent != null) - { - ScheduleMesg scheduleMesg = new ScheduleMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = scheduleMesg; - ScheduleMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Totals: - if (TotalsMesgEvent != null) - { - TotalsMesg totalsMesg = new TotalsMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = totalsMesg; - TotalsMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.WeightScale: - if (WeightScaleMesgEvent != null) - { - WeightScaleMesg weightScaleMesg = new WeightScaleMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = weightScaleMesg; - WeightScaleMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.BloodPressure: - if (BloodPressureMesgEvent != null) - { - BloodPressureMesg bloodPressureMesg = new BloodPressureMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = bloodPressureMesg; - BloodPressureMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.MonitoringInfo: - if (MonitoringInfoMesgEvent != null) - { - MonitoringInfoMesg monitoringInfoMesg = new MonitoringInfoMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = monitoringInfoMesg; - MonitoringInfoMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Monitoring: - if (MonitoringMesgEvent != null) - { - MonitoringMesg monitoringMesg = new MonitoringMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = monitoringMesg; - MonitoringMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Hr: - if (HrMesgEvent != null) - { - HrMesg hrMesg = new HrMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = hrMesg; - HrMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.StressLevel: - if (StressLevelMesgEvent != null) - { - StressLevelMesg stressLevelMesg = new StressLevelMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = stressLevelMesg; - StressLevelMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.MemoGlob: - if (MemoGlobMesgEvent != null) - { - MemoGlobMesg memoGlobMesg = new MemoGlobMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = memoGlobMesg; - MemoGlobMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.AntChannelId: - if (AntChannelIdMesgEvent != null) - { - AntChannelIdMesg antChannelIdMesg = new AntChannelIdMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = antChannelIdMesg; - AntChannelIdMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.AntRx: - if (AntRxMesgEvent != null) - { - AntRxMesg antRxMesg = new AntRxMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = antRxMesg; - AntRxMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.AntTx: - if (AntTxMesgEvent != null) - { - AntTxMesg antTxMesg = new AntTxMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = antTxMesg; - AntTxMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.ExdScreenConfiguration: - if (ExdScreenConfigurationMesgEvent != null) - { - ExdScreenConfigurationMesg exdScreenConfigurationMesg = new ExdScreenConfigurationMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = exdScreenConfigurationMesg; - ExdScreenConfigurationMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.ExdDataFieldConfiguration: - if (ExdDataFieldConfigurationMesgEvent != null) - { - ExdDataFieldConfigurationMesg exdDataFieldConfigurationMesg = new ExdDataFieldConfigurationMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = exdDataFieldConfigurationMesg; - ExdDataFieldConfigurationMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.ExdDataConceptConfiguration: - if (ExdDataConceptConfigurationMesgEvent != null) - { - ExdDataConceptConfigurationMesg exdDataConceptConfigurationMesg = new ExdDataConceptConfigurationMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = exdDataConceptConfigurationMesg; - ExdDataConceptConfigurationMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.DiveSummary: - if (DiveSummaryMesgEvent != null) - { - DiveSummaryMesg diveSummaryMesg = new DiveSummaryMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = diveSummaryMesg; - DiveSummaryMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Hrv: - if (HrvMesgEvent != null) - { - HrvMesg hrvMesg = new HrvMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = hrvMesg; - HrvMesgEvent(sender, mesgEventArgs); - } - break; - - case (ushort)MesgNum.Pad: - if (PadMesgEvent != null) - { - PadMesg padMesg = new PadMesg(e.mesg); - MesgEventArgs mesgEventArgs = new MesgEventArgs(); - mesgEventArgs.mesg = padMesg; - PadMesgEvent(sender, mesgEventArgs); - } - break; - - } - } - - public void OnMesgDefinition(object sender, MesgDefinitionEventArgs e) - { - // Notify any subscribers - if (MesgDefinitionEvent != null) - { - MesgDefinitionEvent(sender, e); - } - } - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/MesgDefinition.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/MesgDefinition.cs deleted file mode 100644 index ffde51ff5..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/MesgDefinition.cs +++ /dev/null @@ -1,345 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; -using Dynastream.Utility; - -namespace Dynastream.Fit -{ - /// - /// Architecture defaults to Little Endian (unless decoded from an binary defn as Big Endian) - /// This could be exposed in the future to programatically create BE streams. - /// - public class MesgDefinition - { - #region Fields - private byte architecture; - private byte localMesgNum; - private List fieldDefs = new List(); - private readonly List m_devFieldDefs = - new List(); - private byte header; - #endregion - - #region Properties - public ushort GlobalMesgNum { get; set; } - public byte LocalMesgNum - { - get - { - return localMesgNum; - } - set - { - if (value > Fit.LocalMesgNumMask) - { - throw new FitException("MesgDefinition:LocalMesgNum - Invalid Local message number " + value + ". Local message number must be < " + Fit.LocalMesgNumMask); - } - else - { - localMesgNum = value; - } - } - } - - public byte NumDevFields - { - get { return (byte)m_devFieldDefs.Count; } - } - - public byte NumFields { get; set; } - - public bool IsBigEndian - { - get - { - return architecture == Fit.BigEndian; - } - } - - private bool ContainsDevData - { - get { return (header & Fit.DevDataMask) == Fit.DevDataMask; } - } - - internal IEnumerable DeveloperFieldDefinitions - { - get - { - return m_devFieldDefs; - } - } - - #endregion - - #region Constructors - internal MesgDefinition() - { - LocalMesgNum = 0; - GlobalMesgNum = (ushort)MesgNum.Invalid; - architecture = Fit.LittleEndian; - } - - internal MesgDefinition( - Stream fitSource, - DeveloperDataLookup lookup) - { - Read(fitSource, lookup); - } - - public MesgDefinition(Stream fitSource) - : this(fitSource, null) - { - } - - public MesgDefinition(Mesg mesg) - { - LocalMesgNum = mesg.LocalNum; - GlobalMesgNum = mesg.Num; - architecture = Fit.LittleEndian; - NumFields = (byte)mesg.FieldsList.Count; - - foreach (Field field in mesg.FieldsList) - { - fieldDefs.Add(new FieldDefinition(field)); - } - - foreach (DeveloperField field in mesg.DeveloperFields) - { - m_devFieldDefs.Add(new DeveloperFieldDefinition( - field.Num, - field.GetSize(), - field.DeveloperDataIndex)); - } - } - - public MesgDefinition(MesgDefinition mesgDef) - { - LocalMesgNum = mesgDef.LocalMesgNum; - GlobalMesgNum = mesgDef.GlobalMesgNum; - architecture = mesgDef.IsBigEndian ? Fit.BigEndian : Fit.LittleEndian; - NumFields = mesgDef.NumFields; - - foreach (FieldDefinition fieldDef in mesgDef.fieldDefs) - { - fieldDefs.Add(new FieldDefinition(fieldDef)); - } - - m_devFieldDefs.AddRange(mesgDef.m_devFieldDefs); - } - #endregion - - #region Methods - - internal void Read(Stream fitSource, DeveloperDataLookup lookup) - { - fitSource.Position = 0; - EndianBinaryReader br = new EndianBinaryReader(fitSource, false); - - header = br.ReadByte(); - LocalMesgNum = (byte)(header & Fit.LocalMesgNumMask); - - byte reserved = br.ReadByte(); - architecture = br.ReadByte(); - br.IsBigEndian = this.IsBigEndian; - GlobalMesgNum = br.ReadUInt16(); - NumFields = br.ReadByte(); - for (int i = 0; i < NumFields; i++) - { - byte num = br.ReadByte(); - byte size = br.ReadByte(); - byte type = br.ReadByte(); - - FieldDefinition newField = new FieldDefinition(num, size, type); - fieldDefs.Add(newField); - } - - if (ContainsDevData) - { - byte devFldCount = br.ReadByte(); - for (int i = 0; i < devFldCount; i++) - { - // Seek to the Size - byte num = br.ReadByte(); - byte size = br.ReadByte(); - byte devIdx = br.ReadByte(); - DeveloperFieldDefinition defn; - var key = new DeveloperDataKey(devIdx, num); - Tuple tuple = lookup.GetMesgs(key); - - if (tuple != null) - { - defn = new DeveloperFieldDefinition(tuple.Item2, tuple.Item1, size); - } - else - { - defn = new DeveloperFieldDefinition(num, size, devIdx); - } - - m_devFieldDefs.Add(defn); - } - } - } - - public void Write(Stream fitDest) - { - BinaryWriter bw = new BinaryWriter(fitDest); - byte header = LocalMesgNum; - header |= Fit.MesgDefinitionMask; - header |= NumDevFields > 0 ? Fit.DevDataMask : (byte)0x00; - - bw.Write(header); - bw.Write(Fit.MesgDefinitionReserved); - bw.Write(Fit.LittleEndian); - bw.Write(GlobalMesgNum); - bw.Write(NumFields); - - if (NumFields != fieldDefs.Count) - { - throw new FitException("MesgDefinition:Write - Field Count Internal Error"); - } - - foreach (FieldDefinition def in fieldDefs) - { - bw.Write(def.Num); - bw.Write(def.Size); - bw.Write(def.Type); - } - - if (NumDevFields > 0) - { - bw.Write(NumDevFields); - } - - foreach (DeveloperFieldDefinition def in m_devFieldDefs) - { - bw.Write(def.FieldNum); - bw.Write(def.Size); - bw.Write(def.DeveloperDataIndex); - } - } - - public int GetMesgSize() - { - int mesgSize = 1; // header - - mesgSize += fieldDefs.Sum(x => x.Size); - mesgSize += m_devFieldDefs.Sum(x => x.Size); - - return mesgSize; - } - - public void AddField(FieldDefinition field) - { - fieldDefs.Add(field); - } - - public void ClearFields() - { - fieldDefs.Clear(); - } - - public int GetNumFields() - { - return fieldDefs.Count; - } - - public List GetFields() - { - // This is a reference to the real list - return fieldDefs; - } - - public FieldDefinition GetField(byte num) - { - foreach (FieldDefinition fieldDef in fieldDefs) - { - if (fieldDef.Num == num) - { - return fieldDef; - } - } - return null; - } - - internal DeveloperFieldDefinition GetDeveloperFieldDefinition(byte num, byte developerIndex) - { - return - m_devFieldDefs.FirstOrDefault( - def => (def.FieldNum == num) && (def.DeveloperDataIndex == developerIndex)); - } - - public bool Supports(Mesg mesg) - { - return Supports(new MesgDefinition(mesg)); - } - - public bool Supports(MesgDefinition mesgDef) - { - if (mesgDef == null) - { - return false; - } - - if (GlobalMesgNum != mesgDef.GlobalMesgNum) - { - return false; - } - - if (LocalMesgNum != mesgDef.LocalMesgNum) - { - return false; - } - - foreach (FieldDefinition fieldDef in mesgDef.GetFields()) - { - FieldDefinition supportedFieldDef = GetField(fieldDef.Num); - - if (supportedFieldDef == null) - { - return false; - } - - if (fieldDef.Size > supportedFieldDef.Size) - { - return false; - } - } - - foreach (DeveloperFieldDefinition fieldDef in mesgDef.DeveloperFieldDefinitions) - { - var supportedFieldDef = - GetDeveloperFieldDefinition(fieldDef.FieldNum, fieldDef.DeveloperDataIndex); - - if (supportedFieldDef == null) - { - return false; - } - - if (fieldDef.Size > supportedFieldDef.Size) - { - return false; - } - } - - return true; - } - #endregion - } -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile.cs deleted file mode 100644 index 3e93d82da..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile.cs +++ /dev/null @@ -1,4239 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - /// - /// Represents the Fit Profile including message, field and type definition. - /// - public static class Profile - { - #region Nested Types - - public enum Type - { - Enum, - Sint8, - Uint8, - Sint16, - Uint16, - Sint32, - Uint32, - String, - Float32, - Float64, - Uint8z, - Uint16z, - Uint32z, - Byte, - Sint64, - Uint64, - Uint64z, - Bool, - File, - MesgNum, - Checksum, - FileFlags, - MesgCount, - DateTime, - LocalDateTime, - MessageIndex, - DeviceIndex, - Gender, - Language, - LanguageBits0, - LanguageBits1, - LanguageBits2, - LanguageBits3, - LanguageBits4, - TimeZone, - DisplayMeasure, - DisplayHeart, - DisplayPower, - DisplayPosition, - Switch, - Sport, - SportBits0, - SportBits1, - SportBits2, - SportBits3, - SportBits4, - SportBits5, - SportBits6, - SubSport, - SportEvent, - Activity, - Intensity, - SessionTrigger, - AutolapTrigger, - LapTrigger, - TimeMode, - BacklightMode, - DateMode, - BacklightTimeout, - Event, - EventType, - TimerTrigger, - FitnessEquipmentState, - Tone, - Autoscroll, - ActivityClass, - HrZoneCalc, - PwrZoneCalc, - WktStepDuration, - WktStepTarget, - Goal, - GoalRecurrence, - GoalSource, - Schedule, - CoursePoint, - Manufacturer, - GarminProduct, - AntplusDeviceType, - AntNetwork, - WorkoutCapabilities, - BatteryStatus, - HrType, - CourseCapabilities, - Weight, - WorkoutHr, - WorkoutPower, - BpStatus, - UserLocalId, - SwimStroke, - ActivityType, - ActivitySubtype, - ActivityLevel, - Side, - LeftRightBalance, - LeftRightBalance100, - LengthType, - DayOfWeek, - ConnectivityCapabilities, - WeatherReport, - WeatherStatus, - WeatherSeverity, - WeatherSevereType, - TimeIntoDay, - LocaltimeIntoDay, - StrokeType, - BodyLocation, - SegmentLapStatus, - SegmentLeaderboardType, - SegmentDeleteStatus, - SegmentSelectionType, - SourceType, - LocalDeviceType, - BleDeviceType, - DisplayOrientation, - WorkoutEquipment, - WatchfaceMode, - DigitalWatchfaceLayout, - AnalogWatchfaceLayout, - RiderPositionType, - PowerPhaseType, - CameraEventType, - SensorType, - BikeLightNetworkConfigType, - CommTimeoutType, - CameraOrientationType, - AttitudeStage, - AttitudeValidity, - AutoSyncFrequency, - ExdLayout, - ExdDisplayType, - ExdDataUnits, - ExdQualifiers, - ExdDescriptors, - AutoActivityDetect, - SupportedExdScreenLayouts, - FitBaseType, - TurnType, - BikeLightBeamAngleMode, - FitBaseUnit, - SetType, - ExerciseCategory, - BenchPressExerciseName, - CalfRaiseExerciseName, - CardioExerciseName, - CarryExerciseName, - ChopExerciseName, - CoreExerciseName, - CrunchExerciseName, - CurlExerciseName, - DeadliftExerciseName, - FlyeExerciseName, - HipRaiseExerciseName, - HipStabilityExerciseName, - HipSwingExerciseName, - HyperextensionExerciseName, - LateralRaiseExerciseName, - LegCurlExerciseName, - LegRaiseExerciseName, - LungeExerciseName, - OlympicLiftExerciseName, - PlankExerciseName, - PlyoExerciseName, - PullUpExerciseName, - PushUpExerciseName, - RowExerciseName, - ShoulderPressExerciseName, - ShoulderStabilityExerciseName, - ShrugExerciseName, - SitUpExerciseName, - SquatExerciseName, - TotalBodyExerciseName, - TricepsExtensionExerciseName, - WarmUpExerciseName, - RunExerciseName, - WaterType, - TissueModelType, - DiveGasStatus, - DiveAlarmType, - DiveBacklightMode, - FaveroProduct, - SplitType, - ClimbProEvent, - TapSensitivity, - RadarThreatLevelType, - - NumTypes - } - - #endregion - - #region Fields - - private static readonly Dictionary m_mesgLookup = new Dictionary(); - - #endregion // Fields - - #region Properties - - #endregion - - #region Constructors - - #endregion - - #region Methods - public static Mesg GetMesg(ushort globalMesgNum) - { - Mesg mesg = LookupMesg(globalMesgNum); - - if(null != mesg) - { - return mesg; - } - - return new Mesg("unknown", globalMesgNum); - } - - public static Field GetField(ushort globalMesgNum, byte fieldNum) - { - Mesg mesg = LookupMesg(globalMesgNum); - - if(null != mesg) - { - return mesg.GetField(fieldNum); - } - - return new Field("unknown", fieldNum, 0, 1, 0, "", false, Type.Enum); - } - - public static Field GetField(ushort globalMesgNum, string fieldName) - { - Mesg mesg = LookupMesg(globalMesgNum); - - if(null != mesg) - { - return mesg.GetField(fieldName); - } - - return null; - } - - private static Mesg LookupMesg(ushort globalMesgNum) - { - Mesg rv = null; - if(!m_mesgLookup.ContainsKey(globalMesgNum)) - { - // Maybe it isnt in the lookup because we haven't initialized it - // yet - InitMesg(globalMesgNum); - } - - return m_mesgLookup.TryGetValue(globalMesgNum, out rv) ? rv : null; - } - - private static void InitMesg(ushort num) - { - Mesg newMesg = null; - if(m_mesgLookup.ContainsKey(num)) - { - // Message has already been initialized - return; - } - - switch(num) - { - case MesgNum.FileId: - newMesg = CreateFileIdMesg(); - break; - - case MesgNum.FileCreator: - newMesg = CreateFileCreatorMesg(); - break; - - case MesgNum.TimestampCorrelation: - newMesg = CreateTimestampCorrelationMesg(); - break; - - case MesgNum.Software: - newMesg = CreateSoftwareMesg(); - break; - - case MesgNum.SlaveDevice: - newMesg = CreateSlaveDeviceMesg(); - break; - - case MesgNum.Capabilities: - newMesg = CreateCapabilitiesMesg(); - break; - - case MesgNum.FileCapabilities: - newMesg = CreateFileCapabilitiesMesg(); - break; - - case MesgNum.MesgCapabilities: - newMesg = CreateMesgCapabilitiesMesg(); - break; - - case MesgNum.FieldCapabilities: - newMesg = CreateFieldCapabilitiesMesg(); - break; - - case MesgNum.DeviceSettings: - newMesg = CreateDeviceSettingsMesg(); - break; - - case MesgNum.UserProfile: - newMesg = CreateUserProfileMesg(); - break; - - case MesgNum.HrmProfile: - newMesg = CreateHrmProfileMesg(); - break; - - case MesgNum.SdmProfile: - newMesg = CreateSdmProfileMesg(); - break; - - case MesgNum.BikeProfile: - newMesg = CreateBikeProfileMesg(); - break; - - case MesgNum.Connectivity: - newMesg = CreateConnectivityMesg(); - break; - - case MesgNum.WatchfaceSettings: - newMesg = CreateWatchfaceSettingsMesg(); - break; - - case MesgNum.OhrSettings: - newMesg = CreateOhrSettingsMesg(); - break; - - case MesgNum.TimeInZone: - newMesg = CreateTimeInZoneMesg(); - break; - - case MesgNum.ZonesTarget: - newMesg = CreateZonesTargetMesg(); - break; - - case MesgNum.Sport: - newMesg = CreateSportMesg(); - break; - - case MesgNum.HrZone: - newMesg = CreateHrZoneMesg(); - break; - - case MesgNum.SpeedZone: - newMesg = CreateSpeedZoneMesg(); - break; - - case MesgNum.CadenceZone: - newMesg = CreateCadenceZoneMesg(); - break; - - case MesgNum.PowerZone: - newMesg = CreatePowerZoneMesg(); - break; - - case MesgNum.MetZone: - newMesg = CreateMetZoneMesg(); - break; - - case MesgNum.DiveSettings: - newMesg = CreateDiveSettingsMesg(); - break; - - case MesgNum.DiveAlarm: - newMesg = CreateDiveAlarmMesg(); - break; - - case MesgNum.DiveGas: - newMesg = CreateDiveGasMesg(); - break; - - case MesgNum.Goal: - newMesg = CreateGoalMesg(); - break; - - case MesgNum.Activity: - newMesg = CreateActivityMesg(); - break; - - case MesgNum.Session: - newMesg = CreateSessionMesg(); - break; - - case MesgNum.Lap: - newMesg = CreateLapMesg(); - break; - - case MesgNum.Length: - newMesg = CreateLengthMesg(); - break; - - case MesgNum.Record: - newMesg = CreateRecordMesg(); - break; - - case MesgNum.Event: - newMesg = CreateEventMesg(); - break; - - case MesgNum.DeviceInfo: - newMesg = CreateDeviceInfoMesg(); - break; - - case MesgNum.DeviceAuxBatteryInfo: - newMesg = CreateDeviceAuxBatteryInfoMesg(); - break; - - case MesgNum.TrainingFile: - newMesg = CreateTrainingFileMesg(); - break; - - case MesgNum.WeatherConditions: - newMesg = CreateWeatherConditionsMesg(); - break; - - case MesgNum.WeatherAlert: - newMesg = CreateWeatherAlertMesg(); - break; - - case MesgNum.GpsMetadata: - newMesg = CreateGpsMetadataMesg(); - break; - - case MesgNum.CameraEvent: - newMesg = CreateCameraEventMesg(); - break; - - case MesgNum.GyroscopeData: - newMesg = CreateGyroscopeDataMesg(); - break; - - case MesgNum.AccelerometerData: - newMesg = CreateAccelerometerDataMesg(); - break; - - case MesgNum.MagnetometerData: - newMesg = CreateMagnetometerDataMesg(); - break; - - case MesgNum.BarometerData: - newMesg = CreateBarometerDataMesg(); - break; - - case MesgNum.ThreeDSensorCalibration: - newMesg = CreateThreeDSensorCalibrationMesg(); - break; - - case MesgNum.OneDSensorCalibration: - newMesg = CreateOneDSensorCalibrationMesg(); - break; - - case MesgNum.VideoFrame: - newMesg = CreateVideoFrameMesg(); - break; - - case MesgNum.ObdiiData: - newMesg = CreateObdiiDataMesg(); - break; - - case MesgNum.NmeaSentence: - newMesg = CreateNmeaSentenceMesg(); - break; - - case MesgNum.AviationAttitude: - newMesg = CreateAviationAttitudeMesg(); - break; - - case MesgNum.Video: - newMesg = CreateVideoMesg(); - break; - - case MesgNum.VideoTitle: - newMesg = CreateVideoTitleMesg(); - break; - - case MesgNum.VideoDescription: - newMesg = CreateVideoDescriptionMesg(); - break; - - case MesgNum.VideoClip: - newMesg = CreateVideoClipMesg(); - break; - - case MesgNum.Set: - newMesg = CreateSetMesg(); - break; - - case MesgNum.Jump: - newMesg = CreateJumpMesg(); - break; - - case MesgNum.Split: - newMesg = CreateSplitMesg(); - break; - - case MesgNum.ClimbPro: - newMesg = CreateClimbProMesg(); - break; - - case MesgNum.FieldDescription: - newMesg = CreateFieldDescriptionMesg(); - break; - - case MesgNum.DeveloperDataId: - newMesg = CreateDeveloperDataIdMesg(); - break; - - case MesgNum.Course: - newMesg = CreateCourseMesg(); - break; - - case MesgNum.CoursePoint: - newMesg = CreateCoursePointMesg(); - break; - - case MesgNum.SegmentId: - newMesg = CreateSegmentIdMesg(); - break; - - case MesgNum.SegmentLeaderboardEntry: - newMesg = CreateSegmentLeaderboardEntryMesg(); - break; - - case MesgNum.SegmentPoint: - newMesg = CreateSegmentPointMesg(); - break; - - case MesgNum.SegmentLap: - newMesg = CreateSegmentLapMesg(); - break; - - case MesgNum.SegmentFile: - newMesg = CreateSegmentFileMesg(); - break; - - case MesgNum.Workout: - newMesg = CreateWorkoutMesg(); - break; - - case MesgNum.WorkoutSession: - newMesg = CreateWorkoutSessionMesg(); - break; - - case MesgNum.WorkoutStep: - newMesg = CreateWorkoutStepMesg(); - break; - - case MesgNum.ExerciseTitle: - newMesg = CreateExerciseTitleMesg(); - break; - - case MesgNum.Schedule: - newMesg = CreateScheduleMesg(); - break; - - case MesgNum.Totals: - newMesg = CreateTotalsMesg(); - break; - - case MesgNum.WeightScale: - newMesg = CreateWeightScaleMesg(); - break; - - case MesgNum.BloodPressure: - newMesg = CreateBloodPressureMesg(); - break; - - case MesgNum.MonitoringInfo: - newMesg = CreateMonitoringInfoMesg(); - break; - - case MesgNum.Monitoring: - newMesg = CreateMonitoringMesg(); - break; - - case MesgNum.Hr: - newMesg = CreateHrMesg(); - break; - - case MesgNum.StressLevel: - newMesg = CreateStressLevelMesg(); - break; - - case MesgNum.MemoGlob: - newMesg = CreateMemoGlobMesg(); - break; - - case MesgNum.AntChannelId: - newMesg = CreateAntChannelIdMesg(); - break; - - case MesgNum.AntRx: - newMesg = CreateAntRxMesg(); - break; - - case MesgNum.AntTx: - newMesg = CreateAntTxMesg(); - break; - - case MesgNum.ExdScreenConfiguration: - newMesg = CreateExdScreenConfigurationMesg(); - break; - - case MesgNum.ExdDataFieldConfiguration: - newMesg = CreateExdDataFieldConfigurationMesg(); - break; - - case MesgNum.ExdDataConceptConfiguration: - newMesg = CreateExdDataConceptConfigurationMesg(); - break; - - case MesgNum.DiveSummary: - newMesg = CreateDiveSummaryMesg(); - break; - - case MesgNum.Hrv: - newMesg = CreateHrvMesg(); - break; - - case MesgNum.Pad: - newMesg = CreatePadMesg(); - break; - - default: - break; - } - - if(null != newMesg) - { - lock(m_mesgLookup) - { - // Make Sure another thread didn't get here first - if(!m_mesgLookup.ContainsKey(num)) - { - m_mesgLookup.Add(num, newMesg); - } - } - } - } - - #pragma warning disable 0168 - #pragma warning disable 0219 - private static Mesg CreateFileIdMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("FileId", MesgNum.FileId); - fieldIndex = 0; - newMesg.SetField(new Field("Type", 0, 0, 1, 0, "", false, Type.File)); - fieldIndex++; - newMesg.SetField(new Field("Manufacturer", 1, 132, 1, 0, "", false, Type.Manufacturer)); - fieldIndex++; - newMesg.SetField(new Field("Product", 2, 132, 1, 0, "", false, Type.Uint16)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("FaveroProduct", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 263); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("GarminProduct", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 1); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 15); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 13); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 89); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("SerialNumber", 3, 140, 1, 0, "", false, Type.Uint32z)); - fieldIndex++; - newMesg.SetField(new Field("TimeCreated", 4, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Number", 5, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ProductName", 8, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateFileCreatorMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("FileCreator", MesgNum.FileCreator); - fieldIndex = 0; - newMesg.SetField(new Field("SoftwareVersion", 0, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("HardwareVersion", 1, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateTimestampCorrelationMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("TimestampCorrelation", MesgNum.TimestampCorrelation); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("FractionalTimestamp", 0, 132, 32768, 0, "s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SystemTimestamp", 1, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("FractionalSystemTimestamp", 2, 132, 32768, 0, "s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("LocalTimestamp", 3, 134, 1, 0, "s", false, Type.LocalDateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimestampMs", 4, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SystemTimestampMs", 5, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSoftwareMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Software", MesgNum.Software); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Version", 3, 132, 100, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("PartNumber", 5, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSlaveDeviceMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("SlaveDevice", MesgNum.SlaveDevice); - fieldIndex = 0; - newMesg.SetField(new Field("Manufacturer", 0, 132, 1, 0, "", false, Type.Manufacturer)); - fieldIndex++; - newMesg.SetField(new Field("Product", 1, 132, 1, 0, "", false, Type.Uint16)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("FaveroProduct", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 263); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("GarminProduct", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 1); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 15); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 13); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 89); - subfieldIndex++; - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateCapabilitiesMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Capabilities", MesgNum.Capabilities); - fieldIndex = 0; - newMesg.SetField(new Field("Languages", 0, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("Sports", 1, 10, 1, 0, "", false, Type.SportBits0)); - fieldIndex++; - newMesg.SetField(new Field("WorkoutsSupported", 21, 140, 1, 0, "", false, Type.WorkoutCapabilities)); - fieldIndex++; - newMesg.SetField(new Field("ConnectivitySupported", 23, 140, 1, 0, "", false, Type.ConnectivityCapabilities)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateFileCapabilitiesMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("FileCapabilities", MesgNum.FileCapabilities); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Type", 0, 0, 1, 0, "", false, Type.File)); - fieldIndex++; - newMesg.SetField(new Field("Flags", 1, 10, 1, 0, "", false, Type.FileFlags)); - fieldIndex++; - newMesg.SetField(new Field("Directory", 2, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("MaxCount", 3, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxSize", 4, 134, 1, 0, "bytes", false, Type.Uint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateMesgCapabilitiesMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("MesgCapabilities", MesgNum.MesgCapabilities); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("File", 0, 0, 1, 0, "", false, Type.File)); - fieldIndex++; - newMesg.SetField(new Field("MesgNum", 1, 132, 1, 0, "", false, Type.MesgNum)); - fieldIndex++; - newMesg.SetField(new Field("CountType", 2, 0, 1, 0, "", false, Type.MesgCount)); - fieldIndex++; - newMesg.SetField(new Field("Count", 3, 132, 1, 0, "", false, Type.Uint16)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("NumPerFile", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(2, 0); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("MaxPerFile", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(2, 1); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("MaxPerFileType", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(2, 2); - subfieldIndex++; - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateFieldCapabilitiesMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("FieldCapabilities", MesgNum.FieldCapabilities); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("File", 0, 0, 1, 0, "", false, Type.File)); - fieldIndex++; - newMesg.SetField(new Field("MesgNum", 1, 132, 1, 0, "", false, Type.MesgNum)); - fieldIndex++; - newMesg.SetField(new Field("FieldNum", 2, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Count", 3, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateDeviceSettingsMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("DeviceSettings", MesgNum.DeviceSettings); - fieldIndex = 0; - newMesg.SetField(new Field("ActiveTimeZone", 0, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("UtcOffset", 1, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeOffset", 2, 134, 1, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeMode", 4, 0, 1, 0, "", false, Type.TimeMode)); - fieldIndex++; - newMesg.SetField(new Field("TimeZoneOffset", 5, 1, 4, 0, "hr", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("BacklightMode", 12, 0, 1, 0, "", false, Type.BacklightMode)); - fieldIndex++; - newMesg.SetField(new Field("ActivityTrackerEnabled", 36, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("ClockTime", 39, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("PagesEnabled", 40, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MoveAlertEnabled", 46, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("DateMode", 47, 0, 1, 0, "", false, Type.DateMode)); - fieldIndex++; - newMesg.SetField(new Field("DisplayOrientation", 55, 0, 1, 0, "", false, Type.DisplayOrientation)); - fieldIndex++; - newMesg.SetField(new Field("MountingSide", 56, 0, 1, 0, "", false, Type.Side)); - fieldIndex++; - newMesg.SetField(new Field("DefaultPage", 57, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AutosyncMinSteps", 58, 132, 1, 0, "steps", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AutosyncMinTime", 59, 132, 1, 0, "minutes", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("LactateThresholdAutodetectEnabled", 80, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("BleAutoUploadEnabled", 86, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("AutoSyncFrequency", 89, 0, 1, 0, "", false, Type.AutoSyncFrequency)); - fieldIndex++; - newMesg.SetField(new Field("AutoActivityDetect", 90, 134, 1, 0, "", false, Type.AutoActivityDetect)); - fieldIndex++; - newMesg.SetField(new Field("NumberOfScreens", 94, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("SmartNotificationDisplayOrientation", 95, 0, 1, 0, "", false, Type.DisplayOrientation)); - fieldIndex++; - newMesg.SetField(new Field("TapInterface", 134, 0, 1, 0, "", false, Type.Switch)); - fieldIndex++; - newMesg.SetField(new Field("TapSensitivity", 174, 0, 1, 0, "", false, Type.TapSensitivity)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateUserProfileMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("UserProfile", MesgNum.UserProfile); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("FriendlyName", 0, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Gender", 1, 0, 1, 0, "", false, Type.Gender)); - fieldIndex++; - newMesg.SetField(new Field("Age", 2, 2, 1, 0, "years", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Height", 3, 2, 100, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Weight", 4, 132, 10, 0, "kg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Language", 5, 0, 1, 0, "", false, Type.Language)); - fieldIndex++; - newMesg.SetField(new Field("ElevSetting", 6, 0, 1, 0, "", false, Type.DisplayMeasure)); - fieldIndex++; - newMesg.SetField(new Field("WeightSetting", 7, 0, 1, 0, "", false, Type.DisplayMeasure)); - fieldIndex++; - newMesg.SetField(new Field("RestingHeartRate", 8, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("DefaultMaxRunningHeartRate", 9, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("DefaultMaxBikingHeartRate", 10, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("DefaultMaxHeartRate", 11, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("HrSetting", 12, 0, 1, 0, "", false, Type.DisplayHeart)); - fieldIndex++; - newMesg.SetField(new Field("SpeedSetting", 13, 0, 1, 0, "", false, Type.DisplayMeasure)); - fieldIndex++; - newMesg.SetField(new Field("DistSetting", 14, 0, 1, 0, "", false, Type.DisplayMeasure)); - fieldIndex++; - newMesg.SetField(new Field("PowerSetting", 16, 0, 1, 0, "", false, Type.DisplayPower)); - fieldIndex++; - newMesg.SetField(new Field("ActivityClass", 17, 0, 1, 0, "", false, Type.ActivityClass)); - fieldIndex++; - newMesg.SetField(new Field("PositionSetting", 18, 0, 1, 0, "", false, Type.DisplayPosition)); - fieldIndex++; - newMesg.SetField(new Field("TemperatureSetting", 21, 0, 1, 0, "", false, Type.DisplayMeasure)); - fieldIndex++; - newMesg.SetField(new Field("LocalId", 22, 132, 1, 0, "", false, Type.UserLocalId)); - fieldIndex++; - newMesg.SetField(new Field("GlobalId", 23, 13, 1, 0, "", false, Type.Byte)); - fieldIndex++; - newMesg.SetField(new Field("WakeTime", 28, 134, 1, 0, "", false, Type.LocaltimeIntoDay)); - fieldIndex++; - newMesg.SetField(new Field("SleepTime", 29, 134, 1, 0, "", false, Type.LocaltimeIntoDay)); - fieldIndex++; - newMesg.SetField(new Field("HeightSetting", 30, 0, 1, 0, "", false, Type.DisplayMeasure)); - fieldIndex++; - newMesg.SetField(new Field("UserRunningStepLength", 31, 132, 1000, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("UserWalkingStepLength", 32, 132, 1000, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("DepthSetting", 47, 0, 1, 0, "", false, Type.DisplayMeasure)); - fieldIndex++; - newMesg.SetField(new Field("DiveCount", 49, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateHrmProfileMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("HrmProfile", MesgNum.HrmProfile); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Enabled", 0, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("HrmAntId", 1, 139, 1, 0, "", false, Type.Uint16z)); - fieldIndex++; - newMesg.SetField(new Field("LogHrv", 2, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("HrmAntIdTransType", 3, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSdmProfileMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("SdmProfile", MesgNum.SdmProfile); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Enabled", 0, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("SdmAntId", 1, 139, 1, 0, "", false, Type.Uint16z)); - fieldIndex++; - newMesg.SetField(new Field("SdmCalFactor", 2, 132, 10, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Odometer", 3, 134, 100, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("SpeedSource", 4, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("SdmAntIdTransType", 5, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("OdometerRollover", 7, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateBikeProfileMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("BikeProfile", MesgNum.BikeProfile); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Name", 0, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Sport", 1, 0, 1, 0, "", false, Type.Sport)); - fieldIndex++; - newMesg.SetField(new Field("SubSport", 2, 0, 1, 0, "", false, Type.SubSport)); - fieldIndex++; - newMesg.SetField(new Field("Odometer", 3, 134, 100, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("BikeSpdAntId", 4, 139, 1, 0, "", false, Type.Uint16z)); - fieldIndex++; - newMesg.SetField(new Field("BikeCadAntId", 5, 139, 1, 0, "", false, Type.Uint16z)); - fieldIndex++; - newMesg.SetField(new Field("BikeSpdcadAntId", 6, 139, 1, 0, "", false, Type.Uint16z)); - fieldIndex++; - newMesg.SetField(new Field("BikePowerAntId", 7, 139, 1, 0, "", false, Type.Uint16z)); - fieldIndex++; - newMesg.SetField(new Field("CustomWheelsize", 8, 132, 1000, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AutoWheelsize", 9, 132, 1000, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("BikeWeight", 10, 132, 10, 0, "kg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("PowerCalFactor", 11, 132, 10, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AutoWheelCal", 12, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("AutoPowerZero", 13, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("Id", 14, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("SpdEnabled", 15, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("CadEnabled", 16, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("SpdcadEnabled", 17, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("PowerEnabled", 18, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("CrankLength", 19, 2, 2, -110, "mm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Enabled", 20, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("BikeSpdAntIdTransType", 21, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("BikeCadAntIdTransType", 22, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("BikeSpdcadAntIdTransType", 23, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("BikePowerAntIdTransType", 24, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("OdometerRollover", 37, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("FrontGearNum", 38, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("FrontGear", 39, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("RearGearNum", 40, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("RearGear", 41, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("ShimanoDi2Enabled", 44, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateConnectivityMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Connectivity", MesgNum.Connectivity); - fieldIndex = 0; - newMesg.SetField(new Field("BluetoothEnabled", 0, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("BluetoothLeEnabled", 1, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("AntEnabled", 2, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("Name", 3, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("LiveTrackingEnabled", 4, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("WeatherConditionsEnabled", 5, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("WeatherAlertsEnabled", 6, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("AutoActivityUploadEnabled", 7, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("CourseDownloadEnabled", 8, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("WorkoutDownloadEnabled", 9, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("GpsEphemerisDownloadEnabled", 10, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("IncidentDetectionEnabled", 11, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("GrouptrackEnabled", 12, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateWatchfaceSettingsMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("WatchfaceSettings", MesgNum.WatchfaceSettings); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Mode", 0, 0, 1, 0, "", false, Type.WatchfaceMode)); - fieldIndex++; - newMesg.SetField(new Field("Layout", 1, 13, 1, 0, "", false, Type.Byte)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("DigitalLayout", 0, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 0); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("AnalogLayout", 0, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 1); - subfieldIndex++; - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateOhrSettingsMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("OhrSettings", MesgNum.OhrSettings); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Enabled", 0, 0, 1, 0, "", false, Type.Switch)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateTimeInZoneMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("TimeInZone", MesgNum.TimeInZone); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("ReferenceMesg", 0, 132, 1, 0, "", false, Type.MesgNum)); - fieldIndex++; - newMesg.SetField(new Field("ReferenceIndex", 1, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("TimeInHrZone", 2, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInSpeedZone", 3, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInCadenceZone", 4, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInPowerZone", 5, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("HrZoneHighBoundary", 6, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("SpeedZoneHighBoundary", 7, 132, 1000, 0, "m/s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("CadenceZoneHighBondary", 8, 2, 1, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("PowerZoneHighBoundary", 9, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("HrCalcType", 10, 0, 1, 0, "", false, Type.HrZoneCalc)); - fieldIndex++; - newMesg.SetField(new Field("MaxHeartRate", 11, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("RestingHeartRate", 12, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("ThresholdHeartRate", 13, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("PwrCalcType", 14, 0, 1, 0, "", false, Type.PwrZoneCalc)); - fieldIndex++; - newMesg.SetField(new Field("FunctionalThresholdPower", 15, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateZonesTargetMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("ZonesTarget", MesgNum.ZonesTarget); - fieldIndex = 0; - newMesg.SetField(new Field("MaxHeartRate", 1, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("ThresholdHeartRate", 2, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("FunctionalThresholdPower", 3, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("HrCalcType", 5, 0, 1, 0, "", false, Type.HrZoneCalc)); - fieldIndex++; - newMesg.SetField(new Field("PwrCalcType", 7, 0, 1, 0, "", false, Type.PwrZoneCalc)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSportMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Sport", MesgNum.Sport); - fieldIndex = 0; - newMesg.SetField(new Field("Sport", 0, 0, 1, 0, "", false, Type.Sport)); - fieldIndex++; - newMesg.SetField(new Field("SubSport", 1, 0, 1, 0, "", false, Type.SubSport)); - fieldIndex++; - newMesg.SetField(new Field("Name", 3, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateHrZoneMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("HrZone", MesgNum.HrZone); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("HighBpm", 1, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Name", 2, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSpeedZoneMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("SpeedZone", MesgNum.SpeedZone); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("HighValue", 0, 132, 1000, 0, "m/s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Name", 1, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateCadenceZoneMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("CadenceZone", MesgNum.CadenceZone); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("HighValue", 0, 2, 1, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Name", 1, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreatePowerZoneMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("PowerZone", MesgNum.PowerZone); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("HighValue", 1, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Name", 2, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateMetZoneMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("MetZone", MesgNum.MetZone); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("HighBpm", 1, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Calories", 2, 132, 10, 0, "kcal / min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("FatCalories", 3, 2, 10, 0, "kcal / min", false, Type.Uint8)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateDiveSettingsMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("DiveSettings", MesgNum.DiveSettings); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Name", 0, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Model", 1, 0, 1, 0, "", false, Type.TissueModelType)); - fieldIndex++; - newMesg.SetField(new Field("GfLow", 2, 2, 1, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("GfHigh", 3, 2, 1, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("WaterType", 4, 0, 1, 0, "", false, Type.WaterType)); - fieldIndex++; - newMesg.SetField(new Field("WaterDensity", 5, 136, 1, 0, "kg/m^3", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("Po2Warn", 6, 2, 100, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Po2Critical", 7, 2, 100, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Po2Deco", 8, 2, 100, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("SafetyStopEnabled", 9, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("BottomDepth", 10, 136, 1, 0, "", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("BottomTime", 11, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("ApneaCountdownEnabled", 12, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("ApneaCountdownTime", 13, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("BacklightMode", 14, 0, 1, 0, "", false, Type.DiveBacklightMode)); - fieldIndex++; - newMesg.SetField(new Field("BacklightBrightness", 15, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("BacklightTimeout", 16, 2, 1, 0, "", false, Type.BacklightTimeout)); - fieldIndex++; - newMesg.SetField(new Field("RepeatDiveInterval", 17, 132, 1, 0, "s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SafetyStopTime", 18, 132, 1, 0, "s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("HeartRateSourceType", 19, 0, 1, 0, "", false, Type.SourceType)); - fieldIndex++; - newMesg.SetField(new Field("HeartRateSource", 20, 2, 1, 0, "", false, Type.Uint8)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("HeartRateAntplusDeviceType", 2, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 1); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("HeartRateLocalDeviceType", 2, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 5); - subfieldIndex++; - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateDiveAlarmMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("DiveAlarm", MesgNum.DiveAlarm); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Depth", 0, 134, 1000, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Time", 1, 133, 1, 0, "s", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("Enabled", 2, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("AlarmType", 3, 0, 1, 0, "", false, Type.DiveAlarmType)); - fieldIndex++; - newMesg.SetField(new Field("Sound", 4, 0, 1, 0, "", false, Type.Tone)); - fieldIndex++; - newMesg.SetField(new Field("DiveTypes", 5, 0, 1, 0, "", false, Type.SubSport)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateDiveGasMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("DiveGas", MesgNum.DiveGas); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("HeliumContent", 0, 2, 1, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("OxygenContent", 1, 2, 1, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Status", 2, 0, 1, 0, "", false, Type.DiveGasStatus)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateGoalMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Goal", MesgNum.Goal); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Sport", 0, 0, 1, 0, "", false, Type.Sport)); - fieldIndex++; - newMesg.SetField(new Field("SubSport", 1, 0, 1, 0, "", false, Type.SubSport)); - fieldIndex++; - newMesg.SetField(new Field("StartDate", 2, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("EndDate", 3, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Type", 4, 0, 1, 0, "", false, Type.Goal)); - fieldIndex++; - newMesg.SetField(new Field("Value", 5, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Repeat", 6, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("TargetValue", 7, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Recurrence", 8, 0, 1, 0, "", false, Type.GoalRecurrence)); - fieldIndex++; - newMesg.SetField(new Field("RecurrenceValue", 9, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Enabled", 10, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("Source", 11, 0, 1, 0, "", false, Type.GoalSource)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateActivityMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Activity", MesgNum.Activity); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TotalTimerTime", 0, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("NumSessions", 1, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Type", 2, 0, 1, 0, "", false, Type.Activity)); - fieldIndex++; - newMesg.SetField(new Field("Event", 3, 0, 1, 0, "", false, Type.Event)); - fieldIndex++; - newMesg.SetField(new Field("EventType", 4, 0, 1, 0, "", false, Type.EventType)); - fieldIndex++; - newMesg.SetField(new Field("LocalTimestamp", 5, 134, 1, 0, "", false, Type.LocalDateTime)); - fieldIndex++; - newMesg.SetField(new Field("EventGroup", 6, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSessionMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Session", MesgNum.Session); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Event", 0, 0, 1, 0, "", false, Type.Event)); - fieldIndex++; - newMesg.SetField(new Field("EventType", 1, 0, 1, 0, "", false, Type.EventType)); - fieldIndex++; - newMesg.SetField(new Field("StartTime", 2, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("StartPositionLat", 3, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("StartPositionLong", 4, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("Sport", 5, 0, 1, 0, "", false, Type.Sport)); - fieldIndex++; - newMesg.SetField(new Field("SubSport", 6, 0, 1, 0, "", false, Type.SubSport)); - fieldIndex++; - newMesg.SetField(new Field("TotalElapsedTime", 7, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalTimerTime", 8, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalDistance", 9, 134, 100, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalCycles", 10, 134, 1, 0, "cycles", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TotalStrides", 134, 1, 0, "strides")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 1); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 11); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TotalStrokes", 134, 1, 0, "strokes")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 2); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 5); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 15); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 37); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("TotalCalories", 11, 132, 1, 0, "kcal", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalFatCalories", 13, 132, 1, 0, "kcal", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgSpeed", 14, 132, 1000, 0, "m/s", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(124, false, 16, 1000, 0)); // enhanced_avg_speed - fieldIndex++; - newMesg.SetField(new Field("MaxSpeed", 15, 132, 1000, 0, "m/s", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(125, false, 16, 1000, 0)); // enhanced_max_speed - fieldIndex++; - newMesg.SetField(new Field("AvgHeartRate", 16, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxHeartRate", 17, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgCadence", 18, 2, 1, 0, "rpm", false, Type.Uint8)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("AvgRunningCadence", 2, 1, 0, "strides/min")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 1); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("MaxCadence", 19, 2, 1, 0, "rpm", false, Type.Uint8)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("MaxRunningCadence", 2, 1, 0, "strides/min")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 1); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("AvgPower", 20, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPower", 21, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalAscent", 22, 132, 1, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalDescent", 23, 132, 1, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalTrainingEffect", 24, 2, 10, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("FirstLapIndex", 25, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("NumLaps", 26, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("EventGroup", 27, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Trigger", 28, 0, 1, 0, "", false, Type.SessionTrigger)); - fieldIndex++; - newMesg.SetField(new Field("NecLat", 29, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("NecLong", 30, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("SwcLat", 31, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("SwcLong", 32, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("NumLengths", 33, 132, 1, 0, "lengths", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("NormalizedPower", 34, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TrainingStressScore", 35, 132, 10, 0, "tss", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("IntensityFactor", 36, 132, 1000, 0, "if", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("LeftRightBalance", 37, 132, 1, 0, "", false, Type.LeftRightBalance100)); - fieldIndex++; - newMesg.SetField(new Field("AvgStrokeCount", 41, 134, 10, 0, "strokes/lap", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgStrokeDistance", 42, 132, 100, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SwimStroke", 43, 0, 1, 0, "swim_stroke", false, Type.SwimStroke)); - fieldIndex++; - newMesg.SetField(new Field("PoolLength", 44, 132, 100, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ThresholdPower", 45, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("PoolLengthUnit", 46, 0, 1, 0, "", false, Type.DisplayMeasure)); - fieldIndex++; - newMesg.SetField(new Field("NumActiveLengths", 47, 132, 1, 0, "lengths", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalWork", 48, 134, 1, 0, "J", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgAltitude", 49, 132, 5, 500, "m", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(126, false, 16, 5, 500)); // enhanced_avg_altitude - fieldIndex++; - newMesg.SetField(new Field("MaxAltitude", 50, 132, 5, 500, "m", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(128, false, 16, 5, 500)); // enhanced_max_altitude - fieldIndex++; - newMesg.SetField(new Field("GpsAccuracy", 51, 2, 1, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgGrade", 52, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgPosGrade", 53, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgNegGrade", 54, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPosGrade", 55, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxNegGrade", 56, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgTemperature", 57, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxTemperature", 58, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("TotalMovingTime", 59, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgPosVerticalSpeed", 60, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgNegVerticalSpeed", 61, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPosVerticalSpeed", 62, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxNegVerticalSpeed", 63, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MinHeartRate", 64, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TimeInHrZone", 65, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInSpeedZone", 66, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInCadenceZone", 67, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInPowerZone", 68, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgLapTime", 69, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("BestLapIndex", 70, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MinAltitude", 71, 132, 5, 500, "m", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(127, false, 16, 5, 500)); // enhanced_min_altitude - fieldIndex++; - newMesg.SetField(new Field("PlayerScore", 82, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("OpponentScore", 83, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("OpponentName", 84, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("StrokeCount", 85, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ZoneCount", 86, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxBallSpeed", 87, 132, 100, 0, "m/s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgBallSpeed", 88, 132, 100, 0, "m/s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgVerticalOscillation", 89, 132, 10, 0, "mm", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgStanceTimePercent", 90, 132, 100, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgStanceTime", 91, 132, 10, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgFractionalCadence", 92, 2, 128, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxFractionalCadence", 93, 2, 128, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TotalFractionalCycles", 94, 2, 128, 0, "cycles", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgTotalHemoglobinConc", 95, 132, 100, 0, "g/dL", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MinTotalHemoglobinConc", 96, 132, 100, 0, "g/dL", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxTotalHemoglobinConc", 97, 132, 100, 0, "g/dL", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgSaturatedHemoglobinPercent", 98, 132, 10, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MinSaturatedHemoglobinPercent", 99, 132, 10, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxSaturatedHemoglobinPercent", 100, 132, 10, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftTorqueEffectiveness", 101, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightTorqueEffectiveness", 102, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPedalSmoothness", 103, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPedalSmoothness", 104, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgCombinedPedalSmoothness", 105, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("SportIndex", 111, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TimeStanding", 112, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("StandCount", 113, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPco", 114, 1, 1, 0, "mm", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPco", 115, 1, 1, 0, "mm", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPowerPhase", 116, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPowerPhasePeak", 117, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPowerPhase", 118, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPowerPhasePeak", 119, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgPowerPosition", 120, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPowerPosition", 121, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgCadencePosition", 122, 2, 1, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxCadencePosition", 123, 2, 1, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedAvgSpeed", 124, 134, 1000, 0, "m/s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMaxSpeed", 125, 134, 1000, 0, "m/s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedAvgAltitude", 126, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMinAltitude", 127, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMaxAltitude", 128, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgLevMotorPower", 129, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxLevMotorPower", 130, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("LevBatteryConsumption", 131, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgVerticalRatio", 132, 132, 100, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgStanceTimeBalance", 133, 132, 100, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgStepLength", 134, 132, 10, 0, "mm", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalAnaerobicTrainingEffect", 137, 2, 10, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgVam", 139, 132, 1000, 0, "m/s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgRespirationRate", 147, 2, 1, 0, "", false, Type.Uint8)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(169, false, 8, 1, 0)); // enhanced_avg_respiration_rate - fieldIndex++; - newMesg.SetField(new Field("MaxRespirationRate", 148, 2, 1, 0, "", false, Type.Uint8)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(170, false, 8, 1, 0)); // enhanced_max_respiration_rate - fieldIndex++; - newMesg.SetField(new Field("MinRespirationRate", 149, 2, 1, 0, "", false, Type.Uint8)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(180, false, 8, 1, 0)); // enhanced_min_respiration_rate - fieldIndex++; - newMesg.SetField(new Field("TrainingLoadPeak", 168, 133, 65536, 0, "", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedAvgRespirationRate", 169, 132, 100, 0, "Breaths/min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMaxRespirationRate", 170, 132, 100, 0, "Breaths/min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMinRespirationRate", 180, 132, 100, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalGrit", 181, 136, 1, 0, "kGrit", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("TotalFlow", 182, 136, 1, 0, "Flow", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("JumpCount", 183, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgGrit", 186, 136, 1, 0, "kGrit", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("AvgFlow", 187, 136, 1, 0, "Flow", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("TotalFractionalAscent", 199, 2, 100, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TotalFractionalDescent", 200, 2, 100, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgCoreTemperature", 208, 132, 100, 0, "C", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MinCoreTemperature", 209, 132, 100, 0, "C", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxCoreTemperature", 210, 132, 100, 0, "C", false, Type.Uint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateLapMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Lap", MesgNum.Lap); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Event", 0, 0, 1, 0, "", false, Type.Event)); - fieldIndex++; - newMesg.SetField(new Field("EventType", 1, 0, 1, 0, "", false, Type.EventType)); - fieldIndex++; - newMesg.SetField(new Field("StartTime", 2, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("StartPositionLat", 3, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("StartPositionLong", 4, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("EndPositionLat", 5, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("EndPositionLong", 6, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalElapsedTime", 7, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalTimerTime", 8, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalDistance", 9, 134, 100, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalCycles", 10, 134, 1, 0, "cycles", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TotalStrides", 134, 1, 0, "strides")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 1); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 11); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TotalStrokes", 134, 1, 0, "strokes")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 2); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 5); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 15); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 37); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("TotalCalories", 11, 132, 1, 0, "kcal", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalFatCalories", 12, 132, 1, 0, "kcal", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgSpeed", 13, 132, 1000, 0, "m/s", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(110, false, 16, 1000, 0)); // enhanced_avg_speed - fieldIndex++; - newMesg.SetField(new Field("MaxSpeed", 14, 132, 1000, 0, "m/s", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(111, false, 16, 1000, 0)); // enhanced_max_speed - fieldIndex++; - newMesg.SetField(new Field("AvgHeartRate", 15, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxHeartRate", 16, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgCadence", 17, 2, 1, 0, "rpm", false, Type.Uint8)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("AvgRunningCadence", 2, 1, 0, "strides/min")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 1); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("MaxCadence", 18, 2, 1, 0, "rpm", false, Type.Uint8)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("MaxRunningCadence", 2, 1, 0, "strides/min")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 1); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("AvgPower", 19, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPower", 20, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalAscent", 21, 132, 1, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalDescent", 22, 132, 1, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Intensity", 23, 0, 1, 0, "", false, Type.Intensity)); - fieldIndex++; - newMesg.SetField(new Field("LapTrigger", 24, 0, 1, 0, "", false, Type.LapTrigger)); - fieldIndex++; - newMesg.SetField(new Field("Sport", 25, 0, 1, 0, "", false, Type.Sport)); - fieldIndex++; - newMesg.SetField(new Field("EventGroup", 26, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("NumLengths", 32, 132, 1, 0, "lengths", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("NormalizedPower", 33, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("LeftRightBalance", 34, 132, 1, 0, "", false, Type.LeftRightBalance100)); - fieldIndex++; - newMesg.SetField(new Field("FirstLengthIndex", 35, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgStrokeDistance", 37, 132, 100, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SwimStroke", 38, 0, 1, 0, "", false, Type.SwimStroke)); - fieldIndex++; - newMesg.SetField(new Field("SubSport", 39, 0, 1, 0, "", false, Type.SubSport)); - fieldIndex++; - newMesg.SetField(new Field("NumActiveLengths", 40, 132, 1, 0, "lengths", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalWork", 41, 134, 1, 0, "J", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgAltitude", 42, 132, 5, 500, "m", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(112, false, 16, 5, 500)); // enhanced_avg_altitude - fieldIndex++; - newMesg.SetField(new Field("MaxAltitude", 43, 132, 5, 500, "m", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(114, false, 16, 5, 500)); // enhanced_max_altitude - fieldIndex++; - newMesg.SetField(new Field("GpsAccuracy", 44, 2, 1, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgGrade", 45, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgPosGrade", 46, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgNegGrade", 47, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPosGrade", 48, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxNegGrade", 49, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgTemperature", 50, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxTemperature", 51, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("TotalMovingTime", 52, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgPosVerticalSpeed", 53, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgNegVerticalSpeed", 54, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPosVerticalSpeed", 55, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxNegVerticalSpeed", 56, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("TimeInHrZone", 57, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInSpeedZone", 58, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInCadenceZone", 59, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInPowerZone", 60, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("RepetitionNum", 61, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MinAltitude", 62, 132, 5, 500, "m", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(113, false, 16, 5, 500)); // enhanced_min_altitude - fieldIndex++; - newMesg.SetField(new Field("MinHeartRate", 63, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("WktStepIndex", 71, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("OpponentScore", 74, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("StrokeCount", 75, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ZoneCount", 76, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgVerticalOscillation", 77, 132, 10, 0, "mm", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgStanceTimePercent", 78, 132, 100, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgStanceTime", 79, 132, 10, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgFractionalCadence", 80, 2, 128, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxFractionalCadence", 81, 2, 128, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TotalFractionalCycles", 82, 2, 128, 0, "cycles", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("PlayerScore", 83, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgTotalHemoglobinConc", 84, 132, 100, 0, "g/dL", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MinTotalHemoglobinConc", 85, 132, 100, 0, "g/dL", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxTotalHemoglobinConc", 86, 132, 100, 0, "g/dL", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgSaturatedHemoglobinPercent", 87, 132, 10, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MinSaturatedHemoglobinPercent", 88, 132, 10, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxSaturatedHemoglobinPercent", 89, 132, 10, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftTorqueEffectiveness", 91, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightTorqueEffectiveness", 92, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPedalSmoothness", 93, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPedalSmoothness", 94, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgCombinedPedalSmoothness", 95, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TimeStanding", 98, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("StandCount", 99, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPco", 100, 1, 1, 0, "mm", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPco", 101, 1, 1, 0, "mm", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPowerPhase", 102, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPowerPhasePeak", 103, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPowerPhase", 104, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPowerPhasePeak", 105, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgPowerPosition", 106, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPowerPosition", 107, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgCadencePosition", 108, 2, 1, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxCadencePosition", 109, 2, 1, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedAvgSpeed", 110, 134, 1000, 0, "m/s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMaxSpeed", 111, 134, 1000, 0, "m/s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedAvgAltitude", 112, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMinAltitude", 113, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMaxAltitude", 114, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgLevMotorPower", 115, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxLevMotorPower", 116, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("LevBatteryConsumption", 117, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgVerticalRatio", 118, 132, 100, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgStanceTimeBalance", 119, 132, 100, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgStepLength", 120, 132, 10, 0, "mm", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgVam", 121, 132, 1000, 0, "m/s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedAvgRespirationRate", 136, 132, 100, 0, "Breaths/min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMaxRespirationRate", 137, 132, 100, 0, "Breaths/min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgRespirationRate", 147, 2, 1, 0, "", false, Type.Uint8)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(136, false, 8, 1, 0)); // enhanced_avg_respiration_rate - fieldIndex++; - newMesg.SetField(new Field("MaxRespirationRate", 148, 2, 1, 0, "", false, Type.Uint8)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(137, false, 8, 1, 0)); // enhanced_max_respiration_rate - fieldIndex++; - newMesg.SetField(new Field("TotalGrit", 149, 136, 1, 0, "kGrit", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("TotalFlow", 150, 136, 1, 0, "Flow", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("JumpCount", 151, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgGrit", 153, 136, 1, 0, "kGrit", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("AvgFlow", 154, 136, 1, 0, "Flow", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("TotalFractionalAscent", 156, 2, 100, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TotalFractionalDescent", 157, 2, 100, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgCoreTemperature", 158, 132, 100, 0, "C", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MinCoreTemperature", 159, 132, 100, 0, "C", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxCoreTemperature", 160, 132, 100, 0, "C", false, Type.Uint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateLengthMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Length", MesgNum.Length); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Event", 0, 0, 1, 0, "", false, Type.Event)); - fieldIndex++; - newMesg.SetField(new Field("EventType", 1, 0, 1, 0, "", false, Type.EventType)); - fieldIndex++; - newMesg.SetField(new Field("StartTime", 2, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TotalElapsedTime", 3, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalTimerTime", 4, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalStrokes", 5, 132, 1, 0, "strokes", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgSpeed", 6, 132, 1000, 0, "m/s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SwimStroke", 7, 0, 1, 0, "swim_stroke", false, Type.SwimStroke)); - fieldIndex++; - newMesg.SetField(new Field("AvgSwimmingCadence", 9, 2, 1, 0, "strokes/min", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("EventGroup", 10, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TotalCalories", 11, 132, 1, 0, "kcal", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("LengthType", 12, 0, 1, 0, "", false, Type.LengthType)); - fieldIndex++; - newMesg.SetField(new Field("PlayerScore", 18, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("OpponentScore", 19, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("StrokeCount", 20, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ZoneCount", 21, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedAvgRespirationRate", 22, 132, 100, 0, "Breaths/min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMaxRespirationRate", 23, 132, 100, 0, "Breaths/min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgRespirationRate", 24, 2, 1, 0, "", false, Type.Uint8)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(22, false, 8, 1, 0)); // enhanced_avg_respiration_rate - fieldIndex++; - newMesg.SetField(new Field("MaxRespirationRate", 25, 2, 1, 0, "", false, Type.Uint8)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(23, false, 8, 1, 0)); // enhanced_max_respiration_rate - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateRecordMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Record", MesgNum.Record); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("PositionLat", 0, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("PositionLong", 1, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("Altitude", 2, 132, 5, 500, "m", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(78, false, 16, 5, 500)); // enhanced_altitude - fieldIndex++; - newMesg.SetField(new Field("HeartRate", 3, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Cadence", 4, 2, 1, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Distance", 5, 134, 100, 0, "m", true, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Speed", 6, 132, 1000, 0, "m/s", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(73, false, 16, 1000, 0)); // enhanced_speed - fieldIndex++; - newMesg.SetField(new Field("Power", 7, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("CompressedSpeedDistance", 8, 13, 1, 0, "", false, Type.Byte)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(6, false, 12, 100, 0)); // speed - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(5, true, 12, 16, 0)); // distance - fieldIndex++; - newMesg.SetField(new Field("Grade", 9, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("Resistance", 10, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TimeFromCourse", 11, 133, 1000, 0, "s", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("CycleLength", 12, 2, 100, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Temperature", 13, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("Speed1s", 17, 2, 16, 0, "m/s", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Cycles", 18, 2, 1, 0, "cycles", false, Type.Uint8)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(19, true, 8, 1, 0)); // total_cycles - fieldIndex++; - newMesg.SetField(new Field("TotalCycles", 19, 134, 1, 0, "cycles", true, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("CompressedAccumulatedPower", 28, 132, 1, 0, "watts", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(29, true, 16, 1, 0)); // accumulated_power - fieldIndex++; - newMesg.SetField(new Field("AccumulatedPower", 29, 134, 1, 0, "watts", true, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("LeftRightBalance", 30, 2, 1, 0, "", false, Type.LeftRightBalance)); - fieldIndex++; - newMesg.SetField(new Field("GpsAccuracy", 31, 2, 1, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("VerticalSpeed", 32, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("Calories", 33, 132, 1, 0, "kcal", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("VerticalOscillation", 39, 132, 10, 0, "mm", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("StanceTimePercent", 40, 132, 100, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("StanceTime", 41, 132, 10, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ActivityType", 42, 0, 1, 0, "", false, Type.ActivityType)); - fieldIndex++; - newMesg.SetField(new Field("LeftTorqueEffectiveness", 43, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("RightTorqueEffectiveness", 44, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("LeftPedalSmoothness", 45, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("RightPedalSmoothness", 46, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("CombinedPedalSmoothness", 47, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Time128", 48, 2, 128, 0, "s", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("StrokeType", 49, 0, 1, 0, "", false, Type.StrokeType)); - fieldIndex++; - newMesg.SetField(new Field("Zone", 50, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("BallSpeed", 51, 132, 100, 0, "m/s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Cadence256", 52, 132, 256, 0, "rpm", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("FractionalCadence", 53, 2, 128, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TotalHemoglobinConc", 54, 132, 100, 0, "g/dL", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalHemoglobinConcMin", 55, 132, 100, 0, "g/dL", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalHemoglobinConcMax", 56, 132, 100, 0, "g/dL", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SaturatedHemoglobinPercent", 57, 132, 10, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SaturatedHemoglobinPercentMin", 58, 132, 10, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SaturatedHemoglobinPercentMax", 59, 132, 10, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("DeviceIndex", 62, 2, 1, 0, "", false, Type.DeviceIndex)); - fieldIndex++; - newMesg.SetField(new Field("LeftPco", 67, 1, 1, 0, "mm", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("RightPco", 68, 1, 1, 0, "mm", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("LeftPowerPhase", 69, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("LeftPowerPhasePeak", 70, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("RightPowerPhase", 71, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("RightPowerPhasePeak", 72, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedSpeed", 73, 134, 1000, 0, "m/s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedAltitude", 78, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("BatterySoc", 81, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("MotorPower", 82, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("VerticalRatio", 83, 132, 100, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("StanceTimeBalance", 84, 132, 100, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("StepLength", 85, 132, 10, 0, "mm", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AbsolutePressure", 91, 134, 1, 0, "Pa", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Depth", 92, 134, 1000, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("NextStopDepth", 93, 134, 1000, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("NextStopTime", 94, 134, 1, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeToSurface", 95, 134, 1, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("NdlTime", 96, 134, 1, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("CnsLoad", 97, 2, 1, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("N2Load", 98, 132, 1, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("RespirationRate", 99, 2, 1, 0, "s", false, Type.Uint8)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(108, false, 8, 1, 0)); // enhanced_respiration_rate - fieldIndex++; - newMesg.SetField(new Field("EnhancedRespirationRate", 108, 132, 100, 0, "Breaths/min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Grit", 114, 136, 1, 0, "", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("Flow", 115, 136, 1, 0, "", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("EbikeTravelRange", 117, 132, 1, 0, "km", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("EbikeBatteryLevel", 118, 2, 1, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("EbikeAssistMode", 119, 2, 1, 0, "depends on sensor", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("EbikeAssistLevelPercent", 120, 2, 1, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("CoreTemperature", 139, 132, 100, 0, "C", false, Type.Uint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateEventMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Event", MesgNum.Event); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Event", 0, 0, 1, 0, "", false, Type.Event)); - fieldIndex++; - newMesg.SetField(new Field("EventType", 1, 0, 1, 0, "", false, Type.EventType)); - fieldIndex++; - newMesg.SetField(new Field("Data16", 2, 132, 1, 0, "", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(3, false, 16, 1, 0)); // data - fieldIndex++; - newMesg.SetField(new Field("Data", 3, 134, 1, 0, "", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TimerTrigger", 0, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 0); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CoursePointIndex", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 10); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("BatteryLevel", 132, 1000, 0, "V")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 11); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("VirtualPartnerSpeed", 132, 1000, 0, "m/s")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 12); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("HrHighAlert", 2, 1, 0, "bpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 13); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("HrLowAlert", 2, 1, 0, "bpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 14); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SpeedHighAlert", 134, 1000, 0, "m/s")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 15); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SpeedLowAlert", 134, 1000, 0, "m/s")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 16); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CadHighAlert", 132, 1, 0, "rpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 17); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CadLowAlert", 132, 1, 0, "rpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 18); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("PowerHighAlert", 132, 1, 0, "watts")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 19); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("PowerLowAlert", 132, 1, 0, "watts")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 20); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TimeDurationAlert", 134, 1000, 0, "s")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 23); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("DistanceDurationAlert", 134, 100, 0, "m")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 24); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CalorieDurationAlert", 134, 1, 0, "calories")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 25); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("FitnessEquipmentState", 0, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 27); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SportPoint", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 33); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(7, false, 16, 1, 0)); // score - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(8, false, 16, 1, 0)); // opponent_score - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("GearChangeData", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 42); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 43); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(11, false, 8, 1, 0)); // rear_gear_num - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(12, false, 8, 1, 0)); // rear_gear - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(9, false, 8, 1, 0)); // front_gear_num - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(10, false, 8, 1, 0)); // front_gear - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("RiderPosition", 0, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 44); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CommTimeout", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 47); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("RadarThreatAlert", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 75); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(21, false, 8, 1, 0)); // radar_threat_level_max - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(22, false, 8, 1, 0)); // radar_threat_count - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(23, false, 8, 10, 0)); // radar_threat_avg_approach_speed - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(24, false, 8, 10, 0)); // radar_threat_max_approach_speed - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("EventGroup", 4, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Score", 7, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("OpponentScore", 8, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("FrontGearNum", 9, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("FrontGear", 10, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("RearGearNum", 11, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("RearGear", 12, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("DeviceIndex", 13, 2, 1, 0, "", false, Type.DeviceIndex)); - fieldIndex++; - newMesg.SetField(new Field("RadarThreatLevelMax", 21, 0, 1, 0, "", false, Type.RadarThreatLevelType)); - fieldIndex++; - newMesg.SetField(new Field("RadarThreatCount", 22, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("RadarThreatAvgApproachSpeed", 23, 2, 10, 0, "m/s", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("RadarThreatMaxApproachSpeed", 24, 2, 10, 0, "m/s", false, Type.Uint8)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateDeviceInfoMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("DeviceInfo", MesgNum.DeviceInfo); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("DeviceIndex", 0, 2, 1, 0, "", false, Type.DeviceIndex)); - fieldIndex++; - newMesg.SetField(new Field("DeviceType", 1, 2, 1, 0, "", false, Type.Uint8)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("BleDeviceType", 2, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 3); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("AntplusDeviceType", 2, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 1); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("AntDeviceType", 2, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 0); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("LocalDeviceType", 2, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(25, 5); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("Manufacturer", 2, 132, 1, 0, "", false, Type.Manufacturer)); - fieldIndex++; - newMesg.SetField(new Field("SerialNumber", 3, 140, 1, 0, "", false, Type.Uint32z)); - fieldIndex++; - newMesg.SetField(new Field("Product", 4, 132, 1, 0, "", false, Type.Uint16)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("FaveroProduct", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(2, 263); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("GarminProduct", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(2, 1); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(2, 15); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(2, 13); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(2, 89); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("SoftwareVersion", 5, 132, 100, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("HardwareVersion", 6, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("CumOperatingTime", 7, 134, 1, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("BatteryVoltage", 10, 132, 256, 0, "V", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("BatteryStatus", 11, 2, 1, 0, "", false, Type.BatteryStatus)); - fieldIndex++; - newMesg.SetField(new Field("SensorPosition", 18, 0, 1, 0, "", false, Type.BodyLocation)); - fieldIndex++; - newMesg.SetField(new Field("Descriptor", 19, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("AntTransmissionType", 20, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("AntDeviceNumber", 21, 139, 1, 0, "", false, Type.Uint16z)); - fieldIndex++; - newMesg.SetField(new Field("AntNetwork", 22, 0, 1, 0, "", false, Type.AntNetwork)); - fieldIndex++; - newMesg.SetField(new Field("SourceType", 25, 0, 1, 0, "", false, Type.SourceType)); - fieldIndex++; - newMesg.SetField(new Field("ProductName", 27, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("BatteryLevel", 32, 2, 1, 0, "%", false, Type.Uint8)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateDeviceAuxBatteryInfoMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("DeviceAuxBatteryInfo", MesgNum.DeviceAuxBatteryInfo); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("DeviceIndex", 0, 2, 1, 0, "", false, Type.DeviceIndex)); - fieldIndex++; - newMesg.SetField(new Field("BatteryVoltage", 1, 132, 256, 0, "V", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("BatteryStatus", 2, 2, 1, 0, "", false, Type.BatteryStatus)); - fieldIndex++; - newMesg.SetField(new Field("BatteryIdentifier", 3, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateTrainingFileMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("TrainingFile", MesgNum.TrainingFile); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Type", 0, 0, 1, 0, "", false, Type.File)); - fieldIndex++; - newMesg.SetField(new Field("Manufacturer", 1, 132, 1, 0, "", false, Type.Manufacturer)); - fieldIndex++; - newMesg.SetField(new Field("Product", 2, 132, 1, 0, "", false, Type.Uint16)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("FaveroProduct", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 263); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("GarminProduct", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 1); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 15); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 13); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 89); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("SerialNumber", 3, 140, 1, 0, "", false, Type.Uint32z)); - fieldIndex++; - newMesg.SetField(new Field("TimeCreated", 4, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateWeatherConditionsMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("WeatherConditions", MesgNum.WeatherConditions); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("WeatherReport", 0, 0, 1, 0, "", false, Type.WeatherReport)); - fieldIndex++; - newMesg.SetField(new Field("Temperature", 1, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("Condition", 2, 0, 1, 0, "", false, Type.WeatherStatus)); - fieldIndex++; - newMesg.SetField(new Field("WindDirection", 3, 132, 1, 0, "degrees", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("WindSpeed", 4, 132, 1000, 0, "m/s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("PrecipitationProbability", 5, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TemperatureFeelsLike", 6, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("RelativeHumidity", 7, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Location", 8, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("ObservedAtTime", 9, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("ObservedLocationLat", 10, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("ObservedLocationLong", 11, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("DayOfWeek", 12, 0, 1, 0, "", false, Type.DayOfWeek)); - fieldIndex++; - newMesg.SetField(new Field("HighTemperature", 13, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("LowTemperature", 14, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateWeatherAlertMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("WeatherAlert", MesgNum.WeatherAlert); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("ReportId", 0, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("IssueTime", 1, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("ExpireTime", 2, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Severity", 3, 0, 1, 0, "", false, Type.WeatherSeverity)); - fieldIndex++; - newMesg.SetField(new Field("Type", 4, 0, 1, 0, "", false, Type.WeatherSevereType)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateGpsMetadataMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("GpsMetadata", MesgNum.GpsMetadata); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("PositionLat", 1, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("PositionLong", 2, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedAltitude", 3, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedSpeed", 4, 134, 1000, 0, "m/s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Heading", 5, 132, 100, 0, "degrees", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("UtcTimestamp", 6, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Velocity", 7, 131, 100, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateCameraEventMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("CameraEvent", MesgNum.CameraEvent); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("CameraEventType", 1, 0, 1, 0, "", false, Type.CameraEventType)); - fieldIndex++; - newMesg.SetField(new Field("CameraFileUuid", 2, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("CameraOrientation", 3, 0, 1, 0, "", false, Type.CameraOrientationType)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateGyroscopeDataMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("GyroscopeData", MesgNum.GyroscopeData); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SampleTimeOffset", 1, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("GyroX", 2, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("GyroY", 3, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("GyroZ", 4, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("CalibratedGyroX", 5, 136, 1, 0, "deg/s", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("CalibratedGyroY", 6, 136, 1, 0, "deg/s", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("CalibratedGyroZ", 7, 136, 1, 0, "deg/s", false, Type.Float32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateAccelerometerDataMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("AccelerometerData", MesgNum.AccelerometerData); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SampleTimeOffset", 1, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AccelX", 2, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AccelY", 3, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AccelZ", 4, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("CalibratedAccelX", 5, 136, 1, 0, "g", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("CalibratedAccelY", 6, 136, 1, 0, "g", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("CalibratedAccelZ", 7, 136, 1, 0, "g", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("CompressedCalibratedAccelX", 8, 131, 1, 0, "mG", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("CompressedCalibratedAccelY", 9, 131, 1, 0, "mG", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("CompressedCalibratedAccelZ", 10, 131, 1, 0, "mG", false, Type.Sint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateMagnetometerDataMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("MagnetometerData", MesgNum.MagnetometerData); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SampleTimeOffset", 1, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MagX", 2, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MagY", 3, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MagZ", 4, 132, 1, 0, "counts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("CalibratedMagX", 5, 136, 1, 0, "G", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("CalibratedMagY", 6, 136, 1, 0, "G", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("CalibratedMagZ", 7, 136, 1, 0, "G", false, Type.Float32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateBarometerDataMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("BarometerData", MesgNum.BarometerData); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SampleTimeOffset", 1, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("BaroPres", 2, 134, 1, 0, "Pa", false, Type.Uint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateThreeDSensorCalibrationMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("ThreeDSensorCalibration", MesgNum.ThreeDSensorCalibration); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("SensorType", 0, 0, 1, 0, "", false, Type.SensorType)); - fieldIndex++; - newMesg.SetField(new Field("CalibrationFactor", 1, 134, 1, 0, "", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("AccelCalFactor", 134, 1, 0, "g")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 0); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("GyroCalFactor", 134, 1, 0, "deg/s")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 1); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("CalibrationDivisor", 2, 134, 1, 0, "counts", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("LevelShift", 3, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("OffsetCal", 4, 133, 1, 0, "", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("OrientationMatrix", 5, 133, 65535, 0, "", false, Type.Sint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateOneDSensorCalibrationMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("OneDSensorCalibration", MesgNum.OneDSensorCalibration); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("SensorType", 0, 0, 1, 0, "", false, Type.SensorType)); - fieldIndex++; - newMesg.SetField(new Field("CalibrationFactor", 1, 134, 1, 0, "", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("BaroCalFactor", 134, 1, 0, "Pa")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 3); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("CalibrationDivisor", 2, 134, 1, 0, "counts", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("LevelShift", 3, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("OffsetCal", 4, 133, 1, 0, "", false, Type.Sint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateVideoFrameMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("VideoFrame", MesgNum.VideoFrame); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("FrameNumber", 1, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateObdiiDataMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("ObdiiData", MesgNum.ObdiiData); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TimeOffset", 1, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Pid", 2, 13, 1, 0, "", false, Type.Byte)); - fieldIndex++; - newMesg.SetField(new Field("RawData", 3, 13, 1, 0, "", false, Type.Byte)); - fieldIndex++; - newMesg.SetField(new Field("PidDataSize", 4, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("SystemTime", 5, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("StartTimestamp", 6, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("StartTimestampMs", 7, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateNmeaSentenceMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("NmeaSentence", MesgNum.NmeaSentence); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Sentence", 1, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateAviationAttitudeMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("AviationAttitude", MesgNum.AviationAttitude); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SystemTime", 1, 134, 1, 0, "ms", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Pitch", 2, 131, 10430.38, 0, "radians", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("Roll", 3, 131, 10430.38, 0, "radians", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AccelLateral", 4, 131, 100, 0, "m/s^2", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AccelNormal", 5, 131, 100, 0, "m/s^2", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("TurnRate", 6, 131, 1024, 0, "radians/second", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("Stage", 7, 0, 1, 0, "", false, Type.AttitudeStage)); - fieldIndex++; - newMesg.SetField(new Field("AttitudeStageComplete", 8, 2, 1, 0, "%", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Track", 9, 132, 10430.38, 0, "radians", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Validity", 10, 132, 1, 0, "", false, Type.AttitudeValidity)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateVideoMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Video", MesgNum.Video); - fieldIndex = 0; - newMesg.SetField(new Field("Url", 0, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("HostingProvider", 1, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Duration", 2, 134, 1, 0, "ms", false, Type.Uint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateVideoTitleMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("VideoTitle", MesgNum.VideoTitle); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("MessageCount", 0, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Text", 1, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateVideoDescriptionMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("VideoDescription", MesgNum.VideoDescription); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("MessageCount", 0, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Text", 1, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateVideoClipMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("VideoClip", MesgNum.VideoClip); - fieldIndex = 0; - newMesg.SetField(new Field("ClipNumber", 0, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("StartTimestamp", 1, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("StartTimestampMs", 2, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("EndTimestamp", 3, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("EndTimestampMs", 4, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ClipStart", 6, 134, 1, 0, "ms", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("ClipEnd", 7, 134, 1, 0, "ms", false, Type.Uint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSetMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Set", MesgNum.Set); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 254, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Duration", 0, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Repetitions", 3, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Weight", 4, 132, 16, 0, "kg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("SetType", 5, 2, 1, 0, "", false, Type.SetType)); - fieldIndex++; - newMesg.SetField(new Field("StartTime", 6, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Category", 7, 132, 1, 0, "", false, Type.ExerciseCategory)); - fieldIndex++; - newMesg.SetField(new Field("CategorySubtype", 8, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("WeightDisplayUnit", 9, 132, 1, 0, "", false, Type.FitBaseUnit)); - fieldIndex++; - newMesg.SetField(new Field("MessageIndex", 10, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("WktStepIndex", 11, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateJumpMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Jump", MesgNum.Jump); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Distance", 0, 136, 1, 0, "m", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("Height", 1, 136, 1, 0, "m", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("Rotations", 2, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("HangTime", 3, 136, 1, 0, "s", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("Score", 4, 136, 1, 0, "", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("PositionLat", 5, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("PositionLong", 6, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("Speed", 7, 132, 1000, 0, "m/s", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(8, false, 16, 1000, 0)); // enhanced_speed - fieldIndex++; - newMesg.SetField(new Field("EnhancedSpeed", 8, 134, 1000, 0, "m/s", false, Type.Uint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSplitMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Split", MesgNum.Split); - fieldIndex = 0; - newMesg.SetField(new Field("SplitType", 0, 0, 1, 0, "", false, Type.SplitType)); - fieldIndex++; - newMesg.SetField(new Field("TotalElapsedTime", 1, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalTimerTime", 2, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalDistance", 3, 134, 100, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("StartTime", 9, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateClimbProMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("ClimbPro", MesgNum.ClimbPro); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("PositionLat", 0, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("PositionLong", 1, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("ClimbProEvent", 2, 0, 1, 0, "", false, Type.ClimbProEvent)); - fieldIndex++; - newMesg.SetField(new Field("ClimbNumber", 3, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ClimbCategory", 4, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("CurrentDist", 5, 136, 1, 0, "m", false, Type.Float32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateFieldDescriptionMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("FieldDescription", MesgNum.FieldDescription); - fieldIndex = 0; - newMesg.SetField(new Field("DeveloperDataIndex", 0, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("FieldDefinitionNumber", 1, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("FitBaseTypeId", 2, 2, 1, 0, "", false, Type.FitBaseType)); - fieldIndex++; - newMesg.SetField(new Field("FieldName", 3, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Array", 4, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Components", 5, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Scale", 6, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Offset", 7, 1, 1, 0, "", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("Units", 8, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Bits", 9, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Accumulate", 10, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("FitBaseUnitId", 13, 132, 1, 0, "", false, Type.FitBaseUnit)); - fieldIndex++; - newMesg.SetField(new Field("NativeMesgNum", 14, 132, 1, 0, "", false, Type.MesgNum)); - fieldIndex++; - newMesg.SetField(new Field("NativeFieldNum", 15, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateDeveloperDataIdMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("DeveloperDataId", MesgNum.DeveloperDataId); - fieldIndex = 0; - newMesg.SetField(new Field("DeveloperId", 0, 13, 1, 0, "", false, Type.Byte)); - fieldIndex++; - newMesg.SetField(new Field("ApplicationId", 1, 13, 1, 0, "", false, Type.Byte)); - fieldIndex++; - newMesg.SetField(new Field("ManufacturerId", 2, 132, 1, 0, "", false, Type.Manufacturer)); - fieldIndex++; - newMesg.SetField(new Field("DeveloperDataIndex", 3, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("ApplicationVersion", 4, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateCourseMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Course", MesgNum.Course); - fieldIndex = 0; - newMesg.SetField(new Field("Sport", 4, 0, 1, 0, "", false, Type.Sport)); - fieldIndex++; - newMesg.SetField(new Field("Name", 5, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Capabilities", 6, 140, 1, 0, "", false, Type.CourseCapabilities)); - fieldIndex++; - newMesg.SetField(new Field("SubSport", 7, 0, 1, 0, "", false, Type.SubSport)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateCoursePointMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("CoursePoint", MesgNum.CoursePoint); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Timestamp", 1, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("PositionLat", 2, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("PositionLong", 3, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("Distance", 4, 134, 100, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Type", 5, 0, 1, 0, "", false, Type.CoursePoint)); - fieldIndex++; - newMesg.SetField(new Field("Name", 6, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Favorite", 8, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSegmentIdMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("SegmentId", MesgNum.SegmentId); - fieldIndex = 0; - newMesg.SetField(new Field("Name", 0, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Uuid", 1, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Sport", 2, 0, 1, 0, "", false, Type.Sport)); - fieldIndex++; - newMesg.SetField(new Field("Enabled", 3, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("UserProfilePrimaryKey", 4, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("DeviceId", 5, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("DefaultRaceLeader", 6, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("DeleteStatus", 7, 0, 1, 0, "", false, Type.SegmentDeleteStatus)); - fieldIndex++; - newMesg.SetField(new Field("SelectionType", 8, 0, 1, 0, "", false, Type.SegmentSelectionType)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSegmentLeaderboardEntryMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("SegmentLeaderboardEntry", MesgNum.SegmentLeaderboardEntry); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Name", 0, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Type", 1, 0, 1, 0, "", false, Type.SegmentLeaderboardType)); - fieldIndex++; - newMesg.SetField(new Field("GroupPrimaryKey", 2, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("ActivityId", 3, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("SegmentTime", 4, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("ActivityIdString", 5, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSegmentPointMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("SegmentPoint", MesgNum.SegmentPoint); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("PositionLat", 1, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("PositionLong", 2, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("Distance", 3, 134, 100, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Altitude", 4, 132, 5, 500, "m", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(6, false, 16, 5, 500)); // enhanced_altitude - fieldIndex++; - newMesg.SetField(new Field("LeaderTime", 5, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedAltitude", 6, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSegmentLapMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("SegmentLap", MesgNum.SegmentLap); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Event", 0, 0, 1, 0, "", false, Type.Event)); - fieldIndex++; - newMesg.SetField(new Field("EventType", 1, 0, 1, 0, "", false, Type.EventType)); - fieldIndex++; - newMesg.SetField(new Field("StartTime", 2, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("StartPositionLat", 3, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("StartPositionLong", 4, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("EndPositionLat", 5, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("EndPositionLong", 6, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalElapsedTime", 7, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalTimerTime", 8, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalDistance", 9, 134, 100, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TotalCycles", 10, 134, 1, 0, "cycles", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TotalStrokes", 134, 1, 0, "strokes")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(23, 2); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("TotalCalories", 11, 132, 1, 0, "kcal", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalFatCalories", 12, 132, 1, 0, "kcal", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgSpeed", 13, 132, 1000, 0, "m/s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxSpeed", 14, 132, 1000, 0, "m/s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgHeartRate", 15, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxHeartRate", 16, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgCadence", 17, 2, 1, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxCadence", 18, 2, 1, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgPower", 19, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPower", 20, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalAscent", 21, 132, 1, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TotalDescent", 22, 132, 1, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Sport", 23, 0, 1, 0, "", false, Type.Sport)); - fieldIndex++; - newMesg.SetField(new Field("EventGroup", 24, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("NecLat", 25, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("NecLong", 26, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("SwcLat", 27, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("SwcLong", 28, 133, 1, 0, "semicircles", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("Name", 29, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("NormalizedPower", 30, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("LeftRightBalance", 31, 132, 1, 0, "", false, Type.LeftRightBalance100)); - fieldIndex++; - newMesg.SetField(new Field("SubSport", 32, 0, 1, 0, "", false, Type.SubSport)); - fieldIndex++; - newMesg.SetField(new Field("TotalWork", 33, 134, 1, 0, "J", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgAltitude", 34, 132, 5, 500, "m", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(91, false, 16, 5, 500)); // enhanced_avg_altitude - fieldIndex++; - newMesg.SetField(new Field("MaxAltitude", 35, 132, 5, 500, "m", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(92, false, 16, 5, 500)); // enhanced_max_altitude - fieldIndex++; - newMesg.SetField(new Field("GpsAccuracy", 36, 2, 1, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgGrade", 37, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgPosGrade", 38, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgNegGrade", 39, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPosGrade", 40, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxNegGrade", 41, 131, 100, 0, "%", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgTemperature", 42, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxTemperature", 43, 1, 1, 0, "C", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("TotalMovingTime", 44, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgPosVerticalSpeed", 45, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgNegVerticalSpeed", 46, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPosVerticalSpeed", 47, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxNegVerticalSpeed", 48, 131, 1000, 0, "m/s", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("TimeInHrZone", 49, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInSpeedZone", 50, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInCadenceZone", 51, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("TimeInPowerZone", 52, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("RepetitionNum", 53, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MinAltitude", 54, 132, 5, 500, "m", false, Type.Uint16)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(93, false, 16, 5, 500)); // enhanced_min_altitude - fieldIndex++; - newMesg.SetField(new Field("MinHeartRate", 55, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("ActiveTime", 56, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("WktStepIndex", 57, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("SportEvent", 58, 0, 1, 0, "", false, Type.SportEvent)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftTorqueEffectiveness", 59, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightTorqueEffectiveness", 60, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPedalSmoothness", 61, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPedalSmoothness", 62, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgCombinedPedalSmoothness", 63, 2, 2, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Status", 64, 0, 1, 0, "", false, Type.SegmentLapStatus)); - fieldIndex++; - newMesg.SetField(new Field("Uuid", 65, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("AvgFractionalCadence", 66, 2, 128, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxFractionalCadence", 67, 2, 128, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TotalFractionalCycles", 68, 2, 128, 0, "cycles", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("FrontGearShiftCount", 69, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("RearGearShiftCount", 70, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("TimeStanding", 71, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("StandCount", 72, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPco", 73, 1, 1, 0, "mm", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPco", 74, 1, 1, 0, "mm", false, Type.Sint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPowerPhase", 75, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgLeftPowerPhasePeak", 76, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPowerPhase", 77, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgRightPowerPhasePeak", 78, 2, 0.7111111, 0, "degrees", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("AvgPowerPosition", 79, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MaxPowerPosition", 80, 132, 1, 0, "watts", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("AvgCadencePosition", 81, 2, 1, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("MaxCadencePosition", 82, 2, 1, 0, "rpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Manufacturer", 83, 132, 1, 0, "", false, Type.Manufacturer)); - fieldIndex++; - newMesg.SetField(new Field("TotalGrit", 84, 136, 1, 0, "kGrit", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("TotalFlow", 85, 136, 1, 0, "Flow", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("AvgGrit", 86, 136, 1, 0, "kGrit", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("AvgFlow", 87, 136, 1, 0, "Flow", false, Type.Float32)); - fieldIndex++; - newMesg.SetField(new Field("TotalFractionalAscent", 89, 2, 100, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("TotalFractionalDescent", 90, 2, 100, 0, "m", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedAvgAltitude", 91, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMaxAltitude", 92, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EnhancedMinAltitude", 93, 134, 5, 500, "m", false, Type.Uint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateSegmentFileMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("SegmentFile", MesgNum.SegmentFile); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("FileUuid", 1, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Enabled", 3, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("UserProfilePrimaryKey", 4, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("LeaderType", 7, 0, 1, 0, "", false, Type.SegmentLeaderboardType)); - fieldIndex++; - newMesg.SetField(new Field("LeaderGroupPrimaryKey", 8, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("LeaderActivityId", 9, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("LeaderActivityIdString", 10, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("DefaultRaceLeader", 11, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateWorkoutMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Workout", MesgNum.Workout); - fieldIndex = 0; - newMesg.SetField(new Field("Sport", 4, 0, 1, 0, "", false, Type.Sport)); - fieldIndex++; - newMesg.SetField(new Field("Capabilities", 5, 140, 1, 0, "", false, Type.WorkoutCapabilities)); - fieldIndex++; - newMesg.SetField(new Field("NumValidSteps", 6, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("WktName", 8, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("SubSport", 11, 0, 1, 0, "", false, Type.SubSport)); - fieldIndex++; - newMesg.SetField(new Field("PoolLength", 14, 132, 100, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("PoolLengthUnit", 15, 0, 1, 0, "", false, Type.DisplayMeasure)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateWorkoutSessionMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("WorkoutSession", MesgNum.WorkoutSession); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Sport", 0, 0, 1, 0, "", false, Type.Sport)); - fieldIndex++; - newMesg.SetField(new Field("SubSport", 1, 0, 1, 0, "", false, Type.SubSport)); - fieldIndex++; - newMesg.SetField(new Field("NumValidSteps", 2, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("FirstStepIndex", 3, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("PoolLength", 4, 132, 100, 0, "m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("PoolLengthUnit", 5, 0, 1, 0, "", false, Type.DisplayMeasure)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateWorkoutStepMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("WorkoutStep", MesgNum.WorkoutStep); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("WktStepName", 0, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("DurationType", 1, 0, 1, 0, "", false, Type.WktStepDuration)); - fieldIndex++; - newMesg.SetField(new Field("DurationValue", 2, 134, 1, 0, "", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("DurationTime", 134, 1000, 0, "s")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 0); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 28); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("DurationDistance", 134, 100, 0, "m")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 1); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("DurationHr", 134, 1, 0, "% or bpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 2); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 3); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("DurationCalories", 134, 1, 0, "calories")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 4); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("DurationStep", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 6); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 7); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 8); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 9); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 10); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 11); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 12); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 13); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("DurationPower", 134, 1, 0, "% or watts")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 14); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 15); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("DurationReps", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 29); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("TargetType", 3, 0, 1, 0, "", false, Type.WktStepTarget)); - fieldIndex++; - newMesg.SetField(new Field("TargetValue", 4, 134, 1, 0, "", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TargetSpeedZone", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 0); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TargetHrZone", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 1); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TargetCadenceZone", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 3); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TargetPowerZone", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 4); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("RepeatSteps", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 6); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("RepeatTime", 134, 1000, 0, "s")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 7); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("RepeatDistance", 134, 100, 0, "m")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 8); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("RepeatCalories", 134, 1, 0, "calories")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 9); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("RepeatHr", 134, 1, 0, "% or bpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 10); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 11); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("RepeatPower", 134, 1, 0, "% or watts")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 12); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(1, 13); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("TargetStrokeType", 0, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 11); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("CustomTargetValueLow", 5, 134, 1, 0, "", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CustomTargetSpeedLow", 134, 1000, 0, "m/s")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 0); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CustomTargetHeartRateLow", 134, 1, 0, "% or bpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 1); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CustomTargetCadenceLow", 134, 1, 0, "rpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 3); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CustomTargetPowerLow", 134, 1, 0, "% or watts")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 4); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("CustomTargetValueHigh", 6, 134, 1, 0, "", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CustomTargetSpeedHigh", 134, 1000, 0, "m/s")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 0); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CustomTargetHeartRateHigh", 134, 1, 0, "% or bpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 1); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CustomTargetCadenceHigh", 134, 1, 0, "rpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 3); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("CustomTargetPowerHigh", 134, 1, 0, "% or watts")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(3, 4); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("Intensity", 7, 0, 1, 0, "", false, Type.Intensity)); - fieldIndex++; - newMesg.SetField(new Field("Notes", 8, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - newMesg.SetField(new Field("Equipment", 9, 0, 1, 0, "", false, Type.WorkoutEquipment)); - fieldIndex++; - newMesg.SetField(new Field("ExerciseCategory", 10, 132, 1, 0, "", false, Type.ExerciseCategory)); - fieldIndex++; - newMesg.SetField(new Field("ExerciseName", 11, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ExerciseWeight", 12, 132, 100, 0, "kg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("WeightDisplayUnit", 13, 132, 1, 0, "", false, Type.FitBaseUnit)); - fieldIndex++; - newMesg.SetField(new Field("SecondaryTargetType", 19, 0, 1, 0, "", false, Type.WktStepTarget)); - fieldIndex++; - newMesg.SetField(new Field("SecondaryTargetValue", 20, 134, 1, 0, "", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryTargetSpeedZone", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 0); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryTargetHrZone", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 1); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryTargetCadenceZone", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 3); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryTargetPowerZone", 134, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 4); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryTargetStrokeType", 0, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 11); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("SecondaryCustomTargetValueLow", 21, 134, 1, 0, "", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryCustomTargetSpeedLow", 134, 1000, 0, "m/s")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 0); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryCustomTargetHeartRateLow", 134, 1, 0, "% or bpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 1); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryCustomTargetCadenceLow", 134, 1, 0, "rpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 3); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryCustomTargetPowerLow", 134, 1, 0, "% or watts")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 4); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("SecondaryCustomTargetValueHigh", 22, 134, 1, 0, "", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryCustomTargetSpeedHigh", 134, 1000, 0, "m/s")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 0); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryCustomTargetHeartRateHigh", 134, 1, 0, "% or bpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 1); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryCustomTargetCadenceHigh", 134, 1, 0, "rpm")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 3); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("SecondaryCustomTargetPowerHigh", 134, 1, 0, "% or watts")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(19, 4); - subfieldIndex++; - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateExerciseTitleMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("ExerciseTitle", MesgNum.ExerciseTitle); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("ExerciseCategory", 0, 132, 1, 0, "", false, Type.ExerciseCategory)); - fieldIndex++; - newMesg.SetField(new Field("ExerciseName", 1, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("WktStepName", 2, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateScheduleMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Schedule", MesgNum.Schedule); - fieldIndex = 0; - newMesg.SetField(new Field("Manufacturer", 0, 132, 1, 0, "", false, Type.Manufacturer)); - fieldIndex++; - newMesg.SetField(new Field("Product", 1, 132, 1, 0, "", false, Type.Uint16)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("FaveroProduct", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 263); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("GarminProduct", 132, 1, 0, "")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 1); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 15); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 13); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(0, 89); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("SerialNumber", 2, 140, 1, 0, "", false, Type.Uint32z)); - fieldIndex++; - newMesg.SetField(new Field("TimeCreated", 3, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Completed", 4, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - newMesg.SetField(new Field("Type", 5, 0, 1, 0, "", false, Type.Schedule)); - fieldIndex++; - newMesg.SetField(new Field("ScheduledTime", 6, 134, 1, 0, "", false, Type.LocalDateTime)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateTotalsMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Totals", MesgNum.Totals); - fieldIndex = 0; - newMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("TimerTime", 0, 134, 1, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Distance", 1, 134, 1, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Calories", 2, 134, 1, 0, "kcal", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Sport", 3, 0, 1, 0, "", false, Type.Sport)); - fieldIndex++; - newMesg.SetField(new Field("ElapsedTime", 4, 134, 1, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Sessions", 5, 132, 1, 0, "", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ActiveTime", 6, 134, 1, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("SportIndex", 9, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateWeightScaleMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("WeightScale", MesgNum.WeightScale); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("Weight", 0, 132, 100, 0, "kg", false, Type.Weight)); - fieldIndex++; - newMesg.SetField(new Field("PercentFat", 1, 132, 100, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("PercentHydration", 2, 132, 100, 0, "%", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("VisceralFatMass", 3, 132, 100, 0, "kg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("BoneMass", 4, 132, 100, 0, "kg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MuscleMass", 5, 132, 100, 0, "kg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("BasalMet", 7, 132, 4, 0, "kcal/day", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("PhysiqueRating", 8, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("ActiveMet", 9, 132, 4, 0, "kcal/day", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MetabolicAge", 10, 2, 1, 0, "years", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("VisceralFatRating", 11, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("UserProfileIndex", 12, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateBloodPressureMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("BloodPressure", MesgNum.BloodPressure); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("SystolicPressure", 0, 132, 1, 0, "mmHg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("DiastolicPressure", 1, 132, 1, 0, "mmHg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MeanArterialPressure", 2, 132, 1, 0, "mmHg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Map3SampleMean", 3, 132, 1, 0, "mmHg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MapMorningValues", 4, 132, 1, 0, "mmHg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MapEveningValues", 5, 132, 1, 0, "mmHg", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("HeartRate", 6, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("HeartRateType", 7, 0, 1, 0, "", false, Type.HrType)); - fieldIndex++; - newMesg.SetField(new Field("Status", 8, 0, 1, 0, "", false, Type.BpStatus)); - fieldIndex++; - newMesg.SetField(new Field("UserProfileIndex", 9, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateMonitoringInfoMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("MonitoringInfo", MesgNum.MonitoringInfo); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("LocalTimestamp", 0, 134, 1, 0, "s", false, Type.LocalDateTime)); - fieldIndex++; - newMesg.SetField(new Field("ActivityType", 1, 0, 1, 0, "", false, Type.ActivityType)); - fieldIndex++; - newMesg.SetField(new Field("CyclesToDistance", 3, 132, 5000, 0, "m/cycle", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("CyclesToCalories", 4, 132, 5000, 0, "kcal/cycle", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("RestingMetabolicRate", 5, 132, 1, 0, "kcal / day", false, Type.Uint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateMonitoringMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Monitoring", MesgNum.Monitoring); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("DeviceIndex", 0, 2, 1, 0, "", false, Type.DeviceIndex)); - fieldIndex++; - newMesg.SetField(new Field("Calories", 1, 132, 1, 0, "kcal", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Distance", 2, 134, 100, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Cycles", 3, 134, 2, 0, "cycles", false, Type.Uint32)); - subfieldIndex = 0; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("Steps", 134, 1, 0, "steps")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 6); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 1); - subfieldIndex++; - newMesg.FieldsList[fieldIndex].subfields.Add(new Subfield("Strokes", 134, 2, 0, "strokes")); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 2); - newMesg.FieldsList[fieldIndex].subfields[subfieldIndex].AddMap(5, 5); - subfieldIndex++; - fieldIndex++; - newMesg.SetField(new Field("ActiveTime", 4, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("ActivityType", 5, 0, 1, 0, "", false, Type.ActivityType)); - fieldIndex++; - newMesg.SetField(new Field("ActivitySubtype", 6, 0, 1, 0, "", false, Type.ActivitySubtype)); - fieldIndex++; - newMesg.SetField(new Field("ActivityLevel", 7, 0, 1, 0, "", false, Type.ActivityLevel)); - fieldIndex++; - newMesg.SetField(new Field("Distance16", 8, 132, 1, 0, "100 * m", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Cycles16", 9, 132, 1, 0, "2 * cycles (steps)", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ActiveTime16", 10, 132, 1, 0, "s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("LocalTimestamp", 11, 134, 1, 0, "", false, Type.LocalDateTime)); - fieldIndex++; - newMesg.SetField(new Field("Temperature", 12, 131, 100, 0, "C", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("TemperatureMin", 14, 131, 100, 0, "C", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("TemperatureMax", 15, 131, 100, 0, "C", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("ActivityTime", 16, 132, 1, 0, "minutes", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("ActiveCalories", 19, 132, 1, 0, "kcal", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("CurrentActivityTypeIntensity", 24, 13, 1, 0, "", false, Type.Byte)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(5, false, 5, 1, 0)); // activity_type - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(28, false, 3, 1, 0)); // intensity - fieldIndex++; - newMesg.SetField(new Field("TimestampMin8", 25, 2, 1, 0, "min", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Timestamp16", 26, 132, 1, 0, "s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("HeartRate", 27, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Intensity", 28, 2, 10, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("DurationMin", 29, 132, 1, 0, "min", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Duration", 30, 134, 1, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Ascent", 31, 134, 1000, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Descent", 32, 134, 1000, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("ModerateActivityMinutes", 33, 132, 1, 0, "minutes", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("VigorousActivityMinutes", 34, 132, 1, 0, "minutes", false, Type.Uint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateHrMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Hr", MesgNum.Hr); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("FractionalTimestamp", 0, 132, 32768, 0, "s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("Time256", 1, 2, 256, 0, "s", false, Type.Uint8)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(0, false, 8, 256, 0)); // fractional_timestamp - fieldIndex++; - newMesg.SetField(new Field("FilteredBpm", 6, 2, 1, 0, "bpm", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("EventTimestamp", 9, 134, 1024, 0, "s", true, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("EventTimestamp12", 10, 13, 1, 0, "", false, Type.Byte)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateStressLevelMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("StressLevel", MesgNum.StressLevel); - fieldIndex = 0; - newMesg.SetField(new Field("StressLevelValue", 0, 131, 1, 0, "", false, Type.Sint16)); - fieldIndex++; - newMesg.SetField(new Field("StressLevelTime", 1, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateMemoGlobMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("MemoGlob", MesgNum.MemoGlob); - fieldIndex = 0; - newMesg.SetField(new Field("PartIndex", 250, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("Memo", 0, 13, 1, 0, "", false, Type.Byte)); - fieldIndex++; - newMesg.SetField(new Field("MesgNum", 1, 132, 1, 0, "", false, Type.MesgNum)); - fieldIndex++; - newMesg.SetField(new Field("ParentIndex", 2, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("FieldNum", 3, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Data", 4, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateAntChannelIdMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("AntChannelId", MesgNum.AntChannelId); - fieldIndex = 0; - newMesg.SetField(new Field("ChannelNumber", 0, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("DeviceType", 1, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("DeviceNumber", 2, 139, 1, 0, "", false, Type.Uint16z)); - fieldIndex++; - newMesg.SetField(new Field("TransmissionType", 3, 10, 1, 0, "", false, Type.Uint8z)); - fieldIndex++; - newMesg.SetField(new Field("DeviceIndex", 4, 2, 1, 0, "", false, Type.DeviceIndex)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateAntRxMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("AntRx", MesgNum.AntRx); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("FractionalTimestamp", 0, 132, 32768, 0, "s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MesgId", 1, 13, 1, 0, "", false, Type.Byte)); - fieldIndex++; - newMesg.SetField(new Field("MesgData", 2, 13, 1, 0, "", false, Type.Byte)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(3, false, 8, 1, 0)); // channel_number - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - fieldIndex++; - newMesg.SetField(new Field("ChannelNumber", 3, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Data", 4, 13, 1, 0, "", false, Type.Byte)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateAntTxMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("AntTx", MesgNum.AntTx); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("FractionalTimestamp", 0, 132, 32768, 0, "s", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("MesgId", 1, 13, 1, 0, "", false, Type.Byte)); - fieldIndex++; - newMesg.SetField(new Field("MesgData", 2, 13, 1, 0, "", false, Type.Byte)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(3, false, 8, 1, 0)); // channel_number - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data - fieldIndex++; - newMesg.SetField(new Field("ChannelNumber", 3, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Data", 4, 13, 1, 0, "", false, Type.Byte)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateExdScreenConfigurationMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("ExdScreenConfiguration", MesgNum.ExdScreenConfiguration); - fieldIndex = 0; - newMesg.SetField(new Field("ScreenIndex", 0, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("FieldCount", 1, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Layout", 2, 0, 1, 0, "", false, Type.ExdLayout)); - fieldIndex++; - newMesg.SetField(new Field("ScreenEnabled", 3, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateExdDataFieldConfigurationMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("ExdDataFieldConfiguration", MesgNum.ExdDataFieldConfiguration); - fieldIndex = 0; - newMesg.SetField(new Field("ScreenIndex", 0, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("ConceptField", 1, 13, 1, 0, "", false, Type.Byte)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(2, false, 4, 1, 0)); // field_id - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(3, false, 4, 1, 0)); // concept_count - fieldIndex++; - newMesg.SetField(new Field("FieldId", 2, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("ConceptCount", 3, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("DisplayType", 4, 0, 1, 0, "", false, Type.ExdDisplayType)); - fieldIndex++; - newMesg.SetField(new Field("Title", 5, 7, 1, 0, "", false, Type.String)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateExdDataConceptConfigurationMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("ExdDataConceptConfiguration", MesgNum.ExdDataConceptConfiguration); - fieldIndex = 0; - newMesg.SetField(new Field("ScreenIndex", 0, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("ConceptField", 1, 13, 1, 0, "", false, Type.Byte)); - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(2, false, 4, 1, 0)); // field_id - newMesg.FieldsList[fieldIndex].components.Add(new FieldComponent(3, false, 4, 1, 0)); // concept_index - fieldIndex++; - newMesg.SetField(new Field("FieldId", 2, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("ConceptIndex", 3, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("DataPage", 4, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("ConceptKey", 5, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("Scaling", 6, 2, 1, 0, "", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("DataUnits", 8, 0, 1, 0, "", false, Type.ExdDataUnits)); - fieldIndex++; - newMesg.SetField(new Field("Qualifier", 9, 0, 1, 0, "", false, Type.ExdQualifiers)); - fieldIndex++; - newMesg.SetField(new Field("Descriptor", 10, 0, 1, 0, "", false, Type.ExdDescriptors)); - fieldIndex++; - newMesg.SetField(new Field("IsSigned", 11, 0, 1, 0, "", false, Type.Bool)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateDiveSummaryMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("DiveSummary", MesgNum.DiveSummary); - fieldIndex = 0; - newMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false, Type.DateTime)); - fieldIndex++; - newMesg.SetField(new Field("ReferenceMesg", 0, 132, 1, 0, "", false, Type.MesgNum)); - fieldIndex++; - newMesg.SetField(new Field("ReferenceIndex", 1, 132, 1, 0, "", false, Type.MessageIndex)); - fieldIndex++; - newMesg.SetField(new Field("AvgDepth", 2, 134, 1000, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("MaxDepth", 3, 134, 1000, 0, "m", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("SurfaceInterval", 4, 134, 1, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("StartCns", 5, 2, 1, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("EndCns", 6, 2, 1, 0, "percent", false, Type.Uint8)); - fieldIndex++; - newMesg.SetField(new Field("StartN2", 7, 132, 1, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("EndN2", 8, 132, 1, 0, "percent", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("O2Toxicity", 9, 132, 1, 0, "OTUs", false, Type.Uint16)); - fieldIndex++; - newMesg.SetField(new Field("DiveNumber", 10, 134, 1, 0, "", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("BottomTime", 11, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgAscentRate", 17, 133, 1000, 0, "m/s", false, Type.Sint32)); - fieldIndex++; - newMesg.SetField(new Field("AvgDescentRate", 22, 134, 1000, 0, "m/s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("MaxAscentRate", 23, 134, 1000, 0, "m/s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("MaxDescentRate", 24, 134, 1000, 0, "m/s", false, Type.Uint32)); - fieldIndex++; - newMesg.SetField(new Field("HangTime", 25, 134, 1000, 0, "s", false, Type.Uint32)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreateHrvMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Hrv", MesgNum.Hrv); - fieldIndex = 0; - newMesg.SetField(new Field("Time", 0, 132, 1000, 0, "s", false, Type.Uint16)); - fieldIndex++; - - return newMesg; - } - - private static Mesg CreatePadMesg() - { - ushort fieldIndex, subfieldIndex; - Mesg newMesg = new Mesg("Pad", MesgNum.Pad); - fieldIndex = 0; - - return newMesg; - } - - #pragma warning restore 0168 - #pragma warning restore 0219 - - #endregion - } // class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/AccelerometerDataMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/AccelerometerDataMesg.cs deleted file mode 100644 index b921ff92e..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/AccelerometerDataMesg.cs +++ /dev/null @@ -1,509 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the AccelerometerData profile message. - /// - public class AccelerometerDataMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte TimestampMs = 0; - public const byte SampleTimeOffset = 1; - public const byte AccelX = 2; - public const byte AccelY = 3; - public const byte AccelZ = 4; - public const byte CalibratedAccelX = 5; - public const byte CalibratedAccelY = 6; - public const byte CalibratedAccelZ = 7; - public const byte CompressedCalibratedAccelX = 8; - public const byte CompressedCalibratedAccelY = 9; - public const byte CompressedCalibratedAccelZ = 10; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public AccelerometerDataMesg() : base(Profile.GetMesg(MesgNum.AccelerometerData)) - { - } - - public AccelerometerDataMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Returns nullable ushort representing the TimestampMs field - public ushort? GetTimestampMs() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Nullable field value to be set - public void SetTimestampMs(ushort? timestampMs_) - { - SetFieldValue(0, 0, timestampMs_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field SampleTimeOffset - public int GetNumSampleTimeOffset() - { - return GetNumFieldValues(1, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SampleTimeOffset field - /// Units: ms - /// Comment: Each time in the array describes the time at which the accelerometer sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in accel_x and accel_y and accel_z - /// 0 based index of SampleTimeOffset element to retrieve - /// Returns nullable ushort representing the SampleTimeOffset field - public ushort? GetSampleTimeOffset(int index) - { - Object val = GetFieldValue(1, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set SampleTimeOffset field - /// Units: ms - /// Comment: Each time in the array describes the time at which the accelerometer sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in accel_x and accel_y and accel_z - /// 0 based index of sample_time_offset - /// Nullable field value to be set - public void SetSampleTimeOffset(int index, ushort? sampleTimeOffset_) - { - SetFieldValue(1, index, sampleTimeOffset_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AccelX - public int GetNumAccelX() - { - return GetNumFieldValues(2, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AccelX field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of AccelX element to retrieve - /// Returns nullable ushort representing the AccelX field - public ushort? GetAccelX(int index) - { - Object val = GetFieldValue(2, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AccelX field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of accel_x - /// Nullable field value to be set - public void SetAccelX(int index, ushort? accelX_) - { - SetFieldValue(2, index, accelX_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AccelY - public int GetNumAccelY() - { - return GetNumFieldValues(3, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AccelY field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of AccelY element to retrieve - /// Returns nullable ushort representing the AccelY field - public ushort? GetAccelY(int index) - { - Object val = GetFieldValue(3, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AccelY field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of accel_y - /// Nullable field value to be set - public void SetAccelY(int index, ushort? accelY_) - { - SetFieldValue(3, index, accelY_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AccelZ - public int GetNumAccelZ() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AccelZ field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of AccelZ element to retrieve - /// Returns nullable ushort representing the AccelZ field - public ushort? GetAccelZ(int index) - { - Object val = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AccelZ field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of accel_z - /// Nullable field value to be set - public void SetAccelZ(int index, ushort? accelZ_) - { - SetFieldValue(4, index, accelZ_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CalibratedAccelX - public int GetNumCalibratedAccelX() - { - return GetNumFieldValues(5, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CalibratedAccelX field - /// Units: g - /// Comment: Calibrated accel reading - /// 0 based index of CalibratedAccelX element to retrieve - /// Returns nullable float representing the CalibratedAccelX field - public float? GetCalibratedAccelX(int index) - { - Object val = GetFieldValue(5, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CalibratedAccelX field - /// Units: g - /// Comment: Calibrated accel reading - /// 0 based index of calibrated_accel_x - /// Nullable field value to be set - public void SetCalibratedAccelX(int index, float? calibratedAccelX_) - { - SetFieldValue(5, index, calibratedAccelX_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CalibratedAccelY - public int GetNumCalibratedAccelY() - { - return GetNumFieldValues(6, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CalibratedAccelY field - /// Units: g - /// Comment: Calibrated accel reading - /// 0 based index of CalibratedAccelY element to retrieve - /// Returns nullable float representing the CalibratedAccelY field - public float? GetCalibratedAccelY(int index) - { - Object val = GetFieldValue(6, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CalibratedAccelY field - /// Units: g - /// Comment: Calibrated accel reading - /// 0 based index of calibrated_accel_y - /// Nullable field value to be set - public void SetCalibratedAccelY(int index, float? calibratedAccelY_) - { - SetFieldValue(6, index, calibratedAccelY_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CalibratedAccelZ - public int GetNumCalibratedAccelZ() - { - return GetNumFieldValues(7, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CalibratedAccelZ field - /// Units: g - /// Comment: Calibrated accel reading - /// 0 based index of CalibratedAccelZ element to retrieve - /// Returns nullable float representing the CalibratedAccelZ field - public float? GetCalibratedAccelZ(int index) - { - Object val = GetFieldValue(7, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CalibratedAccelZ field - /// Units: g - /// Comment: Calibrated accel reading - /// 0 based index of calibrated_accel_z - /// Nullable field value to be set - public void SetCalibratedAccelZ(int index, float? calibratedAccelZ_) - { - SetFieldValue(7, index, calibratedAccelZ_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CompressedCalibratedAccelX - public int GetNumCompressedCalibratedAccelX() - { - return GetNumFieldValues(8, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CompressedCalibratedAccelX field - /// Units: mG - /// Comment: Calibrated accel reading - /// 0 based index of CompressedCalibratedAccelX element to retrieve - /// Returns nullable short representing the CompressedCalibratedAccelX field - public short? GetCompressedCalibratedAccelX(int index) - { - Object val = GetFieldValue(8, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt16(val)); - - } - - /// - /// Set CompressedCalibratedAccelX field - /// Units: mG - /// Comment: Calibrated accel reading - /// 0 based index of compressed_calibrated_accel_x - /// Nullable field value to be set - public void SetCompressedCalibratedAccelX(int index, short? compressedCalibratedAccelX_) - { - SetFieldValue(8, index, compressedCalibratedAccelX_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CompressedCalibratedAccelY - public int GetNumCompressedCalibratedAccelY() - { - return GetNumFieldValues(9, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CompressedCalibratedAccelY field - /// Units: mG - /// Comment: Calibrated accel reading - /// 0 based index of CompressedCalibratedAccelY element to retrieve - /// Returns nullable short representing the CompressedCalibratedAccelY field - public short? GetCompressedCalibratedAccelY(int index) - { - Object val = GetFieldValue(9, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt16(val)); - - } - - /// - /// Set CompressedCalibratedAccelY field - /// Units: mG - /// Comment: Calibrated accel reading - /// 0 based index of compressed_calibrated_accel_y - /// Nullable field value to be set - public void SetCompressedCalibratedAccelY(int index, short? compressedCalibratedAccelY_) - { - SetFieldValue(9, index, compressedCalibratedAccelY_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CompressedCalibratedAccelZ - public int GetNumCompressedCalibratedAccelZ() - { - return GetNumFieldValues(10, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CompressedCalibratedAccelZ field - /// Units: mG - /// Comment: Calibrated accel reading - /// 0 based index of CompressedCalibratedAccelZ element to retrieve - /// Returns nullable short representing the CompressedCalibratedAccelZ field - public short? GetCompressedCalibratedAccelZ(int index) - { - Object val = GetFieldValue(10, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt16(val)); - - } - - /// - /// Set CompressedCalibratedAccelZ field - /// Units: mG - /// Comment: Calibrated accel reading - /// 0 based index of compressed_calibrated_accel_z - /// Nullable field value to be set - public void SetCompressedCalibratedAccelZ(int index, short? compressedCalibratedAccelZ_) - { - SetFieldValue(10, index, compressedCalibratedAccelZ_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ActivityMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ActivityMesg.cs deleted file mode 100644 index 7acead62f..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ActivityMesg.cs +++ /dev/null @@ -1,236 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Activity profile message. - /// - public class ActivityMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte TotalTimerTime = 0; - public const byte NumSessions = 1; - public const byte Type = 2; - public const byte Event = 3; - public const byte EventType = 4; - public const byte LocalTimestamp = 5; - public const byte EventGroup = 6; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public ActivityMesg() : base(Profile.GetMesg(MesgNum.Activity)) - { - } - - public ActivityMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalTimerTime field - /// Units: s - /// Comment: Exclude pauses - /// Returns nullable float representing the TotalTimerTime field - public float? GetTotalTimerTime() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalTimerTime field - /// Units: s - /// Comment: Exclude pauses - /// Nullable field value to be set - public void SetTotalTimerTime(float? totalTimerTime_) - { - SetFieldValue(0, 0, totalTimerTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NumSessions field - /// Returns nullable ushort representing the NumSessions field - public ushort? GetNumSessions() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NumSessions field - /// Nullable field value to be set - public void SetNumSessions(ushort? numSessions_) - { - SetFieldValue(1, 0, numSessions_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Type field - /// Returns nullable Activity enum representing the Type field - new public Activity? GetType() - { - object obj = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - Activity? value = obj == null ? (Activity?)null : (Activity)obj; - return value; - } - - /// - /// Set Type field - /// Nullable field value to be set - public void SetType(Activity? type_) - { - SetFieldValue(2, 0, type_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Event field - /// Returns nullable Event enum representing the Event field - public Event? GetEvent() - { - object obj = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - Event? value = obj == null ? (Event?)null : (Event)obj; - return value; - } - - /// - /// Set Event field - /// Nullable field value to be set - public void SetEvent(Event? event_) - { - SetFieldValue(3, 0, event_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventType field - /// Returns nullable EventType enum representing the EventType field - public EventType? GetEventType() - { - object obj = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - EventType? value = obj == null ? (EventType?)null : (EventType)obj; - return value; - } - - /// - /// Set EventType field - /// Nullable field value to be set - public void SetEventType(EventType? eventType_) - { - SetFieldValue(4, 0, eventType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LocalTimestamp field - /// Comment: timestamp epoch expressed in local time, used to convert activity timestamps to local time - /// Returns nullable uint representing the LocalTimestamp field - public uint? GetLocalTimestamp() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set LocalTimestamp field - /// Comment: timestamp epoch expressed in local time, used to convert activity timestamps to local time - /// Nullable field value to be set - public void SetLocalTimestamp(uint? localTimestamp_) - { - SetFieldValue(5, 0, localTimestamp_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventGroup field - /// Returns nullable byte representing the EventGroup field - public byte? GetEventGroup() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set EventGroup field - /// Nullable field value to be set - public void SetEventGroup(byte? eventGroup_) - { - SetFieldValue(6, 0, eventGroup_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/AntChannelIdMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/AntChannelIdMesg.cs deleted file mode 100644 index bd0cbe1ce..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/AntChannelIdMesg.cs +++ /dev/null @@ -1,173 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the AntChannelId profile message. - /// - public class AntChannelIdMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte ChannelNumber = 0; - public const byte DeviceType = 1; - public const byte DeviceNumber = 2; - public const byte TransmissionType = 3; - public const byte DeviceIndex = 4; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public AntChannelIdMesg() : base(Profile.GetMesg(MesgNum.AntChannelId)) - { - } - - public AntChannelIdMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the ChannelNumber field - /// Returns nullable byte representing the ChannelNumber field - public byte? GetChannelNumber() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ChannelNumber field - /// Nullable field value to be set - public void SetChannelNumber(byte? channelNumber_) - { - SetFieldValue(0, 0, channelNumber_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeviceType field - /// Returns nullable byte representing the DeviceType field - public byte? GetDeviceType() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DeviceType field - /// Nullable field value to be set - public void SetDeviceType(byte? deviceType_) - { - SetFieldValue(1, 0, deviceType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeviceNumber field - /// Returns nullable ushort representing the DeviceNumber field - public ushort? GetDeviceNumber() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set DeviceNumber field - /// Nullable field value to be set - public void SetDeviceNumber(ushort? deviceNumber_) - { - SetFieldValue(2, 0, deviceNumber_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TransmissionType field - /// Returns nullable byte representing the TransmissionType field - public byte? GetTransmissionType() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set TransmissionType field - /// Nullable field value to be set - public void SetTransmissionType(byte? transmissionType_) - { - SetFieldValue(3, 0, transmissionType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeviceIndex field - /// Returns nullable byte representing the DeviceIndex field - public byte? GetDeviceIndex() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DeviceIndex field - /// Nullable field value to be set - public void SetDeviceIndex(byte? deviceIndex_) - { - SetFieldValue(4, 0, deviceIndex_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/AntRxMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/AntRxMesg.cs deleted file mode 100644 index f71d42300..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/AntRxMesg.cs +++ /dev/null @@ -1,225 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the AntRx profile message. - /// - public class AntRxMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte FractionalTimestamp = 0; - public const byte MesgId = 1; - public const byte MesgData = 2; - public const byte ChannelNumber = 3; - public const byte Data = 4; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public AntRxMesg() : base(Profile.GetMesg(MesgNum.AntRx)) - { - } - - public AntRxMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FractionalTimestamp field - /// Units: s - /// Returns nullable float representing the FractionalTimestamp field - public float? GetFractionalTimestamp() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set FractionalTimestamp field - /// Units: s - /// Nullable field value to be set - public void SetFractionalTimestamp(float? fractionalTimestamp_) - { - SetFieldValue(0, 0, fractionalTimestamp_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MesgId field - /// Returns nullable byte representing the MesgId field - public byte? GetMesgId() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MesgId field - /// Nullable field value to be set - public void SetMesgId(byte? mesgId_) - { - SetFieldValue(1, 0, mesgId_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MesgData - public int GetNumMesgData() - { - return GetNumFieldValues(2, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MesgData field - /// 0 based index of MesgData element to retrieve - /// Returns nullable byte representing the MesgData field - public byte? GetMesgData(int index) - { - Object val = GetFieldValue(2, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MesgData field - /// 0 based index of mesg_data - /// Nullable field value to be set - public void SetMesgData(int index, byte? mesgData_) - { - SetFieldValue(2, index, mesgData_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ChannelNumber field - /// Returns nullable byte representing the ChannelNumber field - public byte? GetChannelNumber() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ChannelNumber field - /// Nullable field value to be set - public void SetChannelNumber(byte? channelNumber_) - { - SetFieldValue(3, 0, channelNumber_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Data - public int GetNumData() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Data field - /// 0 based index of Data element to retrieve - /// Returns nullable byte representing the Data field - public byte? GetData(int index) - { - Object val = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Data field - /// 0 based index of data - /// Nullable field value to be set - public void SetData(int index, byte? data_) - { - SetFieldValue(4, index, data_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/AntTxMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/AntTxMesg.cs deleted file mode 100644 index b2be26877..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/AntTxMesg.cs +++ /dev/null @@ -1,225 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the AntTx profile message. - /// - public class AntTxMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte FractionalTimestamp = 0; - public const byte MesgId = 1; - public const byte MesgData = 2; - public const byte ChannelNumber = 3; - public const byte Data = 4; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public AntTxMesg() : base(Profile.GetMesg(MesgNum.AntTx)) - { - } - - public AntTxMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FractionalTimestamp field - /// Units: s - /// Returns nullable float representing the FractionalTimestamp field - public float? GetFractionalTimestamp() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set FractionalTimestamp field - /// Units: s - /// Nullable field value to be set - public void SetFractionalTimestamp(float? fractionalTimestamp_) - { - SetFieldValue(0, 0, fractionalTimestamp_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MesgId field - /// Returns nullable byte representing the MesgId field - public byte? GetMesgId() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MesgId field - /// Nullable field value to be set - public void SetMesgId(byte? mesgId_) - { - SetFieldValue(1, 0, mesgId_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MesgData - public int GetNumMesgData() - { - return GetNumFieldValues(2, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MesgData field - /// 0 based index of MesgData element to retrieve - /// Returns nullable byte representing the MesgData field - public byte? GetMesgData(int index) - { - Object val = GetFieldValue(2, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MesgData field - /// 0 based index of mesg_data - /// Nullable field value to be set - public void SetMesgData(int index, byte? mesgData_) - { - SetFieldValue(2, index, mesgData_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ChannelNumber field - /// Returns nullable byte representing the ChannelNumber field - public byte? GetChannelNumber() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ChannelNumber field - /// Nullable field value to be set - public void SetChannelNumber(byte? channelNumber_) - { - SetFieldValue(3, 0, channelNumber_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Data - public int GetNumData() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Data field - /// 0 based index of Data element to retrieve - /// Returns nullable byte representing the Data field - public byte? GetData(int index) - { - Object val = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Data field - /// 0 based index of data - /// Nullable field value to be set - public void SetData(int index, byte? data_) - { - SetFieldValue(4, index, data_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/AviationAttitudeMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/AviationAttitudeMesg.cs deleted file mode 100644 index 78bce8ea3..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/AviationAttitudeMesg.cs +++ /dev/null @@ -1,496 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the AviationAttitude profile message. - /// - public class AviationAttitudeMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte TimestampMs = 0; - public const byte SystemTime = 1; - public const byte Pitch = 2; - public const byte Roll = 3; - public const byte AccelLateral = 4; - public const byte AccelNormal = 5; - public const byte TurnRate = 6; - public const byte Stage = 7; - public const byte AttitudeStageComplete = 8; - public const byte Track = 9; - public const byte Validity = 10; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public AviationAttitudeMesg() : base(Profile.GetMesg(MesgNum.AviationAttitude)) - { - } - - public AviationAttitudeMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Timestamp message was output - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Timestamp message was output - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMs field - /// Units: ms - /// Comment: Fractional part of timestamp, added to timestamp - /// Returns nullable ushort representing the TimestampMs field - public ushort? GetTimestampMs() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimestampMs field - /// Units: ms - /// Comment: Fractional part of timestamp, added to timestamp - /// Nullable field value to be set - public void SetTimestampMs(ushort? timestampMs_) - { - SetFieldValue(0, 0, timestampMs_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field SystemTime - public int GetNumSystemTime() - { - return GetNumFieldValues(1, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SystemTime field - /// Units: ms - /// Comment: System time associated with sample expressed in ms. - /// 0 based index of SystemTime element to retrieve - /// Returns nullable uint representing the SystemTime field - public uint? GetSystemTime(int index) - { - Object val = GetFieldValue(1, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set SystemTime field - /// Units: ms - /// Comment: System time associated with sample expressed in ms. - /// 0 based index of system_time - /// Nullable field value to be set - public void SetSystemTime(int index, uint? systemTime_) - { - SetFieldValue(1, index, systemTime_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Pitch - public int GetNumPitch() - { - return GetNumFieldValues(2, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Pitch field - /// Units: radians - /// Comment: Range -PI/2 to +PI/2 - /// 0 based index of Pitch element to retrieve - /// Returns nullable float representing the Pitch field - public float? GetPitch(int index) - { - Object val = GetFieldValue(2, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Pitch field - /// Units: radians - /// Comment: Range -PI/2 to +PI/2 - /// 0 based index of pitch - /// Nullable field value to be set - public void SetPitch(int index, float? pitch_) - { - SetFieldValue(2, index, pitch_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Roll - public int GetNumRoll() - { - return GetNumFieldValues(3, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Roll field - /// Units: radians - /// Comment: Range -PI to +PI - /// 0 based index of Roll element to retrieve - /// Returns nullable float representing the Roll field - public float? GetRoll(int index) - { - Object val = GetFieldValue(3, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Roll field - /// Units: radians - /// Comment: Range -PI to +PI - /// 0 based index of roll - /// Nullable field value to be set - public void SetRoll(int index, float? roll_) - { - SetFieldValue(3, index, roll_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AccelLateral - public int GetNumAccelLateral() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AccelLateral field - /// Units: m/s^2 - /// Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - /// 0 based index of AccelLateral element to retrieve - /// Returns nullable float representing the AccelLateral field - public float? GetAccelLateral(int index) - { - Object val = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AccelLateral field - /// Units: m/s^2 - /// Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - /// 0 based index of accel_lateral - /// Nullable field value to be set - public void SetAccelLateral(int index, float? accelLateral_) - { - SetFieldValue(4, index, accelLateral_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AccelNormal - public int GetNumAccelNormal() - { - return GetNumFieldValues(5, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AccelNormal field - /// Units: m/s^2 - /// Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - /// 0 based index of AccelNormal element to retrieve - /// Returns nullable float representing the AccelNormal field - public float? GetAccelNormal(int index) - { - Object val = GetFieldValue(5, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AccelNormal field - /// Units: m/s^2 - /// Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - /// 0 based index of accel_normal - /// Nullable field value to be set - public void SetAccelNormal(int index, float? accelNormal_) - { - SetFieldValue(5, index, accelNormal_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TurnRate - public int GetNumTurnRate() - { - return GetNumFieldValues(6, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TurnRate field - /// Units: radians/second - /// Comment: Range -8.727 to +8.727 (-500 degs/sec to +500 degs/sec) - /// 0 based index of TurnRate element to retrieve - /// Returns nullable float representing the TurnRate field - public float? GetTurnRate(int index) - { - Object val = GetFieldValue(6, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TurnRate field - /// Units: radians/second - /// Comment: Range -8.727 to +8.727 (-500 degs/sec to +500 degs/sec) - /// 0 based index of turn_rate - /// Nullable field value to be set - public void SetTurnRate(int index, float? turnRate_) - { - SetFieldValue(6, index, turnRate_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Stage - public int GetNumStage() - { - return GetNumFieldValues(7, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Stage field - /// 0 based index of Stage element to retrieve - /// Returns nullable AttitudeStage enum representing the Stage field - public AttitudeStage? GetStage(int index) - { - object obj = GetFieldValue(7, index, Fit.SubfieldIndexMainField); - AttitudeStage? value = obj == null ? (AttitudeStage?)null : (AttitudeStage)obj; - return value; - } - - /// - /// Set Stage field - /// 0 based index of stage - /// Nullable field value to be set - public void SetStage(int index, AttitudeStage? stage_) - { - SetFieldValue(7, index, stage_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AttitudeStageComplete - public int GetNumAttitudeStageComplete() - { - return GetNumFieldValues(8, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AttitudeStageComplete field - /// Units: % - /// Comment: The percent complete of the current attitude stage. Set to 0 for attitude stages 0, 1 and 2 and to 100 for attitude stage 3 by AHRS modules that do not support it. Range - 100 - /// 0 based index of AttitudeStageComplete element to retrieve - /// Returns nullable byte representing the AttitudeStageComplete field - public byte? GetAttitudeStageComplete(int index) - { - Object val = GetFieldValue(8, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AttitudeStageComplete field - /// Units: % - /// Comment: The percent complete of the current attitude stage. Set to 0 for attitude stages 0, 1 and 2 and to 100 for attitude stage 3 by AHRS modules that do not support it. Range - 100 - /// 0 based index of attitude_stage_complete - /// Nullable field value to be set - public void SetAttitudeStageComplete(int index, byte? attitudeStageComplete_) - { - SetFieldValue(8, index, attitudeStageComplete_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Track - public int GetNumTrack() - { - return GetNumFieldValues(9, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Track field - /// Units: radians - /// Comment: Track Angle/Heading Range 0 - 2pi - /// 0 based index of Track element to retrieve - /// Returns nullable float representing the Track field - public float? GetTrack(int index) - { - Object val = GetFieldValue(9, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Track field - /// Units: radians - /// Comment: Track Angle/Heading Range 0 - 2pi - /// 0 based index of track - /// Nullable field value to be set - public void SetTrack(int index, float? track_) - { - SetFieldValue(9, index, track_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Validity - public int GetNumValidity() - { - return GetNumFieldValues(10, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Validity field - /// 0 based index of Validity element to retrieve - /// Returns nullable ushort representing the Validity field - public ushort? GetValidity(int index) - { - Object val = GetFieldValue(10, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Validity field - /// 0 based index of validity - /// Nullable field value to be set - public void SetValidity(int index, ushort? validity_) - { - SetFieldValue(10, index, validity_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/BarometerDataMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/BarometerDataMesg.cs deleted file mode 100644 index 71e3cad31..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/BarometerDataMesg.cs +++ /dev/null @@ -1,189 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the BarometerData profile message. - /// - public class BarometerDataMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte TimestampMs = 0; - public const byte SampleTimeOffset = 1; - public const byte BaroPres = 2; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public BarometerDataMesg() : base(Profile.GetMesg(MesgNum.BarometerData)) - { - } - - public BarometerDataMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Returns nullable ushort representing the TimestampMs field - public ushort? GetTimestampMs() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Nullable field value to be set - public void SetTimestampMs(ushort? timestampMs_) - { - SetFieldValue(0, 0, timestampMs_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field SampleTimeOffset - public int GetNumSampleTimeOffset() - { - return GetNumFieldValues(1, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SampleTimeOffset field - /// Units: ms - /// Comment: Each time in the array describes the time at which the barometer sample with the corrosponding index was taken. The samples may span across seconds. Array size must match the number of samples in baro_cal - /// 0 based index of SampleTimeOffset element to retrieve - /// Returns nullable ushort representing the SampleTimeOffset field - public ushort? GetSampleTimeOffset(int index) - { - Object val = GetFieldValue(1, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set SampleTimeOffset field - /// Units: ms - /// Comment: Each time in the array describes the time at which the barometer sample with the corrosponding index was taken. The samples may span across seconds. Array size must match the number of samples in baro_cal - /// 0 based index of sample_time_offset - /// Nullable field value to be set - public void SetSampleTimeOffset(int index, ushort? sampleTimeOffset_) - { - SetFieldValue(1, index, sampleTimeOffset_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field BaroPres - public int GetNumBaroPres() - { - return GetNumFieldValues(2, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BaroPres field - /// Units: Pa - /// Comment: These are the raw ADC reading. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of BaroPres element to retrieve - /// Returns nullable uint representing the BaroPres field - public uint? GetBaroPres(int index) - { - Object val = GetFieldValue(2, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set BaroPres field - /// Units: Pa - /// Comment: These are the raw ADC reading. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of baro_pres - /// Nullable field value to be set - public void SetBaroPres(int index, uint? baroPres_) - { - SetFieldValue(2, index, baroPres_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/BikeProfileMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/BikeProfileMesg.cs deleted file mode 100644 index 660f11b00..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/BikeProfileMesg.cs +++ /dev/null @@ -1,832 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the BikeProfile profile message. - /// - public class BikeProfileMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Name = 0; - public const byte Sport = 1; - public const byte SubSport = 2; - public const byte Odometer = 3; - public const byte BikeSpdAntId = 4; - public const byte BikeCadAntId = 5; - public const byte BikeSpdcadAntId = 6; - public const byte BikePowerAntId = 7; - public const byte CustomWheelsize = 8; - public const byte AutoWheelsize = 9; - public const byte BikeWeight = 10; - public const byte PowerCalFactor = 11; - public const byte AutoWheelCal = 12; - public const byte AutoPowerZero = 13; - public const byte Id = 14; - public const byte SpdEnabled = 15; - public const byte CadEnabled = 16; - public const byte SpdcadEnabled = 17; - public const byte PowerEnabled = 18; - public const byte CrankLength = 19; - public const byte Enabled = 20; - public const byte BikeSpdAntIdTransType = 21; - public const byte BikeCadAntIdTransType = 22; - public const byte BikeSpdcadAntIdTransType = 23; - public const byte BikePowerAntIdTransType = 24; - public const byte OdometerRollover = 37; - public const byte FrontGearNum = 38; - public const byte FrontGear = 39; - public const byte RearGearNum = 40; - public const byte RearGear = 41; - public const byte ShimanoDi2Enabled = 44; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public BikeProfileMesg() : base(Profile.GetMesg(MesgNum.BikeProfile)) - { - } - - public BikeProfileMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(0, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(0, 0, name_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sport field - /// Returns nullable Sport enum representing the Sport field - public Sport? GetSport() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - Sport? value = obj == null ? (Sport?)null : (Sport)obj; - return value; - } - - /// - /// Set Sport field - /// Nullable field value to be set - public void SetSport(Sport? sport_) - { - SetFieldValue(1, 0, sport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SubSport field - /// Returns nullable SubSport enum representing the SubSport field - public SubSport? GetSubSport() - { - object obj = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - SubSport? value = obj == null ? (SubSport?)null : (SubSport)obj; - return value; - } - - /// - /// Set SubSport field - /// Nullable field value to be set - public void SetSubSport(SubSport? subSport_) - { - SetFieldValue(2, 0, subSport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Odometer field - /// Units: m - /// Returns nullable float representing the Odometer field - public float? GetOdometer() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Odometer field - /// Units: m - /// Nullable field value to be set - public void SetOdometer(float? odometer_) - { - SetFieldValue(3, 0, odometer_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BikeSpdAntId field - /// Returns nullable ushort representing the BikeSpdAntId field - public ushort? GetBikeSpdAntId() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set BikeSpdAntId field - /// Nullable field value to be set - public void SetBikeSpdAntId(ushort? bikeSpdAntId_) - { - SetFieldValue(4, 0, bikeSpdAntId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BikeCadAntId field - /// Returns nullable ushort representing the BikeCadAntId field - public ushort? GetBikeCadAntId() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set BikeCadAntId field - /// Nullable field value to be set - public void SetBikeCadAntId(ushort? bikeCadAntId_) - { - SetFieldValue(5, 0, bikeCadAntId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BikeSpdcadAntId field - /// Returns nullable ushort representing the BikeSpdcadAntId field - public ushort? GetBikeSpdcadAntId() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set BikeSpdcadAntId field - /// Nullable field value to be set - public void SetBikeSpdcadAntId(ushort? bikeSpdcadAntId_) - { - SetFieldValue(6, 0, bikeSpdcadAntId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BikePowerAntId field - /// Returns nullable ushort representing the BikePowerAntId field - public ushort? GetBikePowerAntId() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set BikePowerAntId field - /// Nullable field value to be set - public void SetBikePowerAntId(ushort? bikePowerAntId_) - { - SetFieldValue(7, 0, bikePowerAntId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CustomWheelsize field - /// Units: m - /// Returns nullable float representing the CustomWheelsize field - public float? GetCustomWheelsize() - { - Object val = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CustomWheelsize field - /// Units: m - /// Nullable field value to be set - public void SetCustomWheelsize(float? customWheelsize_) - { - SetFieldValue(8, 0, customWheelsize_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AutoWheelsize field - /// Units: m - /// Returns nullable float representing the AutoWheelsize field - public float? GetAutoWheelsize() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AutoWheelsize field - /// Units: m - /// Nullable field value to be set - public void SetAutoWheelsize(float? autoWheelsize_) - { - SetFieldValue(9, 0, autoWheelsize_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BikeWeight field - /// Units: kg - /// Returns nullable float representing the BikeWeight field - public float? GetBikeWeight() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set BikeWeight field - /// Units: kg - /// Nullable field value to be set - public void SetBikeWeight(float? bikeWeight_) - { - SetFieldValue(10, 0, bikeWeight_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PowerCalFactor field - /// Units: % - /// Returns nullable float representing the PowerCalFactor field - public float? GetPowerCalFactor() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set PowerCalFactor field - /// Units: % - /// Nullable field value to be set - public void SetPowerCalFactor(float? powerCalFactor_) - { - SetFieldValue(11, 0, powerCalFactor_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AutoWheelCal field - /// Returns nullable Bool enum representing the AutoWheelCal field - public Bool? GetAutoWheelCal() - { - object obj = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set AutoWheelCal field - /// Nullable field value to be set - public void SetAutoWheelCal(Bool? autoWheelCal_) - { - SetFieldValue(12, 0, autoWheelCal_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AutoPowerZero field - /// Returns nullable Bool enum representing the AutoPowerZero field - public Bool? GetAutoPowerZero() - { - object obj = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set AutoPowerZero field - /// Nullable field value to be set - public void SetAutoPowerZero(Bool? autoPowerZero_) - { - SetFieldValue(13, 0, autoPowerZero_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Id field - /// Returns nullable byte representing the Id field - public byte? GetId() - { - Object val = GetFieldValue(14, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Id field - /// Nullable field value to be set - public void SetId(byte? id_) - { - SetFieldValue(14, 0, id_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SpdEnabled field - /// Returns nullable Bool enum representing the SpdEnabled field - public Bool? GetSpdEnabled() - { - object obj = GetFieldValue(15, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set SpdEnabled field - /// Nullable field value to be set - public void SetSpdEnabled(Bool? spdEnabled_) - { - SetFieldValue(15, 0, spdEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CadEnabled field - /// Returns nullable Bool enum representing the CadEnabled field - public Bool? GetCadEnabled() - { - object obj = GetFieldValue(16, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set CadEnabled field - /// Nullable field value to be set - public void SetCadEnabled(Bool? cadEnabled_) - { - SetFieldValue(16, 0, cadEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SpdcadEnabled field - /// Returns nullable Bool enum representing the SpdcadEnabled field - public Bool? GetSpdcadEnabled() - { - object obj = GetFieldValue(17, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set SpdcadEnabled field - /// Nullable field value to be set - public void SetSpdcadEnabled(Bool? spdcadEnabled_) - { - SetFieldValue(17, 0, spdcadEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PowerEnabled field - /// Returns nullable Bool enum representing the PowerEnabled field - public Bool? GetPowerEnabled() - { - object obj = GetFieldValue(18, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set PowerEnabled field - /// Nullable field value to be set - public void SetPowerEnabled(Bool? powerEnabled_) - { - SetFieldValue(18, 0, powerEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CrankLength field - /// Units: mm - /// Returns nullable float representing the CrankLength field - public float? GetCrankLength() - { - Object val = GetFieldValue(19, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CrankLength field - /// Units: mm - /// Nullable field value to be set - public void SetCrankLength(float? crankLength_) - { - SetFieldValue(19, 0, crankLength_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Enabled field - /// Returns nullable Bool enum representing the Enabled field - public Bool? GetEnabled() - { - object obj = GetFieldValue(20, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set Enabled field - /// Nullable field value to be set - public void SetEnabled(Bool? enabled_) - { - SetFieldValue(20, 0, enabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BikeSpdAntIdTransType field - /// Returns nullable byte representing the BikeSpdAntIdTransType field - public byte? GetBikeSpdAntIdTransType() - { - Object val = GetFieldValue(21, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set BikeSpdAntIdTransType field - /// Nullable field value to be set - public void SetBikeSpdAntIdTransType(byte? bikeSpdAntIdTransType_) - { - SetFieldValue(21, 0, bikeSpdAntIdTransType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BikeCadAntIdTransType field - /// Returns nullable byte representing the BikeCadAntIdTransType field - public byte? GetBikeCadAntIdTransType() - { - Object val = GetFieldValue(22, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set BikeCadAntIdTransType field - /// Nullable field value to be set - public void SetBikeCadAntIdTransType(byte? bikeCadAntIdTransType_) - { - SetFieldValue(22, 0, bikeCadAntIdTransType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BikeSpdcadAntIdTransType field - /// Returns nullable byte representing the BikeSpdcadAntIdTransType field - public byte? GetBikeSpdcadAntIdTransType() - { - Object val = GetFieldValue(23, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set BikeSpdcadAntIdTransType field - /// Nullable field value to be set - public void SetBikeSpdcadAntIdTransType(byte? bikeSpdcadAntIdTransType_) - { - SetFieldValue(23, 0, bikeSpdcadAntIdTransType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BikePowerAntIdTransType field - /// Returns nullable byte representing the BikePowerAntIdTransType field - public byte? GetBikePowerAntIdTransType() - { - Object val = GetFieldValue(24, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set BikePowerAntIdTransType field - /// Nullable field value to be set - public void SetBikePowerAntIdTransType(byte? bikePowerAntIdTransType_) - { - SetFieldValue(24, 0, bikePowerAntIdTransType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the OdometerRollover field - /// Comment: Rollover counter that can be used to extend the odometer - /// Returns nullable byte representing the OdometerRollover field - public byte? GetOdometerRollover() - { - Object val = GetFieldValue(37, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set OdometerRollover field - /// Comment: Rollover counter that can be used to extend the odometer - /// Nullable field value to be set - public void SetOdometerRollover(byte? odometerRollover_) - { - SetFieldValue(37, 0, odometerRollover_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FrontGearNum field - /// Comment: Number of front gears - /// Returns nullable byte representing the FrontGearNum field - public byte? GetFrontGearNum() - { - Object val = GetFieldValue(38, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FrontGearNum field - /// Comment: Number of front gears - /// Nullable field value to be set - public void SetFrontGearNum(byte? frontGearNum_) - { - SetFieldValue(38, 0, frontGearNum_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field FrontGear - public int GetNumFrontGear() - { - return GetNumFieldValues(39, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FrontGear field - /// Comment: Number of teeth on each gear 0 is innermost - /// 0 based index of FrontGear element to retrieve - /// Returns nullable byte representing the FrontGear field - public byte? GetFrontGear(int index) - { - Object val = GetFieldValue(39, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FrontGear field - /// Comment: Number of teeth on each gear 0 is innermost - /// 0 based index of front_gear - /// Nullable field value to be set - public void SetFrontGear(int index, byte? frontGear_) - { - SetFieldValue(39, index, frontGear_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RearGearNum field - /// Comment: Number of rear gears - /// Returns nullable byte representing the RearGearNum field - public byte? GetRearGearNum() - { - Object val = GetFieldValue(40, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set RearGearNum field - /// Comment: Number of rear gears - /// Nullable field value to be set - public void SetRearGearNum(byte? rearGearNum_) - { - SetFieldValue(40, 0, rearGearNum_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field RearGear - public int GetNumRearGear() - { - return GetNumFieldValues(41, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RearGear field - /// Comment: Number of teeth on each gear 0 is innermost - /// 0 based index of RearGear element to retrieve - /// Returns nullable byte representing the RearGear field - public byte? GetRearGear(int index) - { - Object val = GetFieldValue(41, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set RearGear field - /// Comment: Number of teeth on each gear 0 is innermost - /// 0 based index of rear_gear - /// Nullable field value to be set - public void SetRearGear(int index, byte? rearGear_) - { - SetFieldValue(41, index, rearGear_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ShimanoDi2Enabled field - /// Returns nullable Bool enum representing the ShimanoDi2Enabled field - public Bool? GetShimanoDi2Enabled() - { - object obj = GetFieldValue(44, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set ShimanoDi2Enabled field - /// Nullable field value to be set - public void SetShimanoDi2Enabled(Bool? shimanoDi2Enabled_) - { - SetFieldValue(44, 0, shimanoDi2Enabled_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/BloodPressureMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/BloodPressureMesg.cs deleted file mode 100644 index 87942ee55..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/BloodPressureMesg.cs +++ /dev/null @@ -1,325 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the BloodPressure profile message. - /// - public class BloodPressureMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte SystolicPressure = 0; - public const byte DiastolicPressure = 1; - public const byte MeanArterialPressure = 2; - public const byte Map3SampleMean = 3; - public const byte MapMorningValues = 4; - public const byte MapEveningValues = 5; - public const byte HeartRate = 6; - public const byte HeartRateType = 7; - public const byte Status = 8; - public const byte UserProfileIndex = 9; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public BloodPressureMesg() : base(Profile.GetMesg(MesgNum.BloodPressure)) - { - } - - public BloodPressureMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SystolicPressure field - /// Units: mmHg - /// Returns nullable ushort representing the SystolicPressure field - public ushort? GetSystolicPressure() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set SystolicPressure field - /// Units: mmHg - /// Nullable field value to be set - public void SetSystolicPressure(ushort? systolicPressure_) - { - SetFieldValue(0, 0, systolicPressure_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DiastolicPressure field - /// Units: mmHg - /// Returns nullable ushort representing the DiastolicPressure field - public ushort? GetDiastolicPressure() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set DiastolicPressure field - /// Units: mmHg - /// Nullable field value to be set - public void SetDiastolicPressure(ushort? diastolicPressure_) - { - SetFieldValue(1, 0, diastolicPressure_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MeanArterialPressure field - /// Units: mmHg - /// Returns nullable ushort representing the MeanArterialPressure field - public ushort? GetMeanArterialPressure() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MeanArterialPressure field - /// Units: mmHg - /// Nullable field value to be set - public void SetMeanArterialPressure(ushort? meanArterialPressure_) - { - SetFieldValue(2, 0, meanArterialPressure_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Map3SampleMean field - /// Units: mmHg - /// Returns nullable ushort representing the Map3SampleMean field - public ushort? GetMap3SampleMean() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Map3SampleMean field - /// Units: mmHg - /// Nullable field value to be set - public void SetMap3SampleMean(ushort? map3SampleMean_) - { - SetFieldValue(3, 0, map3SampleMean_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MapMorningValues field - /// Units: mmHg - /// Returns nullable ushort representing the MapMorningValues field - public ushort? GetMapMorningValues() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MapMorningValues field - /// Units: mmHg - /// Nullable field value to be set - public void SetMapMorningValues(ushort? mapMorningValues_) - { - SetFieldValue(4, 0, mapMorningValues_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MapEveningValues field - /// Units: mmHg - /// Returns nullable ushort representing the MapEveningValues field - public ushort? GetMapEveningValues() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MapEveningValues field - /// Units: mmHg - /// Nullable field value to be set - public void SetMapEveningValues(ushort? mapEveningValues_) - { - SetFieldValue(5, 0, mapEveningValues_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HeartRate field - /// Units: bpm - /// Returns nullable byte representing the HeartRate field - public byte? GetHeartRate() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetHeartRate(byte? heartRate_) - { - SetFieldValue(6, 0, heartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HeartRateType field - /// Returns nullable HrType enum representing the HeartRateType field - public HrType? GetHeartRateType() - { - object obj = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - HrType? value = obj == null ? (HrType?)null : (HrType)obj; - return value; - } - - /// - /// Set HeartRateType field - /// Nullable field value to be set - public void SetHeartRateType(HrType? heartRateType_) - { - SetFieldValue(7, 0, heartRateType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Status field - /// Returns nullable BpStatus enum representing the Status field - public BpStatus? GetStatus() - { - object obj = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - BpStatus? value = obj == null ? (BpStatus?)null : (BpStatus)obj; - return value; - } - - /// - /// Set Status field - /// Nullable field value to be set - public void SetStatus(BpStatus? status_) - { - SetFieldValue(8, 0, status_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the UserProfileIndex field - /// Comment: Associates this blood pressure message to a user. This corresponds to the index of the user profile message in the blood pressure file. - /// Returns nullable ushort representing the UserProfileIndex field - public ushort? GetUserProfileIndex() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set UserProfileIndex field - /// Comment: Associates this blood pressure message to a user. This corresponds to the index of the user profile message in the blood pressure file. - /// Nullable field value to be set - public void SetUserProfileIndex(ushort? userProfileIndex_) - { - SetFieldValue(9, 0, userProfileIndex_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/CadenceZoneMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/CadenceZoneMesg.cs deleted file mode 100644 index 8e4525f1b..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/CadenceZoneMesg.cs +++ /dev/null @@ -1,142 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the CadenceZone profile message. - /// - public class CadenceZoneMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte HighValue = 0; - public const byte Name = 1; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public CadenceZoneMesg() : base(Profile.GetMesg(MesgNum.CadenceZone)) - { - } - - public CadenceZoneMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HighValue field - /// Units: rpm - /// Returns nullable byte representing the HighValue field - public byte? GetHighValue() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HighValue field - /// Units: rpm - /// Nullable field value to be set - public void SetHighValue(byte? highValue_) - { - SetFieldValue(0, 0, highValue_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(1, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(1, 0, name_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/CameraEventMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/CameraEventMesg.cs deleted file mode 100644 index 4a74256e0..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/CameraEventMesg.cs +++ /dev/null @@ -1,186 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the CameraEvent profile message. - /// - public class CameraEventMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte TimestampMs = 0; - public const byte CameraEventType = 1; - public const byte CameraFileUuid = 2; - public const byte CameraOrientation = 3; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public CameraEventMesg() : base(Profile.GetMesg(MesgNum.CameraEvent)) - { - } - - public CameraEventMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp. - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp. - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Returns nullable ushort representing the TimestampMs field - public ushort? GetTimestampMs() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Nullable field value to be set - public void SetTimestampMs(ushort? timestampMs_) - { - SetFieldValue(0, 0, timestampMs_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CameraEventType field - /// Returns nullable CameraEventType enum representing the CameraEventType field - public CameraEventType? GetCameraEventType() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - CameraEventType? value = obj == null ? (CameraEventType?)null : (CameraEventType)obj; - return value; - } - - /// - /// Set CameraEventType field - /// Nullable field value to be set - public void SetCameraEventType(CameraEventType? cameraEventType_) - { - SetFieldValue(1, 0, cameraEventType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CameraFileUuid field - /// Returns byte[] representing the CameraFileUuid field - public byte[] GetCameraFileUuid() - { - byte[] data = (byte[])GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the CameraFileUuid field - /// Returns String representing the CameraFileUuid field - public String GetCameraFileUuidAsString() - { - byte[] data = (byte[])GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set CameraFileUuid field - /// field value to be set - public void SetCameraFileUuid(String cameraFileUuid_) - { - byte[] data = Encoding.UTF8.GetBytes(cameraFileUuid_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(2, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set CameraFileUuid field - /// field value to be set - public void SetCameraFileUuid(byte[] cameraFileUuid_) - { - SetFieldValue(2, 0, cameraFileUuid_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CameraOrientation field - /// Returns nullable CameraOrientationType enum representing the CameraOrientation field - public CameraOrientationType? GetCameraOrientation() - { - object obj = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - CameraOrientationType? value = obj == null ? (CameraOrientationType?)null : (CameraOrientationType)obj; - return value; - } - - /// - /// Set CameraOrientation field - /// Nullable field value to be set - public void SetCameraOrientation(CameraOrientationType? cameraOrientation_) - { - SetFieldValue(3, 0, cameraOrientation_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/CapabilitiesMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/CapabilitiesMesg.cs deleted file mode 100644 index 70c1db70b..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/CapabilitiesMesg.cs +++ /dev/null @@ -1,177 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Capabilities profile message. - /// - public class CapabilitiesMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Languages = 0; - public const byte Sports = 1; - public const byte WorkoutsSupported = 21; - public const byte ConnectivitySupported = 23; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public CapabilitiesMesg() : base(Profile.GetMesg(MesgNum.Capabilities)) - { - } - - public CapabilitiesMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - - /// - /// - /// - /// returns number of elements in field Languages - public int GetNumLanguages() - { - return GetNumFieldValues(0, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Languages field - /// Comment: Use language_bits_x types where x is index of array. - /// 0 based index of Languages element to retrieve - /// Returns nullable byte representing the Languages field - public byte? GetLanguages(int index) - { - Object val = GetFieldValue(0, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Languages field - /// Comment: Use language_bits_x types where x is index of array. - /// 0 based index of languages - /// Nullable field value to be set - public void SetLanguages(int index, byte? languages_) - { - SetFieldValue(0, index, languages_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Sports - public int GetNumSports() - { - return GetNumFieldValues(1, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sports field - /// Comment: Use sport_bits_x types where x is index of array. - /// 0 based index of Sports element to retrieve - /// Returns nullable byte representing the Sports field - public byte? GetSports(int index) - { - Object val = GetFieldValue(1, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Sports field - /// Comment: Use sport_bits_x types where x is index of array. - /// 0 based index of sports - /// Nullable field value to be set - public void SetSports(int index, byte? sports_) - { - SetFieldValue(1, index, sports_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WorkoutsSupported field - /// Returns nullable uint representing the WorkoutsSupported field - public uint? GetWorkoutsSupported() - { - Object val = GetFieldValue(21, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set WorkoutsSupported field - /// Nullable field value to be set - public void SetWorkoutsSupported(uint? workoutsSupported_) - { - SetFieldValue(21, 0, workoutsSupported_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ConnectivitySupported field - /// Returns nullable uint representing the ConnectivitySupported field - public uint? GetConnectivitySupported() - { - Object val = GetFieldValue(23, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set ConnectivitySupported field - /// Nullable field value to be set - public void SetConnectivitySupported(uint? connectivitySupported_) - { - SetFieldValue(23, 0, connectivitySupported_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ClimbProMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ClimbProMesg.cs deleted file mode 100644 index 04270a6b5..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ClimbProMesg.cs +++ /dev/null @@ -1,224 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the ClimbPro profile message. - /// - public class ClimbProMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte PositionLat = 0; - public const byte PositionLong = 1; - public const byte ClimbProEvent = 2; - public const byte ClimbNumber = 3; - public const byte ClimbCategory = 4; - public const byte CurrentDist = 5; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public ClimbProMesg() : base(Profile.GetMesg(MesgNum.ClimbPro)) - { - } - - public ClimbProMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLat field - /// Units: semicircles - /// Returns nullable int representing the PositionLat field - public int? GetPositionLat() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLat(int? positionLat_) - { - SetFieldValue(0, 0, positionLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLong field - /// Units: semicircles - /// Returns nullable int representing the PositionLong field - public int? GetPositionLong() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLong(int? positionLong_) - { - SetFieldValue(1, 0, positionLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ClimbProEvent field - /// Returns nullable ClimbProEvent enum representing the ClimbProEvent field - public ClimbProEvent? GetClimbProEvent() - { - object obj = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - ClimbProEvent? value = obj == null ? (ClimbProEvent?)null : (ClimbProEvent)obj; - return value; - } - - /// - /// Set ClimbProEvent field - /// Nullable field value to be set - public void SetClimbProEvent(ClimbProEvent? climbProEvent_) - { - SetFieldValue(2, 0, climbProEvent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ClimbNumber field - /// Returns nullable ushort representing the ClimbNumber field - public ushort? GetClimbNumber() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ClimbNumber field - /// Nullable field value to be set - public void SetClimbNumber(ushort? climbNumber_) - { - SetFieldValue(3, 0, climbNumber_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ClimbCategory field - /// Returns nullable byte representing the ClimbCategory field - public byte? GetClimbCategory() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ClimbCategory field - /// Nullable field value to be set - public void SetClimbCategory(byte? climbCategory_) - { - SetFieldValue(4, 0, climbCategory_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CurrentDist field - /// Units: m - /// Returns nullable float representing the CurrentDist field - public float? GetCurrentDist() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CurrentDist field - /// Units: m - /// Nullable field value to be set - public void SetCurrentDist(float? currentDist_) - { - SetFieldValue(5, 0, currentDist_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ConnectivityMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ConnectivityMesg.cs deleted file mode 100644 index 74ef7f2cc..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ConnectivityMesg.cs +++ /dev/null @@ -1,326 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Connectivity profile message. - /// - public class ConnectivityMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte BluetoothEnabled = 0; - public const byte BluetoothLeEnabled = 1; - public const byte AntEnabled = 2; - public const byte Name = 3; - public const byte LiveTrackingEnabled = 4; - public const byte WeatherConditionsEnabled = 5; - public const byte WeatherAlertsEnabled = 6; - public const byte AutoActivityUploadEnabled = 7; - public const byte CourseDownloadEnabled = 8; - public const byte WorkoutDownloadEnabled = 9; - public const byte GpsEphemerisDownloadEnabled = 10; - public const byte IncidentDetectionEnabled = 11; - public const byte GrouptrackEnabled = 12; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public ConnectivityMesg() : base(Profile.GetMesg(MesgNum.Connectivity)) - { - } - - public ConnectivityMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the BluetoothEnabled field - /// Comment: Use Bluetooth for connectivity features - /// Returns nullable Bool enum representing the BluetoothEnabled field - public Bool? GetBluetoothEnabled() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set BluetoothEnabled field - /// Comment: Use Bluetooth for connectivity features - /// Nullable field value to be set - public void SetBluetoothEnabled(Bool? bluetoothEnabled_) - { - SetFieldValue(0, 0, bluetoothEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BluetoothLeEnabled field - /// Comment: Use Bluetooth Low Energy for connectivity features - /// Returns nullable Bool enum representing the BluetoothLeEnabled field - public Bool? GetBluetoothLeEnabled() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set BluetoothLeEnabled field - /// Comment: Use Bluetooth Low Energy for connectivity features - /// Nullable field value to be set - public void SetBluetoothLeEnabled(Bool? bluetoothLeEnabled_) - { - SetFieldValue(1, 0, bluetoothLeEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AntEnabled field - /// Comment: Use ANT for connectivity features - /// Returns nullable Bool enum representing the AntEnabled field - public Bool? GetAntEnabled() - { - object obj = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set AntEnabled field - /// Comment: Use ANT for connectivity features - /// Nullable field value to be set - public void SetAntEnabled(Bool? antEnabled_) - { - SetFieldValue(2, 0, antEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(3, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(3, 0, name_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LiveTrackingEnabled field - /// Returns nullable Bool enum representing the LiveTrackingEnabled field - public Bool? GetLiveTrackingEnabled() - { - object obj = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set LiveTrackingEnabled field - /// Nullable field value to be set - public void SetLiveTrackingEnabled(Bool? liveTrackingEnabled_) - { - SetFieldValue(4, 0, liveTrackingEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WeatherConditionsEnabled field - /// Returns nullable Bool enum representing the WeatherConditionsEnabled field - public Bool? GetWeatherConditionsEnabled() - { - object obj = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set WeatherConditionsEnabled field - /// Nullable field value to be set - public void SetWeatherConditionsEnabled(Bool? weatherConditionsEnabled_) - { - SetFieldValue(5, 0, weatherConditionsEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WeatherAlertsEnabled field - /// Returns nullable Bool enum representing the WeatherAlertsEnabled field - public Bool? GetWeatherAlertsEnabled() - { - object obj = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set WeatherAlertsEnabled field - /// Nullable field value to be set - public void SetWeatherAlertsEnabled(Bool? weatherAlertsEnabled_) - { - SetFieldValue(6, 0, weatherAlertsEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AutoActivityUploadEnabled field - /// Returns nullable Bool enum representing the AutoActivityUploadEnabled field - public Bool? GetAutoActivityUploadEnabled() - { - object obj = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set AutoActivityUploadEnabled field - /// Nullable field value to be set - public void SetAutoActivityUploadEnabled(Bool? autoActivityUploadEnabled_) - { - SetFieldValue(7, 0, autoActivityUploadEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CourseDownloadEnabled field - /// Returns nullable Bool enum representing the CourseDownloadEnabled field - public Bool? GetCourseDownloadEnabled() - { - object obj = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set CourseDownloadEnabled field - /// Nullable field value to be set - public void SetCourseDownloadEnabled(Bool? courseDownloadEnabled_) - { - SetFieldValue(8, 0, courseDownloadEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WorkoutDownloadEnabled field - /// Returns nullable Bool enum representing the WorkoutDownloadEnabled field - public Bool? GetWorkoutDownloadEnabled() - { - object obj = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set WorkoutDownloadEnabled field - /// Nullable field value to be set - public void SetWorkoutDownloadEnabled(Bool? workoutDownloadEnabled_) - { - SetFieldValue(9, 0, workoutDownloadEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GpsEphemerisDownloadEnabled field - /// Returns nullable Bool enum representing the GpsEphemerisDownloadEnabled field - public Bool? GetGpsEphemerisDownloadEnabled() - { - object obj = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set GpsEphemerisDownloadEnabled field - /// Nullable field value to be set - public void SetGpsEphemerisDownloadEnabled(Bool? gpsEphemerisDownloadEnabled_) - { - SetFieldValue(10, 0, gpsEphemerisDownloadEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the IncidentDetectionEnabled field - /// Returns nullable Bool enum representing the IncidentDetectionEnabled field - public Bool? GetIncidentDetectionEnabled() - { - object obj = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set IncidentDetectionEnabled field - /// Nullable field value to be set - public void SetIncidentDetectionEnabled(Bool? incidentDetectionEnabled_) - { - SetFieldValue(11, 0, incidentDetectionEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GrouptrackEnabled field - /// Returns nullable Bool enum representing the GrouptrackEnabled field - public Bool? GetGrouptrackEnabled() - { - object obj = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set GrouptrackEnabled field - /// Nullable field value to be set - public void SetGrouptrackEnabled(Bool? grouptrackEnabled_) - { - SetFieldValue(12, 0, grouptrackEnabled_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/CourseMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/CourseMesg.cs deleted file mode 100644 index 1ec40d026..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/CourseMesg.cs +++ /dev/null @@ -1,154 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Course profile message. - /// - public class CourseMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Sport = 4; - public const byte Name = 5; - public const byte Capabilities = 6; - public const byte SubSport = 7; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public CourseMesg() : base(Profile.GetMesg(MesgNum.Course)) - { - } - - public CourseMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Sport field - /// Returns nullable Sport enum representing the Sport field - public Sport? GetSport() - { - object obj = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - Sport? value = obj == null ? (Sport?)null : (Sport)obj; - return value; - } - - /// - /// Set Sport field - /// Nullable field value to be set - public void SetSport(Sport? sport_) - { - SetFieldValue(4, 0, sport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(5, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(5, 0, name_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Capabilities field - /// Returns nullable uint representing the Capabilities field - public uint? GetCapabilities() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set Capabilities field - /// Nullable field value to be set - public void SetCapabilities(uint? capabilities_) - { - SetFieldValue(6, 0, capabilities_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SubSport field - /// Returns nullable SubSport enum representing the SubSport field - public SubSport? GetSubSport() - { - object obj = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - SubSport? value = obj == null ? (SubSport?)null : (SubSport)obj; - return value; - } - - /// - /// Set SubSport field - /// Nullable field value to be set - public void SetSubSport(SubSport? subSport_) - { - SetFieldValue(7, 0, subSport_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/CoursePointMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/CoursePointMesg.cs deleted file mode 100644 index cfce2d453..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/CoursePointMesg.cs +++ /dev/null @@ -1,256 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the CoursePoint profile message. - /// - public class CoursePointMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Timestamp = 1; - public const byte PositionLat = 2; - public const byte PositionLong = 3; - public const byte Distance = 4; - public const byte Type = 5; - public const byte Name = 6; - public const byte Favorite = 8; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public CoursePointMesg() : base(Profile.GetMesg(MesgNum.CoursePoint)) - { - } - - public CoursePointMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Timestamp field - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(1, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLat field - /// Units: semicircles - /// Returns nullable int representing the PositionLat field - public int? GetPositionLat() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLat(int? positionLat_) - { - SetFieldValue(2, 0, positionLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLong field - /// Units: semicircles - /// Returns nullable int representing the PositionLong field - public int? GetPositionLong() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLong(int? positionLong_) - { - SetFieldValue(3, 0, positionLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Distance field - /// Units: m - /// Returns nullable float representing the Distance field - public float? GetDistance() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Distance field - /// Units: m - /// Nullable field value to be set - public void SetDistance(float? distance_) - { - SetFieldValue(4, 0, distance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Type field - /// Returns nullable CoursePoint enum representing the Type field - new public CoursePoint? GetType() - { - object obj = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - CoursePoint? value = obj == null ? (CoursePoint?)null : (CoursePoint)obj; - return value; - } - - /// - /// Set Type field - /// Nullable field value to be set - public void SetType(CoursePoint? type_) - { - SetFieldValue(5, 0, type_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(6, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(6, 0, name_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Favorite field - /// Returns nullable Bool enum representing the Favorite field - public Bool? GetFavorite() - { - object obj = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set Favorite field - /// Nullable field value to be set - public void SetFavorite(Bool? favorite_) - { - SetFieldValue(8, 0, favorite_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DeveloperDataIdMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DeveloperDataIdMesg.cs deleted file mode 100644 index 3ca9775f0..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DeveloperDataIdMesg.cs +++ /dev/null @@ -1,197 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the DeveloperDataId profile message. - /// - public class DeveloperDataIdMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte DeveloperId = 0; - public const byte ApplicationId = 1; - public const byte ManufacturerId = 2; - public const byte DeveloperDataIndex = 3; - public const byte ApplicationVersion = 4; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public DeveloperDataIdMesg() : base(Profile.GetMesg(MesgNum.DeveloperDataId)) - { - } - - public DeveloperDataIdMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - - /// - /// - /// - /// returns number of elements in field DeveloperId - public int GetNumDeveloperId() - { - return GetNumFieldValues(0, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeveloperId field - /// 0 based index of DeveloperId element to retrieve - /// Returns nullable byte representing the DeveloperId field - public byte? GetDeveloperId(int index) - { - Object val = GetFieldValue(0, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DeveloperId field - /// 0 based index of developer_id - /// Nullable field value to be set - public void SetDeveloperId(int index, byte? developerId_) - { - SetFieldValue(0, index, developerId_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field ApplicationId - public int GetNumApplicationId() - { - return GetNumFieldValues(1, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ApplicationId field - /// 0 based index of ApplicationId element to retrieve - /// Returns nullable byte representing the ApplicationId field - public byte? GetApplicationId(int index) - { - Object val = GetFieldValue(1, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ApplicationId field - /// 0 based index of application_id - /// Nullable field value to be set - public void SetApplicationId(int index, byte? applicationId_) - { - SetFieldValue(1, index, applicationId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ManufacturerId field - /// Returns nullable ushort representing the ManufacturerId field - public ushort? GetManufacturerId() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ManufacturerId field - /// Nullable field value to be set - public void SetManufacturerId(ushort? manufacturerId_) - { - SetFieldValue(2, 0, manufacturerId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeveloperDataIndex field - /// Returns nullable byte representing the DeveloperDataIndex field - public byte? GetDeveloperDataIndex() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DeveloperDataIndex field - /// Nullable field value to be set - public void SetDeveloperDataIndex(byte? developerDataIndex_) - { - SetFieldValue(3, 0, developerDataIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ApplicationVersion field - /// Returns nullable uint representing the ApplicationVersion field - public uint? GetApplicationVersion() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set ApplicationVersion field - /// Nullable field value to be set - public void SetApplicationVersion(uint? applicationVersion_) - { - SetFieldValue(4, 0, applicationVersion_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DeviceAuxBatteryInfoMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DeviceAuxBatteryInfoMesg.cs deleted file mode 100644 index 1702cfbe1..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DeviceAuxBatteryInfoMesg.cs +++ /dev/null @@ -1,175 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the DeviceAuxBatteryInfo profile message. - /// - public class DeviceAuxBatteryInfoMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte DeviceIndex = 0; - public const byte BatteryVoltage = 1; - public const byte BatteryStatus = 2; - public const byte BatteryIdentifier = 3; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public DeviceAuxBatteryInfoMesg() : base(Profile.GetMesg(MesgNum.DeviceAuxBatteryInfo)) - { - } - - public DeviceAuxBatteryInfoMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeviceIndex field - /// Returns nullable byte representing the DeviceIndex field - public byte? GetDeviceIndex() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DeviceIndex field - /// Nullable field value to be set - public void SetDeviceIndex(byte? deviceIndex_) - { - SetFieldValue(0, 0, deviceIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BatteryVoltage field - /// Units: V - /// Returns nullable float representing the BatteryVoltage field - public float? GetBatteryVoltage() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set BatteryVoltage field - /// Units: V - /// Nullable field value to be set - public void SetBatteryVoltage(float? batteryVoltage_) - { - SetFieldValue(1, 0, batteryVoltage_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BatteryStatus field - /// Returns nullable byte representing the BatteryStatus field - public byte? GetBatteryStatus() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set BatteryStatus field - /// Nullable field value to be set - public void SetBatteryStatus(byte? batteryStatus_) - { - SetFieldValue(2, 0, batteryStatus_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BatteryIdentifier field - /// Returns nullable byte representing the BatteryIdentifier field - public byte? GetBatteryIdentifier() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set BatteryIdentifier field - /// Nullable field value to be set - public void SetBatteryIdentifier(byte? batteryIdentifier_) - { - SetFieldValue(3, 0, batteryIdentifier_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DeviceInfoMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DeviceInfoMesg.cs deleted file mode 100644 index 001fc14df..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DeviceInfoMesg.cs +++ /dev/null @@ -1,706 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the DeviceInfo profile message. - /// - public class DeviceInfoMesg : Mesg - { - #region Fields - static class DeviceTypeSubfield - { - public static ushort BleDeviceType = 0; - public static ushort AntplusDeviceType = 1; - public static ushort AntDeviceType = 2; - public static ushort LocalDeviceType = 3; - public static ushort Subfields = 4; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - static class ProductSubfield - { - public static ushort FaveroProduct = 0; - public static ushort GarminProduct = 1; - public static ushort Subfields = 2; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte DeviceIndex = 0; - public const byte DeviceType = 1; - public const byte Manufacturer = 2; - public const byte SerialNumber = 3; - public const byte Product = 4; - public const byte SoftwareVersion = 5; - public const byte HardwareVersion = 6; - public const byte CumOperatingTime = 7; - public const byte BatteryVoltage = 10; - public const byte BatteryStatus = 11; - public const byte SensorPosition = 18; - public const byte Descriptor = 19; - public const byte AntTransmissionType = 20; - public const byte AntDeviceNumber = 21; - public const byte AntNetwork = 22; - public const byte SourceType = 25; - public const byte ProductName = 27; - public const byte BatteryLevel = 32; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public DeviceInfoMesg() : base(Profile.GetMesg(MesgNum.DeviceInfo)) - { - } - - public DeviceInfoMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeviceIndex field - /// Returns nullable byte representing the DeviceIndex field - public byte? GetDeviceIndex() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DeviceIndex field - /// Nullable field value to be set - public void SetDeviceIndex(byte? deviceIndex_) - { - SetFieldValue(0, 0, deviceIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeviceType field - /// Returns nullable byte representing the DeviceType field - public byte? GetDeviceType() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DeviceType field - /// Nullable field value to be set - public void SetDeviceType(byte? deviceType_) - { - SetFieldValue(1, 0, deviceType_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the BleDeviceType subfield - /// Nullable byte representing the BleDeviceType subfield - public byte? GetBleDeviceType() - { - Object val = GetFieldValue(1, 0, DeviceTypeSubfield.BleDeviceType); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set BleDeviceType subfield - /// Subfield value to be set - public void SetBleDeviceType(byte? bleDeviceType) - { - SetFieldValue(1, 0, bleDeviceType, DeviceTypeSubfield.BleDeviceType); - } - - /// - /// Retrieves the AntplusDeviceType subfield - /// Nullable byte representing the AntplusDeviceType subfield - public byte? GetAntplusDeviceType() - { - Object val = GetFieldValue(1, 0, DeviceTypeSubfield.AntplusDeviceType); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set AntplusDeviceType subfield - /// Subfield value to be set - public void SetAntplusDeviceType(byte? antplusDeviceType) - { - SetFieldValue(1, 0, antplusDeviceType, DeviceTypeSubfield.AntplusDeviceType); - } - - /// - /// Retrieves the AntDeviceType subfield - /// Nullable byte representing the AntDeviceType subfield - public byte? GetAntDeviceType() - { - Object val = GetFieldValue(1, 0, DeviceTypeSubfield.AntDeviceType); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set AntDeviceType subfield - /// Subfield value to be set - public void SetAntDeviceType(byte? antDeviceType) - { - SetFieldValue(1, 0, antDeviceType, DeviceTypeSubfield.AntDeviceType); - } - - /// - /// Retrieves the LocalDeviceType subfield - /// Nullable byte representing the LocalDeviceType subfield - public byte? GetLocalDeviceType() - { - Object val = GetFieldValue(1, 0, DeviceTypeSubfield.LocalDeviceType); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set LocalDeviceType subfield - /// Subfield value to be set - public void SetLocalDeviceType(byte? localDeviceType) - { - SetFieldValue(1, 0, localDeviceType, DeviceTypeSubfield.LocalDeviceType); - } - /// - /// Retrieves the Manufacturer field - /// Returns nullable ushort representing the Manufacturer field - public ushort? GetManufacturer() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Manufacturer field - /// Nullable field value to be set - public void SetManufacturer(ushort? manufacturer_) - { - SetFieldValue(2, 0, manufacturer_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SerialNumber field - /// Returns nullable uint representing the SerialNumber field - public uint? GetSerialNumber() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set SerialNumber field - /// Nullable field value to be set - public void SetSerialNumber(uint? serialNumber_) - { - SetFieldValue(3, 0, serialNumber_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Product field - /// Returns nullable ushort representing the Product field - public ushort? GetProduct() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Product field - /// Nullable field value to be set - public void SetProduct(ushort? product_) - { - SetFieldValue(4, 0, product_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the FaveroProduct subfield - /// Nullable ushort representing the FaveroProduct subfield - public ushort? GetFaveroProduct() - { - Object val = GetFieldValue(4, 0, ProductSubfield.FaveroProduct); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set FaveroProduct subfield - /// Subfield value to be set - public void SetFaveroProduct(ushort? faveroProduct) - { - SetFieldValue(4, 0, faveroProduct, ProductSubfield.FaveroProduct); - } - - /// - /// Retrieves the GarminProduct subfield - /// Nullable ushort representing the GarminProduct subfield - public ushort? GetGarminProduct() - { - Object val = GetFieldValue(4, 0, ProductSubfield.GarminProduct); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set GarminProduct subfield - /// Subfield value to be set - public void SetGarminProduct(ushort? garminProduct) - { - SetFieldValue(4, 0, garminProduct, ProductSubfield.GarminProduct); - } - /// - /// Retrieves the SoftwareVersion field - /// Returns nullable float representing the SoftwareVersion field - public float? GetSoftwareVersion() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set SoftwareVersion field - /// Nullable field value to be set - public void SetSoftwareVersion(float? softwareVersion_) - { - SetFieldValue(5, 0, softwareVersion_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HardwareVersion field - /// Returns nullable byte representing the HardwareVersion field - public byte? GetHardwareVersion() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HardwareVersion field - /// Nullable field value to be set - public void SetHardwareVersion(byte? hardwareVersion_) - { - SetFieldValue(6, 0, hardwareVersion_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CumOperatingTime field - /// Units: s - /// Comment: Reset by new battery or charge. - /// Returns nullable uint representing the CumOperatingTime field - public uint? GetCumOperatingTime() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set CumOperatingTime field - /// Units: s - /// Comment: Reset by new battery or charge. - /// Nullable field value to be set - public void SetCumOperatingTime(uint? cumOperatingTime_) - { - SetFieldValue(7, 0, cumOperatingTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BatteryVoltage field - /// Units: V - /// Returns nullable float representing the BatteryVoltage field - public float? GetBatteryVoltage() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set BatteryVoltage field - /// Units: V - /// Nullable field value to be set - public void SetBatteryVoltage(float? batteryVoltage_) - { - SetFieldValue(10, 0, batteryVoltage_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BatteryStatus field - /// Returns nullable byte representing the BatteryStatus field - public byte? GetBatteryStatus() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set BatteryStatus field - /// Nullable field value to be set - public void SetBatteryStatus(byte? batteryStatus_) - { - SetFieldValue(11, 0, batteryStatus_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SensorPosition field - /// Comment: Indicates the location of the sensor - /// Returns nullable BodyLocation enum representing the SensorPosition field - public BodyLocation? GetSensorPosition() - { - object obj = GetFieldValue(18, 0, Fit.SubfieldIndexMainField); - BodyLocation? value = obj == null ? (BodyLocation?)null : (BodyLocation)obj; - return value; - } - - /// - /// Set SensorPosition field - /// Comment: Indicates the location of the sensor - /// Nullable field value to be set - public void SetSensorPosition(BodyLocation? sensorPosition_) - { - SetFieldValue(18, 0, sensorPosition_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Descriptor field - /// Comment: Used to describe the sensor or location - /// Returns byte[] representing the Descriptor field - public byte[] GetDescriptor() - { - byte[] data = (byte[])GetFieldValue(19, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Descriptor field - /// Comment: Used to describe the sensor or location - /// Returns String representing the Descriptor field - public String GetDescriptorAsString() - { - byte[] data = (byte[])GetFieldValue(19, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Descriptor field - /// Comment: Used to describe the sensor or location - /// field value to be set - public void SetDescriptor(String descriptor_) - { - byte[] data = Encoding.UTF8.GetBytes(descriptor_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(19, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Descriptor field - /// Comment: Used to describe the sensor or location - /// field value to be set - public void SetDescriptor(byte[] descriptor_) - { - SetFieldValue(19, 0, descriptor_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AntTransmissionType field - /// Returns nullable byte representing the AntTransmissionType field - public byte? GetAntTransmissionType() - { - Object val = GetFieldValue(20, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AntTransmissionType field - /// Nullable field value to be set - public void SetAntTransmissionType(byte? antTransmissionType_) - { - SetFieldValue(20, 0, antTransmissionType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AntDeviceNumber field - /// Returns nullable ushort representing the AntDeviceNumber field - public ushort? GetAntDeviceNumber() - { - Object val = GetFieldValue(21, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AntDeviceNumber field - /// Nullable field value to be set - public void SetAntDeviceNumber(ushort? antDeviceNumber_) - { - SetFieldValue(21, 0, antDeviceNumber_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AntNetwork field - /// Returns nullable AntNetwork enum representing the AntNetwork field - public AntNetwork? GetAntNetwork() - { - object obj = GetFieldValue(22, 0, Fit.SubfieldIndexMainField); - AntNetwork? value = obj == null ? (AntNetwork?)null : (AntNetwork)obj; - return value; - } - - /// - /// Set AntNetwork field - /// Nullable field value to be set - public void SetAntNetwork(AntNetwork? antNetwork_) - { - SetFieldValue(22, 0, antNetwork_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SourceType field - /// Returns nullable SourceType enum representing the SourceType field - public SourceType? GetSourceType() - { - object obj = GetFieldValue(25, 0, Fit.SubfieldIndexMainField); - SourceType? value = obj == null ? (SourceType?)null : (SourceType)obj; - return value; - } - - /// - /// Set SourceType field - /// Nullable field value to be set - public void SetSourceType(SourceType? sourceType_) - { - SetFieldValue(25, 0, sourceType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ProductName field - /// Comment: Optional free form string to indicate the devices name or model - /// Returns byte[] representing the ProductName field - public byte[] GetProductName() - { - byte[] data = (byte[])GetFieldValue(27, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the ProductName field - /// Comment: Optional free form string to indicate the devices name or model - /// Returns String representing the ProductName field - public String GetProductNameAsString() - { - byte[] data = (byte[])GetFieldValue(27, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set ProductName field - /// Comment: Optional free form string to indicate the devices name or model - /// field value to be set - public void SetProductName(String productName_) - { - byte[] data = Encoding.UTF8.GetBytes(productName_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(27, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set ProductName field - /// Comment: Optional free form string to indicate the devices name or model - /// field value to be set - public void SetProductName(byte[] productName_) - { - SetFieldValue(27, 0, productName_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BatteryLevel field - /// Units: % - /// Returns nullable byte representing the BatteryLevel field - public byte? GetBatteryLevel() - { - Object val = GetFieldValue(32, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set BatteryLevel field - /// Units: % - /// Nullable field value to be set - public void SetBatteryLevel(byte? batteryLevel_) - { - SetFieldValue(32, 0, batteryLevel_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DeviceSettingsMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DeviceSettingsMesg.cs deleted file mode 100644 index 977a32728..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DeviceSettingsMesg.cs +++ /dev/null @@ -1,674 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the DeviceSettings profile message. - /// - public class DeviceSettingsMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte ActiveTimeZone = 0; - public const byte UtcOffset = 1; - public const byte TimeOffset = 2; - public const byte TimeMode = 4; - public const byte TimeZoneOffset = 5; - public const byte BacklightMode = 12; - public const byte ActivityTrackerEnabled = 36; - public const byte ClockTime = 39; - public const byte PagesEnabled = 40; - public const byte MoveAlertEnabled = 46; - public const byte DateMode = 47; - public const byte DisplayOrientation = 55; - public const byte MountingSide = 56; - public const byte DefaultPage = 57; - public const byte AutosyncMinSteps = 58; - public const byte AutosyncMinTime = 59; - public const byte LactateThresholdAutodetectEnabled = 80; - public const byte BleAutoUploadEnabled = 86; - public const byte AutoSyncFrequency = 89; - public const byte AutoActivityDetect = 90; - public const byte NumberOfScreens = 94; - public const byte SmartNotificationDisplayOrientation = 95; - public const byte TapInterface = 134; - public const byte TapSensitivity = 174; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public DeviceSettingsMesg() : base(Profile.GetMesg(MesgNum.DeviceSettings)) - { - } - - public DeviceSettingsMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the ActiveTimeZone field - /// Comment: Index into time zone arrays. - /// Returns nullable byte representing the ActiveTimeZone field - public byte? GetActiveTimeZone() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ActiveTimeZone field - /// Comment: Index into time zone arrays. - /// Nullable field value to be set - public void SetActiveTimeZone(byte? activeTimeZone_) - { - SetFieldValue(0, 0, activeTimeZone_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the UtcOffset field - /// Comment: Offset from system time. Required to convert timestamp from system time to UTC. - /// Returns nullable uint representing the UtcOffset field - public uint? GetUtcOffset() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set UtcOffset field - /// Comment: Offset from system time. Required to convert timestamp from system time to UTC. - /// Nullable field value to be set - public void SetUtcOffset(uint? utcOffset_) - { - SetFieldValue(1, 0, utcOffset_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeOffset - public int GetNumTimeOffset() - { - return GetNumFieldValues(2, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeOffset field - /// Units: s - /// Comment: Offset from system time. - /// 0 based index of TimeOffset element to retrieve - /// Returns nullable uint representing the TimeOffset field - public uint? GetTimeOffset(int index) - { - Object val = GetFieldValue(2, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TimeOffset field - /// Units: s - /// Comment: Offset from system time. - /// 0 based index of time_offset - /// Nullable field value to be set - public void SetTimeOffset(int index, uint? timeOffset_) - { - SetFieldValue(2, index, timeOffset_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeMode - public int GetNumTimeMode() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeMode field - /// Comment: Display mode for the time - /// 0 based index of TimeMode element to retrieve - /// Returns nullable TimeMode enum representing the TimeMode field - public TimeMode? GetTimeMode(int index) - { - object obj = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - TimeMode? value = obj == null ? (TimeMode?)null : (TimeMode)obj; - return value; - } - - /// - /// Set TimeMode field - /// Comment: Display mode for the time - /// 0 based index of time_mode - /// Nullable field value to be set - public void SetTimeMode(int index, TimeMode? timeMode_) - { - SetFieldValue(4, index, timeMode_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeZoneOffset - public int GetNumTimeZoneOffset() - { - return GetNumFieldValues(5, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeZoneOffset field - /// Units: hr - /// Comment: timezone offset in 1/4 hour increments - /// 0 based index of TimeZoneOffset element to retrieve - /// Returns nullable float representing the TimeZoneOffset field - public float? GetTimeZoneOffset(int index) - { - Object val = GetFieldValue(5, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeZoneOffset field - /// Units: hr - /// Comment: timezone offset in 1/4 hour increments - /// 0 based index of time_zone_offset - /// Nullable field value to be set - public void SetTimeZoneOffset(int index, float? timeZoneOffset_) - { - SetFieldValue(5, index, timeZoneOffset_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BacklightMode field - /// Comment: Mode for backlight - /// Returns nullable BacklightMode enum representing the BacklightMode field - public BacklightMode? GetBacklightMode() - { - object obj = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - BacklightMode? value = obj == null ? (BacklightMode?)null : (BacklightMode)obj; - return value; - } - - /// - /// Set BacklightMode field - /// Comment: Mode for backlight - /// Nullable field value to be set - public void SetBacklightMode(BacklightMode? backlightMode_) - { - SetFieldValue(12, 0, backlightMode_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActivityTrackerEnabled field - /// Comment: Enabled state of the activity tracker functionality - /// Returns nullable Bool enum representing the ActivityTrackerEnabled field - public Bool? GetActivityTrackerEnabled() - { - object obj = GetFieldValue(36, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set ActivityTrackerEnabled field - /// Comment: Enabled state of the activity tracker functionality - /// Nullable field value to be set - public void SetActivityTrackerEnabled(Bool? activityTrackerEnabled_) - { - SetFieldValue(36, 0, activityTrackerEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ClockTime field - /// Comment: UTC timestamp used to set the devices clock and date - /// Returns DateTime representing the ClockTime field - public DateTime GetClockTime() - { - Object val = GetFieldValue(39, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set ClockTime field - /// Comment: UTC timestamp used to set the devices clock and date - /// Nullable field value to be set - public void SetClockTime(DateTime clockTime_) - { - SetFieldValue(39, 0, clockTime_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field PagesEnabled - public int GetNumPagesEnabled() - { - return GetNumFieldValues(40, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PagesEnabled field - /// Comment: Bitfield to configure enabled screens for each supported loop - /// 0 based index of PagesEnabled element to retrieve - /// Returns nullable ushort representing the PagesEnabled field - public ushort? GetPagesEnabled(int index) - { - Object val = GetFieldValue(40, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set PagesEnabled field - /// Comment: Bitfield to configure enabled screens for each supported loop - /// 0 based index of pages_enabled - /// Nullable field value to be set - public void SetPagesEnabled(int index, ushort? pagesEnabled_) - { - SetFieldValue(40, index, pagesEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MoveAlertEnabled field - /// Comment: Enabled state of the move alert - /// Returns nullable Bool enum representing the MoveAlertEnabled field - public Bool? GetMoveAlertEnabled() - { - object obj = GetFieldValue(46, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set MoveAlertEnabled field - /// Comment: Enabled state of the move alert - /// Nullable field value to be set - public void SetMoveAlertEnabled(Bool? moveAlertEnabled_) - { - SetFieldValue(46, 0, moveAlertEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DateMode field - /// Comment: Display mode for the date - /// Returns nullable DateMode enum representing the DateMode field - public DateMode? GetDateMode() - { - object obj = GetFieldValue(47, 0, Fit.SubfieldIndexMainField); - DateMode? value = obj == null ? (DateMode?)null : (DateMode)obj; - return value; - } - - /// - /// Set DateMode field - /// Comment: Display mode for the date - /// Nullable field value to be set - public void SetDateMode(DateMode? dateMode_) - { - SetFieldValue(47, 0, dateMode_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DisplayOrientation field - /// Returns nullable DisplayOrientation enum representing the DisplayOrientation field - public DisplayOrientation? GetDisplayOrientation() - { - object obj = GetFieldValue(55, 0, Fit.SubfieldIndexMainField); - DisplayOrientation? value = obj == null ? (DisplayOrientation?)null : (DisplayOrientation)obj; - return value; - } - - /// - /// Set DisplayOrientation field - /// Nullable field value to be set - public void SetDisplayOrientation(DisplayOrientation? displayOrientation_) - { - SetFieldValue(55, 0, displayOrientation_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MountingSide field - /// Returns nullable Side enum representing the MountingSide field - public Side? GetMountingSide() - { - object obj = GetFieldValue(56, 0, Fit.SubfieldIndexMainField); - Side? value = obj == null ? (Side?)null : (Side)obj; - return value; - } - - /// - /// Set MountingSide field - /// Nullable field value to be set - public void SetMountingSide(Side? mountingSide_) - { - SetFieldValue(56, 0, mountingSide_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field DefaultPage - public int GetNumDefaultPage() - { - return GetNumFieldValues(57, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DefaultPage field - /// Comment: Bitfield to indicate one page as default for each supported loop - /// 0 based index of DefaultPage element to retrieve - /// Returns nullable ushort representing the DefaultPage field - public ushort? GetDefaultPage(int index) - { - Object val = GetFieldValue(57, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set DefaultPage field - /// Comment: Bitfield to indicate one page as default for each supported loop - /// 0 based index of default_page - /// Nullable field value to be set - public void SetDefaultPage(int index, ushort? defaultPage_) - { - SetFieldValue(57, index, defaultPage_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AutosyncMinSteps field - /// Units: steps - /// Comment: Minimum steps before an autosync can occur - /// Returns nullable ushort representing the AutosyncMinSteps field - public ushort? GetAutosyncMinSteps() - { - Object val = GetFieldValue(58, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AutosyncMinSteps field - /// Units: steps - /// Comment: Minimum steps before an autosync can occur - /// Nullable field value to be set - public void SetAutosyncMinSteps(ushort? autosyncMinSteps_) - { - SetFieldValue(58, 0, autosyncMinSteps_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AutosyncMinTime field - /// Units: minutes - /// Comment: Minimum minutes before an autosync can occur - /// Returns nullable ushort representing the AutosyncMinTime field - public ushort? GetAutosyncMinTime() - { - Object val = GetFieldValue(59, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AutosyncMinTime field - /// Units: minutes - /// Comment: Minimum minutes before an autosync can occur - /// Nullable field value to be set - public void SetAutosyncMinTime(ushort? autosyncMinTime_) - { - SetFieldValue(59, 0, autosyncMinTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LactateThresholdAutodetectEnabled field - /// Comment: Enable auto-detect setting for the lactate threshold feature. - /// Returns nullable Bool enum representing the LactateThresholdAutodetectEnabled field - public Bool? GetLactateThresholdAutodetectEnabled() - { - object obj = GetFieldValue(80, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set LactateThresholdAutodetectEnabled field - /// Comment: Enable auto-detect setting for the lactate threshold feature. - /// Nullable field value to be set - public void SetLactateThresholdAutodetectEnabled(Bool? lactateThresholdAutodetectEnabled_) - { - SetFieldValue(80, 0, lactateThresholdAutodetectEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BleAutoUploadEnabled field - /// Comment: Automatically upload using BLE - /// Returns nullable Bool enum representing the BleAutoUploadEnabled field - public Bool? GetBleAutoUploadEnabled() - { - object obj = GetFieldValue(86, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set BleAutoUploadEnabled field - /// Comment: Automatically upload using BLE - /// Nullable field value to be set - public void SetBleAutoUploadEnabled(Bool? bleAutoUploadEnabled_) - { - SetFieldValue(86, 0, bleAutoUploadEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AutoSyncFrequency field - /// Comment: Helps to conserve battery by changing modes - /// Returns nullable AutoSyncFrequency enum representing the AutoSyncFrequency field - public AutoSyncFrequency? GetAutoSyncFrequency() - { - object obj = GetFieldValue(89, 0, Fit.SubfieldIndexMainField); - AutoSyncFrequency? value = obj == null ? (AutoSyncFrequency?)null : (AutoSyncFrequency)obj; - return value; - } - - /// - /// Set AutoSyncFrequency field - /// Comment: Helps to conserve battery by changing modes - /// Nullable field value to be set - public void SetAutoSyncFrequency(AutoSyncFrequency? autoSyncFrequency_) - { - SetFieldValue(89, 0, autoSyncFrequency_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AutoActivityDetect field - /// Comment: Allows setting specific activities auto-activity detect enabled/disabled settings - /// Returns nullable uint representing the AutoActivityDetect field - public uint? GetAutoActivityDetect() - { - Object val = GetFieldValue(90, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set AutoActivityDetect field - /// Comment: Allows setting specific activities auto-activity detect enabled/disabled settings - /// Nullable field value to be set - public void SetAutoActivityDetect(uint? autoActivityDetect_) - { - SetFieldValue(90, 0, autoActivityDetect_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NumberOfScreens field - /// Comment: Number of screens configured to display - /// Returns nullable byte representing the NumberOfScreens field - public byte? GetNumberOfScreens() - { - Object val = GetFieldValue(94, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set NumberOfScreens field - /// Comment: Number of screens configured to display - /// Nullable field value to be set - public void SetNumberOfScreens(byte? numberOfScreens_) - { - SetFieldValue(94, 0, numberOfScreens_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SmartNotificationDisplayOrientation field - /// Comment: Smart Notification display orientation - /// Returns nullable DisplayOrientation enum representing the SmartNotificationDisplayOrientation field - public DisplayOrientation? GetSmartNotificationDisplayOrientation() - { - object obj = GetFieldValue(95, 0, Fit.SubfieldIndexMainField); - DisplayOrientation? value = obj == null ? (DisplayOrientation?)null : (DisplayOrientation)obj; - return value; - } - - /// - /// Set SmartNotificationDisplayOrientation field - /// Comment: Smart Notification display orientation - /// Nullable field value to be set - public void SetSmartNotificationDisplayOrientation(DisplayOrientation? smartNotificationDisplayOrientation_) - { - SetFieldValue(95, 0, smartNotificationDisplayOrientation_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TapInterface field - /// Returns nullable Switch enum representing the TapInterface field - public Switch? GetTapInterface() - { - object obj = GetFieldValue(134, 0, Fit.SubfieldIndexMainField); - Switch? value = obj == null ? (Switch?)null : (Switch)obj; - return value; - } - - /// - /// Set TapInterface field - /// Nullable field value to be set - public void SetTapInterface(Switch? tapInterface_) - { - SetFieldValue(134, 0, tapInterface_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TapSensitivity field - /// Comment: Used to hold the tap threshold setting - /// Returns nullable TapSensitivity enum representing the TapSensitivity field - public TapSensitivity? GetTapSensitivity() - { - object obj = GetFieldValue(174, 0, Fit.SubfieldIndexMainField); - TapSensitivity? value = obj == null ? (TapSensitivity?)null : (TapSensitivity)obj; - return value; - } - - /// - /// Set TapSensitivity field - /// Comment: Used to hold the tap threshold setting - /// Nullable field value to be set - public void SetTapSensitivity(TapSensitivity? tapSensitivity_) - { - SetFieldValue(174, 0, tapSensitivity_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DiveAlarmMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DiveAlarmMesg.cs deleted file mode 100644 index e7df87d37..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DiveAlarmMesg.cs +++ /dev/null @@ -1,231 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the DiveAlarm profile message. - /// - public class DiveAlarmMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Depth = 0; - public const byte Time = 1; - public const byte Enabled = 2; - public const byte AlarmType = 3; - public const byte Sound = 4; - public const byte DiveTypes = 5; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public DiveAlarmMesg() : base(Profile.GetMesg(MesgNum.DiveAlarm)) - { - } - - public DiveAlarmMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Comment: Index of the alarm - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Comment: Index of the alarm - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Depth field - /// Units: m - /// Comment: Depth setting (m) for depth type alarms - /// Returns nullable float representing the Depth field - public float? GetDepth() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Depth field - /// Units: m - /// Comment: Depth setting (m) for depth type alarms - /// Nullable field value to be set - public void SetDepth(float? depth_) - { - SetFieldValue(0, 0, depth_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Time field - /// Units: s - /// Comment: Time setting (s) for time type alarms - /// Returns nullable int representing the Time field - public int? GetTime() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set Time field - /// Units: s - /// Comment: Time setting (s) for time type alarms - /// Nullable field value to be set - public void SetTime(int? time_) - { - SetFieldValue(1, 0, time_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Enabled field - /// Comment: Enablement flag - /// Returns nullable Bool enum representing the Enabled field - public Bool? GetEnabled() - { - object obj = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set Enabled field - /// Comment: Enablement flag - /// Nullable field value to be set - public void SetEnabled(Bool? enabled_) - { - SetFieldValue(2, 0, enabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AlarmType field - /// Comment: Alarm type setting - /// Returns nullable DiveAlarmType enum representing the AlarmType field - public DiveAlarmType? GetAlarmType() - { - object obj = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - DiveAlarmType? value = obj == null ? (DiveAlarmType?)null : (DiveAlarmType)obj; - return value; - } - - /// - /// Set AlarmType field - /// Comment: Alarm type setting - /// Nullable field value to be set - public void SetAlarmType(DiveAlarmType? alarmType_) - { - SetFieldValue(3, 0, alarmType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sound field - /// Comment: Tone and Vibe setting for the alarm - /// Returns nullable Tone enum representing the Sound field - public Tone? GetSound() - { - object obj = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - Tone? value = obj == null ? (Tone?)null : (Tone)obj; - return value; - } - - /// - /// Set Sound field - /// Comment: Tone and Vibe setting for the alarm - /// Nullable field value to be set - public void SetSound(Tone? sound_) - { - SetFieldValue(4, 0, sound_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field DiveTypes - public int GetNumDiveTypes() - { - return GetNumFieldValues(5, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DiveTypes field - /// Comment: Dive types the alarm will trigger on - /// 0 based index of DiveTypes element to retrieve - /// Returns nullable SubSport enum representing the DiveTypes field - public SubSport? GetDiveTypes(int index) - { - object obj = GetFieldValue(5, index, Fit.SubfieldIndexMainField); - SubSport? value = obj == null ? (SubSport?)null : (SubSport)obj; - return value; - } - - /// - /// Set DiveTypes field - /// Comment: Dive types the alarm will trigger on - /// 0 based index of dive_types - /// Nullable field value to be set - public void SetDiveTypes(int index, SubSport? diveTypes_) - { - SetFieldValue(5, index, diveTypes_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DiveGasMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DiveGasMesg.cs deleted file mode 100644 index c4ee9a2fd..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DiveGasMesg.cs +++ /dev/null @@ -1,148 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the DiveGas profile message. - /// - public class DiveGasMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte HeliumContent = 0; - public const byte OxygenContent = 1; - public const byte Status = 2; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public DiveGasMesg() : base(Profile.GetMesg(MesgNum.DiveGas)) - { - } - - public DiveGasMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HeliumContent field - /// Units: percent - /// Returns nullable byte representing the HeliumContent field - public byte? GetHeliumContent() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HeliumContent field - /// Units: percent - /// Nullable field value to be set - public void SetHeliumContent(byte? heliumContent_) - { - SetFieldValue(0, 0, heliumContent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the OxygenContent field - /// Units: percent - /// Returns nullable byte representing the OxygenContent field - public byte? GetOxygenContent() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set OxygenContent field - /// Units: percent - /// Nullable field value to be set - public void SetOxygenContent(byte? oxygenContent_) - { - SetFieldValue(1, 0, oxygenContent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Status field - /// Returns nullable DiveGasStatus enum representing the Status field - public DiveGasStatus? GetStatus() - { - object obj = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - DiveGasStatus? value = obj == null ? (DiveGasStatus?)null : (DiveGasStatus)obj; - return value; - } - - /// - /// Set Status field - /// Nullable field value to be set - public void SetStatus(DiveGasStatus? status_) - { - SetFieldValue(2, 0, status_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DiveSettingsMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DiveSettingsMesg.cs deleted file mode 100644 index 9767d57c1..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DiveSettingsMesg.cs +++ /dev/null @@ -1,648 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the DiveSettings profile message. - /// - public class DiveSettingsMesg : Mesg - { - #region Fields - static class HeartRateSourceSubfield - { - public static ushort HeartRateAntplusDeviceType = 0; - public static ushort HeartRateLocalDeviceType = 1; - public static ushort Subfields = 2; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Name = 0; - public const byte Model = 1; - public const byte GfLow = 2; - public const byte GfHigh = 3; - public const byte WaterType = 4; - public const byte WaterDensity = 5; - public const byte Po2Warn = 6; - public const byte Po2Critical = 7; - public const byte Po2Deco = 8; - public const byte SafetyStopEnabled = 9; - public const byte BottomDepth = 10; - public const byte BottomTime = 11; - public const byte ApneaCountdownEnabled = 12; - public const byte ApneaCountdownTime = 13; - public const byte BacklightMode = 14; - public const byte BacklightBrightness = 15; - public const byte BacklightTimeout = 16; - public const byte RepeatDiveInterval = 17; - public const byte SafetyStopTime = 18; - public const byte HeartRateSourceType = 19; - public const byte HeartRateSource = 20; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public DiveSettingsMesg() : base(Profile.GetMesg(MesgNum.DiveSettings)) - { - } - - public DiveSettingsMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(0, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(0, 0, name_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Model field - /// Returns nullable TissueModelType enum representing the Model field - public TissueModelType? GetModel() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - TissueModelType? value = obj == null ? (TissueModelType?)null : (TissueModelType)obj; - return value; - } - - /// - /// Set Model field - /// Nullable field value to be set - public void SetModel(TissueModelType? model_) - { - SetFieldValue(1, 0, model_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GfLow field - /// Units: percent - /// Returns nullable byte representing the GfLow field - public byte? GetGfLow() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set GfLow field - /// Units: percent - /// Nullable field value to be set - public void SetGfLow(byte? gfLow_) - { - SetFieldValue(2, 0, gfLow_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GfHigh field - /// Units: percent - /// Returns nullable byte representing the GfHigh field - public byte? GetGfHigh() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set GfHigh field - /// Units: percent - /// Nullable field value to be set - public void SetGfHigh(byte? gfHigh_) - { - SetFieldValue(3, 0, gfHigh_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WaterType field - /// Returns nullable WaterType enum representing the WaterType field - public WaterType? GetWaterType() - { - object obj = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - WaterType? value = obj == null ? (WaterType?)null : (WaterType)obj; - return value; - } - - /// - /// Set WaterType field - /// Nullable field value to be set - public void SetWaterType(WaterType? waterType_) - { - SetFieldValue(4, 0, waterType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WaterDensity field - /// Units: kg/m^3 - /// Comment: Fresh water is usually 1000; salt water is usually 1025 - /// Returns nullable float representing the WaterDensity field - public float? GetWaterDensity() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set WaterDensity field - /// Units: kg/m^3 - /// Comment: Fresh water is usually 1000; salt water is usually 1025 - /// Nullable field value to be set - public void SetWaterDensity(float? waterDensity_) - { - SetFieldValue(5, 0, waterDensity_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Po2Warn field - /// Units: percent - /// Comment: Typically 1.40 - /// Returns nullable float representing the Po2Warn field - public float? GetPo2Warn() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Po2Warn field - /// Units: percent - /// Comment: Typically 1.40 - /// Nullable field value to be set - public void SetPo2Warn(float? po2Warn_) - { - SetFieldValue(6, 0, po2Warn_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Po2Critical field - /// Units: percent - /// Comment: Typically 1.60 - /// Returns nullable float representing the Po2Critical field - public float? GetPo2Critical() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Po2Critical field - /// Units: percent - /// Comment: Typically 1.60 - /// Nullable field value to be set - public void SetPo2Critical(float? po2Critical_) - { - SetFieldValue(7, 0, po2Critical_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Po2Deco field - /// Units: percent - /// Returns nullable float representing the Po2Deco field - public float? GetPo2Deco() - { - Object val = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Po2Deco field - /// Units: percent - /// Nullable field value to be set - public void SetPo2Deco(float? po2Deco_) - { - SetFieldValue(8, 0, po2Deco_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SafetyStopEnabled field - /// Returns nullable Bool enum representing the SafetyStopEnabled field - public Bool? GetSafetyStopEnabled() - { - object obj = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set SafetyStopEnabled field - /// Nullable field value to be set - public void SetSafetyStopEnabled(Bool? safetyStopEnabled_) - { - SetFieldValue(9, 0, safetyStopEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BottomDepth field - /// Returns nullable float representing the BottomDepth field - public float? GetBottomDepth() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set BottomDepth field - /// Nullable field value to be set - public void SetBottomDepth(float? bottomDepth_) - { - SetFieldValue(10, 0, bottomDepth_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BottomTime field - /// Returns nullable uint representing the BottomTime field - public uint? GetBottomTime() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set BottomTime field - /// Nullable field value to be set - public void SetBottomTime(uint? bottomTime_) - { - SetFieldValue(11, 0, bottomTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ApneaCountdownEnabled field - /// Returns nullable Bool enum representing the ApneaCountdownEnabled field - public Bool? GetApneaCountdownEnabled() - { - object obj = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set ApneaCountdownEnabled field - /// Nullable field value to be set - public void SetApneaCountdownEnabled(Bool? apneaCountdownEnabled_) - { - SetFieldValue(12, 0, apneaCountdownEnabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ApneaCountdownTime field - /// Returns nullable uint representing the ApneaCountdownTime field - public uint? GetApneaCountdownTime() - { - Object val = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set ApneaCountdownTime field - /// Nullable field value to be set - public void SetApneaCountdownTime(uint? apneaCountdownTime_) - { - SetFieldValue(13, 0, apneaCountdownTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BacklightMode field - /// Returns nullable DiveBacklightMode enum representing the BacklightMode field - public DiveBacklightMode? GetBacklightMode() - { - object obj = GetFieldValue(14, 0, Fit.SubfieldIndexMainField); - DiveBacklightMode? value = obj == null ? (DiveBacklightMode?)null : (DiveBacklightMode)obj; - return value; - } - - /// - /// Set BacklightMode field - /// Nullable field value to be set - public void SetBacklightMode(DiveBacklightMode? backlightMode_) - { - SetFieldValue(14, 0, backlightMode_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BacklightBrightness field - /// Returns nullable byte representing the BacklightBrightness field - public byte? GetBacklightBrightness() - { - Object val = GetFieldValue(15, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set BacklightBrightness field - /// Nullable field value to be set - public void SetBacklightBrightness(byte? backlightBrightness_) - { - SetFieldValue(15, 0, backlightBrightness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BacklightTimeout field - /// Returns nullable byte representing the BacklightTimeout field - public byte? GetBacklightTimeout() - { - Object val = GetFieldValue(16, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set BacklightTimeout field - /// Nullable field value to be set - public void SetBacklightTimeout(byte? backlightTimeout_) - { - SetFieldValue(16, 0, backlightTimeout_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RepeatDiveInterval field - /// Units: s - /// Comment: Time between surfacing and ending the activity - /// Returns nullable ushort representing the RepeatDiveInterval field - public ushort? GetRepeatDiveInterval() - { - Object val = GetFieldValue(17, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set RepeatDiveInterval field - /// Units: s - /// Comment: Time between surfacing and ending the activity - /// Nullable field value to be set - public void SetRepeatDiveInterval(ushort? repeatDiveInterval_) - { - SetFieldValue(17, 0, repeatDiveInterval_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SafetyStopTime field - /// Units: s - /// Comment: Time at safety stop (if enabled) - /// Returns nullable ushort representing the SafetyStopTime field - public ushort? GetSafetyStopTime() - { - Object val = GetFieldValue(18, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set SafetyStopTime field - /// Units: s - /// Comment: Time at safety stop (if enabled) - /// Nullable field value to be set - public void SetSafetyStopTime(ushort? safetyStopTime_) - { - SetFieldValue(18, 0, safetyStopTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HeartRateSourceType field - /// Returns nullable SourceType enum representing the HeartRateSourceType field - public SourceType? GetHeartRateSourceType() - { - object obj = GetFieldValue(19, 0, Fit.SubfieldIndexMainField); - SourceType? value = obj == null ? (SourceType?)null : (SourceType)obj; - return value; - } - - /// - /// Set HeartRateSourceType field - /// Nullable field value to be set - public void SetHeartRateSourceType(SourceType? heartRateSourceType_) - { - SetFieldValue(19, 0, heartRateSourceType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HeartRateSource field - /// Returns nullable byte representing the HeartRateSource field - public byte? GetHeartRateSource() - { - Object val = GetFieldValue(20, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HeartRateSource field - /// Nullable field value to be set - public void SetHeartRateSource(byte? heartRateSource_) - { - SetFieldValue(20, 0, heartRateSource_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the HeartRateAntplusDeviceType subfield - /// Nullable byte representing the HeartRateAntplusDeviceType subfield - public byte? GetHeartRateAntplusDeviceType() - { - Object val = GetFieldValue(20, 0, HeartRateSourceSubfield.HeartRateAntplusDeviceType); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set HeartRateAntplusDeviceType subfield - /// Subfield value to be set - public void SetHeartRateAntplusDeviceType(byte? heartRateAntplusDeviceType) - { - SetFieldValue(20, 0, heartRateAntplusDeviceType, HeartRateSourceSubfield.HeartRateAntplusDeviceType); - } - - /// - /// Retrieves the HeartRateLocalDeviceType subfield - /// Nullable byte representing the HeartRateLocalDeviceType subfield - public byte? GetHeartRateLocalDeviceType() - { - Object val = GetFieldValue(20, 0, HeartRateSourceSubfield.HeartRateLocalDeviceType); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set HeartRateLocalDeviceType subfield - /// Subfield value to be set - public void SetHeartRateLocalDeviceType(byte? heartRateLocalDeviceType) - { - SetFieldValue(20, 0, heartRateLocalDeviceType, HeartRateSourceSubfield.HeartRateLocalDeviceType); - } - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DiveSummaryMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DiveSummaryMesg.cs deleted file mode 100644 index 8da2c38e6..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/DiveSummaryMesg.cs +++ /dev/null @@ -1,531 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the DiveSummary profile message. - /// - public class DiveSummaryMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte ReferenceMesg = 0; - public const byte ReferenceIndex = 1; - public const byte AvgDepth = 2; - public const byte MaxDepth = 3; - public const byte SurfaceInterval = 4; - public const byte StartCns = 5; - public const byte EndCns = 6; - public const byte StartN2 = 7; - public const byte EndN2 = 8; - public const byte O2Toxicity = 9; - public const byte DiveNumber = 10; - public const byte BottomTime = 11; - public const byte AvgAscentRate = 17; - public const byte AvgDescentRate = 22; - public const byte MaxAscentRate = 23; - public const byte MaxDescentRate = 24; - public const byte HangTime = 25; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public DiveSummaryMesg() : base(Profile.GetMesg(MesgNum.DiveSummary)) - { - } - - public DiveSummaryMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ReferenceMesg field - /// Returns nullable ushort representing the ReferenceMesg field - public ushort? GetReferenceMesg() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ReferenceMesg field - /// Nullable field value to be set - public void SetReferenceMesg(ushort? referenceMesg_) - { - SetFieldValue(0, 0, referenceMesg_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ReferenceIndex field - /// Returns nullable ushort representing the ReferenceIndex field - public ushort? GetReferenceIndex() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ReferenceIndex field - /// Nullable field value to be set - public void SetReferenceIndex(ushort? referenceIndex_) - { - SetFieldValue(1, 0, referenceIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgDepth field - /// Units: m - /// Comment: 0 if above water - /// Returns nullable float representing the AvgDepth field - public float? GetAvgDepth() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgDepth field - /// Units: m - /// Comment: 0 if above water - /// Nullable field value to be set - public void SetAvgDepth(float? avgDepth_) - { - SetFieldValue(2, 0, avgDepth_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxDepth field - /// Units: m - /// Comment: 0 if above water - /// Returns nullable float representing the MaxDepth field - public float? GetMaxDepth() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxDepth field - /// Units: m - /// Comment: 0 if above water - /// Nullable field value to be set - public void SetMaxDepth(float? maxDepth_) - { - SetFieldValue(3, 0, maxDepth_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SurfaceInterval field - /// Units: s - /// Comment: Time since end of last dive - /// Returns nullable uint representing the SurfaceInterval field - public uint? GetSurfaceInterval() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set SurfaceInterval field - /// Units: s - /// Comment: Time since end of last dive - /// Nullable field value to be set - public void SetSurfaceInterval(uint? surfaceInterval_) - { - SetFieldValue(4, 0, surfaceInterval_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartCns field - /// Units: percent - /// Returns nullable byte representing the StartCns field - public byte? GetStartCns() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set StartCns field - /// Units: percent - /// Nullable field value to be set - public void SetStartCns(byte? startCns_) - { - SetFieldValue(5, 0, startCns_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EndCns field - /// Units: percent - /// Returns nullable byte representing the EndCns field - public byte? GetEndCns() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set EndCns field - /// Units: percent - /// Nullable field value to be set - public void SetEndCns(byte? endCns_) - { - SetFieldValue(6, 0, endCns_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartN2 field - /// Units: percent - /// Returns nullable ushort representing the StartN2 field - public ushort? GetStartN2() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set StartN2 field - /// Units: percent - /// Nullable field value to be set - public void SetStartN2(ushort? startN2_) - { - SetFieldValue(7, 0, startN2_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EndN2 field - /// Units: percent - /// Returns nullable ushort representing the EndN2 field - public ushort? GetEndN2() - { - Object val = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set EndN2 field - /// Units: percent - /// Nullable field value to be set - public void SetEndN2(ushort? endN2_) - { - SetFieldValue(8, 0, endN2_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the O2Toxicity field - /// Units: OTUs - /// Returns nullable ushort representing the O2Toxicity field - public ushort? GetO2Toxicity() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set O2Toxicity field - /// Units: OTUs - /// Nullable field value to be set - public void SetO2Toxicity(ushort? o2Toxicity_) - { - SetFieldValue(9, 0, o2Toxicity_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DiveNumber field - /// Returns nullable uint representing the DiveNumber field - public uint? GetDiveNumber() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set DiveNumber field - /// Nullable field value to be set - public void SetDiveNumber(uint? diveNumber_) - { - SetFieldValue(10, 0, diveNumber_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BottomTime field - /// Units: s - /// Returns nullable float representing the BottomTime field - public float? GetBottomTime() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set BottomTime field - /// Units: s - /// Nullable field value to be set - public void SetBottomTime(float? bottomTime_) - { - SetFieldValue(11, 0, bottomTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgAscentRate field - /// Units: m/s - /// Comment: Average ascent rate, not including descents or stops - /// Returns nullable float representing the AvgAscentRate field - public float? GetAvgAscentRate() - { - Object val = GetFieldValue(17, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgAscentRate field - /// Units: m/s - /// Comment: Average ascent rate, not including descents or stops - /// Nullable field value to be set - public void SetAvgAscentRate(float? avgAscentRate_) - { - SetFieldValue(17, 0, avgAscentRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgDescentRate field - /// Units: m/s - /// Comment: Average descent rate, not including ascents or stops - /// Returns nullable float representing the AvgDescentRate field - public float? GetAvgDescentRate() - { - Object val = GetFieldValue(22, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgDescentRate field - /// Units: m/s - /// Comment: Average descent rate, not including ascents or stops - /// Nullable field value to be set - public void SetAvgDescentRate(float? avgDescentRate_) - { - SetFieldValue(22, 0, avgDescentRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxAscentRate field - /// Units: m/s - /// Comment: Maximum ascent rate - /// Returns nullable float representing the MaxAscentRate field - public float? GetMaxAscentRate() - { - Object val = GetFieldValue(23, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxAscentRate field - /// Units: m/s - /// Comment: Maximum ascent rate - /// Nullable field value to be set - public void SetMaxAscentRate(float? maxAscentRate_) - { - SetFieldValue(23, 0, maxAscentRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxDescentRate field - /// Units: m/s - /// Comment: Maximum descent rate - /// Returns nullable float representing the MaxDescentRate field - public float? GetMaxDescentRate() - { - Object val = GetFieldValue(24, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxDescentRate field - /// Units: m/s - /// Comment: Maximum descent rate - /// Nullable field value to be set - public void SetMaxDescentRate(float? maxDescentRate_) - { - SetFieldValue(24, 0, maxDescentRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HangTime field - /// Units: s - /// Comment: Time spent neither ascending nor descending - /// Returns nullable float representing the HangTime field - public float? GetHangTime() - { - Object val = GetFieldValue(25, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set HangTime field - /// Units: s - /// Comment: Time spent neither ascending nor descending - /// Nullable field value to be set - public void SetHangTime(float? hangTime_) - { - SetFieldValue(25, 0, hangTime_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/EventMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/EventMesg.cs deleted file mode 100644 index 469feb0c9..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/EventMesg.cs +++ /dev/null @@ -1,1012 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Event profile message. - /// - public class EventMesg : Mesg - { - #region Fields - static class DataSubfield - { - public static ushort TimerTrigger = 0; - public static ushort CoursePointIndex = 1; - public static ushort BatteryLevel = 2; - public static ushort VirtualPartnerSpeed = 3; - public static ushort HrHighAlert = 4; - public static ushort HrLowAlert = 5; - public static ushort SpeedHighAlert = 6; - public static ushort SpeedLowAlert = 7; - public static ushort CadHighAlert = 8; - public static ushort CadLowAlert = 9; - public static ushort PowerHighAlert = 10; - public static ushort PowerLowAlert = 11; - public static ushort TimeDurationAlert = 12; - public static ushort DistanceDurationAlert = 13; - public static ushort CalorieDurationAlert = 14; - public static ushort FitnessEquipmentState = 15; - public static ushort SportPoint = 16; - public static ushort GearChangeData = 17; - public static ushort RiderPosition = 18; - public static ushort CommTimeout = 19; - public static ushort RadarThreatAlert = 20; - public static ushort Subfields = 21; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte Event = 0; - public const byte EventType = 1; - public const byte Data16 = 2; - public const byte Data = 3; - public const byte EventGroup = 4; - public const byte Score = 7; - public const byte OpponentScore = 8; - public const byte FrontGearNum = 9; - public const byte FrontGear = 10; - public const byte RearGearNum = 11; - public const byte RearGear = 12; - public const byte DeviceIndex = 13; - public const byte RadarThreatLevelMax = 21; - public const byte RadarThreatCount = 22; - public const byte RadarThreatAvgApproachSpeed = 23; - public const byte RadarThreatMaxApproachSpeed = 24; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public EventMesg() : base(Profile.GetMesg(MesgNum.Event)) - { - } - - public EventMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Event field - /// Returns nullable Event enum representing the Event field - public Event? GetEvent() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Event? value = obj == null ? (Event?)null : (Event)obj; - return value; - } - - /// - /// Set Event field - /// Nullable field value to be set - public void SetEvent(Event? event_) - { - SetFieldValue(0, 0, event_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventType field - /// Returns nullable EventType enum representing the EventType field - public EventType? GetEventType() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - EventType? value = obj == null ? (EventType?)null : (EventType)obj; - return value; - } - - /// - /// Set EventType field - /// Nullable field value to be set - public void SetEventType(EventType? eventType_) - { - SetFieldValue(1, 0, eventType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Data16 field - /// Returns nullable ushort representing the Data16 field - public ushort? GetData16() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Data16 field - /// Nullable field value to be set - public void SetData16(ushort? data16_) - { - SetFieldValue(2, 0, data16_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Data field - /// Returns nullable uint representing the Data field - public uint? GetData() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set Data field - /// Nullable field value to be set - public void SetData(uint? data_) - { - SetFieldValue(3, 0, data_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the TimerTrigger subfield - /// Nullable TimerTrigger enum representing the TimerTrigger subfield - public TimerTrigger? GetTimerTrigger() - { - return (TimerTrigger?)GetFieldValue(3, 0, DataSubfield.TimerTrigger); - } - - /// - /// - /// Set TimerTrigger subfield - /// Subfield value to be set - public void SetTimerTrigger(byte? timerTrigger) - { - SetFieldValue(3, 0, timerTrigger, DataSubfield.TimerTrigger); - } - - /// - /// Retrieves the CoursePointIndex subfield - /// Nullable ushort representing the CoursePointIndex subfield - public ushort? GetCoursePointIndex() - { - Object val = GetFieldValue(3, 0, DataSubfield.CoursePointIndex); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set CoursePointIndex subfield - /// Subfield value to be set - public void SetCoursePointIndex(ushort? coursePointIndex) - { - SetFieldValue(3, 0, coursePointIndex, DataSubfield.CoursePointIndex); - } - - /// - /// Retrieves the BatteryLevel subfield - /// Units: V - /// Nullable float representing the BatteryLevel subfield - public float? GetBatteryLevel() - { - Object val = GetFieldValue(3, 0, DataSubfield.BatteryLevel); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set BatteryLevel subfield - /// Units: V - /// Subfield value to be set - public void SetBatteryLevel(float? batteryLevel) - { - SetFieldValue(3, 0, batteryLevel, DataSubfield.BatteryLevel); - } - - /// - /// Retrieves the VirtualPartnerSpeed subfield - /// Units: m/s - /// Nullable float representing the VirtualPartnerSpeed subfield - public float? GetVirtualPartnerSpeed() - { - Object val = GetFieldValue(3, 0, DataSubfield.VirtualPartnerSpeed); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set VirtualPartnerSpeed subfield - /// Units: m/s - /// Subfield value to be set - public void SetVirtualPartnerSpeed(float? virtualPartnerSpeed) - { - SetFieldValue(3, 0, virtualPartnerSpeed, DataSubfield.VirtualPartnerSpeed); - } - - /// - /// Retrieves the HrHighAlert subfield - /// Units: bpm - /// Nullable byte representing the HrHighAlert subfield - public byte? GetHrHighAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.HrHighAlert); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set HrHighAlert subfield - /// Units: bpm - /// Subfield value to be set - public void SetHrHighAlert(byte? hrHighAlert) - { - SetFieldValue(3, 0, hrHighAlert, DataSubfield.HrHighAlert); - } - - /// - /// Retrieves the HrLowAlert subfield - /// Units: bpm - /// Nullable byte representing the HrLowAlert subfield - public byte? GetHrLowAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.HrLowAlert); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set HrLowAlert subfield - /// Units: bpm - /// Subfield value to be set - public void SetHrLowAlert(byte? hrLowAlert) - { - SetFieldValue(3, 0, hrLowAlert, DataSubfield.HrLowAlert); - } - - /// - /// Retrieves the SpeedHighAlert subfield - /// Units: m/s - /// Nullable float representing the SpeedHighAlert subfield - public float? GetSpeedHighAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.SpeedHighAlert); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set SpeedHighAlert subfield - /// Units: m/s - /// Subfield value to be set - public void SetSpeedHighAlert(float? speedHighAlert) - { - SetFieldValue(3, 0, speedHighAlert, DataSubfield.SpeedHighAlert); - } - - /// - /// Retrieves the SpeedLowAlert subfield - /// Units: m/s - /// Nullable float representing the SpeedLowAlert subfield - public float? GetSpeedLowAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.SpeedLowAlert); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set SpeedLowAlert subfield - /// Units: m/s - /// Subfield value to be set - public void SetSpeedLowAlert(float? speedLowAlert) - { - SetFieldValue(3, 0, speedLowAlert, DataSubfield.SpeedLowAlert); - } - - /// - /// Retrieves the CadHighAlert subfield - /// Units: rpm - /// Nullable ushort representing the CadHighAlert subfield - public ushort? GetCadHighAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.CadHighAlert); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set CadHighAlert subfield - /// Units: rpm - /// Subfield value to be set - public void SetCadHighAlert(ushort? cadHighAlert) - { - SetFieldValue(3, 0, cadHighAlert, DataSubfield.CadHighAlert); - } - - /// - /// Retrieves the CadLowAlert subfield - /// Units: rpm - /// Nullable ushort representing the CadLowAlert subfield - public ushort? GetCadLowAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.CadLowAlert); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set CadLowAlert subfield - /// Units: rpm - /// Subfield value to be set - public void SetCadLowAlert(ushort? cadLowAlert) - { - SetFieldValue(3, 0, cadLowAlert, DataSubfield.CadLowAlert); - } - - /// - /// Retrieves the PowerHighAlert subfield - /// Units: watts - /// Nullable ushort representing the PowerHighAlert subfield - public ushort? GetPowerHighAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.PowerHighAlert); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set PowerHighAlert subfield - /// Units: watts - /// Subfield value to be set - public void SetPowerHighAlert(ushort? powerHighAlert) - { - SetFieldValue(3, 0, powerHighAlert, DataSubfield.PowerHighAlert); - } - - /// - /// Retrieves the PowerLowAlert subfield - /// Units: watts - /// Nullable ushort representing the PowerLowAlert subfield - public ushort? GetPowerLowAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.PowerLowAlert); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set PowerLowAlert subfield - /// Units: watts - /// Subfield value to be set - public void SetPowerLowAlert(ushort? powerLowAlert) - { - SetFieldValue(3, 0, powerLowAlert, DataSubfield.PowerLowAlert); - } - - /// - /// Retrieves the TimeDurationAlert subfield - /// Units: s - /// Nullable float representing the TimeDurationAlert subfield - public float? GetTimeDurationAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.TimeDurationAlert); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set TimeDurationAlert subfield - /// Units: s - /// Subfield value to be set - public void SetTimeDurationAlert(float? timeDurationAlert) - { - SetFieldValue(3, 0, timeDurationAlert, DataSubfield.TimeDurationAlert); - } - - /// - /// Retrieves the DistanceDurationAlert subfield - /// Units: m - /// Nullable float representing the DistanceDurationAlert subfield - public float? GetDistanceDurationAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.DistanceDurationAlert); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set DistanceDurationAlert subfield - /// Units: m - /// Subfield value to be set - public void SetDistanceDurationAlert(float? distanceDurationAlert) - { - SetFieldValue(3, 0, distanceDurationAlert, DataSubfield.DistanceDurationAlert); - } - - /// - /// Retrieves the CalorieDurationAlert subfield - /// Units: calories - /// Nullable uint representing the CalorieDurationAlert subfield - public uint? GetCalorieDurationAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.CalorieDurationAlert); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set CalorieDurationAlert subfield - /// Units: calories - /// Subfield value to be set - public void SetCalorieDurationAlert(uint? calorieDurationAlert) - { - SetFieldValue(3, 0, calorieDurationAlert, DataSubfield.CalorieDurationAlert); - } - - /// - /// Retrieves the FitnessEquipmentState subfield - /// Nullable FitnessEquipmentState enum representing the FitnessEquipmentState subfield - public FitnessEquipmentState? GetFitnessEquipmentState() - { - return (FitnessEquipmentState?)GetFieldValue(3, 0, DataSubfield.FitnessEquipmentState); - } - - /// - /// - /// Set FitnessEquipmentState subfield - /// Subfield value to be set - public void SetFitnessEquipmentState(byte? fitnessEquipmentState) - { - SetFieldValue(3, 0, fitnessEquipmentState, DataSubfield.FitnessEquipmentState); - } - - /// - /// Retrieves the SportPoint subfield - /// Nullable uint representing the SportPoint subfield - public uint? GetSportPoint() - { - Object val = GetFieldValue(3, 0, DataSubfield.SportPoint); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set SportPoint subfield - /// Subfield value to be set - public void SetSportPoint(uint? sportPoint) - { - SetFieldValue(3, 0, sportPoint, DataSubfield.SportPoint); - } - - /// - /// Retrieves the GearChangeData subfield - /// Nullable uint representing the GearChangeData subfield - public uint? GetGearChangeData() - { - Object val = GetFieldValue(3, 0, DataSubfield.GearChangeData); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set GearChangeData subfield - /// Subfield value to be set - public void SetGearChangeData(uint? gearChangeData) - { - SetFieldValue(3, 0, gearChangeData, DataSubfield.GearChangeData); - } - - /// - /// Retrieves the RiderPosition subfield - /// Comment: Indicates the rider position value. - /// Nullable RiderPositionType enum representing the RiderPosition subfield - public RiderPositionType? GetRiderPosition() - { - return (RiderPositionType?)GetFieldValue(3, 0, DataSubfield.RiderPosition); - } - - /// - /// - /// Set RiderPosition subfield - /// Comment: Indicates the rider position value. - /// Subfield value to be set - public void SetRiderPosition(byte? riderPosition) - { - SetFieldValue(3, 0, riderPosition, DataSubfield.RiderPosition); - } - - /// - /// Retrieves the CommTimeout subfield - /// Nullable ushort representing the CommTimeout subfield - public ushort? GetCommTimeout() - { - Object val = GetFieldValue(3, 0, DataSubfield.CommTimeout); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set CommTimeout subfield - /// Subfield value to be set - public void SetCommTimeout(ushort? commTimeout) - { - SetFieldValue(3, 0, commTimeout, DataSubfield.CommTimeout); - } - - /// - /// Retrieves the RadarThreatAlert subfield - /// Comment: The first byte is the radar_threat_level_max, the second byte is the radar_threat_count, third bytes is the average approach speed, and the 4th byte is the max approach speed - /// Nullable uint representing the RadarThreatAlert subfield - public uint? GetRadarThreatAlert() - { - Object val = GetFieldValue(3, 0, DataSubfield.RadarThreatAlert); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set RadarThreatAlert subfield - /// Comment: The first byte is the radar_threat_level_max, the second byte is the radar_threat_count, third bytes is the average approach speed, and the 4th byte is the max approach speed - /// Subfield value to be set - public void SetRadarThreatAlert(uint? radarThreatAlert) - { - SetFieldValue(3, 0, radarThreatAlert, DataSubfield.RadarThreatAlert); - } - /// - /// Retrieves the EventGroup field - /// Returns nullable byte representing the EventGroup field - public byte? GetEventGroup() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set EventGroup field - /// Nullable field value to be set - public void SetEventGroup(byte? eventGroup_) - { - SetFieldValue(4, 0, eventGroup_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Score field - /// Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - /// Returns nullable ushort representing the Score field - public ushort? GetScore() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Score field - /// Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - /// Nullable field value to be set - public void SetScore(ushort? score_) - { - SetFieldValue(7, 0, score_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the OpponentScore field - /// Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - /// Returns nullable ushort representing the OpponentScore field - public ushort? GetOpponentScore() - { - Object val = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set OpponentScore field - /// Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - /// Nullable field value to be set - public void SetOpponentScore(ushort? opponentScore_) - { - SetFieldValue(8, 0, opponentScore_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FrontGearNum field - /// Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Front gear number. 1 is innermost. - /// Returns nullable byte representing the FrontGearNum field - public byte? GetFrontGearNum() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FrontGearNum field - /// Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Front gear number. 1 is innermost. - /// Nullable field value to be set - public void SetFrontGearNum(byte? frontGearNum_) - { - SetFieldValue(9, 0, frontGearNum_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FrontGear field - /// Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of front teeth. - /// Returns nullable byte representing the FrontGear field - public byte? GetFrontGear() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FrontGear field - /// Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of front teeth. - /// Nullable field value to be set - public void SetFrontGear(byte? frontGear_) - { - SetFieldValue(10, 0, frontGear_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RearGearNum field - /// Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Rear gear number. 1 is innermost. - /// Returns nullable byte representing the RearGearNum field - public byte? GetRearGearNum() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set RearGearNum field - /// Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Rear gear number. 1 is innermost. - /// Nullable field value to be set - public void SetRearGearNum(byte? rearGearNum_) - { - SetFieldValue(11, 0, rearGearNum_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RearGear field - /// Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of rear teeth. - /// Returns nullable byte representing the RearGear field - public byte? GetRearGear() - { - Object val = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set RearGear field - /// Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of rear teeth. - /// Nullable field value to be set - public void SetRearGear(byte? rearGear_) - { - SetFieldValue(12, 0, rearGear_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeviceIndex field - /// Returns nullable byte representing the DeviceIndex field - public byte? GetDeviceIndex() - { - Object val = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DeviceIndex field - /// Nullable field value to be set - public void SetDeviceIndex(byte? deviceIndex_) - { - SetFieldValue(13, 0, deviceIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RadarThreatLevelMax field - /// Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - /// Returns nullable RadarThreatLevelType enum representing the RadarThreatLevelMax field - public RadarThreatLevelType? GetRadarThreatLevelMax() - { - object obj = GetFieldValue(21, 0, Fit.SubfieldIndexMainField); - RadarThreatLevelType? value = obj == null ? (RadarThreatLevelType?)null : (RadarThreatLevelType)obj; - return value; - } - - /// - /// Set RadarThreatLevelMax field - /// Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - /// Nullable field value to be set - public void SetRadarThreatLevelMax(RadarThreatLevelType? radarThreatLevelMax_) - { - SetFieldValue(21, 0, radarThreatLevelMax_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RadarThreatCount field - /// Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - /// Returns nullable byte representing the RadarThreatCount field - public byte? GetRadarThreatCount() - { - Object val = GetFieldValue(22, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set RadarThreatCount field - /// Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - /// Nullable field value to be set - public void SetRadarThreatCount(byte? radarThreatCount_) - { - SetFieldValue(22, 0, radarThreatCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RadarThreatAvgApproachSpeed field - /// Units: m/s - /// Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - /// Returns nullable float representing the RadarThreatAvgApproachSpeed field - public float? GetRadarThreatAvgApproachSpeed() - { - Object val = GetFieldValue(23, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set RadarThreatAvgApproachSpeed field - /// Units: m/s - /// Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - /// Nullable field value to be set - public void SetRadarThreatAvgApproachSpeed(float? radarThreatAvgApproachSpeed_) - { - SetFieldValue(23, 0, radarThreatAvgApproachSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RadarThreatMaxApproachSpeed field - /// Units: m/s - /// Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - /// Returns nullable float representing the RadarThreatMaxApproachSpeed field - public float? GetRadarThreatMaxApproachSpeed() - { - Object val = GetFieldValue(24, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set RadarThreatMaxApproachSpeed field - /// Units: m/s - /// Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - /// Nullable field value to be set - public void SetRadarThreatMaxApproachSpeed(float? radarThreatMaxApproachSpeed_) - { - SetFieldValue(24, 0, radarThreatMaxApproachSpeed_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ExdDataConceptConfigurationMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ExdDataConceptConfigurationMesg.cs deleted file mode 100644 index 45d3fc2bd..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ExdDataConceptConfigurationMesg.cs +++ /dev/null @@ -1,297 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the ExdDataConceptConfiguration profile message. - /// - public class ExdDataConceptConfigurationMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte ScreenIndex = 0; - public const byte ConceptField = 1; - public const byte FieldId = 2; - public const byte ConceptIndex = 3; - public const byte DataPage = 4; - public const byte ConceptKey = 5; - public const byte Scaling = 6; - public const byte DataUnits = 8; - public const byte Qualifier = 9; - public const byte Descriptor = 10; - public const byte IsSigned = 11; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public ExdDataConceptConfigurationMesg() : base(Profile.GetMesg(MesgNum.ExdDataConceptConfiguration)) - { - } - - public ExdDataConceptConfigurationMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the ScreenIndex field - /// Returns nullable byte representing the ScreenIndex field - public byte? GetScreenIndex() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ScreenIndex field - /// Nullable field value to be set - public void SetScreenIndex(byte? screenIndex_) - { - SetFieldValue(0, 0, screenIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ConceptField field - /// Returns nullable byte representing the ConceptField field - public byte? GetConceptField() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ConceptField field - /// Nullable field value to be set - public void SetConceptField(byte? conceptField_) - { - SetFieldValue(1, 0, conceptField_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FieldId field - /// Returns nullable byte representing the FieldId field - public byte? GetFieldId() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FieldId field - /// Nullable field value to be set - public void SetFieldId(byte? fieldId_) - { - SetFieldValue(2, 0, fieldId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ConceptIndex field - /// Returns nullable byte representing the ConceptIndex field - public byte? GetConceptIndex() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ConceptIndex field - /// Nullable field value to be set - public void SetConceptIndex(byte? conceptIndex_) - { - SetFieldValue(3, 0, conceptIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DataPage field - /// Returns nullable byte representing the DataPage field - public byte? GetDataPage() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DataPage field - /// Nullable field value to be set - public void SetDataPage(byte? dataPage_) - { - SetFieldValue(4, 0, dataPage_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ConceptKey field - /// Returns nullable byte representing the ConceptKey field - public byte? GetConceptKey() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ConceptKey field - /// Nullable field value to be set - public void SetConceptKey(byte? conceptKey_) - { - SetFieldValue(5, 0, conceptKey_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Scaling field - /// Returns nullable byte representing the Scaling field - public byte? GetScaling() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Scaling field - /// Nullable field value to be set - public void SetScaling(byte? scaling_) - { - SetFieldValue(6, 0, scaling_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DataUnits field - /// Returns nullable ExdDataUnits enum representing the DataUnits field - public ExdDataUnits? GetDataUnits() - { - object obj = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - ExdDataUnits? value = obj == null ? (ExdDataUnits?)null : (ExdDataUnits)obj; - return value; - } - - /// - /// Set DataUnits field - /// Nullable field value to be set - public void SetDataUnits(ExdDataUnits? dataUnits_) - { - SetFieldValue(8, 0, dataUnits_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Qualifier field - /// Returns nullable ExdQualifiers enum representing the Qualifier field - public ExdQualifiers? GetQualifier() - { - object obj = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - ExdQualifiers? value = obj == null ? (ExdQualifiers?)null : (ExdQualifiers)obj; - return value; - } - - /// - /// Set Qualifier field - /// Nullable field value to be set - public void SetQualifier(ExdQualifiers? qualifier_) - { - SetFieldValue(9, 0, qualifier_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Descriptor field - /// Returns nullable ExdDescriptors enum representing the Descriptor field - public ExdDescriptors? GetDescriptor() - { - object obj = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - ExdDescriptors? value = obj == null ? (ExdDescriptors?)null : (ExdDescriptors)obj; - return value; - } - - /// - /// Set Descriptor field - /// Nullable field value to be set - public void SetDescriptor(ExdDescriptors? descriptor_) - { - SetFieldValue(10, 0, descriptor_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the IsSigned field - /// Returns nullable Bool enum representing the IsSigned field - public Bool? GetIsSigned() - { - object obj = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set IsSigned field - /// Nullable field value to be set - public void SetIsSigned(Bool? isSigned_) - { - SetFieldValue(11, 0, isSigned_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ExdDataFieldConfigurationMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ExdDataFieldConfigurationMesg.cs deleted file mode 100644 index c46ca63fd..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ExdDataFieldConfigurationMesg.cs +++ /dev/null @@ -1,221 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the ExdDataFieldConfiguration profile message. - /// - public class ExdDataFieldConfigurationMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte ScreenIndex = 0; - public const byte ConceptField = 1; - public const byte FieldId = 2; - public const byte ConceptCount = 3; - public const byte DisplayType = 4; - public const byte Title = 5; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public ExdDataFieldConfigurationMesg() : base(Profile.GetMesg(MesgNum.ExdDataFieldConfiguration)) - { - } - - public ExdDataFieldConfigurationMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the ScreenIndex field - /// Returns nullable byte representing the ScreenIndex field - public byte? GetScreenIndex() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ScreenIndex field - /// Nullable field value to be set - public void SetScreenIndex(byte? screenIndex_) - { - SetFieldValue(0, 0, screenIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ConceptField field - /// Returns nullable byte representing the ConceptField field - public byte? GetConceptField() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ConceptField field - /// Nullable field value to be set - public void SetConceptField(byte? conceptField_) - { - SetFieldValue(1, 0, conceptField_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FieldId field - /// Returns nullable byte representing the FieldId field - public byte? GetFieldId() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FieldId field - /// Nullable field value to be set - public void SetFieldId(byte? fieldId_) - { - SetFieldValue(2, 0, fieldId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ConceptCount field - /// Returns nullable byte representing the ConceptCount field - public byte? GetConceptCount() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ConceptCount field - /// Nullable field value to be set - public void SetConceptCount(byte? conceptCount_) - { - SetFieldValue(3, 0, conceptCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DisplayType field - /// Returns nullable ExdDisplayType enum representing the DisplayType field - public ExdDisplayType? GetDisplayType() - { - object obj = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - ExdDisplayType? value = obj == null ? (ExdDisplayType?)null : (ExdDisplayType)obj; - return value; - } - - /// - /// Set DisplayType field - /// Nullable field value to be set - public void SetDisplayType(ExdDisplayType? displayType_) - { - SetFieldValue(4, 0, displayType_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Title - public int GetNumTitle() - { - return GetNumFieldValues(5, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Title field - /// 0 based index of Title element to retrieve - /// Returns byte[] representing the Title field - public byte[] GetTitle(int index) - { - byte[] data = (byte[])GetFieldValue(5, index, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Title field - /// 0 based index of Title element to retrieve - /// Returns String representing the Title field - public String GetTitleAsString(int index) - { - byte[] data = (byte[])GetFieldValue(5, index, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Title field - /// 0 based index of Title element to retrieve - /// field value to be set - public void SetTitle(int index, String title_) - { - byte[] data = Encoding.UTF8.GetBytes(title_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(5, index, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Title field - /// 0 based index of title - /// field value to be set - public void SetTitle(int index, byte[] title_) - { - SetFieldValue(5, index, title_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ExdScreenConfigurationMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ExdScreenConfigurationMesg.cs deleted file mode 100644 index b21a46d09..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ExdScreenConfigurationMesg.cs +++ /dev/null @@ -1,141 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the ExdScreenConfiguration profile message. - /// - public class ExdScreenConfigurationMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte ScreenIndex = 0; - public const byte FieldCount = 1; - public const byte Layout = 2; - public const byte ScreenEnabled = 3; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public ExdScreenConfigurationMesg() : base(Profile.GetMesg(MesgNum.ExdScreenConfiguration)) - { - } - - public ExdScreenConfigurationMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the ScreenIndex field - /// Returns nullable byte representing the ScreenIndex field - public byte? GetScreenIndex() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ScreenIndex field - /// Nullable field value to be set - public void SetScreenIndex(byte? screenIndex_) - { - SetFieldValue(0, 0, screenIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FieldCount field - /// Comment: number of fields in screen - /// Returns nullable byte representing the FieldCount field - public byte? GetFieldCount() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FieldCount field - /// Comment: number of fields in screen - /// Nullable field value to be set - public void SetFieldCount(byte? fieldCount_) - { - SetFieldValue(1, 0, fieldCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Layout field - /// Returns nullable ExdLayout enum representing the Layout field - public ExdLayout? GetLayout() - { - object obj = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - ExdLayout? value = obj == null ? (ExdLayout?)null : (ExdLayout)obj; - return value; - } - - /// - /// Set Layout field - /// Nullable field value to be set - public void SetLayout(ExdLayout? layout_) - { - SetFieldValue(2, 0, layout_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ScreenEnabled field - /// Returns nullable Bool enum representing the ScreenEnabled field - public Bool? GetScreenEnabled() - { - object obj = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set ScreenEnabled field - /// Nullable field value to be set - public void SetScreenEnabled(Bool? screenEnabled_) - { - SetFieldValue(3, 0, screenEnabled_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ExerciseTitleMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ExerciseTitleMesg.cs deleted file mode 100644 index 8bac7df8b..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ExerciseTitleMesg.cs +++ /dev/null @@ -1,178 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the ExerciseTitle profile message. - /// - public class ExerciseTitleMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte ExerciseCategory = 0; - public const byte ExerciseName = 1; - public const byte WktStepName = 2; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public ExerciseTitleMesg() : base(Profile.GetMesg(MesgNum.ExerciseTitle)) - { - } - - public ExerciseTitleMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ExerciseCategory field - /// Returns nullable ushort representing the ExerciseCategory field - public ushort? GetExerciseCategory() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ExerciseCategory field - /// Nullable field value to be set - public void SetExerciseCategory(ushort? exerciseCategory_) - { - SetFieldValue(0, 0, exerciseCategory_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ExerciseName field - /// Returns nullable ushort representing the ExerciseName field - public ushort? GetExerciseName() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ExerciseName field - /// Nullable field value to be set - public void SetExerciseName(ushort? exerciseName_) - { - SetFieldValue(1, 0, exerciseName_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field WktStepName - public int GetNumWktStepName() - { - return GetNumFieldValues(2, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WktStepName field - /// 0 based index of WktStepName element to retrieve - /// Returns byte[] representing the WktStepName field - public byte[] GetWktStepName(int index) - { - byte[] data = (byte[])GetFieldValue(2, index, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the WktStepName field - /// 0 based index of WktStepName element to retrieve - /// Returns String representing the WktStepName field - public String GetWktStepNameAsString(int index) - { - byte[] data = (byte[])GetFieldValue(2, index, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set WktStepName field - /// 0 based index of WktStepName element to retrieve - /// field value to be set - public void SetWktStepName(int index, String wktStepName_) - { - byte[] data = Encoding.UTF8.GetBytes(wktStepName_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(2, index, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set WktStepName field - /// 0 based index of wkt_step_name - /// field value to be set - public void SetWktStepName(int index, byte[] wktStepName_) - { - SetFieldValue(2, index, wktStepName_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/FieldCapabilitiesMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/FieldCapabilitiesMesg.cs deleted file mode 100644 index e4e213726..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/FieldCapabilitiesMesg.cs +++ /dev/null @@ -1,168 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the FieldCapabilities profile message. - /// - public class FieldCapabilitiesMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte File = 0; - public const byte MesgNum = 1; - public const byte FieldNum = 2; - public const byte Count = 3; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public FieldCapabilitiesMesg() : base(Profile.GetMesg(MesgNum.FieldCapabilities)) - { - } - - public FieldCapabilitiesMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the File field - /// Returns nullable File enum representing the File field - public File? GetFile() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - File? value = obj == null ? (File?)null : (File)obj; - return value; - } - - /// - /// Set File field - /// Nullable field value to be set - public void SetFile(File? file_) - { - SetFieldValue(0, 0, file_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MesgNum field - /// Returns nullable ushort representing the MesgNum field - public ushort? GetMesgNum() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MesgNum field - /// Nullable field value to be set - public void SetMesgNum(ushort? mesgNum_) - { - SetFieldValue(1, 0, mesgNum_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FieldNum field - /// Returns nullable byte representing the FieldNum field - public byte? GetFieldNum() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FieldNum field - /// Nullable field value to be set - public void SetFieldNum(byte? fieldNum_) - { - SetFieldValue(2, 0, fieldNum_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Count field - /// Returns nullable ushort representing the Count field - public ushort? GetCount() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Count field - /// Nullable field value to be set - public void SetCount(ushort? count_) - { - SetFieldValue(3, 0, count_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/FieldDescriptionMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/FieldDescriptionMesg.cs deleted file mode 100644 index 9c6c9bb48..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/FieldDescriptionMesg.cs +++ /dev/null @@ -1,492 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the FieldDescription profile message. - /// - public class FieldDescriptionMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte DeveloperDataIndex = 0; - public const byte FieldDefinitionNumber = 1; - public const byte FitBaseTypeId = 2; - public const byte FieldName = 3; - public const byte Array = 4; - public const byte Components = 5; - public const byte Scale = 6; - public const byte Offset = 7; - public const byte Units = 8; - public const byte Bits = 9; - public const byte Accumulate = 10; - public const byte FitBaseUnitId = 13; - public const byte NativeMesgNum = 14; - public const byte NativeFieldNum = 15; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public FieldDescriptionMesg() : base(Profile.GetMesg(MesgNum.FieldDescription)) - { - } - - public FieldDescriptionMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the DeveloperDataIndex field - /// Returns nullable byte representing the DeveloperDataIndex field - public byte? GetDeveloperDataIndex() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DeveloperDataIndex field - /// Nullable field value to be set - public void SetDeveloperDataIndex(byte? developerDataIndex_) - { - SetFieldValue(0, 0, developerDataIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FieldDefinitionNumber field - /// Returns nullable byte representing the FieldDefinitionNumber field - public byte? GetFieldDefinitionNumber() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FieldDefinitionNumber field - /// Nullable field value to be set - public void SetFieldDefinitionNumber(byte? fieldDefinitionNumber_) - { - SetFieldValue(1, 0, fieldDefinitionNumber_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FitBaseTypeId field - /// Returns nullable byte representing the FitBaseTypeId field - public byte? GetFitBaseTypeId() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FitBaseTypeId field - /// Nullable field value to be set - public void SetFitBaseTypeId(byte? fitBaseTypeId_) - { - SetFieldValue(2, 0, fitBaseTypeId_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field FieldName - public int GetNumFieldName() - { - return GetNumFieldValues(3, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FieldName field - /// 0 based index of FieldName element to retrieve - /// Returns byte[] representing the FieldName field - public byte[] GetFieldName(int index) - { - byte[] data = (byte[])GetFieldValue(3, index, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the FieldName field - /// 0 based index of FieldName element to retrieve - /// Returns String representing the FieldName field - public String GetFieldNameAsString(int index) - { - byte[] data = (byte[])GetFieldValue(3, index, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set FieldName field - /// 0 based index of FieldName element to retrieve - /// field value to be set - public void SetFieldName(int index, String fieldName_) - { - byte[] data = Encoding.UTF8.GetBytes(fieldName_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(3, index, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set FieldName field - /// 0 based index of field_name - /// field value to be set - public void SetFieldName(int index, byte[] fieldName_) - { - SetFieldValue(3, index, fieldName_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Array field - /// Returns nullable byte representing the Array field - public byte? GetArray() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Array field - /// Nullable field value to be set - public void SetArray(byte? array_) - { - SetFieldValue(4, 0, array_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Components field - /// Returns byte[] representing the Components field - public byte[] GetComponents() - { - byte[] data = (byte[])GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Components field - /// Returns String representing the Components field - public String GetComponentsAsString() - { - byte[] data = (byte[])GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Components field - /// field value to be set - public void SetComponents(String components_) - { - byte[] data = Encoding.UTF8.GetBytes(components_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(5, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Components field - /// field value to be set - public void SetComponents(byte[] components_) - { - SetFieldValue(5, 0, components_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Scale field - /// Returns nullable byte representing the Scale field - public byte? GetScale() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Scale field - /// Nullable field value to be set - public void SetScale(byte? scale_) - { - SetFieldValue(6, 0, scale_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Offset field - /// Returns nullable sbyte representing the Offset field - public sbyte? GetOffset() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set Offset field - /// Nullable field value to be set - public void SetOffset(sbyte? offset_) - { - SetFieldValue(7, 0, offset_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Units - public int GetNumUnits() - { - return GetNumFieldValues(8, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Units field - /// 0 based index of Units element to retrieve - /// Returns byte[] representing the Units field - public byte[] GetUnits(int index) - { - byte[] data = (byte[])GetFieldValue(8, index, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Units field - /// 0 based index of Units element to retrieve - /// Returns String representing the Units field - public String GetUnitsAsString(int index) - { - byte[] data = (byte[])GetFieldValue(8, index, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Units field - /// 0 based index of Units element to retrieve - /// field value to be set - public void SetUnits(int index, String units_) - { - byte[] data = Encoding.UTF8.GetBytes(units_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(8, index, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Units field - /// 0 based index of units - /// field value to be set - public void SetUnits(int index, byte[] units_) - { - SetFieldValue(8, index, units_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Bits field - /// Returns byte[] representing the Bits field - public byte[] GetBits() - { - byte[] data = (byte[])GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Bits field - /// Returns String representing the Bits field - public String GetBitsAsString() - { - byte[] data = (byte[])GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Bits field - /// field value to be set - public void SetBits(String bits_) - { - byte[] data = Encoding.UTF8.GetBytes(bits_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(9, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Bits field - /// field value to be set - public void SetBits(byte[] bits_) - { - SetFieldValue(9, 0, bits_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Accumulate field - /// Returns byte[] representing the Accumulate field - public byte[] GetAccumulate() - { - byte[] data = (byte[])GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Accumulate field - /// Returns String representing the Accumulate field - public String GetAccumulateAsString() - { - byte[] data = (byte[])GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Accumulate field - /// field value to be set - public void SetAccumulate(String accumulate_) - { - byte[] data = Encoding.UTF8.GetBytes(accumulate_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(10, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Accumulate field - /// field value to be set - public void SetAccumulate(byte[] accumulate_) - { - SetFieldValue(10, 0, accumulate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FitBaseUnitId field - /// Returns nullable ushort representing the FitBaseUnitId field - public ushort? GetFitBaseUnitId() - { - Object val = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set FitBaseUnitId field - /// Nullable field value to be set - public void SetFitBaseUnitId(ushort? fitBaseUnitId_) - { - SetFieldValue(13, 0, fitBaseUnitId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NativeMesgNum field - /// Returns nullable ushort representing the NativeMesgNum field - public ushort? GetNativeMesgNum() - { - Object val = GetFieldValue(14, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NativeMesgNum field - /// Nullable field value to be set - public void SetNativeMesgNum(ushort? nativeMesgNum_) - { - SetFieldValue(14, 0, nativeMesgNum_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NativeFieldNum field - /// Returns nullable byte representing the NativeFieldNum field - public byte? GetNativeFieldNum() - { - Object val = GetFieldValue(15, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set NativeFieldNum field - /// Nullable field value to be set - public void SetNativeFieldNum(byte? nativeFieldNum_) - { - SetFieldValue(15, 0, nativeFieldNum_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/FileCapabilitiesMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/FileCapabilitiesMesg.cs deleted file mode 100644 index 0ba3ac0bd..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/FileCapabilitiesMesg.cs +++ /dev/null @@ -1,209 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the FileCapabilities profile message. - /// - public class FileCapabilitiesMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Type = 0; - public const byte Flags = 1; - public const byte Directory = 2; - public const byte MaxCount = 3; - public const byte MaxSize = 4; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public FileCapabilitiesMesg() : base(Profile.GetMesg(MesgNum.FileCapabilities)) - { - } - - public FileCapabilitiesMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Type field - /// Returns nullable File enum representing the Type field - new public File? GetType() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - File? value = obj == null ? (File?)null : (File)obj; - return value; - } - - /// - /// Set Type field - /// Nullable field value to be set - public void SetType(File? type_) - { - SetFieldValue(0, 0, type_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Flags field - /// Returns nullable byte representing the Flags field - public byte? GetFlags() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Flags field - /// Nullable field value to be set - public void SetFlags(byte? flags_) - { - SetFieldValue(1, 0, flags_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Directory field - /// Returns byte[] representing the Directory field - public byte[] GetDirectory() - { - byte[] data = (byte[])GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Directory field - /// Returns String representing the Directory field - public String GetDirectoryAsString() - { - byte[] data = (byte[])GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Directory field - /// field value to be set - public void SetDirectory(String directory_) - { - byte[] data = Encoding.UTF8.GetBytes(directory_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(2, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Directory field - /// field value to be set - public void SetDirectory(byte[] directory_) - { - SetFieldValue(2, 0, directory_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxCount field - /// Returns nullable ushort representing the MaxCount field - public ushort? GetMaxCount() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MaxCount field - /// Nullable field value to be set - public void SetMaxCount(ushort? maxCount_) - { - SetFieldValue(3, 0, maxCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxSize field - /// Units: bytes - /// Returns nullable uint representing the MaxSize field - public uint? GetMaxSize() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set MaxSize field - /// Units: bytes - /// Nullable field value to be set - public void SetMaxSize(uint? maxSize_) - { - SetFieldValue(4, 0, maxSize_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/FileCreatorMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/FileCreatorMesg.cs deleted file mode 100644 index face0c241..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/FileCreatorMesg.cs +++ /dev/null @@ -1,101 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the FileCreator profile message. - /// - public class FileCreatorMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte SoftwareVersion = 0; - public const byte HardwareVersion = 1; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public FileCreatorMesg() : base(Profile.GetMesg(MesgNum.FileCreator)) - { - } - - public FileCreatorMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the SoftwareVersion field - /// Returns nullable ushort representing the SoftwareVersion field - public ushort? GetSoftwareVersion() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set SoftwareVersion field - /// Nullable field value to be set - public void SetSoftwareVersion(ushort? softwareVersion_) - { - SetFieldValue(0, 0, softwareVersion_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HardwareVersion field - /// Returns nullable byte representing the HardwareVersion field - public byte? GetHardwareVersion() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HardwareVersion field - /// Nullable field value to be set - public void SetHardwareVersion(byte? hardwareVersion_) - { - SetFieldValue(1, 0, hardwareVersion_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/FileIdMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/FileIdMesg.cs deleted file mode 100644 index 9a45a4817..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/FileIdMesg.cs +++ /dev/null @@ -1,295 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the FileId profile message. - /// - public class FileIdMesg : Mesg - { - #region Fields - static class ProductSubfield - { - public static ushort FaveroProduct = 0; - public static ushort GarminProduct = 1; - public static ushort Subfields = 2; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Type = 0; - public const byte Manufacturer = 1; - public const byte Product = 2; - public const byte SerialNumber = 3; - public const byte TimeCreated = 4; - public const byte Number = 5; - public const byte ProductName = 8; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public FileIdMesg() : base(Profile.GetMesg(MesgNum.FileId)) - { - } - - public FileIdMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Type field - /// Returns nullable File enum representing the Type field - new public File? GetType() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - File? value = obj == null ? (File?)null : (File)obj; - return value; - } - - /// - /// Set Type field - /// Nullable field value to be set - public void SetType(File? type_) - { - SetFieldValue(0, 0, type_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Manufacturer field - /// Returns nullable ushort representing the Manufacturer field - public ushort? GetManufacturer() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Manufacturer field - /// Nullable field value to be set - public void SetManufacturer(ushort? manufacturer_) - { - SetFieldValue(1, 0, manufacturer_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Product field - /// Returns nullable ushort representing the Product field - public ushort? GetProduct() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Product field - /// Nullable field value to be set - public void SetProduct(ushort? product_) - { - SetFieldValue(2, 0, product_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the FaveroProduct subfield - /// Nullable ushort representing the FaveroProduct subfield - public ushort? GetFaveroProduct() - { - Object val = GetFieldValue(2, 0, ProductSubfield.FaveroProduct); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set FaveroProduct subfield - /// Subfield value to be set - public void SetFaveroProduct(ushort? faveroProduct) - { - SetFieldValue(2, 0, faveroProduct, ProductSubfield.FaveroProduct); - } - - /// - /// Retrieves the GarminProduct subfield - /// Nullable ushort representing the GarminProduct subfield - public ushort? GetGarminProduct() - { - Object val = GetFieldValue(2, 0, ProductSubfield.GarminProduct); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set GarminProduct subfield - /// Subfield value to be set - public void SetGarminProduct(ushort? garminProduct) - { - SetFieldValue(2, 0, garminProduct, ProductSubfield.GarminProduct); - } - /// - /// Retrieves the SerialNumber field - /// Returns nullable uint representing the SerialNumber field - public uint? GetSerialNumber() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set SerialNumber field - /// Nullable field value to be set - public void SetSerialNumber(uint? serialNumber_) - { - SetFieldValue(3, 0, serialNumber_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeCreated field - /// Comment: Only set for files that are can be created/erased. - /// Returns DateTime representing the TimeCreated field - public DateTime GetTimeCreated() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set TimeCreated field - /// Comment: Only set for files that are can be created/erased. - /// Nullable field value to be set - public void SetTimeCreated(DateTime timeCreated_) - { - SetFieldValue(4, 0, timeCreated_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Number field - /// Comment: Only set for files that are not created/erased. - /// Returns nullable ushort representing the Number field - public ushort? GetNumber() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Number field - /// Comment: Only set for files that are not created/erased. - /// Nullable field value to be set - public void SetNumber(ushort? number_) - { - SetFieldValue(5, 0, number_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ProductName field - /// Comment: Optional free form string to indicate the devices name or model - /// Returns byte[] representing the ProductName field - public byte[] GetProductName() - { - byte[] data = (byte[])GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the ProductName field - /// Comment: Optional free form string to indicate the devices name or model - /// Returns String representing the ProductName field - public String GetProductNameAsString() - { - byte[] data = (byte[])GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set ProductName field - /// Comment: Optional free form string to indicate the devices name or model - /// field value to be set - public void SetProductName(String productName_) - { - byte[] data = Encoding.UTF8.GetBytes(productName_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(8, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set ProductName field - /// Comment: Optional free form string to indicate the devices name or model - /// field value to be set - public void SetProductName(byte[] productName_) - { - SetFieldValue(8, 0, productName_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/GoalMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/GoalMesg.cs deleted file mode 100644 index 9a407d943..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/GoalMesg.cs +++ /dev/null @@ -1,330 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Goal profile message. - /// - public class GoalMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Sport = 0; - public const byte SubSport = 1; - public const byte StartDate = 2; - public const byte EndDate = 3; - public const byte Type = 4; - public const byte Value = 5; - public const byte Repeat = 6; - public const byte TargetValue = 7; - public const byte Recurrence = 8; - public const byte RecurrenceValue = 9; - public const byte Enabled = 10; - public const byte Source = 11; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public GoalMesg() : base(Profile.GetMesg(MesgNum.Goal)) - { - } - - public GoalMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sport field - /// Returns nullable Sport enum representing the Sport field - public Sport? GetSport() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Sport? value = obj == null ? (Sport?)null : (Sport)obj; - return value; - } - - /// - /// Set Sport field - /// Nullable field value to be set - public void SetSport(Sport? sport_) - { - SetFieldValue(0, 0, sport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SubSport field - /// Returns nullable SubSport enum representing the SubSport field - public SubSport? GetSubSport() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - SubSport? value = obj == null ? (SubSport?)null : (SubSport)obj; - return value; - } - - /// - /// Set SubSport field - /// Nullable field value to be set - public void SetSubSport(SubSport? subSport_) - { - SetFieldValue(1, 0, subSport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartDate field - /// Returns DateTime representing the StartDate field - public DateTime GetStartDate() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set StartDate field - /// Nullable field value to be set - public void SetStartDate(DateTime startDate_) - { - SetFieldValue(2, 0, startDate_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EndDate field - /// Returns DateTime representing the EndDate field - public DateTime GetEndDate() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set EndDate field - /// Nullable field value to be set - public void SetEndDate(DateTime endDate_) - { - SetFieldValue(3, 0, endDate_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Type field - /// Returns nullable Goal enum representing the Type field - new public Goal? GetType() - { - object obj = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - Goal? value = obj == null ? (Goal?)null : (Goal)obj; - return value; - } - - /// - /// Set Type field - /// Nullable field value to be set - public void SetType(Goal? type_) - { - SetFieldValue(4, 0, type_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Value field - /// Returns nullable uint representing the Value field - public uint? GetValue() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set Value field - /// Nullable field value to be set - public void SetValue(uint? value_) - { - SetFieldValue(5, 0, value_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Repeat field - /// Returns nullable Bool enum representing the Repeat field - public Bool? GetRepeat() - { - object obj = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set Repeat field - /// Nullable field value to be set - public void SetRepeat(Bool? repeat_) - { - SetFieldValue(6, 0, repeat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TargetValue field - /// Returns nullable uint representing the TargetValue field - public uint? GetTargetValue() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TargetValue field - /// Nullable field value to be set - public void SetTargetValue(uint? targetValue_) - { - SetFieldValue(7, 0, targetValue_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Recurrence field - /// Returns nullable GoalRecurrence enum representing the Recurrence field - public GoalRecurrence? GetRecurrence() - { - object obj = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - GoalRecurrence? value = obj == null ? (GoalRecurrence?)null : (GoalRecurrence)obj; - return value; - } - - /// - /// Set Recurrence field - /// Nullable field value to be set - public void SetRecurrence(GoalRecurrence? recurrence_) - { - SetFieldValue(8, 0, recurrence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RecurrenceValue field - /// Returns nullable ushort representing the RecurrenceValue field - public ushort? GetRecurrenceValue() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set RecurrenceValue field - /// Nullable field value to be set - public void SetRecurrenceValue(ushort? recurrenceValue_) - { - SetFieldValue(9, 0, recurrenceValue_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Enabled field - /// Returns nullable Bool enum representing the Enabled field - public Bool? GetEnabled() - { - object obj = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set Enabled field - /// Nullable field value to be set - public void SetEnabled(Bool? enabled_) - { - SetFieldValue(10, 0, enabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Source field - /// Returns nullable GoalSource enum representing the Source field - public GoalSource? GetSource() - { - object obj = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - GoalSource? value = obj == null ? (GoalSource?)null : (GoalSource)obj; - return value; - } - - /// - /// Set Source field - /// Nullable field value to be set - public void SetSource(GoalSource? source_) - { - SetFieldValue(11, 0, source_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/GpsMetadataMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/GpsMetadataMesg.cs deleted file mode 100644 index 628f39499..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/GpsMetadataMesg.cs +++ /dev/null @@ -1,307 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the GpsMetadata profile message. - /// - public class GpsMetadataMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte TimestampMs = 0; - public const byte PositionLat = 1; - public const byte PositionLong = 2; - public const byte EnhancedAltitude = 3; - public const byte EnhancedSpeed = 4; - public const byte Heading = 5; - public const byte UtcTimestamp = 6; - public const byte Velocity = 7; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public GpsMetadataMesg() : base(Profile.GetMesg(MesgNum.GpsMetadata)) - { - } - - public GpsMetadataMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp. - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp. - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Returns nullable ushort representing the TimestampMs field - public ushort? GetTimestampMs() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Nullable field value to be set - public void SetTimestampMs(ushort? timestampMs_) - { - SetFieldValue(0, 0, timestampMs_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLat field - /// Units: semicircles - /// Returns nullable int representing the PositionLat field - public int? GetPositionLat() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLat(int? positionLat_) - { - SetFieldValue(1, 0, positionLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLong field - /// Units: semicircles - /// Returns nullable int representing the PositionLong field - public int? GetPositionLong() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLong(int? positionLong_) - { - SetFieldValue(2, 0, positionLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedAltitude field - /// Units: m - /// Returns nullable float representing the EnhancedAltitude field - public float? GetEnhancedAltitude() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedAltitude field - /// Units: m - /// Nullable field value to be set - public void SetEnhancedAltitude(float? enhancedAltitude_) - { - SetFieldValue(3, 0, enhancedAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedSpeed field - /// Units: m/s - /// Returns nullable float representing the EnhancedSpeed field - public float? GetEnhancedSpeed() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetEnhancedSpeed(float? enhancedSpeed_) - { - SetFieldValue(4, 0, enhancedSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Heading field - /// Units: degrees - /// Returns nullable float representing the Heading field - public float? GetHeading() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Heading field - /// Units: degrees - /// Nullable field value to be set - public void SetHeading(float? heading_) - { - SetFieldValue(5, 0, heading_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the UtcTimestamp field - /// Units: s - /// Comment: Used to correlate UTC to system time if the timestamp of the message is in system time. This UTC time is derived from the GPS data. - /// Returns DateTime representing the UtcTimestamp field - public DateTime GetUtcTimestamp() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set UtcTimestamp field - /// Units: s - /// Comment: Used to correlate UTC to system time if the timestamp of the message is in system time. This UTC time is derived from the GPS data. - /// Nullable field value to be set - public void SetUtcTimestamp(DateTime utcTimestamp_) - { - SetFieldValue(6, 0, utcTimestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Velocity - public int GetNumVelocity() - { - return GetNumFieldValues(7, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Velocity field - /// Units: m/s - /// Comment: velocity[0] is lon velocity. Velocity[1] is lat velocity. Velocity[2] is altitude velocity. - /// 0 based index of Velocity element to retrieve - /// Returns nullable float representing the Velocity field - public float? GetVelocity(int index) - { - Object val = GetFieldValue(7, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Velocity field - /// Units: m/s - /// Comment: velocity[0] is lon velocity. Velocity[1] is lat velocity. Velocity[2] is altitude velocity. - /// 0 based index of velocity - /// Nullable field value to be set - public void SetVelocity(int index, float? velocity_) - { - SetFieldValue(7, index, velocity_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/GyroscopeDataMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/GyroscopeDataMesg.cs deleted file mode 100644 index c27ed1d98..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/GyroscopeDataMesg.cs +++ /dev/null @@ -1,389 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the GyroscopeData profile message. - /// - public class GyroscopeDataMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte TimestampMs = 0; - public const byte SampleTimeOffset = 1; - public const byte GyroX = 2; - public const byte GyroY = 3; - public const byte GyroZ = 4; - public const byte CalibratedGyroX = 5; - public const byte CalibratedGyroY = 6; - public const byte CalibratedGyroZ = 7; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public GyroscopeDataMesg() : base(Profile.GetMesg(MesgNum.GyroscopeData)) - { - } - - public GyroscopeDataMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Returns nullable ushort representing the TimestampMs field - public ushort? GetTimestampMs() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Nullable field value to be set - public void SetTimestampMs(ushort? timestampMs_) - { - SetFieldValue(0, 0, timestampMs_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field SampleTimeOffset - public int GetNumSampleTimeOffset() - { - return GetNumFieldValues(1, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SampleTimeOffset field - /// Units: ms - /// Comment: Each time in the array describes the time at which the gyro sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in gyro_x and gyro_y and gyro_z - /// 0 based index of SampleTimeOffset element to retrieve - /// Returns nullable ushort representing the SampleTimeOffset field - public ushort? GetSampleTimeOffset(int index) - { - Object val = GetFieldValue(1, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set SampleTimeOffset field - /// Units: ms - /// Comment: Each time in the array describes the time at which the gyro sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in gyro_x and gyro_y and gyro_z - /// 0 based index of sample_time_offset - /// Nullable field value to be set - public void SetSampleTimeOffset(int index, ushort? sampleTimeOffset_) - { - SetFieldValue(1, index, sampleTimeOffset_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field GyroX - public int GetNumGyroX() - { - return GetNumFieldValues(2, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GyroX field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of GyroX element to retrieve - /// Returns nullable ushort representing the GyroX field - public ushort? GetGyroX(int index) - { - Object val = GetFieldValue(2, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set GyroX field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of gyro_x - /// Nullable field value to be set - public void SetGyroX(int index, ushort? gyroX_) - { - SetFieldValue(2, index, gyroX_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field GyroY - public int GetNumGyroY() - { - return GetNumFieldValues(3, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GyroY field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of GyroY element to retrieve - /// Returns nullable ushort representing the GyroY field - public ushort? GetGyroY(int index) - { - Object val = GetFieldValue(3, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set GyroY field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of gyro_y - /// Nullable field value to be set - public void SetGyroY(int index, ushort? gyroY_) - { - SetFieldValue(3, index, gyroY_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field GyroZ - public int GetNumGyroZ() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GyroZ field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of GyroZ element to retrieve - /// Returns nullable ushort representing the GyroZ field - public ushort? GetGyroZ(int index) - { - Object val = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set GyroZ field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of gyro_z - /// Nullable field value to be set - public void SetGyroZ(int index, ushort? gyroZ_) - { - SetFieldValue(4, index, gyroZ_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CalibratedGyroX - public int GetNumCalibratedGyroX() - { - return GetNumFieldValues(5, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CalibratedGyroX field - /// Units: deg/s - /// Comment: Calibrated gyro reading - /// 0 based index of CalibratedGyroX element to retrieve - /// Returns nullable float representing the CalibratedGyroX field - public float? GetCalibratedGyroX(int index) - { - Object val = GetFieldValue(5, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CalibratedGyroX field - /// Units: deg/s - /// Comment: Calibrated gyro reading - /// 0 based index of calibrated_gyro_x - /// Nullable field value to be set - public void SetCalibratedGyroX(int index, float? calibratedGyroX_) - { - SetFieldValue(5, index, calibratedGyroX_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CalibratedGyroY - public int GetNumCalibratedGyroY() - { - return GetNumFieldValues(6, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CalibratedGyroY field - /// Units: deg/s - /// Comment: Calibrated gyro reading - /// 0 based index of CalibratedGyroY element to retrieve - /// Returns nullable float representing the CalibratedGyroY field - public float? GetCalibratedGyroY(int index) - { - Object val = GetFieldValue(6, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CalibratedGyroY field - /// Units: deg/s - /// Comment: Calibrated gyro reading - /// 0 based index of calibrated_gyro_y - /// Nullable field value to be set - public void SetCalibratedGyroY(int index, float? calibratedGyroY_) - { - SetFieldValue(6, index, calibratedGyroY_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CalibratedGyroZ - public int GetNumCalibratedGyroZ() - { - return GetNumFieldValues(7, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CalibratedGyroZ field - /// Units: deg/s - /// Comment: Calibrated gyro reading - /// 0 based index of CalibratedGyroZ element to retrieve - /// Returns nullable float representing the CalibratedGyroZ field - public float? GetCalibratedGyroZ(int index) - { - Object val = GetFieldValue(7, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CalibratedGyroZ field - /// Units: deg/s - /// Comment: Calibrated gyro reading - /// 0 based index of calibrated_gyro_z - /// Nullable field value to be set - public void SetCalibratedGyroZ(int index, float? calibratedGyroZ_) - { - SetFieldValue(7, index, calibratedGyroZ_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/HrMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/HrMesg.cs deleted file mode 100644 index 14106f91e..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/HrMesg.cs +++ /dev/null @@ -1,241 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Hr profile message. - /// - public class HrMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte FractionalTimestamp = 0; - public const byte Time256 = 1; - public const byte FilteredBpm = 6; - public const byte EventTimestamp = 9; - public const byte EventTimestamp12 = 10; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public HrMesg() : base(Profile.GetMesg(MesgNum.Hr)) - { - } - - public HrMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FractionalTimestamp field - /// Units: s - /// Returns nullable float representing the FractionalTimestamp field - public float? GetFractionalTimestamp() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set FractionalTimestamp field - /// Units: s - /// Nullable field value to be set - public void SetFractionalTimestamp(float? fractionalTimestamp_) - { - SetFieldValue(0, 0, fractionalTimestamp_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Time256 field - /// Units: s - /// Returns nullable float representing the Time256 field - public float? GetTime256() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Time256 field - /// Units: s - /// Nullable field value to be set - public void SetTime256(float? time256_) - { - SetFieldValue(1, 0, time256_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field FilteredBpm - public int GetNumFilteredBpm() - { - return GetNumFieldValues(6, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FilteredBpm field - /// Units: bpm - /// 0 based index of FilteredBpm element to retrieve - /// Returns nullable byte representing the FilteredBpm field - public byte? GetFilteredBpm(int index) - { - Object val = GetFieldValue(6, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FilteredBpm field - /// Units: bpm - /// 0 based index of filtered_bpm - /// Nullable field value to be set - public void SetFilteredBpm(int index, byte? filteredBpm_) - { - SetFieldValue(6, index, filteredBpm_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field EventTimestamp - public int GetNumEventTimestamp() - { - return GetNumFieldValues(9, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventTimestamp field - /// Units: s - /// 0 based index of EventTimestamp element to retrieve - /// Returns nullable float representing the EventTimestamp field - public float? GetEventTimestamp(int index) - { - Object val = GetFieldValue(9, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EventTimestamp field - /// Units: s - /// 0 based index of event_timestamp - /// Nullable field value to be set - public void SetEventTimestamp(int index, float? eventTimestamp_) - { - SetFieldValue(9, index, eventTimestamp_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field EventTimestamp12 - public int GetNumEventTimestamp12() - { - return GetNumFieldValues(10, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventTimestamp12 field - /// 0 based index of EventTimestamp12 element to retrieve - /// Returns nullable byte representing the EventTimestamp12 field - public byte? GetEventTimestamp12(int index) - { - Object val = GetFieldValue(10, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set EventTimestamp12 field - /// 0 based index of event_timestamp_12 - /// Nullable field value to be set - public void SetEventTimestamp12(int index, byte? eventTimestamp12_) - { - SetFieldValue(10, index, eventTimestamp12_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/HrZoneMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/HrZoneMesg.cs deleted file mode 100644 index 06d7da2c9..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/HrZoneMesg.cs +++ /dev/null @@ -1,142 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the HrZone profile message. - /// - public class HrZoneMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte HighBpm = 1; - public const byte Name = 2; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public HrZoneMesg() : base(Profile.GetMesg(MesgNum.HrZone)) - { - } - - public HrZoneMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HighBpm field - /// Units: bpm - /// Returns nullable byte representing the HighBpm field - public byte? GetHighBpm() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HighBpm field - /// Units: bpm - /// Nullable field value to be set - public void SetHighBpm(byte? highBpm_) - { - SetFieldValue(1, 0, highBpm_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(2, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(2, 0, name_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/HrmProfileMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/HrmProfileMesg.cs deleted file mode 100644 index 9e9acb5c9..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/HrmProfileMesg.cs +++ /dev/null @@ -1,163 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the HrmProfile profile message. - /// - public class HrmProfileMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Enabled = 0; - public const byte HrmAntId = 1; - public const byte LogHrv = 2; - public const byte HrmAntIdTransType = 3; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public HrmProfileMesg() : base(Profile.GetMesg(MesgNum.HrmProfile)) - { - } - - public HrmProfileMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Enabled field - /// Returns nullable Bool enum representing the Enabled field - public Bool? GetEnabled() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set Enabled field - /// Nullable field value to be set - public void SetEnabled(Bool? enabled_) - { - SetFieldValue(0, 0, enabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HrmAntId field - /// Returns nullable ushort representing the HrmAntId field - public ushort? GetHrmAntId() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set HrmAntId field - /// Nullable field value to be set - public void SetHrmAntId(ushort? hrmAntId_) - { - SetFieldValue(1, 0, hrmAntId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LogHrv field - /// Returns nullable Bool enum representing the LogHrv field - public Bool? GetLogHrv() - { - object obj = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set LogHrv field - /// Nullable field value to be set - public void SetLogHrv(Bool? logHrv_) - { - SetFieldValue(2, 0, logHrv_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HrmAntIdTransType field - /// Returns nullable byte representing the HrmAntIdTransType field - public byte? GetHrmAntIdTransType() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HrmAntIdTransType field - /// Nullable field value to be set - public void SetHrmAntIdTransType(byte? hrmAntIdTransType_) - { - SetFieldValue(3, 0, hrmAntIdTransType_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/HrvMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/HrvMesg.cs deleted file mode 100644 index 4c9ceb3a7..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/HrvMesg.cs +++ /dev/null @@ -1,93 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Hrv profile message. - /// - public class HrvMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Time = 0; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public HrvMesg() : base(Profile.GetMesg(MesgNum.Hrv)) - { - } - - public HrvMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - - /// - /// - /// - /// returns number of elements in field Time - public int GetNumTime() - { - return GetNumFieldValues(0, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Time field - /// Units: s - /// Comment: Time between beats - /// 0 based index of Time element to retrieve - /// Returns nullable float representing the Time field - public float? GetTime(int index) - { - Object val = GetFieldValue(0, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Time field - /// Units: s - /// Comment: Time between beats - /// 0 based index of time - /// Nullable field value to be set - public void SetTime(int index, float? time_) - { - SetFieldValue(0, index, time_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/JumpMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/JumpMesg.cs deleted file mode 100644 index 0599c3f2e..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/JumpMesg.cs +++ /dev/null @@ -1,311 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Jump profile message. - /// - public class JumpMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte Distance = 0; - public const byte Height = 1; - public const byte Rotations = 2; - public const byte HangTime = 3; - public const byte Score = 4; - public const byte PositionLat = 5; - public const byte PositionLong = 6; - public const byte Speed = 7; - public const byte EnhancedSpeed = 8; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public JumpMesg() : base(Profile.GetMesg(MesgNum.Jump)) - { - } - - public JumpMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Distance field - /// Units: m - /// Returns nullable float representing the Distance field - public float? GetDistance() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Distance field - /// Units: m - /// Nullable field value to be set - public void SetDistance(float? distance_) - { - SetFieldValue(0, 0, distance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Height field - /// Units: m - /// Returns nullable float representing the Height field - public float? GetHeight() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Height field - /// Units: m - /// Nullable field value to be set - public void SetHeight(float? height_) - { - SetFieldValue(1, 0, height_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Rotations field - /// Returns nullable byte representing the Rotations field - public byte? GetRotations() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Rotations field - /// Nullable field value to be set - public void SetRotations(byte? rotations_) - { - SetFieldValue(2, 0, rotations_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HangTime field - /// Units: s - /// Returns nullable float representing the HangTime field - public float? GetHangTime() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set HangTime field - /// Units: s - /// Nullable field value to be set - public void SetHangTime(float? hangTime_) - { - SetFieldValue(3, 0, hangTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Score field - /// Comment: A score for a jump calculated based on hang time, rotations, and distance. - /// Returns nullable float representing the Score field - public float? GetScore() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Score field - /// Comment: A score for a jump calculated based on hang time, rotations, and distance. - /// Nullable field value to be set - public void SetScore(float? score_) - { - SetFieldValue(4, 0, score_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLat field - /// Units: semicircles - /// Returns nullable int representing the PositionLat field - public int? GetPositionLat() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLat(int? positionLat_) - { - SetFieldValue(5, 0, positionLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLong field - /// Units: semicircles - /// Returns nullable int representing the PositionLong field - public int? GetPositionLong() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLong(int? positionLong_) - { - SetFieldValue(6, 0, positionLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Speed field - /// Units: m/s - /// Returns nullable float representing the Speed field - public float? GetSpeed() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Speed field - /// Units: m/s - /// Nullable field value to be set - public void SetSpeed(float? speed_) - { - SetFieldValue(7, 0, speed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedSpeed field - /// Units: m/s - /// Returns nullable float representing the EnhancedSpeed field - public float? GetEnhancedSpeed() - { - Object val = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetEnhancedSpeed(float? enhancedSpeed_) - { - SetFieldValue(8, 0, enhancedSpeed_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/LapMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/LapMesg.cs deleted file mode 100644 index a5eda68f8..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/LapMesg.cs +++ /dev/null @@ -1,3544 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Lap profile message. - /// - public class LapMesg : Mesg - { - #region Fields - static class TotalCyclesSubfield - { - public static ushort TotalStrides = 0; - public static ushort TotalStrokes = 1; - public static ushort Subfields = 2; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - static class AvgCadenceSubfield - { - public static ushort AvgRunningCadence = 0; - public static ushort Subfields = 1; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - static class MaxCadenceSubfield - { - public static ushort MaxRunningCadence = 0; - public static ushort Subfields = 1; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Timestamp = 253; - public const byte Event = 0; - public const byte EventType = 1; - public const byte StartTime = 2; - public const byte StartPositionLat = 3; - public const byte StartPositionLong = 4; - public const byte EndPositionLat = 5; - public const byte EndPositionLong = 6; - public const byte TotalElapsedTime = 7; - public const byte TotalTimerTime = 8; - public const byte TotalDistance = 9; - public const byte TotalCycles = 10; - public const byte TotalCalories = 11; - public const byte TotalFatCalories = 12; - public const byte AvgSpeed = 13; - public const byte MaxSpeed = 14; - public const byte AvgHeartRate = 15; - public const byte MaxHeartRate = 16; - public const byte AvgCadence = 17; - public const byte MaxCadence = 18; - public const byte AvgPower = 19; - public const byte MaxPower = 20; - public const byte TotalAscent = 21; - public const byte TotalDescent = 22; - public const byte Intensity = 23; - public const byte LapTrigger = 24; - public const byte Sport = 25; - public const byte EventGroup = 26; - public const byte NumLengths = 32; - public const byte NormalizedPower = 33; - public const byte LeftRightBalance = 34; - public const byte FirstLengthIndex = 35; - public const byte AvgStrokeDistance = 37; - public const byte SwimStroke = 38; - public const byte SubSport = 39; - public const byte NumActiveLengths = 40; - public const byte TotalWork = 41; - public const byte AvgAltitude = 42; - public const byte MaxAltitude = 43; - public const byte GpsAccuracy = 44; - public const byte AvgGrade = 45; - public const byte AvgPosGrade = 46; - public const byte AvgNegGrade = 47; - public const byte MaxPosGrade = 48; - public const byte MaxNegGrade = 49; - public const byte AvgTemperature = 50; - public const byte MaxTemperature = 51; - public const byte TotalMovingTime = 52; - public const byte AvgPosVerticalSpeed = 53; - public const byte AvgNegVerticalSpeed = 54; - public const byte MaxPosVerticalSpeed = 55; - public const byte MaxNegVerticalSpeed = 56; - public const byte TimeInHrZone = 57; - public const byte TimeInSpeedZone = 58; - public const byte TimeInCadenceZone = 59; - public const byte TimeInPowerZone = 60; - public const byte RepetitionNum = 61; - public const byte MinAltitude = 62; - public const byte MinHeartRate = 63; - public const byte WktStepIndex = 71; - public const byte OpponentScore = 74; - public const byte StrokeCount = 75; - public const byte ZoneCount = 76; - public const byte AvgVerticalOscillation = 77; - public const byte AvgStanceTimePercent = 78; - public const byte AvgStanceTime = 79; - public const byte AvgFractionalCadence = 80; - public const byte MaxFractionalCadence = 81; - public const byte TotalFractionalCycles = 82; - public const byte PlayerScore = 83; - public const byte AvgTotalHemoglobinConc = 84; - public const byte MinTotalHemoglobinConc = 85; - public const byte MaxTotalHemoglobinConc = 86; - public const byte AvgSaturatedHemoglobinPercent = 87; - public const byte MinSaturatedHemoglobinPercent = 88; - public const byte MaxSaturatedHemoglobinPercent = 89; - public const byte AvgLeftTorqueEffectiveness = 91; - public const byte AvgRightTorqueEffectiveness = 92; - public const byte AvgLeftPedalSmoothness = 93; - public const byte AvgRightPedalSmoothness = 94; - public const byte AvgCombinedPedalSmoothness = 95; - public const byte TimeStanding = 98; - public const byte StandCount = 99; - public const byte AvgLeftPco = 100; - public const byte AvgRightPco = 101; - public const byte AvgLeftPowerPhase = 102; - public const byte AvgLeftPowerPhasePeak = 103; - public const byte AvgRightPowerPhase = 104; - public const byte AvgRightPowerPhasePeak = 105; - public const byte AvgPowerPosition = 106; - public const byte MaxPowerPosition = 107; - public const byte AvgCadencePosition = 108; - public const byte MaxCadencePosition = 109; - public const byte EnhancedAvgSpeed = 110; - public const byte EnhancedMaxSpeed = 111; - public const byte EnhancedAvgAltitude = 112; - public const byte EnhancedMinAltitude = 113; - public const byte EnhancedMaxAltitude = 114; - public const byte AvgLevMotorPower = 115; - public const byte MaxLevMotorPower = 116; - public const byte LevBatteryConsumption = 117; - public const byte AvgVerticalRatio = 118; - public const byte AvgStanceTimeBalance = 119; - public const byte AvgStepLength = 120; - public const byte AvgVam = 121; - public const byte EnhancedAvgRespirationRate = 136; - public const byte EnhancedMaxRespirationRate = 137; - public const byte AvgRespirationRate = 147; - public const byte MaxRespirationRate = 148; - public const byte TotalGrit = 149; - public const byte TotalFlow = 150; - public const byte JumpCount = 151; - public const byte AvgGrit = 153; - public const byte AvgFlow = 154; - public const byte TotalFractionalAscent = 156; - public const byte TotalFractionalDescent = 157; - public const byte AvgCoreTemperature = 158; - public const byte MinCoreTemperature = 159; - public const byte MaxCoreTemperature = 160; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public LapMesg() : base(Profile.GetMesg(MesgNum.Lap)) - { - } - - public LapMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Lap end time. - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Lap end time. - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Event field - /// Returns nullable Event enum representing the Event field - public Event? GetEvent() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Event? value = obj == null ? (Event?)null : (Event)obj; - return value; - } - - /// - /// Set Event field - /// Nullable field value to be set - public void SetEvent(Event? event_) - { - SetFieldValue(0, 0, event_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventType field - /// Returns nullable EventType enum representing the EventType field - public EventType? GetEventType() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - EventType? value = obj == null ? (EventType?)null : (EventType)obj; - return value; - } - - /// - /// Set EventType field - /// Nullable field value to be set - public void SetEventType(EventType? eventType_) - { - SetFieldValue(1, 0, eventType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartTime field - /// Returns DateTime representing the StartTime field - public DateTime GetStartTime() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set StartTime field - /// Nullable field value to be set - public void SetStartTime(DateTime startTime_) - { - SetFieldValue(2, 0, startTime_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartPositionLat field - /// Units: semicircles - /// Returns nullable int representing the StartPositionLat field - public int? GetStartPositionLat() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set StartPositionLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetStartPositionLat(int? startPositionLat_) - { - SetFieldValue(3, 0, startPositionLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartPositionLong field - /// Units: semicircles - /// Returns nullable int representing the StartPositionLong field - public int? GetStartPositionLong() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set StartPositionLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetStartPositionLong(int? startPositionLong_) - { - SetFieldValue(4, 0, startPositionLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EndPositionLat field - /// Units: semicircles - /// Returns nullable int representing the EndPositionLat field - public int? GetEndPositionLat() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set EndPositionLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetEndPositionLat(int? endPositionLat_) - { - SetFieldValue(5, 0, endPositionLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EndPositionLong field - /// Units: semicircles - /// Returns nullable int representing the EndPositionLong field - public int? GetEndPositionLong() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set EndPositionLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetEndPositionLong(int? endPositionLong_) - { - SetFieldValue(6, 0, endPositionLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalElapsedTime field - /// Units: s - /// Comment: Time (includes pauses) - /// Returns nullable float representing the TotalElapsedTime field - public float? GetTotalElapsedTime() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalElapsedTime field - /// Units: s - /// Comment: Time (includes pauses) - /// Nullable field value to be set - public void SetTotalElapsedTime(float? totalElapsedTime_) - { - SetFieldValue(7, 0, totalElapsedTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalTimerTime field - /// Units: s - /// Comment: Timer Time (excludes pauses) - /// Returns nullable float representing the TotalTimerTime field - public float? GetTotalTimerTime() - { - Object val = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalTimerTime field - /// Units: s - /// Comment: Timer Time (excludes pauses) - /// Nullable field value to be set - public void SetTotalTimerTime(float? totalTimerTime_) - { - SetFieldValue(8, 0, totalTimerTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalDistance field - /// Units: m - /// Returns nullable float representing the TotalDistance field - public float? GetTotalDistance() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalDistance field - /// Units: m - /// Nullable field value to be set - public void SetTotalDistance(float? totalDistance_) - { - SetFieldValue(9, 0, totalDistance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalCycles field - /// Units: cycles - /// Returns nullable uint representing the TotalCycles field - public uint? GetTotalCycles() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TotalCycles field - /// Units: cycles - /// Nullable field value to be set - public void SetTotalCycles(uint? totalCycles_) - { - SetFieldValue(10, 0, totalCycles_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the TotalStrides subfield - /// Units: strides - /// Nullable uint representing the TotalStrides subfield - public uint? GetTotalStrides() - { - Object val = GetFieldValue(10, 0, TotalCyclesSubfield.TotalStrides); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set TotalStrides subfield - /// Units: strides - /// Subfield value to be set - public void SetTotalStrides(uint? totalStrides) - { - SetFieldValue(10, 0, totalStrides, TotalCyclesSubfield.TotalStrides); - } - - /// - /// Retrieves the TotalStrokes subfield - /// Units: strokes - /// Nullable uint representing the TotalStrokes subfield - public uint? GetTotalStrokes() - { - Object val = GetFieldValue(10, 0, TotalCyclesSubfield.TotalStrokes); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set TotalStrokes subfield - /// Units: strokes - /// Subfield value to be set - public void SetTotalStrokes(uint? totalStrokes) - { - SetFieldValue(10, 0, totalStrokes, TotalCyclesSubfield.TotalStrokes); - } - /// - /// Retrieves the TotalCalories field - /// Units: kcal - /// Returns nullable ushort representing the TotalCalories field - public ushort? GetTotalCalories() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalCalories field - /// Units: kcal - /// Nullable field value to be set - public void SetTotalCalories(ushort? totalCalories_) - { - SetFieldValue(11, 0, totalCalories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFatCalories field - /// Units: kcal - /// Comment: If New Leaf - /// Returns nullable ushort representing the TotalFatCalories field - public ushort? GetTotalFatCalories() - { - Object val = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalFatCalories field - /// Units: kcal - /// Comment: If New Leaf - /// Nullable field value to be set - public void SetTotalFatCalories(ushort? totalFatCalories_) - { - SetFieldValue(12, 0, totalFatCalories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgSpeed field - /// Units: m/s - /// Returns nullable float representing the AvgSpeed field - public float? GetAvgSpeed() - { - Object val = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgSpeed(float? avgSpeed_) - { - SetFieldValue(13, 0, avgSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxSpeed field - /// Units: m/s - /// Returns nullable float representing the MaxSpeed field - public float? GetMaxSpeed() - { - Object val = GetFieldValue(14, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetMaxSpeed(float? maxSpeed_) - { - SetFieldValue(14, 0, maxSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgHeartRate field - /// Units: bpm - /// Returns nullable byte representing the AvgHeartRate field - public byte? GetAvgHeartRate() - { - Object val = GetFieldValue(15, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetAvgHeartRate(byte? avgHeartRate_) - { - SetFieldValue(15, 0, avgHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxHeartRate field - /// Units: bpm - /// Returns nullable byte representing the MaxHeartRate field - public byte? GetMaxHeartRate() - { - Object val = GetFieldValue(16, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetMaxHeartRate(byte? maxHeartRate_) - { - SetFieldValue(16, 0, maxHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgCadence field - /// Units: rpm - /// Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - /// Returns nullable byte representing the AvgCadence field - public byte? GetAvgCadence() - { - Object val = GetFieldValue(17, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgCadence field - /// Units: rpm - /// Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - /// Nullable field value to be set - public void SetAvgCadence(byte? avgCadence_) - { - SetFieldValue(17, 0, avgCadence_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the AvgRunningCadence subfield - /// Units: strides/min - /// Nullable byte representing the AvgRunningCadence subfield - public byte? GetAvgRunningCadence() - { - Object val = GetFieldValue(17, 0, AvgCadenceSubfield.AvgRunningCadence); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set AvgRunningCadence subfield - /// Units: strides/min - /// Subfield value to be set - public void SetAvgRunningCadence(byte? avgRunningCadence) - { - SetFieldValue(17, 0, avgRunningCadence, AvgCadenceSubfield.AvgRunningCadence); - } - /// - /// Retrieves the MaxCadence field - /// Units: rpm - /// Returns nullable byte representing the MaxCadence field - public byte? GetMaxCadence() - { - Object val = GetFieldValue(18, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxCadence field - /// Units: rpm - /// Nullable field value to be set - public void SetMaxCadence(byte? maxCadence_) - { - SetFieldValue(18, 0, maxCadence_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the MaxRunningCadence subfield - /// Units: strides/min - /// Nullable byte representing the MaxRunningCadence subfield - public byte? GetMaxRunningCadence() - { - Object val = GetFieldValue(18, 0, MaxCadenceSubfield.MaxRunningCadence); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set MaxRunningCadence subfield - /// Units: strides/min - /// Subfield value to be set - public void SetMaxRunningCadence(byte? maxRunningCadence) - { - SetFieldValue(18, 0, maxRunningCadence, MaxCadenceSubfield.MaxRunningCadence); - } - /// - /// Retrieves the AvgPower field - /// Units: watts - /// Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - /// Returns nullable ushort representing the AvgPower field - public ushort? GetAvgPower() - { - Object val = GetFieldValue(19, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AvgPower field - /// Units: watts - /// Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - /// Nullable field value to be set - public void SetAvgPower(ushort? avgPower_) - { - SetFieldValue(19, 0, avgPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPower field - /// Units: watts - /// Returns nullable ushort representing the MaxPower field - public ushort? GetMaxPower() - { - Object val = GetFieldValue(20, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MaxPower field - /// Units: watts - /// Nullable field value to be set - public void SetMaxPower(ushort? maxPower_) - { - SetFieldValue(20, 0, maxPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalAscent field - /// Units: m - /// Returns nullable ushort representing the TotalAscent field - public ushort? GetTotalAscent() - { - Object val = GetFieldValue(21, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalAscent field - /// Units: m - /// Nullable field value to be set - public void SetTotalAscent(ushort? totalAscent_) - { - SetFieldValue(21, 0, totalAscent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalDescent field - /// Units: m - /// Returns nullable ushort representing the TotalDescent field - public ushort? GetTotalDescent() - { - Object val = GetFieldValue(22, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalDescent field - /// Units: m - /// Nullable field value to be set - public void SetTotalDescent(ushort? totalDescent_) - { - SetFieldValue(22, 0, totalDescent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Intensity field - /// Returns nullable Intensity enum representing the Intensity field - public Intensity? GetIntensity() - { - object obj = GetFieldValue(23, 0, Fit.SubfieldIndexMainField); - Intensity? value = obj == null ? (Intensity?)null : (Intensity)obj; - return value; - } - - /// - /// Set Intensity field - /// Nullable field value to be set - public void SetIntensity(Intensity? intensity_) - { - SetFieldValue(23, 0, intensity_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LapTrigger field - /// Returns nullable LapTrigger enum representing the LapTrigger field - public LapTrigger? GetLapTrigger() - { - object obj = GetFieldValue(24, 0, Fit.SubfieldIndexMainField); - LapTrigger? value = obj == null ? (LapTrigger?)null : (LapTrigger)obj; - return value; - } - - /// - /// Set LapTrigger field - /// Nullable field value to be set - public void SetLapTrigger(LapTrigger? lapTrigger_) - { - SetFieldValue(24, 0, lapTrigger_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sport field - /// Returns nullable Sport enum representing the Sport field - public Sport? GetSport() - { - object obj = GetFieldValue(25, 0, Fit.SubfieldIndexMainField); - Sport? value = obj == null ? (Sport?)null : (Sport)obj; - return value; - } - - /// - /// Set Sport field - /// Nullable field value to be set - public void SetSport(Sport? sport_) - { - SetFieldValue(25, 0, sport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventGroup field - /// Returns nullable byte representing the EventGroup field - public byte? GetEventGroup() - { - Object val = GetFieldValue(26, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set EventGroup field - /// Nullable field value to be set - public void SetEventGroup(byte? eventGroup_) - { - SetFieldValue(26, 0, eventGroup_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NumLengths field - /// Units: lengths - /// Comment: # of lengths of swim pool - /// Returns nullable ushort representing the NumLengths field - public ushort? GetNumLengths() - { - Object val = GetFieldValue(32, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NumLengths field - /// Units: lengths - /// Comment: # of lengths of swim pool - /// Nullable field value to be set - public void SetNumLengths(ushort? numLengths_) - { - SetFieldValue(32, 0, numLengths_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NormalizedPower field - /// Units: watts - /// Returns nullable ushort representing the NormalizedPower field - public ushort? GetNormalizedPower() - { - Object val = GetFieldValue(33, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NormalizedPower field - /// Units: watts - /// Nullable field value to be set - public void SetNormalizedPower(ushort? normalizedPower_) - { - SetFieldValue(33, 0, normalizedPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeftRightBalance field - /// Returns nullable ushort representing the LeftRightBalance field - public ushort? GetLeftRightBalance() - { - Object val = GetFieldValue(34, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set LeftRightBalance field - /// Nullable field value to be set - public void SetLeftRightBalance(ushort? leftRightBalance_) - { - SetFieldValue(34, 0, leftRightBalance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FirstLengthIndex field - /// Returns nullable ushort representing the FirstLengthIndex field - public ushort? GetFirstLengthIndex() - { - Object val = GetFieldValue(35, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set FirstLengthIndex field - /// Nullable field value to be set - public void SetFirstLengthIndex(ushort? firstLengthIndex_) - { - SetFieldValue(35, 0, firstLengthIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgStrokeDistance field - /// Units: m - /// Returns nullable float representing the AvgStrokeDistance field - public float? GetAvgStrokeDistance() - { - Object val = GetFieldValue(37, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgStrokeDistance field - /// Units: m - /// Nullable field value to be set - public void SetAvgStrokeDistance(float? avgStrokeDistance_) - { - SetFieldValue(37, 0, avgStrokeDistance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SwimStroke field - /// Returns nullable SwimStroke enum representing the SwimStroke field - public SwimStroke? GetSwimStroke() - { - object obj = GetFieldValue(38, 0, Fit.SubfieldIndexMainField); - SwimStroke? value = obj == null ? (SwimStroke?)null : (SwimStroke)obj; - return value; - } - - /// - /// Set SwimStroke field - /// Nullable field value to be set - public void SetSwimStroke(SwimStroke? swimStroke_) - { - SetFieldValue(38, 0, swimStroke_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SubSport field - /// Returns nullable SubSport enum representing the SubSport field - public SubSport? GetSubSport() - { - object obj = GetFieldValue(39, 0, Fit.SubfieldIndexMainField); - SubSport? value = obj == null ? (SubSport?)null : (SubSport)obj; - return value; - } - - /// - /// Set SubSport field - /// Nullable field value to be set - public void SetSubSport(SubSport? subSport_) - { - SetFieldValue(39, 0, subSport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NumActiveLengths field - /// Units: lengths - /// Comment: # of active lengths of swim pool - /// Returns nullable ushort representing the NumActiveLengths field - public ushort? GetNumActiveLengths() - { - Object val = GetFieldValue(40, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NumActiveLengths field - /// Units: lengths - /// Comment: # of active lengths of swim pool - /// Nullable field value to be set - public void SetNumActiveLengths(ushort? numActiveLengths_) - { - SetFieldValue(40, 0, numActiveLengths_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalWork field - /// Units: J - /// Returns nullable uint representing the TotalWork field - public uint? GetTotalWork() - { - Object val = GetFieldValue(41, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TotalWork field - /// Units: J - /// Nullable field value to be set - public void SetTotalWork(uint? totalWork_) - { - SetFieldValue(41, 0, totalWork_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgAltitude field - /// Units: m - /// Returns nullable float representing the AvgAltitude field - public float? GetAvgAltitude() - { - Object val = GetFieldValue(42, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgAltitude field - /// Units: m - /// Nullable field value to be set - public void SetAvgAltitude(float? avgAltitude_) - { - SetFieldValue(42, 0, avgAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxAltitude field - /// Units: m - /// Returns nullable float representing the MaxAltitude field - public float? GetMaxAltitude() - { - Object val = GetFieldValue(43, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxAltitude field - /// Units: m - /// Nullable field value to be set - public void SetMaxAltitude(float? maxAltitude_) - { - SetFieldValue(43, 0, maxAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GpsAccuracy field - /// Units: m - /// Returns nullable byte representing the GpsAccuracy field - public byte? GetGpsAccuracy() - { - Object val = GetFieldValue(44, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set GpsAccuracy field - /// Units: m - /// Nullable field value to be set - public void SetGpsAccuracy(byte? gpsAccuracy_) - { - SetFieldValue(44, 0, gpsAccuracy_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgGrade field - /// Units: % - /// Returns nullable float representing the AvgGrade field - public float? GetAvgGrade() - { - Object val = GetFieldValue(45, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgGrade field - /// Units: % - /// Nullable field value to be set - public void SetAvgGrade(float? avgGrade_) - { - SetFieldValue(45, 0, avgGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgPosGrade field - /// Units: % - /// Returns nullable float representing the AvgPosGrade field - public float? GetAvgPosGrade() - { - Object val = GetFieldValue(46, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgPosGrade field - /// Units: % - /// Nullable field value to be set - public void SetAvgPosGrade(float? avgPosGrade_) - { - SetFieldValue(46, 0, avgPosGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgNegGrade field - /// Units: % - /// Returns nullable float representing the AvgNegGrade field - public float? GetAvgNegGrade() - { - Object val = GetFieldValue(47, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgNegGrade field - /// Units: % - /// Nullable field value to be set - public void SetAvgNegGrade(float? avgNegGrade_) - { - SetFieldValue(47, 0, avgNegGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPosGrade field - /// Units: % - /// Returns nullable float representing the MaxPosGrade field - public float? GetMaxPosGrade() - { - Object val = GetFieldValue(48, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxPosGrade field - /// Units: % - /// Nullable field value to be set - public void SetMaxPosGrade(float? maxPosGrade_) - { - SetFieldValue(48, 0, maxPosGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxNegGrade field - /// Units: % - /// Returns nullable float representing the MaxNegGrade field - public float? GetMaxNegGrade() - { - Object val = GetFieldValue(49, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxNegGrade field - /// Units: % - /// Nullable field value to be set - public void SetMaxNegGrade(float? maxNegGrade_) - { - SetFieldValue(49, 0, maxNegGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgTemperature field - /// Units: C - /// Returns nullable sbyte representing the AvgTemperature field - public sbyte? GetAvgTemperature() - { - Object val = GetFieldValue(50, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set AvgTemperature field - /// Units: C - /// Nullable field value to be set - public void SetAvgTemperature(sbyte? avgTemperature_) - { - SetFieldValue(50, 0, avgTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxTemperature field - /// Units: C - /// Returns nullable sbyte representing the MaxTemperature field - public sbyte? GetMaxTemperature() - { - Object val = GetFieldValue(51, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set MaxTemperature field - /// Units: C - /// Nullable field value to be set - public void SetMaxTemperature(sbyte? maxTemperature_) - { - SetFieldValue(51, 0, maxTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalMovingTime field - /// Units: s - /// Returns nullable float representing the TotalMovingTime field - public float? GetTotalMovingTime() - { - Object val = GetFieldValue(52, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalMovingTime field - /// Units: s - /// Nullable field value to be set - public void SetTotalMovingTime(float? totalMovingTime_) - { - SetFieldValue(52, 0, totalMovingTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgPosVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the AvgPosVerticalSpeed field - public float? GetAvgPosVerticalSpeed() - { - Object val = GetFieldValue(53, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgPosVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgPosVerticalSpeed(float? avgPosVerticalSpeed_) - { - SetFieldValue(53, 0, avgPosVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgNegVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the AvgNegVerticalSpeed field - public float? GetAvgNegVerticalSpeed() - { - Object val = GetFieldValue(54, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgNegVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgNegVerticalSpeed(float? avgNegVerticalSpeed_) - { - SetFieldValue(54, 0, avgNegVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPosVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the MaxPosVerticalSpeed field - public float? GetMaxPosVerticalSpeed() - { - Object val = GetFieldValue(55, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxPosVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetMaxPosVerticalSpeed(float? maxPosVerticalSpeed_) - { - SetFieldValue(55, 0, maxPosVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxNegVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the MaxNegVerticalSpeed field - public float? GetMaxNegVerticalSpeed() - { - Object val = GetFieldValue(56, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxNegVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetMaxNegVerticalSpeed(float? maxNegVerticalSpeed_) - { - SetFieldValue(56, 0, maxNegVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInHrZone - public int GetNumTimeInHrZone() - { - return GetNumFieldValues(57, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInHrZone field - /// Units: s - /// 0 based index of TimeInHrZone element to retrieve - /// Returns nullable float representing the TimeInHrZone field - public float? GetTimeInHrZone(int index) - { - Object val = GetFieldValue(57, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInHrZone field - /// Units: s - /// 0 based index of time_in_hr_zone - /// Nullable field value to be set - public void SetTimeInHrZone(int index, float? timeInHrZone_) - { - SetFieldValue(57, index, timeInHrZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInSpeedZone - public int GetNumTimeInSpeedZone() - { - return GetNumFieldValues(58, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInSpeedZone field - /// Units: s - /// 0 based index of TimeInSpeedZone element to retrieve - /// Returns nullable float representing the TimeInSpeedZone field - public float? GetTimeInSpeedZone(int index) - { - Object val = GetFieldValue(58, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInSpeedZone field - /// Units: s - /// 0 based index of time_in_speed_zone - /// Nullable field value to be set - public void SetTimeInSpeedZone(int index, float? timeInSpeedZone_) - { - SetFieldValue(58, index, timeInSpeedZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInCadenceZone - public int GetNumTimeInCadenceZone() - { - return GetNumFieldValues(59, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInCadenceZone field - /// Units: s - /// 0 based index of TimeInCadenceZone element to retrieve - /// Returns nullable float representing the TimeInCadenceZone field - public float? GetTimeInCadenceZone(int index) - { - Object val = GetFieldValue(59, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInCadenceZone field - /// Units: s - /// 0 based index of time_in_cadence_zone - /// Nullable field value to be set - public void SetTimeInCadenceZone(int index, float? timeInCadenceZone_) - { - SetFieldValue(59, index, timeInCadenceZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInPowerZone - public int GetNumTimeInPowerZone() - { - return GetNumFieldValues(60, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInPowerZone field - /// Units: s - /// 0 based index of TimeInPowerZone element to retrieve - /// Returns nullable float representing the TimeInPowerZone field - public float? GetTimeInPowerZone(int index) - { - Object val = GetFieldValue(60, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInPowerZone field - /// Units: s - /// 0 based index of time_in_power_zone - /// Nullable field value to be set - public void SetTimeInPowerZone(int index, float? timeInPowerZone_) - { - SetFieldValue(60, index, timeInPowerZone_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RepetitionNum field - /// Returns nullable ushort representing the RepetitionNum field - public ushort? GetRepetitionNum() - { - Object val = GetFieldValue(61, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set RepetitionNum field - /// Nullable field value to be set - public void SetRepetitionNum(ushort? repetitionNum_) - { - SetFieldValue(61, 0, repetitionNum_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinAltitude field - /// Units: m - /// Returns nullable float representing the MinAltitude field - public float? GetMinAltitude() - { - Object val = GetFieldValue(62, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MinAltitude field - /// Units: m - /// Nullable field value to be set - public void SetMinAltitude(float? minAltitude_) - { - SetFieldValue(62, 0, minAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinHeartRate field - /// Units: bpm - /// Returns nullable byte representing the MinHeartRate field - public byte? GetMinHeartRate() - { - Object val = GetFieldValue(63, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MinHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetMinHeartRate(byte? minHeartRate_) - { - SetFieldValue(63, 0, minHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WktStepIndex field - /// Returns nullable ushort representing the WktStepIndex field - public ushort? GetWktStepIndex() - { - Object val = GetFieldValue(71, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set WktStepIndex field - /// Nullable field value to be set - public void SetWktStepIndex(ushort? wktStepIndex_) - { - SetFieldValue(71, 0, wktStepIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the OpponentScore field - /// Returns nullable ushort representing the OpponentScore field - public ushort? GetOpponentScore() - { - Object val = GetFieldValue(74, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set OpponentScore field - /// Nullable field value to be set - public void SetOpponentScore(ushort? opponentScore_) - { - SetFieldValue(74, 0, opponentScore_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field StrokeCount - public int GetNumStrokeCount() - { - return GetNumFieldValues(75, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StrokeCount field - /// Units: counts - /// Comment: stroke_type enum used as the index - /// 0 based index of StrokeCount element to retrieve - /// Returns nullable ushort representing the StrokeCount field - public ushort? GetStrokeCount(int index) - { - Object val = GetFieldValue(75, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set StrokeCount field - /// Units: counts - /// Comment: stroke_type enum used as the index - /// 0 based index of stroke_count - /// Nullable field value to be set - public void SetStrokeCount(int index, ushort? strokeCount_) - { - SetFieldValue(75, index, strokeCount_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field ZoneCount - public int GetNumZoneCount() - { - return GetNumFieldValues(76, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ZoneCount field - /// Units: counts - /// Comment: zone number used as the index - /// 0 based index of ZoneCount element to retrieve - /// Returns nullable ushort representing the ZoneCount field - public ushort? GetZoneCount(int index) - { - Object val = GetFieldValue(76, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ZoneCount field - /// Units: counts - /// Comment: zone number used as the index - /// 0 based index of zone_count - /// Nullable field value to be set - public void SetZoneCount(int index, ushort? zoneCount_) - { - SetFieldValue(76, index, zoneCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgVerticalOscillation field - /// Units: mm - /// Returns nullable float representing the AvgVerticalOscillation field - public float? GetAvgVerticalOscillation() - { - Object val = GetFieldValue(77, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgVerticalOscillation field - /// Units: mm - /// Nullable field value to be set - public void SetAvgVerticalOscillation(float? avgVerticalOscillation_) - { - SetFieldValue(77, 0, avgVerticalOscillation_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgStanceTimePercent field - /// Units: percent - /// Returns nullable float representing the AvgStanceTimePercent field - public float? GetAvgStanceTimePercent() - { - Object val = GetFieldValue(78, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgStanceTimePercent field - /// Units: percent - /// Nullable field value to be set - public void SetAvgStanceTimePercent(float? avgStanceTimePercent_) - { - SetFieldValue(78, 0, avgStanceTimePercent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgStanceTime field - /// Units: ms - /// Returns nullable float representing the AvgStanceTime field - public float? GetAvgStanceTime() - { - Object val = GetFieldValue(79, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgStanceTime field - /// Units: ms - /// Nullable field value to be set - public void SetAvgStanceTime(float? avgStanceTime_) - { - SetFieldValue(79, 0, avgStanceTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the avg_cadence - /// Returns nullable float representing the AvgFractionalCadence field - public float? GetAvgFractionalCadence() - { - Object val = GetFieldValue(80, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the avg_cadence - /// Nullable field value to be set - public void SetAvgFractionalCadence(float? avgFractionalCadence_) - { - SetFieldValue(80, 0, avgFractionalCadence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the max_cadence - /// Returns nullable float representing the MaxFractionalCadence field - public float? GetMaxFractionalCadence() - { - Object val = GetFieldValue(81, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the max_cadence - /// Nullable field value to be set - public void SetMaxFractionalCadence(float? maxFractionalCadence_) - { - SetFieldValue(81, 0, maxFractionalCadence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFractionalCycles field - /// Units: cycles - /// Comment: fractional part of the total_cycles - /// Returns nullable float representing the TotalFractionalCycles field - public float? GetTotalFractionalCycles() - { - Object val = GetFieldValue(82, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFractionalCycles field - /// Units: cycles - /// Comment: fractional part of the total_cycles - /// Nullable field value to be set - public void SetTotalFractionalCycles(float? totalFractionalCycles_) - { - SetFieldValue(82, 0, totalFractionalCycles_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PlayerScore field - /// Returns nullable ushort representing the PlayerScore field - public ushort? GetPlayerScore() - { - Object val = GetFieldValue(83, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set PlayerScore field - /// Nullable field value to be set - public void SetPlayerScore(ushort? playerScore_) - { - SetFieldValue(83, 0, playerScore_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgTotalHemoglobinConc - public int GetNumAvgTotalHemoglobinConc() - { - return GetNumFieldValues(84, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Avg saturated and unsaturated hemoglobin - /// 0 based index of AvgTotalHemoglobinConc element to retrieve - /// Returns nullable float representing the AvgTotalHemoglobinConc field - public float? GetAvgTotalHemoglobinConc(int index) - { - Object val = GetFieldValue(84, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Avg saturated and unsaturated hemoglobin - /// 0 based index of avg_total_hemoglobin_conc - /// Nullable field value to be set - public void SetAvgTotalHemoglobinConc(int index, float? avgTotalHemoglobinConc_) - { - SetFieldValue(84, index, avgTotalHemoglobinConc_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MinTotalHemoglobinConc - public int GetNumMinTotalHemoglobinConc() - { - return GetNumFieldValues(85, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Min saturated and unsaturated hemoglobin - /// 0 based index of MinTotalHemoglobinConc element to retrieve - /// Returns nullable float representing the MinTotalHemoglobinConc field - public float? GetMinTotalHemoglobinConc(int index) - { - Object val = GetFieldValue(85, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MinTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Min saturated and unsaturated hemoglobin - /// 0 based index of min_total_hemoglobin_conc - /// Nullable field value to be set - public void SetMinTotalHemoglobinConc(int index, float? minTotalHemoglobinConc_) - { - SetFieldValue(85, index, minTotalHemoglobinConc_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MaxTotalHemoglobinConc - public int GetNumMaxTotalHemoglobinConc() - { - return GetNumFieldValues(86, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Max saturated and unsaturated hemoglobin - /// 0 based index of MaxTotalHemoglobinConc element to retrieve - /// Returns nullable float representing the MaxTotalHemoglobinConc field - public float? GetMaxTotalHemoglobinConc(int index) - { - Object val = GetFieldValue(86, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Max saturated and unsaturated hemoglobin - /// 0 based index of max_total_hemoglobin_conc - /// Nullable field value to be set - public void SetMaxTotalHemoglobinConc(int index, float? maxTotalHemoglobinConc_) - { - SetFieldValue(86, index, maxTotalHemoglobinConc_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgSaturatedHemoglobinPercent - public int GetNumAvgSaturatedHemoglobinPercent() - { - return GetNumFieldValues(87, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Avg percentage of hemoglobin saturated with oxygen - /// 0 based index of AvgSaturatedHemoglobinPercent element to retrieve - /// Returns nullable float representing the AvgSaturatedHemoglobinPercent field - public float? GetAvgSaturatedHemoglobinPercent(int index) - { - Object val = GetFieldValue(87, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Avg percentage of hemoglobin saturated with oxygen - /// 0 based index of avg_saturated_hemoglobin_percent - /// Nullable field value to be set - public void SetAvgSaturatedHemoglobinPercent(int index, float? avgSaturatedHemoglobinPercent_) - { - SetFieldValue(87, index, avgSaturatedHemoglobinPercent_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MinSaturatedHemoglobinPercent - public int GetNumMinSaturatedHemoglobinPercent() - { - return GetNumFieldValues(88, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Min percentage of hemoglobin saturated with oxygen - /// 0 based index of MinSaturatedHemoglobinPercent element to retrieve - /// Returns nullable float representing the MinSaturatedHemoglobinPercent field - public float? GetMinSaturatedHemoglobinPercent(int index) - { - Object val = GetFieldValue(88, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MinSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Min percentage of hemoglobin saturated with oxygen - /// 0 based index of min_saturated_hemoglobin_percent - /// Nullable field value to be set - public void SetMinSaturatedHemoglobinPercent(int index, float? minSaturatedHemoglobinPercent_) - { - SetFieldValue(88, index, minSaturatedHemoglobinPercent_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MaxSaturatedHemoglobinPercent - public int GetNumMaxSaturatedHemoglobinPercent() - { - return GetNumFieldValues(89, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Max percentage of hemoglobin saturated with oxygen - /// 0 based index of MaxSaturatedHemoglobinPercent element to retrieve - /// Returns nullable float representing the MaxSaturatedHemoglobinPercent field - public float? GetMaxSaturatedHemoglobinPercent(int index) - { - Object val = GetFieldValue(89, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Max percentage of hemoglobin saturated with oxygen - /// 0 based index of max_saturated_hemoglobin_percent - /// Nullable field value to be set - public void SetMaxSaturatedHemoglobinPercent(int index, float? maxSaturatedHemoglobinPercent_) - { - SetFieldValue(89, index, maxSaturatedHemoglobinPercent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftTorqueEffectiveness field - /// Units: percent - /// Returns nullable float representing the AvgLeftTorqueEffectiveness field - public float? GetAvgLeftTorqueEffectiveness() - { - Object val = GetFieldValue(91, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftTorqueEffectiveness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgLeftTorqueEffectiveness(float? avgLeftTorqueEffectiveness_) - { - SetFieldValue(91, 0, avgLeftTorqueEffectiveness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightTorqueEffectiveness field - /// Units: percent - /// Returns nullable float representing the AvgRightTorqueEffectiveness field - public float? GetAvgRightTorqueEffectiveness() - { - Object val = GetFieldValue(92, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightTorqueEffectiveness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgRightTorqueEffectiveness(float? avgRightTorqueEffectiveness_) - { - SetFieldValue(92, 0, avgRightTorqueEffectiveness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the AvgLeftPedalSmoothness field - public float? GetAvgLeftPedalSmoothness() - { - Object val = GetFieldValue(93, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgLeftPedalSmoothness(float? avgLeftPedalSmoothness_) - { - SetFieldValue(93, 0, avgLeftPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the AvgRightPedalSmoothness field - public float? GetAvgRightPedalSmoothness() - { - Object val = GetFieldValue(94, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgRightPedalSmoothness(float? avgRightPedalSmoothness_) - { - SetFieldValue(94, 0, avgRightPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgCombinedPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the AvgCombinedPedalSmoothness field - public float? GetAvgCombinedPedalSmoothness() - { - Object val = GetFieldValue(95, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgCombinedPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgCombinedPedalSmoothness(float? avgCombinedPedalSmoothness_) - { - SetFieldValue(95, 0, avgCombinedPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeStanding field - /// Units: s - /// Comment: Total time spent in the standing position - /// Returns nullable float representing the TimeStanding field - public float? GetTimeStanding() - { - Object val = GetFieldValue(98, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeStanding field - /// Units: s - /// Comment: Total time spent in the standing position - /// Nullable field value to be set - public void SetTimeStanding(float? timeStanding_) - { - SetFieldValue(98, 0, timeStanding_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StandCount field - /// Comment: Number of transitions to the standing state - /// Returns nullable ushort representing the StandCount field - public ushort? GetStandCount() - { - Object val = GetFieldValue(99, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set StandCount field - /// Comment: Number of transitions to the standing state - /// Nullable field value to be set - public void SetStandCount(ushort? standCount_) - { - SetFieldValue(99, 0, standCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPco field - /// Units: mm - /// Comment: Average left platform center offset - /// Returns nullable sbyte representing the AvgLeftPco field - public sbyte? GetAvgLeftPco() - { - Object val = GetFieldValue(100, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set AvgLeftPco field - /// Units: mm - /// Comment: Average left platform center offset - /// Nullable field value to be set - public void SetAvgLeftPco(sbyte? avgLeftPco_) - { - SetFieldValue(100, 0, avgLeftPco_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPco field - /// Units: mm - /// Comment: Average right platform center offset - /// Returns nullable sbyte representing the AvgRightPco field - public sbyte? GetAvgRightPco() - { - Object val = GetFieldValue(101, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set AvgRightPco field - /// Units: mm - /// Comment: Average right platform center offset - /// Nullable field value to be set - public void SetAvgRightPco(sbyte? avgRightPco_) - { - SetFieldValue(101, 0, avgRightPco_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgLeftPowerPhase - public int GetNumAvgLeftPowerPhase() - { - return GetNumFieldValues(102, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPowerPhase field - /// Units: degrees - /// Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of AvgLeftPowerPhase element to retrieve - /// Returns nullable float representing the AvgLeftPowerPhase field - public float? GetAvgLeftPowerPhase(int index) - { - Object val = GetFieldValue(102, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftPowerPhase field - /// Units: degrees - /// Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of avg_left_power_phase - /// Nullable field value to be set - public void SetAvgLeftPowerPhase(int index, float? avgLeftPowerPhase_) - { - SetFieldValue(102, index, avgLeftPowerPhase_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgLeftPowerPhasePeak - public int GetNumAvgLeftPowerPhasePeak() - { - return GetNumFieldValues(103, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPowerPhasePeak field - /// Units: degrees - /// Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of AvgLeftPowerPhasePeak element to retrieve - /// Returns nullable float representing the AvgLeftPowerPhasePeak field - public float? GetAvgLeftPowerPhasePeak(int index) - { - Object val = GetFieldValue(103, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftPowerPhasePeak field - /// Units: degrees - /// Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of avg_left_power_phase_peak - /// Nullable field value to be set - public void SetAvgLeftPowerPhasePeak(int index, float? avgLeftPowerPhasePeak_) - { - SetFieldValue(103, index, avgLeftPowerPhasePeak_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgRightPowerPhase - public int GetNumAvgRightPowerPhase() - { - return GetNumFieldValues(104, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPowerPhase field - /// Units: degrees - /// Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of AvgRightPowerPhase element to retrieve - /// Returns nullable float representing the AvgRightPowerPhase field - public float? GetAvgRightPowerPhase(int index) - { - Object val = GetFieldValue(104, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightPowerPhase field - /// Units: degrees - /// Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of avg_right_power_phase - /// Nullable field value to be set - public void SetAvgRightPowerPhase(int index, float? avgRightPowerPhase_) - { - SetFieldValue(104, index, avgRightPowerPhase_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgRightPowerPhasePeak - public int GetNumAvgRightPowerPhasePeak() - { - return GetNumFieldValues(105, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPowerPhasePeak field - /// Units: degrees - /// Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of AvgRightPowerPhasePeak element to retrieve - /// Returns nullable float representing the AvgRightPowerPhasePeak field - public float? GetAvgRightPowerPhasePeak(int index) - { - Object val = GetFieldValue(105, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightPowerPhasePeak field - /// Units: degrees - /// Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of avg_right_power_phase_peak - /// Nullable field value to be set - public void SetAvgRightPowerPhasePeak(int index, float? avgRightPowerPhasePeak_) - { - SetFieldValue(105, index, avgRightPowerPhasePeak_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgPowerPosition - public int GetNumAvgPowerPosition() - { - return GetNumFieldValues(106, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgPowerPosition field - /// Units: watts - /// Comment: Average power by position. Data value indexes defined by rider_position_type. - /// 0 based index of AvgPowerPosition element to retrieve - /// Returns nullable ushort representing the AvgPowerPosition field - public ushort? GetAvgPowerPosition(int index) - { - Object val = GetFieldValue(106, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AvgPowerPosition field - /// Units: watts - /// Comment: Average power by position. Data value indexes defined by rider_position_type. - /// 0 based index of avg_power_position - /// Nullable field value to be set - public void SetAvgPowerPosition(int index, ushort? avgPowerPosition_) - { - SetFieldValue(106, index, avgPowerPosition_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MaxPowerPosition - public int GetNumMaxPowerPosition() - { - return GetNumFieldValues(107, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPowerPosition field - /// Units: watts - /// Comment: Maximum power by position. Data value indexes defined by rider_position_type. - /// 0 based index of MaxPowerPosition element to retrieve - /// Returns nullable ushort representing the MaxPowerPosition field - public ushort? GetMaxPowerPosition(int index) - { - Object val = GetFieldValue(107, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MaxPowerPosition field - /// Units: watts - /// Comment: Maximum power by position. Data value indexes defined by rider_position_type. - /// 0 based index of max_power_position - /// Nullable field value to be set - public void SetMaxPowerPosition(int index, ushort? maxPowerPosition_) - { - SetFieldValue(107, index, maxPowerPosition_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgCadencePosition - public int GetNumAvgCadencePosition() - { - return GetNumFieldValues(108, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgCadencePosition field - /// Units: rpm - /// Comment: Average cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of AvgCadencePosition element to retrieve - /// Returns nullable byte representing the AvgCadencePosition field - public byte? GetAvgCadencePosition(int index) - { - Object val = GetFieldValue(108, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgCadencePosition field - /// Units: rpm - /// Comment: Average cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of avg_cadence_position - /// Nullable field value to be set - public void SetAvgCadencePosition(int index, byte? avgCadencePosition_) - { - SetFieldValue(108, index, avgCadencePosition_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MaxCadencePosition - public int GetNumMaxCadencePosition() - { - return GetNumFieldValues(109, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxCadencePosition field - /// Units: rpm - /// Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of MaxCadencePosition element to retrieve - /// Returns nullable byte representing the MaxCadencePosition field - public byte? GetMaxCadencePosition(int index) - { - Object val = GetFieldValue(109, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxCadencePosition field - /// Units: rpm - /// Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of max_cadence_position - /// Nullable field value to be set - public void SetMaxCadencePosition(int index, byte? maxCadencePosition_) - { - SetFieldValue(109, index, maxCadencePosition_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedAvgSpeed field - /// Units: m/s - /// Returns nullable float representing the EnhancedAvgSpeed field - public float? GetEnhancedAvgSpeed() - { - Object val = GetFieldValue(110, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedAvgSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetEnhancedAvgSpeed(float? enhancedAvgSpeed_) - { - SetFieldValue(110, 0, enhancedAvgSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMaxSpeed field - /// Units: m/s - /// Returns nullable float representing the EnhancedMaxSpeed field - public float? GetEnhancedMaxSpeed() - { - Object val = GetFieldValue(111, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMaxSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetEnhancedMaxSpeed(float? enhancedMaxSpeed_) - { - SetFieldValue(111, 0, enhancedMaxSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedAvgAltitude field - /// Units: m - /// Returns nullable float representing the EnhancedAvgAltitude field - public float? GetEnhancedAvgAltitude() - { - Object val = GetFieldValue(112, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedAvgAltitude field - /// Units: m - /// Nullable field value to be set - public void SetEnhancedAvgAltitude(float? enhancedAvgAltitude_) - { - SetFieldValue(112, 0, enhancedAvgAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMinAltitude field - /// Units: m - /// Returns nullable float representing the EnhancedMinAltitude field - public float? GetEnhancedMinAltitude() - { - Object val = GetFieldValue(113, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMinAltitude field - /// Units: m - /// Nullable field value to be set - public void SetEnhancedMinAltitude(float? enhancedMinAltitude_) - { - SetFieldValue(113, 0, enhancedMinAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMaxAltitude field - /// Units: m - /// Returns nullable float representing the EnhancedMaxAltitude field - public float? GetEnhancedMaxAltitude() - { - Object val = GetFieldValue(114, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMaxAltitude field - /// Units: m - /// Nullable field value to be set - public void SetEnhancedMaxAltitude(float? enhancedMaxAltitude_) - { - SetFieldValue(114, 0, enhancedMaxAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLevMotorPower field - /// Units: watts - /// Comment: lev average motor power during lap - /// Returns nullable ushort representing the AvgLevMotorPower field - public ushort? GetAvgLevMotorPower() - { - Object val = GetFieldValue(115, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AvgLevMotorPower field - /// Units: watts - /// Comment: lev average motor power during lap - /// Nullable field value to be set - public void SetAvgLevMotorPower(ushort? avgLevMotorPower_) - { - SetFieldValue(115, 0, avgLevMotorPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxLevMotorPower field - /// Units: watts - /// Comment: lev maximum motor power during lap - /// Returns nullable ushort representing the MaxLevMotorPower field - public ushort? GetMaxLevMotorPower() - { - Object val = GetFieldValue(116, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MaxLevMotorPower field - /// Units: watts - /// Comment: lev maximum motor power during lap - /// Nullable field value to be set - public void SetMaxLevMotorPower(ushort? maxLevMotorPower_) - { - SetFieldValue(116, 0, maxLevMotorPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LevBatteryConsumption field - /// Units: percent - /// Comment: lev battery consumption during lap - /// Returns nullable float representing the LevBatteryConsumption field - public float? GetLevBatteryConsumption() - { - Object val = GetFieldValue(117, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set LevBatteryConsumption field - /// Units: percent - /// Comment: lev battery consumption during lap - /// Nullable field value to be set - public void SetLevBatteryConsumption(float? levBatteryConsumption_) - { - SetFieldValue(117, 0, levBatteryConsumption_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgVerticalRatio field - /// Units: percent - /// Returns nullable float representing the AvgVerticalRatio field - public float? GetAvgVerticalRatio() - { - Object val = GetFieldValue(118, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgVerticalRatio field - /// Units: percent - /// Nullable field value to be set - public void SetAvgVerticalRatio(float? avgVerticalRatio_) - { - SetFieldValue(118, 0, avgVerticalRatio_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgStanceTimeBalance field - /// Units: percent - /// Returns nullable float representing the AvgStanceTimeBalance field - public float? GetAvgStanceTimeBalance() - { - Object val = GetFieldValue(119, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgStanceTimeBalance field - /// Units: percent - /// Nullable field value to be set - public void SetAvgStanceTimeBalance(float? avgStanceTimeBalance_) - { - SetFieldValue(119, 0, avgStanceTimeBalance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgStepLength field - /// Units: mm - /// Returns nullable float representing the AvgStepLength field - public float? GetAvgStepLength() - { - Object val = GetFieldValue(120, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgStepLength field - /// Units: mm - /// Nullable field value to be set - public void SetAvgStepLength(float? avgStepLength_) - { - SetFieldValue(120, 0, avgStepLength_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgVam field - /// Units: m/s - /// Returns nullable float representing the AvgVam field - public float? GetAvgVam() - { - Object val = GetFieldValue(121, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgVam field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgVam(float? avgVam_) - { - SetFieldValue(121, 0, avgVam_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedAvgRespirationRate field - /// Units: Breaths/min - /// Returns nullable float representing the EnhancedAvgRespirationRate field - public float? GetEnhancedAvgRespirationRate() - { - Object val = GetFieldValue(136, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedAvgRespirationRate field - /// Units: Breaths/min - /// Nullable field value to be set - public void SetEnhancedAvgRespirationRate(float? enhancedAvgRespirationRate_) - { - SetFieldValue(136, 0, enhancedAvgRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMaxRespirationRate field - /// Units: Breaths/min - /// Returns nullable float representing the EnhancedMaxRespirationRate field - public float? GetEnhancedMaxRespirationRate() - { - Object val = GetFieldValue(137, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMaxRespirationRate field - /// Units: Breaths/min - /// Nullable field value to be set - public void SetEnhancedMaxRespirationRate(float? enhancedMaxRespirationRate_) - { - SetFieldValue(137, 0, enhancedMaxRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRespirationRate field - /// Returns nullable byte representing the AvgRespirationRate field - public byte? GetAvgRespirationRate() - { - Object val = GetFieldValue(147, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgRespirationRate field - /// Nullable field value to be set - public void SetAvgRespirationRate(byte? avgRespirationRate_) - { - SetFieldValue(147, 0, avgRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxRespirationRate field - /// Returns nullable byte representing the MaxRespirationRate field - public byte? GetMaxRespirationRate() - { - Object val = GetFieldValue(148, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxRespirationRate field - /// Nullable field value to be set - public void SetMaxRespirationRate(byte? maxRespirationRate_) - { - SetFieldValue(148, 0, maxRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Returns nullable float representing the TotalGrit field - public float? GetTotalGrit() - { - Object val = GetFieldValue(149, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Nullable field value to be set - public void SetTotalGrit(float? totalGrit_) - { - SetFieldValue(149, 0, totalGrit_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Returns nullable float representing the TotalFlow field - public float? GetTotalFlow() - { - Object val = GetFieldValue(150, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Nullable field value to be set - public void SetTotalFlow(float? totalFlow_) - { - SetFieldValue(150, 0, totalFlow_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the JumpCount field - /// Returns nullable ushort representing the JumpCount field - public ushort? GetJumpCount() - { - Object val = GetFieldValue(151, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set JumpCount field - /// Nullable field value to be set - public void SetJumpCount(ushort? jumpCount_) - { - SetFieldValue(151, 0, jumpCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Returns nullable float representing the AvgGrit field - public float? GetAvgGrit() - { - Object val = GetFieldValue(153, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Nullable field value to be set - public void SetAvgGrit(float? avgGrit_) - { - SetFieldValue(153, 0, avgGrit_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Returns nullable float representing the AvgFlow field - public float? GetAvgFlow() - { - Object val = GetFieldValue(154, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Nullable field value to be set - public void SetAvgFlow(float? avgFlow_) - { - SetFieldValue(154, 0, avgFlow_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFractionalAscent field - /// Units: m - /// Comment: fractional part of total_ascent - /// Returns nullable float representing the TotalFractionalAscent field - public float? GetTotalFractionalAscent() - { - Object val = GetFieldValue(156, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFractionalAscent field - /// Units: m - /// Comment: fractional part of total_ascent - /// Nullable field value to be set - public void SetTotalFractionalAscent(float? totalFractionalAscent_) - { - SetFieldValue(156, 0, totalFractionalAscent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFractionalDescent field - /// Units: m - /// Comment: fractional part of total_descent - /// Returns nullable float representing the TotalFractionalDescent field - public float? GetTotalFractionalDescent() - { - Object val = GetFieldValue(157, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFractionalDescent field - /// Units: m - /// Comment: fractional part of total_descent - /// Nullable field value to be set - public void SetTotalFractionalDescent(float? totalFractionalDescent_) - { - SetFieldValue(157, 0, totalFractionalDescent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgCoreTemperature field - /// Units: C - /// Returns nullable float representing the AvgCoreTemperature field - public float? GetAvgCoreTemperature() - { - Object val = GetFieldValue(158, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgCoreTemperature field - /// Units: C - /// Nullable field value to be set - public void SetAvgCoreTemperature(float? avgCoreTemperature_) - { - SetFieldValue(158, 0, avgCoreTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinCoreTemperature field - /// Units: C - /// Returns nullable float representing the MinCoreTemperature field - public float? GetMinCoreTemperature() - { - Object val = GetFieldValue(159, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MinCoreTemperature field - /// Units: C - /// Nullable field value to be set - public void SetMinCoreTemperature(float? minCoreTemperature_) - { - SetFieldValue(159, 0, minCoreTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxCoreTemperature field - /// Units: C - /// Returns nullable float representing the MaxCoreTemperature field - public float? GetMaxCoreTemperature() - { - Object val = GetFieldValue(160, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxCoreTemperature field - /// Units: C - /// Nullable field value to be set - public void SetMaxCoreTemperature(float? maxCoreTemperature_) - { - SetFieldValue(160, 0, maxCoreTemperature_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/LengthMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/LengthMesg.cs deleted file mode 100644 index 1aea409ef..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/LengthMesg.cs +++ /dev/null @@ -1,611 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Length profile message. - /// - public class LengthMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Timestamp = 253; - public const byte Event = 0; - public const byte EventType = 1; - public const byte StartTime = 2; - public const byte TotalElapsedTime = 3; - public const byte TotalTimerTime = 4; - public const byte TotalStrokes = 5; - public const byte AvgSpeed = 6; - public const byte SwimStroke = 7; - public const byte AvgSwimmingCadence = 9; - public const byte EventGroup = 10; - public const byte TotalCalories = 11; - public const byte LengthType = 12; - public const byte PlayerScore = 18; - public const byte OpponentScore = 19; - public const byte StrokeCount = 20; - public const byte ZoneCount = 21; - public const byte EnhancedAvgRespirationRate = 22; - public const byte EnhancedMaxRespirationRate = 23; - public const byte AvgRespirationRate = 24; - public const byte MaxRespirationRate = 25; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public LengthMesg() : base(Profile.GetMesg(MesgNum.Length)) - { - } - - public LengthMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Timestamp field - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Event field - /// Returns nullable Event enum representing the Event field - public Event? GetEvent() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Event? value = obj == null ? (Event?)null : (Event)obj; - return value; - } - - /// - /// Set Event field - /// Nullable field value to be set - public void SetEvent(Event? event_) - { - SetFieldValue(0, 0, event_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventType field - /// Returns nullable EventType enum representing the EventType field - public EventType? GetEventType() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - EventType? value = obj == null ? (EventType?)null : (EventType)obj; - return value; - } - - /// - /// Set EventType field - /// Nullable field value to be set - public void SetEventType(EventType? eventType_) - { - SetFieldValue(1, 0, eventType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartTime field - /// Returns DateTime representing the StartTime field - public DateTime GetStartTime() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set StartTime field - /// Nullable field value to be set - public void SetStartTime(DateTime startTime_) - { - SetFieldValue(2, 0, startTime_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalElapsedTime field - /// Units: s - /// Returns nullable float representing the TotalElapsedTime field - public float? GetTotalElapsedTime() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalElapsedTime field - /// Units: s - /// Nullable field value to be set - public void SetTotalElapsedTime(float? totalElapsedTime_) - { - SetFieldValue(3, 0, totalElapsedTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalTimerTime field - /// Units: s - /// Returns nullable float representing the TotalTimerTime field - public float? GetTotalTimerTime() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalTimerTime field - /// Units: s - /// Nullable field value to be set - public void SetTotalTimerTime(float? totalTimerTime_) - { - SetFieldValue(4, 0, totalTimerTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalStrokes field - /// Units: strokes - /// Returns nullable ushort representing the TotalStrokes field - public ushort? GetTotalStrokes() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalStrokes field - /// Units: strokes - /// Nullable field value to be set - public void SetTotalStrokes(ushort? totalStrokes_) - { - SetFieldValue(5, 0, totalStrokes_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgSpeed field - /// Units: m/s - /// Returns nullable float representing the AvgSpeed field - public float? GetAvgSpeed() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgSpeed(float? avgSpeed_) - { - SetFieldValue(6, 0, avgSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SwimStroke field - /// Units: swim_stroke - /// Returns nullable SwimStroke enum representing the SwimStroke field - public SwimStroke? GetSwimStroke() - { - object obj = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - SwimStroke? value = obj == null ? (SwimStroke?)null : (SwimStroke)obj; - return value; - } - - /// - /// Set SwimStroke field - /// Units: swim_stroke - /// Nullable field value to be set - public void SetSwimStroke(SwimStroke? swimStroke_) - { - SetFieldValue(7, 0, swimStroke_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgSwimmingCadence field - /// Units: strokes/min - /// Returns nullable byte representing the AvgSwimmingCadence field - public byte? GetAvgSwimmingCadence() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgSwimmingCadence field - /// Units: strokes/min - /// Nullable field value to be set - public void SetAvgSwimmingCadence(byte? avgSwimmingCadence_) - { - SetFieldValue(9, 0, avgSwimmingCadence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventGroup field - /// Returns nullable byte representing the EventGroup field - public byte? GetEventGroup() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set EventGroup field - /// Nullable field value to be set - public void SetEventGroup(byte? eventGroup_) - { - SetFieldValue(10, 0, eventGroup_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalCalories field - /// Units: kcal - /// Returns nullable ushort representing the TotalCalories field - public ushort? GetTotalCalories() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalCalories field - /// Units: kcal - /// Nullable field value to be set - public void SetTotalCalories(ushort? totalCalories_) - { - SetFieldValue(11, 0, totalCalories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LengthType field - /// Returns nullable LengthType enum representing the LengthType field - public LengthType? GetLengthType() - { - object obj = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - LengthType? value = obj == null ? (LengthType?)null : (LengthType)obj; - return value; - } - - /// - /// Set LengthType field - /// Nullable field value to be set - public void SetLengthType(LengthType? lengthType_) - { - SetFieldValue(12, 0, lengthType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PlayerScore field - /// Returns nullable ushort representing the PlayerScore field - public ushort? GetPlayerScore() - { - Object val = GetFieldValue(18, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set PlayerScore field - /// Nullable field value to be set - public void SetPlayerScore(ushort? playerScore_) - { - SetFieldValue(18, 0, playerScore_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the OpponentScore field - /// Returns nullable ushort representing the OpponentScore field - public ushort? GetOpponentScore() - { - Object val = GetFieldValue(19, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set OpponentScore field - /// Nullable field value to be set - public void SetOpponentScore(ushort? opponentScore_) - { - SetFieldValue(19, 0, opponentScore_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field StrokeCount - public int GetNumStrokeCount() - { - return GetNumFieldValues(20, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StrokeCount field - /// Units: counts - /// Comment: stroke_type enum used as the index - /// 0 based index of StrokeCount element to retrieve - /// Returns nullable ushort representing the StrokeCount field - public ushort? GetStrokeCount(int index) - { - Object val = GetFieldValue(20, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set StrokeCount field - /// Units: counts - /// Comment: stroke_type enum used as the index - /// 0 based index of stroke_count - /// Nullable field value to be set - public void SetStrokeCount(int index, ushort? strokeCount_) - { - SetFieldValue(20, index, strokeCount_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field ZoneCount - public int GetNumZoneCount() - { - return GetNumFieldValues(21, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ZoneCount field - /// Units: counts - /// Comment: zone number used as the index - /// 0 based index of ZoneCount element to retrieve - /// Returns nullable ushort representing the ZoneCount field - public ushort? GetZoneCount(int index) - { - Object val = GetFieldValue(21, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ZoneCount field - /// Units: counts - /// Comment: zone number used as the index - /// 0 based index of zone_count - /// Nullable field value to be set - public void SetZoneCount(int index, ushort? zoneCount_) - { - SetFieldValue(21, index, zoneCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedAvgRespirationRate field - /// Units: Breaths/min - /// Returns nullable float representing the EnhancedAvgRespirationRate field - public float? GetEnhancedAvgRespirationRate() - { - Object val = GetFieldValue(22, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedAvgRespirationRate field - /// Units: Breaths/min - /// Nullable field value to be set - public void SetEnhancedAvgRespirationRate(float? enhancedAvgRespirationRate_) - { - SetFieldValue(22, 0, enhancedAvgRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMaxRespirationRate field - /// Units: Breaths/min - /// Returns nullable float representing the EnhancedMaxRespirationRate field - public float? GetEnhancedMaxRespirationRate() - { - Object val = GetFieldValue(23, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMaxRespirationRate field - /// Units: Breaths/min - /// Nullable field value to be set - public void SetEnhancedMaxRespirationRate(float? enhancedMaxRespirationRate_) - { - SetFieldValue(23, 0, enhancedMaxRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRespirationRate field - /// Returns nullable byte representing the AvgRespirationRate field - public byte? GetAvgRespirationRate() - { - Object val = GetFieldValue(24, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgRespirationRate field - /// Nullable field value to be set - public void SetAvgRespirationRate(byte? avgRespirationRate_) - { - SetFieldValue(24, 0, avgRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxRespirationRate field - /// Returns nullable byte representing the MaxRespirationRate field - public byte? GetMaxRespirationRate() - { - Object val = GetFieldValue(25, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxRespirationRate field - /// Nullable field value to be set - public void SetMaxRespirationRate(byte? maxRespirationRate_) - { - SetFieldValue(25, 0, maxRespirationRate_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/MagnetometerDataMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/MagnetometerDataMesg.cs deleted file mode 100644 index a3a450e5b..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/MagnetometerDataMesg.cs +++ /dev/null @@ -1,389 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the MagnetometerData profile message. - /// - public class MagnetometerDataMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte TimestampMs = 0; - public const byte SampleTimeOffset = 1; - public const byte MagX = 2; - public const byte MagY = 3; - public const byte MagZ = 4; - public const byte CalibratedMagX = 5; - public const byte CalibratedMagY = 6; - public const byte CalibratedMagZ = 7; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public MagnetometerDataMesg() : base(Profile.GetMesg(MesgNum.MagnetometerData)) - { - } - - public MagnetometerDataMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Returns nullable ushort representing the TimestampMs field - public ushort? GetTimestampMs() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Nullable field value to be set - public void SetTimestampMs(ushort? timestampMs_) - { - SetFieldValue(0, 0, timestampMs_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field SampleTimeOffset - public int GetNumSampleTimeOffset() - { - return GetNumFieldValues(1, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SampleTimeOffset field - /// Units: ms - /// Comment: Each time in the array describes the time at which the compass sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in cmps_x and cmps_y and cmps_z - /// 0 based index of SampleTimeOffset element to retrieve - /// Returns nullable ushort representing the SampleTimeOffset field - public ushort? GetSampleTimeOffset(int index) - { - Object val = GetFieldValue(1, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set SampleTimeOffset field - /// Units: ms - /// Comment: Each time in the array describes the time at which the compass sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in cmps_x and cmps_y and cmps_z - /// 0 based index of sample_time_offset - /// Nullable field value to be set - public void SetSampleTimeOffset(int index, ushort? sampleTimeOffset_) - { - SetFieldValue(1, index, sampleTimeOffset_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MagX - public int GetNumMagX() - { - return GetNumFieldValues(2, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MagX field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of MagX element to retrieve - /// Returns nullable ushort representing the MagX field - public ushort? GetMagX(int index) - { - Object val = GetFieldValue(2, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MagX field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of mag_x - /// Nullable field value to be set - public void SetMagX(int index, ushort? magX_) - { - SetFieldValue(2, index, magX_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MagY - public int GetNumMagY() - { - return GetNumFieldValues(3, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MagY field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of MagY element to retrieve - /// Returns nullable ushort representing the MagY field - public ushort? GetMagY(int index) - { - Object val = GetFieldValue(3, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MagY field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of mag_y - /// Nullable field value to be set - public void SetMagY(int index, ushort? magY_) - { - SetFieldValue(3, index, magY_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MagZ - public int GetNumMagZ() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MagZ field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of MagZ element to retrieve - /// Returns nullable ushort representing the MagZ field - public ushort? GetMagZ(int index) - { - Object val = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MagZ field - /// Units: counts - /// Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - /// 0 based index of mag_z - /// Nullable field value to be set - public void SetMagZ(int index, ushort? magZ_) - { - SetFieldValue(4, index, magZ_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CalibratedMagX - public int GetNumCalibratedMagX() - { - return GetNumFieldValues(5, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CalibratedMagX field - /// Units: G - /// Comment: Calibrated Magnetometer reading - /// 0 based index of CalibratedMagX element to retrieve - /// Returns nullable float representing the CalibratedMagX field - public float? GetCalibratedMagX(int index) - { - Object val = GetFieldValue(5, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CalibratedMagX field - /// Units: G - /// Comment: Calibrated Magnetometer reading - /// 0 based index of calibrated_mag_x - /// Nullable field value to be set - public void SetCalibratedMagX(int index, float? calibratedMagX_) - { - SetFieldValue(5, index, calibratedMagX_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CalibratedMagY - public int GetNumCalibratedMagY() - { - return GetNumFieldValues(6, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CalibratedMagY field - /// Units: G - /// Comment: Calibrated Magnetometer reading - /// 0 based index of CalibratedMagY element to retrieve - /// Returns nullable float representing the CalibratedMagY field - public float? GetCalibratedMagY(int index) - { - Object val = GetFieldValue(6, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CalibratedMagY field - /// Units: G - /// Comment: Calibrated Magnetometer reading - /// 0 based index of calibrated_mag_y - /// Nullable field value to be set - public void SetCalibratedMagY(int index, float? calibratedMagY_) - { - SetFieldValue(6, index, calibratedMagY_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CalibratedMagZ - public int GetNumCalibratedMagZ() - { - return GetNumFieldValues(7, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CalibratedMagZ field - /// Units: G - /// Comment: Calibrated Magnetometer reading - /// 0 based index of CalibratedMagZ element to retrieve - /// Returns nullable float representing the CalibratedMagZ field - public float? GetCalibratedMagZ(int index) - { - Object val = GetFieldValue(7, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CalibratedMagZ field - /// Units: G - /// Comment: Calibrated Magnetometer reading - /// 0 based index of calibrated_mag_z - /// Nullable field value to be set - public void SetCalibratedMagZ(int index, float? calibratedMagZ_) - { - SetFieldValue(7, index, calibratedMagZ_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/MemoGlobMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/MemoGlobMesg.cs deleted file mode 100644 index 8078f0643..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/MemoGlobMesg.cs +++ /dev/null @@ -1,233 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the MemoGlob profile message. - /// - public class MemoGlobMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte PartIndex = 250; - public const byte Memo = 0; - public const byte MesgNum = 1; - public const byte ParentIndex = 2; - public const byte FieldNum = 3; - public const byte Data = 4; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public MemoGlobMesg() : base(Profile.GetMesg(MesgNum.MemoGlob)) - { - } - - public MemoGlobMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the PartIndex field - /// Comment: Sequence number of memo blocks - /// Returns nullable uint representing the PartIndex field - public uint? GetPartIndex() - { - Object val = GetFieldValue(250, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set PartIndex field - /// Comment: Sequence number of memo blocks - /// Nullable field value to be set - public void SetPartIndex(uint? partIndex_) - { - SetFieldValue(250, 0, partIndex_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Memo - public int GetNumMemo() - { - return GetNumFieldValues(0, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Memo field - /// Comment: Deprecated. Use data field. - /// 0 based index of Memo element to retrieve - /// Returns nullable byte representing the Memo field - public byte? GetMemo(int index) - { - Object val = GetFieldValue(0, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Memo field - /// Comment: Deprecated. Use data field. - /// 0 based index of memo - /// Nullable field value to be set - public void SetMemo(int index, byte? memo_) - { - SetFieldValue(0, index, memo_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MesgNum field - /// Comment: Message Number of the parent message - /// Returns nullable ushort representing the MesgNum field - public ushort? GetMesgNum() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MesgNum field - /// Comment: Message Number of the parent message - /// Nullable field value to be set - public void SetMesgNum(ushort? mesgNum_) - { - SetFieldValue(1, 0, mesgNum_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ParentIndex field - /// Comment: Index of mesg that this glob is associated with. - /// Returns nullable ushort representing the ParentIndex field - public ushort? GetParentIndex() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ParentIndex field - /// Comment: Index of mesg that this glob is associated with. - /// Nullable field value to be set - public void SetParentIndex(ushort? parentIndex_) - { - SetFieldValue(2, 0, parentIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FieldNum field - /// Comment: Field within the parent that this glob is associated with - /// Returns nullable byte representing the FieldNum field - public byte? GetFieldNum() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set FieldNum field - /// Comment: Field within the parent that this glob is associated with - /// Nullable field value to be set - public void SetFieldNum(byte? fieldNum_) - { - SetFieldValue(3, 0, fieldNum_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Data - public int GetNumData() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Data field - /// Comment: Block of utf8 bytes. Note, mutltibyte characters may be split across adjoining memo_glob messages. - /// 0 based index of Data element to retrieve - /// Returns nullable byte representing the Data field - public byte? GetData(int index) - { - Object val = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Data field - /// Comment: Block of utf8 bytes. Note, mutltibyte characters may be split across adjoining memo_glob messages. - /// 0 based index of data - /// Nullable field value to be set - public void SetData(int index, byte? data_) - { - SetFieldValue(4, index, data_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/MesgCapabilitiesMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/MesgCapabilitiesMesg.cs deleted file mode 100644 index 8621ef1f4..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/MesgCapabilitiesMesg.cs +++ /dev/null @@ -1,244 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the MesgCapabilities profile message. - /// - public class MesgCapabilitiesMesg : Mesg - { - #region Fields - static class CountSubfield - { - public static ushort NumPerFile = 0; - public static ushort MaxPerFile = 1; - public static ushort MaxPerFileType = 2; - public static ushort Subfields = 3; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte File = 0; - public const byte MesgNum = 1; - public const byte CountType = 2; - public const byte Count = 3; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public MesgCapabilitiesMesg() : base(Profile.GetMesg(MesgNum.MesgCapabilities)) - { - } - - public MesgCapabilitiesMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the File field - /// Returns nullable File enum representing the File field - public File? GetFile() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - File? value = obj == null ? (File?)null : (File)obj; - return value; - } - - /// - /// Set File field - /// Nullable field value to be set - public void SetFile(File? file_) - { - SetFieldValue(0, 0, file_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MesgNum field - /// Returns nullable ushort representing the MesgNum field - public ushort? GetMesgNum() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MesgNum field - /// Nullable field value to be set - public void SetMesgNum(ushort? mesgNum_) - { - SetFieldValue(1, 0, mesgNum_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CountType field - /// Returns nullable MesgCount enum representing the CountType field - public MesgCount? GetCountType() - { - object obj = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - MesgCount? value = obj == null ? (MesgCount?)null : (MesgCount)obj; - return value; - } - - /// - /// Set CountType field - /// Nullable field value to be set - public void SetCountType(MesgCount? countType_) - { - SetFieldValue(2, 0, countType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Count field - /// Returns nullable ushort representing the Count field - public ushort? GetCount() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Count field - /// Nullable field value to be set - public void SetCount(ushort? count_) - { - SetFieldValue(3, 0, count_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the NumPerFile subfield - /// Nullable ushort representing the NumPerFile subfield - public ushort? GetNumPerFile() - { - Object val = GetFieldValue(3, 0, CountSubfield.NumPerFile); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set NumPerFile subfield - /// Subfield value to be set - public void SetNumPerFile(ushort? numPerFile) - { - SetFieldValue(3, 0, numPerFile, CountSubfield.NumPerFile); - } - - /// - /// Retrieves the MaxPerFile subfield - /// Nullable ushort representing the MaxPerFile subfield - public ushort? GetMaxPerFile() - { - Object val = GetFieldValue(3, 0, CountSubfield.MaxPerFile); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set MaxPerFile subfield - /// Subfield value to be set - public void SetMaxPerFile(ushort? maxPerFile) - { - SetFieldValue(3, 0, maxPerFile, CountSubfield.MaxPerFile); - } - - /// - /// Retrieves the MaxPerFileType subfield - /// Nullable ushort representing the MaxPerFileType subfield - public ushort? GetMaxPerFileType() - { - Object val = GetFieldValue(3, 0, CountSubfield.MaxPerFileType); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set MaxPerFileType subfield - /// Subfield value to be set - public void SetMaxPerFileType(ushort? maxPerFileType) - { - SetFieldValue(3, 0, maxPerFileType, CountSubfield.MaxPerFileType); - } - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/MetZoneMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/MetZoneMesg.cs deleted file mode 100644 index 0fd03bfbf..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/MetZoneMesg.cs +++ /dev/null @@ -1,153 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the MetZone profile message. - /// - public class MetZoneMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte HighBpm = 1; - public const byte Calories = 2; - public const byte FatCalories = 3; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public MetZoneMesg() : base(Profile.GetMesg(MesgNum.MetZone)) - { - } - - public MetZoneMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HighBpm field - /// Returns nullable byte representing the HighBpm field - public byte? GetHighBpm() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HighBpm field - /// Nullable field value to be set - public void SetHighBpm(byte? highBpm_) - { - SetFieldValue(1, 0, highBpm_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Calories field - /// Units: kcal / min - /// Returns nullable float representing the Calories field - public float? GetCalories() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Calories field - /// Units: kcal / min - /// Nullable field value to be set - public void SetCalories(float? calories_) - { - SetFieldValue(2, 0, calories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FatCalories field - /// Units: kcal / min - /// Returns nullable float representing the FatCalories field - public float? GetFatCalories() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set FatCalories field - /// Units: kcal / min - /// Nullable field value to be set - public void SetFatCalories(float? fatCalories_) - { - SetFieldValue(3, 0, fatCalories_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/MonitoringInfoMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/MonitoringInfoMesg.cs deleted file mode 100644 index dbbfff673..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/MonitoringInfoMesg.cs +++ /dev/null @@ -1,244 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the MonitoringInfo profile message. - /// - public class MonitoringInfoMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte LocalTimestamp = 0; - public const byte ActivityType = 1; - public const byte CyclesToDistance = 3; - public const byte CyclesToCalories = 4; - public const byte RestingMetabolicRate = 5; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public MonitoringInfoMesg() : base(Profile.GetMesg(MesgNum.MonitoringInfo)) - { - } - - public MonitoringInfoMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LocalTimestamp field - /// Units: s - /// Comment: Use to convert activity timestamps to local time if device does not support time zone and daylight savings time correction. - /// Returns nullable uint representing the LocalTimestamp field - public uint? GetLocalTimestamp() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set LocalTimestamp field - /// Units: s - /// Comment: Use to convert activity timestamps to local time if device does not support time zone and daylight savings time correction. - /// Nullable field value to be set - public void SetLocalTimestamp(uint? localTimestamp_) - { - SetFieldValue(0, 0, localTimestamp_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field ActivityType - public int GetNumActivityType() - { - return GetNumFieldValues(1, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActivityType field - /// 0 based index of ActivityType element to retrieve - /// Returns nullable ActivityType enum representing the ActivityType field - public ActivityType? GetActivityType(int index) - { - object obj = GetFieldValue(1, index, Fit.SubfieldIndexMainField); - ActivityType? value = obj == null ? (ActivityType?)null : (ActivityType)obj; - return value; - } - - /// - /// Set ActivityType field - /// 0 based index of activity_type - /// Nullable field value to be set - public void SetActivityType(int index, ActivityType? activityType_) - { - SetFieldValue(1, index, activityType_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CyclesToDistance - public int GetNumCyclesToDistance() - { - return GetNumFieldValues(3, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CyclesToDistance field - /// Units: m/cycle - /// Comment: Indexed by activity_type - /// 0 based index of CyclesToDistance element to retrieve - /// Returns nullable float representing the CyclesToDistance field - public float? GetCyclesToDistance(int index) - { - Object val = GetFieldValue(3, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CyclesToDistance field - /// Units: m/cycle - /// Comment: Indexed by activity_type - /// 0 based index of cycles_to_distance - /// Nullable field value to be set - public void SetCyclesToDistance(int index, float? cyclesToDistance_) - { - SetFieldValue(3, index, cyclesToDistance_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CyclesToCalories - public int GetNumCyclesToCalories() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CyclesToCalories field - /// Units: kcal/cycle - /// Comment: Indexed by activity_type - /// 0 based index of CyclesToCalories element to retrieve - /// Returns nullable float representing the CyclesToCalories field - public float? GetCyclesToCalories(int index) - { - Object val = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CyclesToCalories field - /// Units: kcal/cycle - /// Comment: Indexed by activity_type - /// 0 based index of cycles_to_calories - /// Nullable field value to be set - public void SetCyclesToCalories(int index, float? cyclesToCalories_) - { - SetFieldValue(4, index, cyclesToCalories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RestingMetabolicRate field - /// Units: kcal / day - /// Returns nullable ushort representing the RestingMetabolicRate field - public ushort? GetRestingMetabolicRate() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set RestingMetabolicRate field - /// Units: kcal / day - /// Nullable field value to be set - public void SetRestingMetabolicRate(ushort? restingMetabolicRate_) - { - SetFieldValue(5, 0, restingMetabolicRate_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/MonitoringMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/MonitoringMesg.cs deleted file mode 100644 index 0b6a1990d..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/MonitoringMesg.cs +++ /dev/null @@ -1,872 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Monitoring profile message. - /// - public class MonitoringMesg : Mesg - { - #region Fields - static class CyclesSubfield - { - public static ushort Steps = 0; - public static ushort Strokes = 1; - public static ushort Subfields = 2; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte DeviceIndex = 0; - public const byte Calories = 1; - public const byte Distance = 2; - public const byte Cycles = 3; - public const byte ActiveTime = 4; - public const byte ActivityType = 5; - public const byte ActivitySubtype = 6; - public const byte ActivityLevel = 7; - public const byte Distance16 = 8; - public const byte Cycles16 = 9; - public const byte ActiveTime16 = 10; - public const byte LocalTimestamp = 11; - public const byte Temperature = 12; - public const byte TemperatureMin = 14; - public const byte TemperatureMax = 15; - public const byte ActivityTime = 16; - public const byte ActiveCalories = 19; - public const byte CurrentActivityTypeIntensity = 24; - public const byte TimestampMin8 = 25; - public const byte Timestamp16 = 26; - public const byte HeartRate = 27; - public const byte Intensity = 28; - public const byte DurationMin = 29; - public const byte Duration = 30; - public const byte Ascent = 31; - public const byte Descent = 32; - public const byte ModerateActivityMinutes = 33; - public const byte VigorousActivityMinutes = 34; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public MonitoringMesg() : base(Profile.GetMesg(MesgNum.Monitoring)) - { - } - - public MonitoringMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeviceIndex field - /// Comment: Associates this data to device_info message. Not required for file with single device (sensor). - /// Returns nullable byte representing the DeviceIndex field - public byte? GetDeviceIndex() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DeviceIndex field - /// Comment: Associates this data to device_info message. Not required for file with single device (sensor). - /// Nullable field value to be set - public void SetDeviceIndex(byte? deviceIndex_) - { - SetFieldValue(0, 0, deviceIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Calories field - /// Units: kcal - /// Comment: Accumulated total calories. Maintained by MonitoringReader for each activity_type. See SDK documentation - /// Returns nullable ushort representing the Calories field - public ushort? GetCalories() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Calories field - /// Units: kcal - /// Comment: Accumulated total calories. Maintained by MonitoringReader for each activity_type. See SDK documentation - /// Nullable field value to be set - public void SetCalories(ushort? calories_) - { - SetFieldValue(1, 0, calories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Distance field - /// Units: m - /// Comment: Accumulated distance. Maintained by MonitoringReader for each activity_type. See SDK documentation. - /// Returns nullable float representing the Distance field - public float? GetDistance() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Distance field - /// Units: m - /// Comment: Accumulated distance. Maintained by MonitoringReader for each activity_type. See SDK documentation. - /// Nullable field value to be set - public void SetDistance(float? distance_) - { - SetFieldValue(2, 0, distance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Cycles field - /// Units: cycles - /// Comment: Accumulated cycles. Maintained by MonitoringReader for each activity_type. See SDK documentation. - /// Returns nullable float representing the Cycles field - public float? GetCycles() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Cycles field - /// Units: cycles - /// Comment: Accumulated cycles. Maintained by MonitoringReader for each activity_type. See SDK documentation. - /// Nullable field value to be set - public void SetCycles(float? cycles_) - { - SetFieldValue(3, 0, cycles_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the Steps subfield - /// Units: steps - /// Nullable uint representing the Steps subfield - public uint? GetSteps() - { - Object val = GetFieldValue(3, 0, CyclesSubfield.Steps); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set Steps subfield - /// Units: steps - /// Subfield value to be set - public void SetSteps(uint? steps) - { - SetFieldValue(3, 0, steps, CyclesSubfield.Steps); - } - - /// - /// Retrieves the Strokes subfield - /// Units: strokes - /// Nullable float representing the Strokes subfield - public float? GetStrokes() - { - Object val = GetFieldValue(3, 0, CyclesSubfield.Strokes); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set Strokes subfield - /// Units: strokes - /// Subfield value to be set - public void SetStrokes(float? strokes) - { - SetFieldValue(3, 0, strokes, CyclesSubfield.Strokes); - } - /// - /// Retrieves the ActiveTime field - /// Units: s - /// Returns nullable float representing the ActiveTime field - public float? GetActiveTime() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set ActiveTime field - /// Units: s - /// Nullable field value to be set - public void SetActiveTime(float? activeTime_) - { - SetFieldValue(4, 0, activeTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActivityType field - /// Returns nullable ActivityType enum representing the ActivityType field - public ActivityType? GetActivityType() - { - object obj = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - ActivityType? value = obj == null ? (ActivityType?)null : (ActivityType)obj; - return value; - } - - /// - /// Set ActivityType field - /// Nullable field value to be set - public void SetActivityType(ActivityType? activityType_) - { - SetFieldValue(5, 0, activityType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActivitySubtype field - /// Returns nullable ActivitySubtype enum representing the ActivitySubtype field - public ActivitySubtype? GetActivitySubtype() - { - object obj = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - ActivitySubtype? value = obj == null ? (ActivitySubtype?)null : (ActivitySubtype)obj; - return value; - } - - /// - /// Set ActivitySubtype field - /// Nullable field value to be set - public void SetActivitySubtype(ActivitySubtype? activitySubtype_) - { - SetFieldValue(6, 0, activitySubtype_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActivityLevel field - /// Returns nullable ActivityLevel enum representing the ActivityLevel field - public ActivityLevel? GetActivityLevel() - { - object obj = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - ActivityLevel? value = obj == null ? (ActivityLevel?)null : (ActivityLevel)obj; - return value; - } - - /// - /// Set ActivityLevel field - /// Nullable field value to be set - public void SetActivityLevel(ActivityLevel? activityLevel_) - { - SetFieldValue(7, 0, activityLevel_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Distance16 field - /// Units: 100 * m - /// Returns nullable ushort representing the Distance16 field - public ushort? GetDistance16() - { - Object val = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Distance16 field - /// Units: 100 * m - /// Nullable field value to be set - public void SetDistance16(ushort? distance16_) - { - SetFieldValue(8, 0, distance16_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Cycles16 field - /// Units: 2 * cycles (steps) - /// Returns nullable ushort representing the Cycles16 field - public ushort? GetCycles16() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Cycles16 field - /// Units: 2 * cycles (steps) - /// Nullable field value to be set - public void SetCycles16(ushort? cycles16_) - { - SetFieldValue(9, 0, cycles16_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActiveTime16 field - /// Units: s - /// Returns nullable ushort representing the ActiveTime16 field - public ushort? GetActiveTime16() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ActiveTime16 field - /// Units: s - /// Nullable field value to be set - public void SetActiveTime16(ushort? activeTime16_) - { - SetFieldValue(10, 0, activeTime16_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LocalTimestamp field - /// Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - /// Returns nullable uint representing the LocalTimestamp field - public uint? GetLocalTimestamp() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set LocalTimestamp field - /// Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - /// Nullable field value to be set - public void SetLocalTimestamp(uint? localTimestamp_) - { - SetFieldValue(11, 0, localTimestamp_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Temperature field - /// Units: C - /// Comment: Avg temperature during the logging interval ended at timestamp - /// Returns nullable float representing the Temperature field - public float? GetTemperature() - { - Object val = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Temperature field - /// Units: C - /// Comment: Avg temperature during the logging interval ended at timestamp - /// Nullable field value to be set - public void SetTemperature(float? temperature_) - { - SetFieldValue(12, 0, temperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TemperatureMin field - /// Units: C - /// Comment: Min temperature during the logging interval ended at timestamp - /// Returns nullable float representing the TemperatureMin field - public float? GetTemperatureMin() - { - Object val = GetFieldValue(14, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TemperatureMin field - /// Units: C - /// Comment: Min temperature during the logging interval ended at timestamp - /// Nullable field value to be set - public void SetTemperatureMin(float? temperatureMin_) - { - SetFieldValue(14, 0, temperatureMin_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TemperatureMax field - /// Units: C - /// Comment: Max temperature during the logging interval ended at timestamp - /// Returns nullable float representing the TemperatureMax field - public float? GetTemperatureMax() - { - Object val = GetFieldValue(15, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TemperatureMax field - /// Units: C - /// Comment: Max temperature during the logging interval ended at timestamp - /// Nullable field value to be set - public void SetTemperatureMax(float? temperatureMax_) - { - SetFieldValue(15, 0, temperatureMax_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field ActivityTime - public int GetNumActivityTime() - { - return GetNumFieldValues(16, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActivityTime field - /// Units: minutes - /// Comment: Indexed using minute_activity_level enum - /// 0 based index of ActivityTime element to retrieve - /// Returns nullable ushort representing the ActivityTime field - public ushort? GetActivityTime(int index) - { - Object val = GetFieldValue(16, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ActivityTime field - /// Units: minutes - /// Comment: Indexed using minute_activity_level enum - /// 0 based index of activity_time - /// Nullable field value to be set - public void SetActivityTime(int index, ushort? activityTime_) - { - SetFieldValue(16, index, activityTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActiveCalories field - /// Units: kcal - /// Returns nullable ushort representing the ActiveCalories field - public ushort? GetActiveCalories() - { - Object val = GetFieldValue(19, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ActiveCalories field - /// Units: kcal - /// Nullable field value to be set - public void SetActiveCalories(ushort? activeCalories_) - { - SetFieldValue(19, 0, activeCalories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CurrentActivityTypeIntensity field - /// Comment: Indicates single type / intensity for duration since last monitoring message. - /// Returns nullable byte representing the CurrentActivityTypeIntensity field - public byte? GetCurrentActivityTypeIntensity() - { - Object val = GetFieldValue(24, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set CurrentActivityTypeIntensity field - /// Comment: Indicates single type / intensity for duration since last monitoring message. - /// Nullable field value to be set - public void SetCurrentActivityTypeIntensity(byte? currentActivityTypeIntensity_) - { - SetFieldValue(24, 0, currentActivityTypeIntensity_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMin8 field - /// Units: min - /// Returns nullable byte representing the TimestampMin8 field - public byte? GetTimestampMin8() - { - Object val = GetFieldValue(25, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set TimestampMin8 field - /// Units: min - /// Nullable field value to be set - public void SetTimestampMin8(byte? timestampMin8_) - { - SetFieldValue(25, 0, timestampMin8_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Timestamp16 field - /// Units: s - /// Returns nullable ushort representing the Timestamp16 field - public ushort? GetTimestamp16() - { - Object val = GetFieldValue(26, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Timestamp16 field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp16(ushort? timestamp16_) - { - SetFieldValue(26, 0, timestamp16_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HeartRate field - /// Units: bpm - /// Returns nullable byte representing the HeartRate field - public byte? GetHeartRate() - { - Object val = GetFieldValue(27, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetHeartRate(byte? heartRate_) - { - SetFieldValue(27, 0, heartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Intensity field - /// Returns nullable float representing the Intensity field - public float? GetIntensity() - { - Object val = GetFieldValue(28, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Intensity field - /// Nullable field value to be set - public void SetIntensity(float? intensity_) - { - SetFieldValue(28, 0, intensity_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DurationMin field - /// Units: min - /// Returns nullable ushort representing the DurationMin field - public ushort? GetDurationMin() - { - Object val = GetFieldValue(29, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set DurationMin field - /// Units: min - /// Nullable field value to be set - public void SetDurationMin(ushort? durationMin_) - { - SetFieldValue(29, 0, durationMin_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Duration field - /// Units: s - /// Returns nullable uint representing the Duration field - public uint? GetDuration() - { - Object val = GetFieldValue(30, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set Duration field - /// Units: s - /// Nullable field value to be set - public void SetDuration(uint? duration_) - { - SetFieldValue(30, 0, duration_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Ascent field - /// Units: m - /// Returns nullable float representing the Ascent field - public float? GetAscent() - { - Object val = GetFieldValue(31, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Ascent field - /// Units: m - /// Nullable field value to be set - public void SetAscent(float? ascent_) - { - SetFieldValue(31, 0, ascent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Descent field - /// Units: m - /// Returns nullable float representing the Descent field - public float? GetDescent() - { - Object val = GetFieldValue(32, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Descent field - /// Units: m - /// Nullable field value to be set - public void SetDescent(float? descent_) - { - SetFieldValue(32, 0, descent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ModerateActivityMinutes field - /// Units: minutes - /// Returns nullable ushort representing the ModerateActivityMinutes field - public ushort? GetModerateActivityMinutes() - { - Object val = GetFieldValue(33, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ModerateActivityMinutes field - /// Units: minutes - /// Nullable field value to be set - public void SetModerateActivityMinutes(ushort? moderateActivityMinutes_) - { - SetFieldValue(33, 0, moderateActivityMinutes_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the VigorousActivityMinutes field - /// Units: minutes - /// Returns nullable ushort representing the VigorousActivityMinutes field - public ushort? GetVigorousActivityMinutes() - { - Object val = GetFieldValue(34, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set VigorousActivityMinutes field - /// Units: minutes - /// Nullable field value to be set - public void SetVigorousActivityMinutes(ushort? vigorousActivityMinutes_) - { - SetFieldValue(34, 0, vigorousActivityMinutes_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/NmeaSentenceMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/NmeaSentenceMesg.cs deleted file mode 100644 index f676b4f00..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/NmeaSentenceMesg.cs +++ /dev/null @@ -1,152 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the NmeaSentence profile message. - /// - public class NmeaSentenceMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte TimestampMs = 0; - public const byte Sentence = 1; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public NmeaSentenceMesg() : base(Profile.GetMesg(MesgNum.NmeaSentence)) - { - } - - public NmeaSentenceMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Timestamp message was output - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Timestamp message was output - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMs field - /// Units: ms - /// Comment: Fractional part of timestamp, added to timestamp - /// Returns nullable ushort representing the TimestampMs field - public ushort? GetTimestampMs() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimestampMs field - /// Units: ms - /// Comment: Fractional part of timestamp, added to timestamp - /// Nullable field value to be set - public void SetTimestampMs(ushort? timestampMs_) - { - SetFieldValue(0, 0, timestampMs_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sentence field - /// Comment: NMEA sentence - /// Returns byte[] representing the Sentence field - public byte[] GetSentence() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Sentence field - /// Comment: NMEA sentence - /// Returns String representing the Sentence field - public String GetSentenceAsString() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Sentence field - /// Comment: NMEA sentence - /// field value to be set - public void SetSentence(String sentence_) - { - byte[] data = Encoding.UTF8.GetBytes(sentence_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(1, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Sentence field - /// Comment: NMEA sentence - /// field value to be set - public void SetSentence(byte[] sentence_) - { - SetFieldValue(1, 0, sentence_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ObdiiDataMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ObdiiDataMesg.cs deleted file mode 100644 index 50e381e28..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ObdiiDataMesg.cs +++ /dev/null @@ -1,343 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the ObdiiData profile message. - /// - public class ObdiiDataMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte TimestampMs = 0; - public const byte TimeOffset = 1; - public const byte Pid = 2; - public const byte RawData = 3; - public const byte PidDataSize = 4; - public const byte SystemTime = 5; - public const byte StartTimestamp = 6; - public const byte StartTimestampMs = 7; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public ObdiiDataMesg() : base(Profile.GetMesg(MesgNum.ObdiiData)) - { - } - - public ObdiiDataMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Timestamp message was output - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Timestamp message was output - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMs field - /// Units: ms - /// Comment: Fractional part of timestamp, added to timestamp - /// Returns nullable ushort representing the TimestampMs field - public ushort? GetTimestampMs() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimestampMs field - /// Units: ms - /// Comment: Fractional part of timestamp, added to timestamp - /// Nullable field value to be set - public void SetTimestampMs(ushort? timestampMs_) - { - SetFieldValue(0, 0, timestampMs_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeOffset - public int GetNumTimeOffset() - { - return GetNumFieldValues(1, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeOffset field - /// Units: ms - /// Comment: Offset of PID reading [i] from start_timestamp+start_timestamp_ms. Readings may span accross seconds. - /// 0 based index of TimeOffset element to retrieve - /// Returns nullable ushort representing the TimeOffset field - public ushort? GetTimeOffset(int index) - { - Object val = GetFieldValue(1, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimeOffset field - /// Units: ms - /// Comment: Offset of PID reading [i] from start_timestamp+start_timestamp_ms. Readings may span accross seconds. - /// 0 based index of time_offset - /// Nullable field value to be set - public void SetTimeOffset(int index, ushort? timeOffset_) - { - SetFieldValue(1, index, timeOffset_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Pid field - /// Comment: Parameter ID - /// Returns nullable byte representing the Pid field - public byte? GetPid() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Pid field - /// Comment: Parameter ID - /// Nullable field value to be set - public void SetPid(byte? pid_) - { - SetFieldValue(2, 0, pid_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field RawData - public int GetNumRawData() - { - return GetNumFieldValues(3, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RawData field - /// Comment: Raw parameter data - /// 0 based index of RawData element to retrieve - /// Returns nullable byte representing the RawData field - public byte? GetRawData(int index) - { - Object val = GetFieldValue(3, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set RawData field - /// Comment: Raw parameter data - /// 0 based index of raw_data - /// Nullable field value to be set - public void SetRawData(int index, byte? rawData_) - { - SetFieldValue(3, index, rawData_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field PidDataSize - public int GetNumPidDataSize() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PidDataSize field - /// Comment: Optional, data size of PID[i]. If not specified refer to SAE J1979. - /// 0 based index of PidDataSize element to retrieve - /// Returns nullable byte representing the PidDataSize field - public byte? GetPidDataSize(int index) - { - Object val = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set PidDataSize field - /// Comment: Optional, data size of PID[i]. If not specified refer to SAE J1979. - /// 0 based index of pid_data_size - /// Nullable field value to be set - public void SetPidDataSize(int index, byte? pidDataSize_) - { - SetFieldValue(4, index, pidDataSize_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field SystemTime - public int GetNumSystemTime() - { - return GetNumFieldValues(5, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SystemTime field - /// Comment: System time associated with sample expressed in ms, can be used instead of time_offset. There will be a system_time value for each raw_data element. For multibyte pids the system_time is repeated. - /// 0 based index of SystemTime element to retrieve - /// Returns nullable uint representing the SystemTime field - public uint? GetSystemTime(int index) - { - Object val = GetFieldValue(5, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set SystemTime field - /// Comment: System time associated with sample expressed in ms, can be used instead of time_offset. There will be a system_time value for each raw_data element. For multibyte pids the system_time is repeated. - /// 0 based index of system_time - /// Nullable field value to be set - public void SetSystemTime(int index, uint? systemTime_) - { - SetFieldValue(5, index, systemTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartTimestamp field - /// Comment: Timestamp of first sample recorded in the message. Used with time_offset to generate time of each sample - /// Returns DateTime representing the StartTimestamp field - public DateTime GetStartTimestamp() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set StartTimestamp field - /// Comment: Timestamp of first sample recorded in the message. Used with time_offset to generate time of each sample - /// Nullable field value to be set - public void SetStartTimestamp(DateTime startTimestamp_) - { - SetFieldValue(6, 0, startTimestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartTimestampMs field - /// Units: ms - /// Comment: Fractional part of start_timestamp - /// Returns nullable ushort representing the StartTimestampMs field - public ushort? GetStartTimestampMs() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set StartTimestampMs field - /// Units: ms - /// Comment: Fractional part of start_timestamp - /// Nullable field value to be set - public void SetStartTimestampMs(ushort? startTimestampMs_) - { - SetFieldValue(7, 0, startTimestampMs_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/OhrSettingsMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/OhrSettingsMesg.cs deleted file mode 100644 index 7e25d9c0d..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/OhrSettingsMesg.cs +++ /dev/null @@ -1,98 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the OhrSettings profile message. - /// - public class OhrSettingsMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte Enabled = 0; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public OhrSettingsMesg() : base(Profile.GetMesg(MesgNum.OhrSettings)) - { - } - - public OhrSettingsMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Enabled field - /// Returns nullable Switch enum representing the Enabled field - public Switch? GetEnabled() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Switch? value = obj == null ? (Switch?)null : (Switch)obj; - return value; - } - - /// - /// Set Enabled field - /// Nullable field value to be set - public void SetEnabled(Switch? enabled_) - { - SetFieldValue(0, 0, enabled_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/OneDSensorCalibrationMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/OneDSensorCalibrationMesg.cs deleted file mode 100644 index 139d53f46..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/OneDSensorCalibrationMesg.cs +++ /dev/null @@ -1,243 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the OneDSensorCalibration profile message. - /// - public class OneDSensorCalibrationMesg : Mesg - { - #region Fields - static class CalibrationFactorSubfield - { - public static ushort BaroCalFactor = 0; - public static ushort Subfields = 1; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte SensorType = 0; - public const byte CalibrationFactor = 1; - public const byte CalibrationDivisor = 2; - public const byte LevelShift = 3; - public const byte OffsetCal = 4; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public OneDSensorCalibrationMesg() : base(Profile.GetMesg(MesgNum.OneDSensorCalibration)) - { - } - - public OneDSensorCalibrationMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SensorType field - /// Comment: Indicates which sensor the calibration is for - /// Returns nullable SensorType enum representing the SensorType field - public SensorType? GetSensorType() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - SensorType? value = obj == null ? (SensorType?)null : (SensorType)obj; - return value; - } - - /// - /// Set SensorType field - /// Comment: Indicates which sensor the calibration is for - /// Nullable field value to be set - public void SetSensorType(SensorType? sensorType_) - { - SetFieldValue(0, 0, sensorType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CalibrationFactor field - /// Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - /// Returns nullable uint representing the CalibrationFactor field - public uint? GetCalibrationFactor() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set CalibrationFactor field - /// Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - /// Nullable field value to be set - public void SetCalibrationFactor(uint? calibrationFactor_) - { - SetFieldValue(1, 0, calibrationFactor_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the BaroCalFactor subfield - /// Units: Pa - /// Comment: Barometer calibration factor - /// Nullable uint representing the BaroCalFactor subfield - public uint? GetBaroCalFactor() - { - Object val = GetFieldValue(1, 0, CalibrationFactorSubfield.BaroCalFactor); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set BaroCalFactor subfield - /// Units: Pa - /// Comment: Barometer calibration factor - /// Subfield value to be set - public void SetBaroCalFactor(uint? baroCalFactor) - { - SetFieldValue(1, 0, baroCalFactor, CalibrationFactorSubfield.BaroCalFactor); - } - /// - /// Retrieves the CalibrationDivisor field - /// Units: counts - /// Comment: Calibration factor divisor - /// Returns nullable uint representing the CalibrationDivisor field - public uint? GetCalibrationDivisor() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set CalibrationDivisor field - /// Units: counts - /// Comment: Calibration factor divisor - /// Nullable field value to be set - public void SetCalibrationDivisor(uint? calibrationDivisor_) - { - SetFieldValue(2, 0, calibrationDivisor_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LevelShift field - /// Comment: Level shift value used to shift the ADC value back into range - /// Returns nullable uint representing the LevelShift field - public uint? GetLevelShift() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set LevelShift field - /// Comment: Level shift value used to shift the ADC value back into range - /// Nullable field value to be set - public void SetLevelShift(uint? levelShift_) - { - SetFieldValue(3, 0, levelShift_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the OffsetCal field - /// Comment: Internal Calibration factor - /// Returns nullable int representing the OffsetCal field - public int? GetOffsetCal() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set OffsetCal field - /// Comment: Internal Calibration factor - /// Nullable field value to be set - public void SetOffsetCal(int? offsetCal_) - { - SetFieldValue(4, 0, offsetCal_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/PadMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/PadMesg.cs deleted file mode 100644 index 68d985927..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/PadMesg.cs +++ /dev/null @@ -1,53 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Pad profile message. - /// - public class PadMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public PadMesg() : base(Profile.GetMesg(MesgNum.Pad)) - { - } - - public PadMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/PowerZoneMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/PowerZoneMesg.cs deleted file mode 100644 index 0e247e2f6..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/PowerZoneMesg.cs +++ /dev/null @@ -1,142 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the PowerZone profile message. - /// - public class PowerZoneMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte HighValue = 1; - public const byte Name = 2; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public PowerZoneMesg() : base(Profile.GetMesg(MesgNum.PowerZone)) - { - } - - public PowerZoneMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HighValue field - /// Units: watts - /// Returns nullable ushort representing the HighValue field - public ushort? GetHighValue() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set HighValue field - /// Units: watts - /// Nullable field value to be set - public void SetHighValue(ushort? highValue_) - { - SetFieldValue(1, 0, highValue_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(2, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(2, 0, name_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/RecordMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/RecordMesg.cs deleted file mode 100644 index 6cc6bb024..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/RecordMesg.cs +++ /dev/null @@ -1,2117 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Record profile message. - /// - public class RecordMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte PositionLat = 0; - public const byte PositionLong = 1; - public const byte Altitude = 2; - public const byte HeartRate = 3; - public const byte Cadence = 4; - public const byte Distance = 5; - public const byte Speed = 6; - public const byte Power = 7; - public const byte CompressedSpeedDistance = 8; - public const byte Grade = 9; - public const byte Resistance = 10; - public const byte TimeFromCourse = 11; - public const byte CycleLength = 12; - public const byte Temperature = 13; - public const byte Speed1s = 17; - public const byte Cycles = 18; - public const byte TotalCycles = 19; - public const byte CompressedAccumulatedPower = 28; - public const byte AccumulatedPower = 29; - public const byte LeftRightBalance = 30; - public const byte GpsAccuracy = 31; - public const byte VerticalSpeed = 32; - public const byte Calories = 33; - public const byte VerticalOscillation = 39; - public const byte StanceTimePercent = 40; - public const byte StanceTime = 41; - public const byte ActivityType = 42; - public const byte LeftTorqueEffectiveness = 43; - public const byte RightTorqueEffectiveness = 44; - public const byte LeftPedalSmoothness = 45; - public const byte RightPedalSmoothness = 46; - public const byte CombinedPedalSmoothness = 47; - public const byte Time128 = 48; - public const byte StrokeType = 49; - public const byte Zone = 50; - public const byte BallSpeed = 51; - public const byte Cadence256 = 52; - public const byte FractionalCadence = 53; - public const byte TotalHemoglobinConc = 54; - public const byte TotalHemoglobinConcMin = 55; - public const byte TotalHemoglobinConcMax = 56; - public const byte SaturatedHemoglobinPercent = 57; - public const byte SaturatedHemoglobinPercentMin = 58; - public const byte SaturatedHemoglobinPercentMax = 59; - public const byte DeviceIndex = 62; - public const byte LeftPco = 67; - public const byte RightPco = 68; - public const byte LeftPowerPhase = 69; - public const byte LeftPowerPhasePeak = 70; - public const byte RightPowerPhase = 71; - public const byte RightPowerPhasePeak = 72; - public const byte EnhancedSpeed = 73; - public const byte EnhancedAltitude = 78; - public const byte BatterySoc = 81; - public const byte MotorPower = 82; - public const byte VerticalRatio = 83; - public const byte StanceTimeBalance = 84; - public const byte StepLength = 85; - public const byte AbsolutePressure = 91; - public const byte Depth = 92; - public const byte NextStopDepth = 93; - public const byte NextStopTime = 94; - public const byte TimeToSurface = 95; - public const byte NdlTime = 96; - public const byte CnsLoad = 97; - public const byte N2Load = 98; - public const byte RespirationRate = 99; - public const byte EnhancedRespirationRate = 108; - public const byte Grit = 114; - public const byte Flow = 115; - public const byte EbikeTravelRange = 117; - public const byte EbikeBatteryLevel = 118; - public const byte EbikeAssistMode = 119; - public const byte EbikeAssistLevelPercent = 120; - public const byte CoreTemperature = 139; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public RecordMesg() : base(Profile.GetMesg(MesgNum.Record)) - { - } - - public RecordMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLat field - /// Units: semicircles - /// Returns nullable int representing the PositionLat field - public int? GetPositionLat() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLat(int? positionLat_) - { - SetFieldValue(0, 0, positionLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLong field - /// Units: semicircles - /// Returns nullable int representing the PositionLong field - public int? GetPositionLong() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLong(int? positionLong_) - { - SetFieldValue(1, 0, positionLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Altitude field - /// Units: m - /// Returns nullable float representing the Altitude field - public float? GetAltitude() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Altitude field - /// Units: m - /// Nullable field value to be set - public void SetAltitude(float? altitude_) - { - SetFieldValue(2, 0, altitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HeartRate field - /// Units: bpm - /// Returns nullable byte representing the HeartRate field - public byte? GetHeartRate() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetHeartRate(byte? heartRate_) - { - SetFieldValue(3, 0, heartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Cadence field - /// Units: rpm - /// Returns nullable byte representing the Cadence field - public byte? GetCadence() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Cadence field - /// Units: rpm - /// Nullable field value to be set - public void SetCadence(byte? cadence_) - { - SetFieldValue(4, 0, cadence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Distance field - /// Units: m - /// Returns nullable float representing the Distance field - public float? GetDistance() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Distance field - /// Units: m - /// Nullable field value to be set - public void SetDistance(float? distance_) - { - SetFieldValue(5, 0, distance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Speed field - /// Units: m/s - /// Returns nullable float representing the Speed field - public float? GetSpeed() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Speed field - /// Units: m/s - /// Nullable field value to be set - public void SetSpeed(float? speed_) - { - SetFieldValue(6, 0, speed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Power field - /// Units: watts - /// Returns nullable ushort representing the Power field - public ushort? GetPower() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Power field - /// Units: watts - /// Nullable field value to be set - public void SetPower(ushort? power_) - { - SetFieldValue(7, 0, power_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CompressedSpeedDistance - public int GetNumCompressedSpeedDistance() - { - return GetNumFieldValues(8, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CompressedSpeedDistance field - /// 0 based index of CompressedSpeedDistance element to retrieve - /// Returns nullable byte representing the CompressedSpeedDistance field - public byte? GetCompressedSpeedDistance(int index) - { - Object val = GetFieldValue(8, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set CompressedSpeedDistance field - /// 0 based index of compressed_speed_distance - /// Nullable field value to be set - public void SetCompressedSpeedDistance(int index, byte? compressedSpeedDistance_) - { - SetFieldValue(8, index, compressedSpeedDistance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Grade field - /// Units: % - /// Returns nullable float representing the Grade field - public float? GetGrade() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Grade field - /// Units: % - /// Nullable field value to be set - public void SetGrade(float? grade_) - { - SetFieldValue(9, 0, grade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Resistance field - /// Comment: Relative. 0 is none 254 is Max. - /// Returns nullable byte representing the Resistance field - public byte? GetResistance() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Resistance field - /// Comment: Relative. 0 is none 254 is Max. - /// Nullable field value to be set - public void SetResistance(byte? resistance_) - { - SetFieldValue(10, 0, resistance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeFromCourse field - /// Units: s - /// Returns nullable float representing the TimeFromCourse field - public float? GetTimeFromCourse() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeFromCourse field - /// Units: s - /// Nullable field value to be set - public void SetTimeFromCourse(float? timeFromCourse_) - { - SetFieldValue(11, 0, timeFromCourse_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CycleLength field - /// Units: m - /// Returns nullable float representing the CycleLength field - public float? GetCycleLength() - { - Object val = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CycleLength field - /// Units: m - /// Nullable field value to be set - public void SetCycleLength(float? cycleLength_) - { - SetFieldValue(12, 0, cycleLength_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Temperature field - /// Units: C - /// Returns nullable sbyte representing the Temperature field - public sbyte? GetTemperature() - { - Object val = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set Temperature field - /// Units: C - /// Nullable field value to be set - public void SetTemperature(sbyte? temperature_) - { - SetFieldValue(13, 0, temperature_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Speed1s - public int GetNumSpeed1s() - { - return GetNumFieldValues(17, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Speed1s field - /// Units: m/s - /// Comment: Speed at 1s intervals. Timestamp field indicates time of last array element. - /// 0 based index of Speed1s element to retrieve - /// Returns nullable float representing the Speed1s field - public float? GetSpeed1s(int index) - { - Object val = GetFieldValue(17, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Speed1s field - /// Units: m/s - /// Comment: Speed at 1s intervals. Timestamp field indicates time of last array element. - /// 0 based index of speed_1s - /// Nullable field value to be set - public void SetSpeed1s(int index, float? speed1s_) - { - SetFieldValue(17, index, speed1s_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Cycles field - /// Units: cycles - /// Returns nullable byte representing the Cycles field - public byte? GetCycles() - { - Object val = GetFieldValue(18, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Cycles field - /// Units: cycles - /// Nullable field value to be set - public void SetCycles(byte? cycles_) - { - SetFieldValue(18, 0, cycles_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalCycles field - /// Units: cycles - /// Returns nullable uint representing the TotalCycles field - public uint? GetTotalCycles() - { - Object val = GetFieldValue(19, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TotalCycles field - /// Units: cycles - /// Nullable field value to be set - public void SetTotalCycles(uint? totalCycles_) - { - SetFieldValue(19, 0, totalCycles_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CompressedAccumulatedPower field - /// Units: watts - /// Returns nullable ushort representing the CompressedAccumulatedPower field - public ushort? GetCompressedAccumulatedPower() - { - Object val = GetFieldValue(28, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set CompressedAccumulatedPower field - /// Units: watts - /// Nullable field value to be set - public void SetCompressedAccumulatedPower(ushort? compressedAccumulatedPower_) - { - SetFieldValue(28, 0, compressedAccumulatedPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AccumulatedPower field - /// Units: watts - /// Returns nullable uint representing the AccumulatedPower field - public uint? GetAccumulatedPower() - { - Object val = GetFieldValue(29, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set AccumulatedPower field - /// Units: watts - /// Nullable field value to be set - public void SetAccumulatedPower(uint? accumulatedPower_) - { - SetFieldValue(29, 0, accumulatedPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeftRightBalance field - /// Returns nullable byte representing the LeftRightBalance field - public byte? GetLeftRightBalance() - { - Object val = GetFieldValue(30, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set LeftRightBalance field - /// Nullable field value to be set - public void SetLeftRightBalance(byte? leftRightBalance_) - { - SetFieldValue(30, 0, leftRightBalance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GpsAccuracy field - /// Units: m - /// Returns nullable byte representing the GpsAccuracy field - public byte? GetGpsAccuracy() - { - Object val = GetFieldValue(31, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set GpsAccuracy field - /// Units: m - /// Nullable field value to be set - public void SetGpsAccuracy(byte? gpsAccuracy_) - { - SetFieldValue(31, 0, gpsAccuracy_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the VerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the VerticalSpeed field - public float? GetVerticalSpeed() - { - Object val = GetFieldValue(32, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set VerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetVerticalSpeed(float? verticalSpeed_) - { - SetFieldValue(32, 0, verticalSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Calories field - /// Units: kcal - /// Returns nullable ushort representing the Calories field - public ushort? GetCalories() - { - Object val = GetFieldValue(33, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Calories field - /// Units: kcal - /// Nullable field value to be set - public void SetCalories(ushort? calories_) - { - SetFieldValue(33, 0, calories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the VerticalOscillation field - /// Units: mm - /// Returns nullable float representing the VerticalOscillation field - public float? GetVerticalOscillation() - { - Object val = GetFieldValue(39, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set VerticalOscillation field - /// Units: mm - /// Nullable field value to be set - public void SetVerticalOscillation(float? verticalOscillation_) - { - SetFieldValue(39, 0, verticalOscillation_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StanceTimePercent field - /// Units: percent - /// Returns nullable float representing the StanceTimePercent field - public float? GetStanceTimePercent() - { - Object val = GetFieldValue(40, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set StanceTimePercent field - /// Units: percent - /// Nullable field value to be set - public void SetStanceTimePercent(float? stanceTimePercent_) - { - SetFieldValue(40, 0, stanceTimePercent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StanceTime field - /// Units: ms - /// Returns nullable float representing the StanceTime field - public float? GetStanceTime() - { - Object val = GetFieldValue(41, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set StanceTime field - /// Units: ms - /// Nullable field value to be set - public void SetStanceTime(float? stanceTime_) - { - SetFieldValue(41, 0, stanceTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActivityType field - /// Returns nullable ActivityType enum representing the ActivityType field - public ActivityType? GetActivityType() - { - object obj = GetFieldValue(42, 0, Fit.SubfieldIndexMainField); - ActivityType? value = obj == null ? (ActivityType?)null : (ActivityType)obj; - return value; - } - - /// - /// Set ActivityType field - /// Nullable field value to be set - public void SetActivityType(ActivityType? activityType_) - { - SetFieldValue(42, 0, activityType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeftTorqueEffectiveness field - /// Units: percent - /// Returns nullable float representing the LeftTorqueEffectiveness field - public float? GetLeftTorqueEffectiveness() - { - Object val = GetFieldValue(43, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set LeftTorqueEffectiveness field - /// Units: percent - /// Nullable field value to be set - public void SetLeftTorqueEffectiveness(float? leftTorqueEffectiveness_) - { - SetFieldValue(43, 0, leftTorqueEffectiveness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RightTorqueEffectiveness field - /// Units: percent - /// Returns nullable float representing the RightTorqueEffectiveness field - public float? GetRightTorqueEffectiveness() - { - Object val = GetFieldValue(44, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set RightTorqueEffectiveness field - /// Units: percent - /// Nullable field value to be set - public void SetRightTorqueEffectiveness(float? rightTorqueEffectiveness_) - { - SetFieldValue(44, 0, rightTorqueEffectiveness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeftPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the LeftPedalSmoothness field - public float? GetLeftPedalSmoothness() - { - Object val = GetFieldValue(45, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set LeftPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetLeftPedalSmoothness(float? leftPedalSmoothness_) - { - SetFieldValue(45, 0, leftPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RightPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the RightPedalSmoothness field - public float? GetRightPedalSmoothness() - { - Object val = GetFieldValue(46, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set RightPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetRightPedalSmoothness(float? rightPedalSmoothness_) - { - SetFieldValue(46, 0, rightPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CombinedPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the CombinedPedalSmoothness field - public float? GetCombinedPedalSmoothness() - { - Object val = GetFieldValue(47, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CombinedPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetCombinedPedalSmoothness(float? combinedPedalSmoothness_) - { - SetFieldValue(47, 0, combinedPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Time128 field - /// Units: s - /// Returns nullable float representing the Time128 field - public float? GetTime128() - { - Object val = GetFieldValue(48, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Time128 field - /// Units: s - /// Nullable field value to be set - public void SetTime128(float? time128_) - { - SetFieldValue(48, 0, time128_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StrokeType field - /// Returns nullable StrokeType enum representing the StrokeType field - public StrokeType? GetStrokeType() - { - object obj = GetFieldValue(49, 0, Fit.SubfieldIndexMainField); - StrokeType? value = obj == null ? (StrokeType?)null : (StrokeType)obj; - return value; - } - - /// - /// Set StrokeType field - /// Nullable field value to be set - public void SetStrokeType(StrokeType? strokeType_) - { - SetFieldValue(49, 0, strokeType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Zone field - /// Returns nullable byte representing the Zone field - public byte? GetZone() - { - Object val = GetFieldValue(50, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Zone field - /// Nullable field value to be set - public void SetZone(byte? zone_) - { - SetFieldValue(50, 0, zone_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BallSpeed field - /// Units: m/s - /// Returns nullable float representing the BallSpeed field - public float? GetBallSpeed() - { - Object val = GetFieldValue(51, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set BallSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetBallSpeed(float? ballSpeed_) - { - SetFieldValue(51, 0, ballSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Cadence256 field - /// Units: rpm - /// Comment: Log cadence and fractional cadence for backwards compatability - /// Returns nullable float representing the Cadence256 field - public float? GetCadence256() - { - Object val = GetFieldValue(52, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Cadence256 field - /// Units: rpm - /// Comment: Log cadence and fractional cadence for backwards compatability - /// Nullable field value to be set - public void SetCadence256(float? cadence256_) - { - SetFieldValue(52, 0, cadence256_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FractionalCadence field - /// Units: rpm - /// Returns nullable float representing the FractionalCadence field - public float? GetFractionalCadence() - { - Object val = GetFieldValue(53, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set FractionalCadence field - /// Units: rpm - /// Nullable field value to be set - public void SetFractionalCadence(float? fractionalCadence_) - { - SetFieldValue(53, 0, fractionalCadence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalHemoglobinConc field - /// Units: g/dL - /// Comment: Total saturated and unsaturated hemoglobin - /// Returns nullable float representing the TotalHemoglobinConc field - public float? GetTotalHemoglobinConc() - { - Object val = GetFieldValue(54, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalHemoglobinConc field - /// Units: g/dL - /// Comment: Total saturated and unsaturated hemoglobin - /// Nullable field value to be set - public void SetTotalHemoglobinConc(float? totalHemoglobinConc_) - { - SetFieldValue(54, 0, totalHemoglobinConc_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalHemoglobinConcMin field - /// Units: g/dL - /// Comment: Min saturated and unsaturated hemoglobin - /// Returns nullable float representing the TotalHemoglobinConcMin field - public float? GetTotalHemoglobinConcMin() - { - Object val = GetFieldValue(55, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalHemoglobinConcMin field - /// Units: g/dL - /// Comment: Min saturated and unsaturated hemoglobin - /// Nullable field value to be set - public void SetTotalHemoglobinConcMin(float? totalHemoglobinConcMin_) - { - SetFieldValue(55, 0, totalHemoglobinConcMin_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalHemoglobinConcMax field - /// Units: g/dL - /// Comment: Max saturated and unsaturated hemoglobin - /// Returns nullable float representing the TotalHemoglobinConcMax field - public float? GetTotalHemoglobinConcMax() - { - Object val = GetFieldValue(56, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalHemoglobinConcMax field - /// Units: g/dL - /// Comment: Max saturated and unsaturated hemoglobin - /// Nullable field value to be set - public void SetTotalHemoglobinConcMax(float? totalHemoglobinConcMax_) - { - SetFieldValue(56, 0, totalHemoglobinConcMax_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SaturatedHemoglobinPercent field - /// Units: % - /// Comment: Percentage of hemoglobin saturated with oxygen - /// Returns nullable float representing the SaturatedHemoglobinPercent field - public float? GetSaturatedHemoglobinPercent() - { - Object val = GetFieldValue(57, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set SaturatedHemoglobinPercent field - /// Units: % - /// Comment: Percentage of hemoglobin saturated with oxygen - /// Nullable field value to be set - public void SetSaturatedHemoglobinPercent(float? saturatedHemoglobinPercent_) - { - SetFieldValue(57, 0, saturatedHemoglobinPercent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SaturatedHemoglobinPercentMin field - /// Units: % - /// Comment: Min percentage of hemoglobin saturated with oxygen - /// Returns nullable float representing the SaturatedHemoglobinPercentMin field - public float? GetSaturatedHemoglobinPercentMin() - { - Object val = GetFieldValue(58, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set SaturatedHemoglobinPercentMin field - /// Units: % - /// Comment: Min percentage of hemoglobin saturated with oxygen - /// Nullable field value to be set - public void SetSaturatedHemoglobinPercentMin(float? saturatedHemoglobinPercentMin_) - { - SetFieldValue(58, 0, saturatedHemoglobinPercentMin_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SaturatedHemoglobinPercentMax field - /// Units: % - /// Comment: Max percentage of hemoglobin saturated with oxygen - /// Returns nullable float representing the SaturatedHemoglobinPercentMax field - public float? GetSaturatedHemoglobinPercentMax() - { - Object val = GetFieldValue(59, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set SaturatedHemoglobinPercentMax field - /// Units: % - /// Comment: Max percentage of hemoglobin saturated with oxygen - /// Nullable field value to be set - public void SetSaturatedHemoglobinPercentMax(float? saturatedHemoglobinPercentMax_) - { - SetFieldValue(59, 0, saturatedHemoglobinPercentMax_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeviceIndex field - /// Returns nullable byte representing the DeviceIndex field - public byte? GetDeviceIndex() - { - Object val = GetFieldValue(62, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DeviceIndex field - /// Nullable field value to be set - public void SetDeviceIndex(byte? deviceIndex_) - { - SetFieldValue(62, 0, deviceIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeftPco field - /// Units: mm - /// Comment: Left platform center offset - /// Returns nullable sbyte representing the LeftPco field - public sbyte? GetLeftPco() - { - Object val = GetFieldValue(67, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set LeftPco field - /// Units: mm - /// Comment: Left platform center offset - /// Nullable field value to be set - public void SetLeftPco(sbyte? leftPco_) - { - SetFieldValue(67, 0, leftPco_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RightPco field - /// Units: mm - /// Comment: Right platform center offset - /// Returns nullable sbyte representing the RightPco field - public sbyte? GetRightPco() - { - Object val = GetFieldValue(68, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set RightPco field - /// Units: mm - /// Comment: Right platform center offset - /// Nullable field value to be set - public void SetRightPco(sbyte? rightPco_) - { - SetFieldValue(68, 0, rightPco_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field LeftPowerPhase - public int GetNumLeftPowerPhase() - { - return GetNumFieldValues(69, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeftPowerPhase field - /// Units: degrees - /// Comment: Left power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of LeftPowerPhase element to retrieve - /// Returns nullable float representing the LeftPowerPhase field - public float? GetLeftPowerPhase(int index) - { - Object val = GetFieldValue(69, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set LeftPowerPhase field - /// Units: degrees - /// Comment: Left power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of left_power_phase - /// Nullable field value to be set - public void SetLeftPowerPhase(int index, float? leftPowerPhase_) - { - SetFieldValue(69, index, leftPowerPhase_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field LeftPowerPhasePeak - public int GetNumLeftPowerPhasePeak() - { - return GetNumFieldValues(70, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeftPowerPhasePeak field - /// Units: degrees - /// Comment: Left power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of LeftPowerPhasePeak element to retrieve - /// Returns nullable float representing the LeftPowerPhasePeak field - public float? GetLeftPowerPhasePeak(int index) - { - Object val = GetFieldValue(70, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set LeftPowerPhasePeak field - /// Units: degrees - /// Comment: Left power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of left_power_phase_peak - /// Nullable field value to be set - public void SetLeftPowerPhasePeak(int index, float? leftPowerPhasePeak_) - { - SetFieldValue(70, index, leftPowerPhasePeak_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field RightPowerPhase - public int GetNumRightPowerPhase() - { - return GetNumFieldValues(71, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RightPowerPhase field - /// Units: degrees - /// Comment: Right power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of RightPowerPhase element to retrieve - /// Returns nullable float representing the RightPowerPhase field - public float? GetRightPowerPhase(int index) - { - Object val = GetFieldValue(71, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set RightPowerPhase field - /// Units: degrees - /// Comment: Right power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of right_power_phase - /// Nullable field value to be set - public void SetRightPowerPhase(int index, float? rightPowerPhase_) - { - SetFieldValue(71, index, rightPowerPhase_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field RightPowerPhasePeak - public int GetNumRightPowerPhasePeak() - { - return GetNumFieldValues(72, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RightPowerPhasePeak field - /// Units: degrees - /// Comment: Right power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of RightPowerPhasePeak element to retrieve - /// Returns nullable float representing the RightPowerPhasePeak field - public float? GetRightPowerPhasePeak(int index) - { - Object val = GetFieldValue(72, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set RightPowerPhasePeak field - /// Units: degrees - /// Comment: Right power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of right_power_phase_peak - /// Nullable field value to be set - public void SetRightPowerPhasePeak(int index, float? rightPowerPhasePeak_) - { - SetFieldValue(72, index, rightPowerPhasePeak_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedSpeed field - /// Units: m/s - /// Returns nullable float representing the EnhancedSpeed field - public float? GetEnhancedSpeed() - { - Object val = GetFieldValue(73, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetEnhancedSpeed(float? enhancedSpeed_) - { - SetFieldValue(73, 0, enhancedSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedAltitude field - /// Units: m - /// Returns nullable float representing the EnhancedAltitude field - public float? GetEnhancedAltitude() - { - Object val = GetFieldValue(78, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedAltitude field - /// Units: m - /// Nullable field value to be set - public void SetEnhancedAltitude(float? enhancedAltitude_) - { - SetFieldValue(78, 0, enhancedAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BatterySoc field - /// Units: percent - /// Comment: lev battery state of charge - /// Returns nullable float representing the BatterySoc field - public float? GetBatterySoc() - { - Object val = GetFieldValue(81, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set BatterySoc field - /// Units: percent - /// Comment: lev battery state of charge - /// Nullable field value to be set - public void SetBatterySoc(float? batterySoc_) - { - SetFieldValue(81, 0, batterySoc_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MotorPower field - /// Units: watts - /// Comment: lev motor power - /// Returns nullable ushort representing the MotorPower field - public ushort? GetMotorPower() - { - Object val = GetFieldValue(82, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MotorPower field - /// Units: watts - /// Comment: lev motor power - /// Nullable field value to be set - public void SetMotorPower(ushort? motorPower_) - { - SetFieldValue(82, 0, motorPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the VerticalRatio field - /// Units: percent - /// Returns nullable float representing the VerticalRatio field - public float? GetVerticalRatio() - { - Object val = GetFieldValue(83, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set VerticalRatio field - /// Units: percent - /// Nullable field value to be set - public void SetVerticalRatio(float? verticalRatio_) - { - SetFieldValue(83, 0, verticalRatio_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StanceTimeBalance field - /// Units: percent - /// Returns nullable float representing the StanceTimeBalance field - public float? GetStanceTimeBalance() - { - Object val = GetFieldValue(84, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set StanceTimeBalance field - /// Units: percent - /// Nullable field value to be set - public void SetStanceTimeBalance(float? stanceTimeBalance_) - { - SetFieldValue(84, 0, stanceTimeBalance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StepLength field - /// Units: mm - /// Returns nullable float representing the StepLength field - public float? GetStepLength() - { - Object val = GetFieldValue(85, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set StepLength field - /// Units: mm - /// Nullable field value to be set - public void SetStepLength(float? stepLength_) - { - SetFieldValue(85, 0, stepLength_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AbsolutePressure field - /// Units: Pa - /// Comment: Includes atmospheric pressure - /// Returns nullable uint representing the AbsolutePressure field - public uint? GetAbsolutePressure() - { - Object val = GetFieldValue(91, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set AbsolutePressure field - /// Units: Pa - /// Comment: Includes atmospheric pressure - /// Nullable field value to be set - public void SetAbsolutePressure(uint? absolutePressure_) - { - SetFieldValue(91, 0, absolutePressure_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Depth field - /// Units: m - /// Comment: 0 if above water - /// Returns nullable float representing the Depth field - public float? GetDepth() - { - Object val = GetFieldValue(92, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Depth field - /// Units: m - /// Comment: 0 if above water - /// Nullable field value to be set - public void SetDepth(float? depth_) - { - SetFieldValue(92, 0, depth_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NextStopDepth field - /// Units: m - /// Comment: 0 if above water - /// Returns nullable float representing the NextStopDepth field - public float? GetNextStopDepth() - { - Object val = GetFieldValue(93, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set NextStopDepth field - /// Units: m - /// Comment: 0 if above water - /// Nullable field value to be set - public void SetNextStopDepth(float? nextStopDepth_) - { - SetFieldValue(93, 0, nextStopDepth_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NextStopTime field - /// Units: s - /// Returns nullable uint representing the NextStopTime field - public uint? GetNextStopTime() - { - Object val = GetFieldValue(94, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set NextStopTime field - /// Units: s - /// Nullable field value to be set - public void SetNextStopTime(uint? nextStopTime_) - { - SetFieldValue(94, 0, nextStopTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeToSurface field - /// Units: s - /// Returns nullable uint representing the TimeToSurface field - public uint? GetTimeToSurface() - { - Object val = GetFieldValue(95, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TimeToSurface field - /// Units: s - /// Nullable field value to be set - public void SetTimeToSurface(uint? timeToSurface_) - { - SetFieldValue(95, 0, timeToSurface_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NdlTime field - /// Units: s - /// Returns nullable uint representing the NdlTime field - public uint? GetNdlTime() - { - Object val = GetFieldValue(96, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set NdlTime field - /// Units: s - /// Nullable field value to be set - public void SetNdlTime(uint? ndlTime_) - { - SetFieldValue(96, 0, ndlTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CnsLoad field - /// Units: percent - /// Returns nullable byte representing the CnsLoad field - public byte? GetCnsLoad() - { - Object val = GetFieldValue(97, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set CnsLoad field - /// Units: percent - /// Nullable field value to be set - public void SetCnsLoad(byte? cnsLoad_) - { - SetFieldValue(97, 0, cnsLoad_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the N2Load field - /// Units: percent - /// Returns nullable ushort representing the N2Load field - public ushort? GetN2Load() - { - Object val = GetFieldValue(98, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set N2Load field - /// Units: percent - /// Nullable field value to be set - public void SetN2Load(ushort? n2Load_) - { - SetFieldValue(98, 0, n2Load_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RespirationRate field - /// Units: s - /// Returns nullable byte representing the RespirationRate field - public byte? GetRespirationRate() - { - Object val = GetFieldValue(99, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set RespirationRate field - /// Units: s - /// Nullable field value to be set - public void SetRespirationRate(byte? respirationRate_) - { - SetFieldValue(99, 0, respirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedRespirationRate field - /// Units: Breaths/min - /// Returns nullable float representing the EnhancedRespirationRate field - public float? GetEnhancedRespirationRate() - { - Object val = GetFieldValue(108, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedRespirationRate field - /// Units: Breaths/min - /// Nullable field value to be set - public void SetEnhancedRespirationRate(float? enhancedRespirationRate_) - { - SetFieldValue(108, 0, enhancedRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Grit field - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Returns nullable float representing the Grit field - public float? GetGrit() - { - Object val = GetFieldValue(114, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Grit field - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Nullable field value to be set - public void SetGrit(float? grit_) - { - SetFieldValue(114, 0, grit_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Flow field - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Returns nullable float representing the Flow field - public float? GetFlow() - { - Object val = GetFieldValue(115, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Flow field - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Nullable field value to be set - public void SetFlow(float? flow_) - { - SetFieldValue(115, 0, flow_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EbikeTravelRange field - /// Units: km - /// Returns nullable ushort representing the EbikeTravelRange field - public ushort? GetEbikeTravelRange() - { - Object val = GetFieldValue(117, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set EbikeTravelRange field - /// Units: km - /// Nullable field value to be set - public void SetEbikeTravelRange(ushort? ebikeTravelRange_) - { - SetFieldValue(117, 0, ebikeTravelRange_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EbikeBatteryLevel field - /// Units: percent - /// Returns nullable byte representing the EbikeBatteryLevel field - public byte? GetEbikeBatteryLevel() - { - Object val = GetFieldValue(118, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set EbikeBatteryLevel field - /// Units: percent - /// Nullable field value to be set - public void SetEbikeBatteryLevel(byte? ebikeBatteryLevel_) - { - SetFieldValue(118, 0, ebikeBatteryLevel_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EbikeAssistMode field - /// Units: depends on sensor - /// Returns nullable byte representing the EbikeAssistMode field - public byte? GetEbikeAssistMode() - { - Object val = GetFieldValue(119, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set EbikeAssistMode field - /// Units: depends on sensor - /// Nullable field value to be set - public void SetEbikeAssistMode(byte? ebikeAssistMode_) - { - SetFieldValue(119, 0, ebikeAssistMode_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EbikeAssistLevelPercent field - /// Units: percent - /// Returns nullable byte representing the EbikeAssistLevelPercent field - public byte? GetEbikeAssistLevelPercent() - { - Object val = GetFieldValue(120, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set EbikeAssistLevelPercent field - /// Units: percent - /// Nullable field value to be set - public void SetEbikeAssistLevelPercent(byte? ebikeAssistLevelPercent_) - { - SetFieldValue(120, 0, ebikeAssistLevelPercent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CoreTemperature field - /// Units: C - /// Returns nullable float representing the CoreTemperature field - public float? GetCoreTemperature() - { - Object val = GetFieldValue(139, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set CoreTemperature field - /// Units: C - /// Nullable field value to be set - public void SetCoreTemperature(float? coreTemperature_) - { - SetFieldValue(139, 0, coreTemperature_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ScheduleMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ScheduleMesg.cs deleted file mode 100644 index 977b494cc..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ScheduleMesg.cs +++ /dev/null @@ -1,277 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Schedule profile message. - /// - public class ScheduleMesg : Mesg - { - #region Fields - static class ProductSubfield - { - public static ushort FaveroProduct = 0; - public static ushort GarminProduct = 1; - public static ushort Subfields = 2; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Manufacturer = 0; - public const byte Product = 1; - public const byte SerialNumber = 2; - public const byte TimeCreated = 3; - public const byte Completed = 4; - public const byte Type = 5; - public const byte ScheduledTime = 6; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public ScheduleMesg() : base(Profile.GetMesg(MesgNum.Schedule)) - { - } - - public ScheduleMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Manufacturer field - /// Comment: Corresponds to file_id of scheduled workout / course. - /// Returns nullable ushort representing the Manufacturer field - public ushort? GetManufacturer() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Manufacturer field - /// Comment: Corresponds to file_id of scheduled workout / course. - /// Nullable field value to be set - public void SetManufacturer(ushort? manufacturer_) - { - SetFieldValue(0, 0, manufacturer_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Product field - /// Comment: Corresponds to file_id of scheduled workout / course. - /// Returns nullable ushort representing the Product field - public ushort? GetProduct() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Product field - /// Comment: Corresponds to file_id of scheduled workout / course. - /// Nullable field value to be set - public void SetProduct(ushort? product_) - { - SetFieldValue(1, 0, product_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the FaveroProduct subfield - /// Nullable ushort representing the FaveroProduct subfield - public ushort? GetFaveroProduct() - { - Object val = GetFieldValue(1, 0, ProductSubfield.FaveroProduct); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set FaveroProduct subfield - /// Subfield value to be set - public void SetFaveroProduct(ushort? faveroProduct) - { - SetFieldValue(1, 0, faveroProduct, ProductSubfield.FaveroProduct); - } - - /// - /// Retrieves the GarminProduct subfield - /// Nullable ushort representing the GarminProduct subfield - public ushort? GetGarminProduct() - { - Object val = GetFieldValue(1, 0, ProductSubfield.GarminProduct); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set GarminProduct subfield - /// Subfield value to be set - public void SetGarminProduct(ushort? garminProduct) - { - SetFieldValue(1, 0, garminProduct, ProductSubfield.GarminProduct); - } - /// - /// Retrieves the SerialNumber field - /// Comment: Corresponds to file_id of scheduled workout / course. - /// Returns nullable uint representing the SerialNumber field - public uint? GetSerialNumber() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set SerialNumber field - /// Comment: Corresponds to file_id of scheduled workout / course. - /// Nullable field value to be set - public void SetSerialNumber(uint? serialNumber_) - { - SetFieldValue(2, 0, serialNumber_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeCreated field - /// Comment: Corresponds to file_id of scheduled workout / course. - /// Returns DateTime representing the TimeCreated field - public DateTime GetTimeCreated() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set TimeCreated field - /// Comment: Corresponds to file_id of scheduled workout / course. - /// Nullable field value to be set - public void SetTimeCreated(DateTime timeCreated_) - { - SetFieldValue(3, 0, timeCreated_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Completed field - /// Comment: TRUE if this activity has been started - /// Returns nullable Bool enum representing the Completed field - public Bool? GetCompleted() - { - object obj = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set Completed field - /// Comment: TRUE if this activity has been started - /// Nullable field value to be set - public void SetCompleted(Bool? completed_) - { - SetFieldValue(4, 0, completed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Type field - /// Returns nullable Schedule enum representing the Type field - new public Schedule? GetType() - { - object obj = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - Schedule? value = obj == null ? (Schedule?)null : (Schedule)obj; - return value; - } - - /// - /// Set Type field - /// Nullable field value to be set - public void SetType(Schedule? type_) - { - SetFieldValue(5, 0, type_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ScheduledTime field - /// Returns nullable uint representing the ScheduledTime field - public uint? GetScheduledTime() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set ScheduledTime field - /// Nullable field value to be set - public void SetScheduledTime(uint? scheduledTime_) - { - SetFieldValue(6, 0, scheduledTime_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SdmProfileMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SdmProfileMesg.cs deleted file mode 100644 index ce09b10f5..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SdmProfileMesg.cs +++ /dev/null @@ -1,243 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the SdmProfile profile message. - /// - public class SdmProfileMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Enabled = 0; - public const byte SdmAntId = 1; - public const byte SdmCalFactor = 2; - public const byte Odometer = 3; - public const byte SpeedSource = 4; - public const byte SdmAntIdTransType = 5; - public const byte OdometerRollover = 7; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SdmProfileMesg() : base(Profile.GetMesg(MesgNum.SdmProfile)) - { - } - - public SdmProfileMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Enabled field - /// Returns nullable Bool enum representing the Enabled field - public Bool? GetEnabled() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set Enabled field - /// Nullable field value to be set - public void SetEnabled(Bool? enabled_) - { - SetFieldValue(0, 0, enabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SdmAntId field - /// Returns nullable ushort representing the SdmAntId field - public ushort? GetSdmAntId() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set SdmAntId field - /// Nullable field value to be set - public void SetSdmAntId(ushort? sdmAntId_) - { - SetFieldValue(1, 0, sdmAntId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SdmCalFactor field - /// Units: % - /// Returns nullable float representing the SdmCalFactor field - public float? GetSdmCalFactor() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set SdmCalFactor field - /// Units: % - /// Nullable field value to be set - public void SetSdmCalFactor(float? sdmCalFactor_) - { - SetFieldValue(2, 0, sdmCalFactor_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Odometer field - /// Units: m - /// Returns nullable float representing the Odometer field - public float? GetOdometer() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Odometer field - /// Units: m - /// Nullable field value to be set - public void SetOdometer(float? odometer_) - { - SetFieldValue(3, 0, odometer_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SpeedSource field - /// Comment: Use footpod for speed source instead of GPS - /// Returns nullable Bool enum representing the SpeedSource field - public Bool? GetSpeedSource() - { - object obj = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set SpeedSource field - /// Comment: Use footpod for speed source instead of GPS - /// Nullable field value to be set - public void SetSpeedSource(Bool? speedSource_) - { - SetFieldValue(4, 0, speedSource_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SdmAntIdTransType field - /// Returns nullable byte representing the SdmAntIdTransType field - public byte? GetSdmAntIdTransType() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set SdmAntIdTransType field - /// Nullable field value to be set - public void SetSdmAntIdTransType(byte? sdmAntIdTransType_) - { - SetFieldValue(5, 0, sdmAntIdTransType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the OdometerRollover field - /// Comment: Rollover counter that can be used to extend the odometer - /// Returns nullable byte representing the OdometerRollover field - public byte? GetOdometerRollover() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set OdometerRollover field - /// Comment: Rollover counter that can be used to extend the odometer - /// Nullable field value to be set - public void SetOdometerRollover(byte? odometerRollover_) - { - SetFieldValue(7, 0, odometerRollover_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SegmentFileMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SegmentFileMesg.cs deleted file mode 100644 index 5ed09264c..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SegmentFileMesg.cs +++ /dev/null @@ -1,359 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the SegmentFile profile message. - /// - public class SegmentFileMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte FileUuid = 1; - public const byte Enabled = 3; - public const byte UserProfilePrimaryKey = 4; - public const byte LeaderType = 7; - public const byte LeaderGroupPrimaryKey = 8; - public const byte LeaderActivityId = 9; - public const byte LeaderActivityIdString = 10; - public const byte DefaultRaceLeader = 11; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SegmentFileMesg() : base(Profile.GetMesg(MesgNum.SegmentFile)) - { - } - - public SegmentFileMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FileUuid field - /// Comment: UUID of the segment file - /// Returns byte[] representing the FileUuid field - public byte[] GetFileUuid() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the FileUuid field - /// Comment: UUID of the segment file - /// Returns String representing the FileUuid field - public String GetFileUuidAsString() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set FileUuid field - /// Comment: UUID of the segment file - /// field value to be set - public void SetFileUuid(String fileUuid_) - { - byte[] data = Encoding.UTF8.GetBytes(fileUuid_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(1, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set FileUuid field - /// Comment: UUID of the segment file - /// field value to be set - public void SetFileUuid(byte[] fileUuid_) - { - SetFieldValue(1, 0, fileUuid_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Enabled field - /// Comment: Enabled state of the segment file - /// Returns nullable Bool enum representing the Enabled field - public Bool? GetEnabled() - { - object obj = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set Enabled field - /// Comment: Enabled state of the segment file - /// Nullable field value to be set - public void SetEnabled(Bool? enabled_) - { - SetFieldValue(3, 0, enabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the UserProfilePrimaryKey field - /// Comment: Primary key of the user that created the segment file - /// Returns nullable uint representing the UserProfilePrimaryKey field - public uint? GetUserProfilePrimaryKey() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set UserProfilePrimaryKey field - /// Comment: Primary key of the user that created the segment file - /// Nullable field value to be set - public void SetUserProfilePrimaryKey(uint? userProfilePrimaryKey_) - { - SetFieldValue(4, 0, userProfilePrimaryKey_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field LeaderType - public int GetNumLeaderType() - { - return GetNumFieldValues(7, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeaderType field - /// Comment: Leader type of each leader in the segment file - /// 0 based index of LeaderType element to retrieve - /// Returns nullable SegmentLeaderboardType enum representing the LeaderType field - public SegmentLeaderboardType? GetLeaderType(int index) - { - object obj = GetFieldValue(7, index, Fit.SubfieldIndexMainField); - SegmentLeaderboardType? value = obj == null ? (SegmentLeaderboardType?)null : (SegmentLeaderboardType)obj; - return value; - } - - /// - /// Set LeaderType field - /// Comment: Leader type of each leader in the segment file - /// 0 based index of leader_type - /// Nullable field value to be set - public void SetLeaderType(int index, SegmentLeaderboardType? leaderType_) - { - SetFieldValue(7, index, leaderType_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field LeaderGroupPrimaryKey - public int GetNumLeaderGroupPrimaryKey() - { - return GetNumFieldValues(8, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeaderGroupPrimaryKey field - /// Comment: Group primary key of each leader in the segment file - /// 0 based index of LeaderGroupPrimaryKey element to retrieve - /// Returns nullable uint representing the LeaderGroupPrimaryKey field - public uint? GetLeaderGroupPrimaryKey(int index) - { - Object val = GetFieldValue(8, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set LeaderGroupPrimaryKey field - /// Comment: Group primary key of each leader in the segment file - /// 0 based index of leader_group_primary_key - /// Nullable field value to be set - public void SetLeaderGroupPrimaryKey(int index, uint? leaderGroupPrimaryKey_) - { - SetFieldValue(8, index, leaderGroupPrimaryKey_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field LeaderActivityId - public int GetNumLeaderActivityId() - { - return GetNumFieldValues(9, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeaderActivityId field - /// Comment: Activity ID of each leader in the segment file - /// 0 based index of LeaderActivityId element to retrieve - /// Returns nullable uint representing the LeaderActivityId field - public uint? GetLeaderActivityId(int index) - { - Object val = GetFieldValue(9, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set LeaderActivityId field - /// Comment: Activity ID of each leader in the segment file - /// 0 based index of leader_activity_id - /// Nullable field value to be set - public void SetLeaderActivityId(int index, uint? leaderActivityId_) - { - SetFieldValue(9, index, leaderActivityId_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field LeaderActivityIdString - public int GetNumLeaderActivityIdString() - { - return GetNumFieldValues(10, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeaderActivityIdString field - /// Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - /// 0 based index of LeaderActivityIdString element to retrieve - /// Returns byte[] representing the LeaderActivityIdString field - public byte[] GetLeaderActivityIdString(int index) - { - byte[] data = (byte[])GetFieldValue(10, index, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the LeaderActivityIdString field - /// Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - /// 0 based index of LeaderActivityIdString element to retrieve - /// Returns String representing the LeaderActivityIdString field - public String GetLeaderActivityIdStringAsString(int index) - { - byte[] data = (byte[])GetFieldValue(10, index, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set LeaderActivityIdString field - /// Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - /// 0 based index of LeaderActivityIdString element to retrieve - /// field value to be set - public void SetLeaderActivityIdString(int index, String leaderActivityIdString_) - { - byte[] data = Encoding.UTF8.GetBytes(leaderActivityIdString_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(10, index, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set LeaderActivityIdString field - /// Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - /// 0 based index of leader_activity_id_string - /// field value to be set - public void SetLeaderActivityIdString(int index, byte[] leaderActivityIdString_) - { - SetFieldValue(10, index, leaderActivityIdString_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DefaultRaceLeader field - /// Comment: Index for the Leader Board entry selected as the default race participant - /// Returns nullable byte representing the DefaultRaceLeader field - public byte? GetDefaultRaceLeader() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DefaultRaceLeader field - /// Comment: Index for the Leader Board entry selected as the default race participant - /// Nullable field value to be set - public void SetDefaultRaceLeader(byte? defaultRaceLeader_) - { - SetFieldValue(11, 0, defaultRaceLeader_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SegmentIdMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SegmentIdMesg.cs deleted file mode 100644 index 9c08a725c..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SegmentIdMesg.cs +++ /dev/null @@ -1,301 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the SegmentId profile message. - /// - public class SegmentIdMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Name = 0; - public const byte Uuid = 1; - public const byte Sport = 2; - public const byte Enabled = 3; - public const byte UserProfilePrimaryKey = 4; - public const byte DeviceId = 5; - public const byte DefaultRaceLeader = 6; - public const byte DeleteStatus = 7; - public const byte SelectionType = 8; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SegmentIdMesg() : base(Profile.GetMesg(MesgNum.SegmentId)) - { - } - - public SegmentIdMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Name field - /// Comment: Friendly name assigned to segment - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Comment: Friendly name assigned to segment - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// Comment: Friendly name assigned to segment - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(0, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// Comment: Friendly name assigned to segment - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(0, 0, name_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Uuid field - /// Comment: UUID of the segment - /// Returns byte[] representing the Uuid field - public byte[] GetUuid() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Uuid field - /// Comment: UUID of the segment - /// Returns String representing the Uuid field - public String GetUuidAsString() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Uuid field - /// Comment: UUID of the segment - /// field value to be set - public void SetUuid(String uuid_) - { - byte[] data = Encoding.UTF8.GetBytes(uuid_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(1, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Uuid field - /// Comment: UUID of the segment - /// field value to be set - public void SetUuid(byte[] uuid_) - { - SetFieldValue(1, 0, uuid_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sport field - /// Comment: Sport associated with the segment - /// Returns nullable Sport enum representing the Sport field - public Sport? GetSport() - { - object obj = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - Sport? value = obj == null ? (Sport?)null : (Sport)obj; - return value; - } - - /// - /// Set Sport field - /// Comment: Sport associated with the segment - /// Nullable field value to be set - public void SetSport(Sport? sport_) - { - SetFieldValue(2, 0, sport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Enabled field - /// Comment: Segment enabled for evaluation - /// Returns nullable Bool enum representing the Enabled field - public Bool? GetEnabled() - { - object obj = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - Bool? value = obj == null ? (Bool?)null : (Bool)obj; - return value; - } - - /// - /// Set Enabled field - /// Comment: Segment enabled for evaluation - /// Nullable field value to be set - public void SetEnabled(Bool? enabled_) - { - SetFieldValue(3, 0, enabled_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the UserProfilePrimaryKey field - /// Comment: Primary key of the user that created the segment - /// Returns nullable uint representing the UserProfilePrimaryKey field - public uint? GetUserProfilePrimaryKey() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set UserProfilePrimaryKey field - /// Comment: Primary key of the user that created the segment - /// Nullable field value to be set - public void SetUserProfilePrimaryKey(uint? userProfilePrimaryKey_) - { - SetFieldValue(4, 0, userProfilePrimaryKey_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeviceId field - /// Comment: ID of the device that created the segment - /// Returns nullable uint representing the DeviceId field - public uint? GetDeviceId() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set DeviceId field - /// Comment: ID of the device that created the segment - /// Nullable field value to be set - public void SetDeviceId(uint? deviceId_) - { - SetFieldValue(5, 0, deviceId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DefaultRaceLeader field - /// Comment: Index for the Leader Board entry selected as the default race participant - /// Returns nullable byte representing the DefaultRaceLeader field - public byte? GetDefaultRaceLeader() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DefaultRaceLeader field - /// Comment: Index for the Leader Board entry selected as the default race participant - /// Nullable field value to be set - public void SetDefaultRaceLeader(byte? defaultRaceLeader_) - { - SetFieldValue(6, 0, defaultRaceLeader_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DeleteStatus field - /// Comment: Indicates if any segments should be deleted - /// Returns nullable SegmentDeleteStatus enum representing the DeleteStatus field - public SegmentDeleteStatus? GetDeleteStatus() - { - object obj = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - SegmentDeleteStatus? value = obj == null ? (SegmentDeleteStatus?)null : (SegmentDeleteStatus)obj; - return value; - } - - /// - /// Set DeleteStatus field - /// Comment: Indicates if any segments should be deleted - /// Nullable field value to be set - public void SetDeleteStatus(SegmentDeleteStatus? deleteStatus_) - { - SetFieldValue(7, 0, deleteStatus_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SelectionType field - /// Comment: Indicates how the segment was selected to be sent to the device - /// Returns nullable SegmentSelectionType enum representing the SelectionType field - public SegmentSelectionType? GetSelectionType() - { - object obj = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - SegmentSelectionType? value = obj == null ? (SegmentSelectionType?)null : (SegmentSelectionType)obj; - return value; - } - - /// - /// Set SelectionType field - /// Comment: Indicates how the segment was selected to be sent to the device - /// Nullable field value to be set - public void SetSelectionType(SegmentSelectionType? selectionType_) - { - SetFieldValue(8, 0, selectionType_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SegmentLapMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SegmentLapMesg.cs deleted file mode 100644 index f7029817b..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SegmentLapMesg.cs +++ /dev/null @@ -1,2728 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the SegmentLap profile message. - /// - public class SegmentLapMesg : Mesg - { - #region Fields - static class TotalCyclesSubfield - { - public static ushort TotalStrokes = 0; - public static ushort Subfields = 1; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Timestamp = 253; - public const byte Event = 0; - public const byte EventType = 1; - public const byte StartTime = 2; - public const byte StartPositionLat = 3; - public const byte StartPositionLong = 4; - public const byte EndPositionLat = 5; - public const byte EndPositionLong = 6; - public const byte TotalElapsedTime = 7; - public const byte TotalTimerTime = 8; - public const byte TotalDistance = 9; - public const byte TotalCycles = 10; - public const byte TotalCalories = 11; - public const byte TotalFatCalories = 12; - public const byte AvgSpeed = 13; - public const byte MaxSpeed = 14; - public const byte AvgHeartRate = 15; - public const byte MaxHeartRate = 16; - public const byte AvgCadence = 17; - public const byte MaxCadence = 18; - public const byte AvgPower = 19; - public const byte MaxPower = 20; - public const byte TotalAscent = 21; - public const byte TotalDescent = 22; - public const byte Sport = 23; - public const byte EventGroup = 24; - public const byte NecLat = 25; - public const byte NecLong = 26; - public const byte SwcLat = 27; - public const byte SwcLong = 28; - public const byte Name = 29; - public const byte NormalizedPower = 30; - public const byte LeftRightBalance = 31; - public const byte SubSport = 32; - public const byte TotalWork = 33; - public const byte AvgAltitude = 34; - public const byte MaxAltitude = 35; - public const byte GpsAccuracy = 36; - public const byte AvgGrade = 37; - public const byte AvgPosGrade = 38; - public const byte AvgNegGrade = 39; - public const byte MaxPosGrade = 40; - public const byte MaxNegGrade = 41; - public const byte AvgTemperature = 42; - public const byte MaxTemperature = 43; - public const byte TotalMovingTime = 44; - public const byte AvgPosVerticalSpeed = 45; - public const byte AvgNegVerticalSpeed = 46; - public const byte MaxPosVerticalSpeed = 47; - public const byte MaxNegVerticalSpeed = 48; - public const byte TimeInHrZone = 49; - public const byte TimeInSpeedZone = 50; - public const byte TimeInCadenceZone = 51; - public const byte TimeInPowerZone = 52; - public const byte RepetitionNum = 53; - public const byte MinAltitude = 54; - public const byte MinHeartRate = 55; - public const byte ActiveTime = 56; - public const byte WktStepIndex = 57; - public const byte SportEvent = 58; - public const byte AvgLeftTorqueEffectiveness = 59; - public const byte AvgRightTorqueEffectiveness = 60; - public const byte AvgLeftPedalSmoothness = 61; - public const byte AvgRightPedalSmoothness = 62; - public const byte AvgCombinedPedalSmoothness = 63; - public const byte Status = 64; - public const byte Uuid = 65; - public const byte AvgFractionalCadence = 66; - public const byte MaxFractionalCadence = 67; - public const byte TotalFractionalCycles = 68; - public const byte FrontGearShiftCount = 69; - public const byte RearGearShiftCount = 70; - public const byte TimeStanding = 71; - public const byte StandCount = 72; - public const byte AvgLeftPco = 73; - public const byte AvgRightPco = 74; - public const byte AvgLeftPowerPhase = 75; - public const byte AvgLeftPowerPhasePeak = 76; - public const byte AvgRightPowerPhase = 77; - public const byte AvgRightPowerPhasePeak = 78; - public const byte AvgPowerPosition = 79; - public const byte MaxPowerPosition = 80; - public const byte AvgCadencePosition = 81; - public const byte MaxCadencePosition = 82; - public const byte Manufacturer = 83; - public const byte TotalGrit = 84; - public const byte TotalFlow = 85; - public const byte AvgGrit = 86; - public const byte AvgFlow = 87; - public const byte TotalFractionalAscent = 89; - public const byte TotalFractionalDescent = 90; - public const byte EnhancedAvgAltitude = 91; - public const byte EnhancedMaxAltitude = 92; - public const byte EnhancedMinAltitude = 93; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SegmentLapMesg() : base(Profile.GetMesg(MesgNum.SegmentLap)) - { - } - - public SegmentLapMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Lap end time. - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Lap end time. - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Event field - /// Returns nullable Event enum representing the Event field - public Event? GetEvent() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Event? value = obj == null ? (Event?)null : (Event)obj; - return value; - } - - /// - /// Set Event field - /// Nullable field value to be set - public void SetEvent(Event? event_) - { - SetFieldValue(0, 0, event_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventType field - /// Returns nullable EventType enum representing the EventType field - public EventType? GetEventType() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - EventType? value = obj == null ? (EventType?)null : (EventType)obj; - return value; - } - - /// - /// Set EventType field - /// Nullable field value to be set - public void SetEventType(EventType? eventType_) - { - SetFieldValue(1, 0, eventType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartTime field - /// Returns DateTime representing the StartTime field - public DateTime GetStartTime() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set StartTime field - /// Nullable field value to be set - public void SetStartTime(DateTime startTime_) - { - SetFieldValue(2, 0, startTime_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartPositionLat field - /// Units: semicircles - /// Returns nullable int representing the StartPositionLat field - public int? GetStartPositionLat() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set StartPositionLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetStartPositionLat(int? startPositionLat_) - { - SetFieldValue(3, 0, startPositionLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartPositionLong field - /// Units: semicircles - /// Returns nullable int representing the StartPositionLong field - public int? GetStartPositionLong() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set StartPositionLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetStartPositionLong(int? startPositionLong_) - { - SetFieldValue(4, 0, startPositionLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EndPositionLat field - /// Units: semicircles - /// Returns nullable int representing the EndPositionLat field - public int? GetEndPositionLat() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set EndPositionLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetEndPositionLat(int? endPositionLat_) - { - SetFieldValue(5, 0, endPositionLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EndPositionLong field - /// Units: semicircles - /// Returns nullable int representing the EndPositionLong field - public int? GetEndPositionLong() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set EndPositionLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetEndPositionLong(int? endPositionLong_) - { - SetFieldValue(6, 0, endPositionLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalElapsedTime field - /// Units: s - /// Comment: Time (includes pauses) - /// Returns nullable float representing the TotalElapsedTime field - public float? GetTotalElapsedTime() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalElapsedTime field - /// Units: s - /// Comment: Time (includes pauses) - /// Nullable field value to be set - public void SetTotalElapsedTime(float? totalElapsedTime_) - { - SetFieldValue(7, 0, totalElapsedTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalTimerTime field - /// Units: s - /// Comment: Timer Time (excludes pauses) - /// Returns nullable float representing the TotalTimerTime field - public float? GetTotalTimerTime() - { - Object val = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalTimerTime field - /// Units: s - /// Comment: Timer Time (excludes pauses) - /// Nullable field value to be set - public void SetTotalTimerTime(float? totalTimerTime_) - { - SetFieldValue(8, 0, totalTimerTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalDistance field - /// Units: m - /// Returns nullable float representing the TotalDistance field - public float? GetTotalDistance() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalDistance field - /// Units: m - /// Nullable field value to be set - public void SetTotalDistance(float? totalDistance_) - { - SetFieldValue(9, 0, totalDistance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalCycles field - /// Units: cycles - /// Returns nullable uint representing the TotalCycles field - public uint? GetTotalCycles() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TotalCycles field - /// Units: cycles - /// Nullable field value to be set - public void SetTotalCycles(uint? totalCycles_) - { - SetFieldValue(10, 0, totalCycles_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the TotalStrokes subfield - /// Units: strokes - /// Nullable uint representing the TotalStrokes subfield - public uint? GetTotalStrokes() - { - Object val = GetFieldValue(10, 0, TotalCyclesSubfield.TotalStrokes); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set TotalStrokes subfield - /// Units: strokes - /// Subfield value to be set - public void SetTotalStrokes(uint? totalStrokes) - { - SetFieldValue(10, 0, totalStrokes, TotalCyclesSubfield.TotalStrokes); - } - /// - /// Retrieves the TotalCalories field - /// Units: kcal - /// Returns nullable ushort representing the TotalCalories field - public ushort? GetTotalCalories() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalCalories field - /// Units: kcal - /// Nullable field value to be set - public void SetTotalCalories(ushort? totalCalories_) - { - SetFieldValue(11, 0, totalCalories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFatCalories field - /// Units: kcal - /// Comment: If New Leaf - /// Returns nullable ushort representing the TotalFatCalories field - public ushort? GetTotalFatCalories() - { - Object val = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalFatCalories field - /// Units: kcal - /// Comment: If New Leaf - /// Nullable field value to be set - public void SetTotalFatCalories(ushort? totalFatCalories_) - { - SetFieldValue(12, 0, totalFatCalories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgSpeed field - /// Units: m/s - /// Returns nullable float representing the AvgSpeed field - public float? GetAvgSpeed() - { - Object val = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgSpeed(float? avgSpeed_) - { - SetFieldValue(13, 0, avgSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxSpeed field - /// Units: m/s - /// Returns nullable float representing the MaxSpeed field - public float? GetMaxSpeed() - { - Object val = GetFieldValue(14, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetMaxSpeed(float? maxSpeed_) - { - SetFieldValue(14, 0, maxSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgHeartRate field - /// Units: bpm - /// Returns nullable byte representing the AvgHeartRate field - public byte? GetAvgHeartRate() - { - Object val = GetFieldValue(15, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetAvgHeartRate(byte? avgHeartRate_) - { - SetFieldValue(15, 0, avgHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxHeartRate field - /// Units: bpm - /// Returns nullable byte representing the MaxHeartRate field - public byte? GetMaxHeartRate() - { - Object val = GetFieldValue(16, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetMaxHeartRate(byte? maxHeartRate_) - { - SetFieldValue(16, 0, maxHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgCadence field - /// Units: rpm - /// Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - /// Returns nullable byte representing the AvgCadence field - public byte? GetAvgCadence() - { - Object val = GetFieldValue(17, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgCadence field - /// Units: rpm - /// Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - /// Nullable field value to be set - public void SetAvgCadence(byte? avgCadence_) - { - SetFieldValue(17, 0, avgCadence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxCadence field - /// Units: rpm - /// Returns nullable byte representing the MaxCadence field - public byte? GetMaxCadence() - { - Object val = GetFieldValue(18, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxCadence field - /// Units: rpm - /// Nullable field value to be set - public void SetMaxCadence(byte? maxCadence_) - { - SetFieldValue(18, 0, maxCadence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgPower field - /// Units: watts - /// Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - /// Returns nullable ushort representing the AvgPower field - public ushort? GetAvgPower() - { - Object val = GetFieldValue(19, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AvgPower field - /// Units: watts - /// Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - /// Nullable field value to be set - public void SetAvgPower(ushort? avgPower_) - { - SetFieldValue(19, 0, avgPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPower field - /// Units: watts - /// Returns nullable ushort representing the MaxPower field - public ushort? GetMaxPower() - { - Object val = GetFieldValue(20, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MaxPower field - /// Units: watts - /// Nullable field value to be set - public void SetMaxPower(ushort? maxPower_) - { - SetFieldValue(20, 0, maxPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalAscent field - /// Units: m - /// Returns nullable ushort representing the TotalAscent field - public ushort? GetTotalAscent() - { - Object val = GetFieldValue(21, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalAscent field - /// Units: m - /// Nullable field value to be set - public void SetTotalAscent(ushort? totalAscent_) - { - SetFieldValue(21, 0, totalAscent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalDescent field - /// Units: m - /// Returns nullable ushort representing the TotalDescent field - public ushort? GetTotalDescent() - { - Object val = GetFieldValue(22, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalDescent field - /// Units: m - /// Nullable field value to be set - public void SetTotalDescent(ushort? totalDescent_) - { - SetFieldValue(22, 0, totalDescent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sport field - /// Returns nullable Sport enum representing the Sport field - public Sport? GetSport() - { - object obj = GetFieldValue(23, 0, Fit.SubfieldIndexMainField); - Sport? value = obj == null ? (Sport?)null : (Sport)obj; - return value; - } - - /// - /// Set Sport field - /// Nullable field value to be set - public void SetSport(Sport? sport_) - { - SetFieldValue(23, 0, sport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventGroup field - /// Returns nullable byte representing the EventGroup field - public byte? GetEventGroup() - { - Object val = GetFieldValue(24, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set EventGroup field - /// Nullable field value to be set - public void SetEventGroup(byte? eventGroup_) - { - SetFieldValue(24, 0, eventGroup_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NecLat field - /// Units: semicircles - /// Comment: North east corner latitude. - /// Returns nullable int representing the NecLat field - public int? GetNecLat() - { - Object val = GetFieldValue(25, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set NecLat field - /// Units: semicircles - /// Comment: North east corner latitude. - /// Nullable field value to be set - public void SetNecLat(int? necLat_) - { - SetFieldValue(25, 0, necLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NecLong field - /// Units: semicircles - /// Comment: North east corner longitude. - /// Returns nullable int representing the NecLong field - public int? GetNecLong() - { - Object val = GetFieldValue(26, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set NecLong field - /// Units: semicircles - /// Comment: North east corner longitude. - /// Nullable field value to be set - public void SetNecLong(int? necLong_) - { - SetFieldValue(26, 0, necLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SwcLat field - /// Units: semicircles - /// Comment: South west corner latitude. - /// Returns nullable int representing the SwcLat field - public int? GetSwcLat() - { - Object val = GetFieldValue(27, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set SwcLat field - /// Units: semicircles - /// Comment: South west corner latitude. - /// Nullable field value to be set - public void SetSwcLat(int? swcLat_) - { - SetFieldValue(27, 0, swcLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SwcLong field - /// Units: semicircles - /// Comment: South west corner latitude. - /// Returns nullable int representing the SwcLong field - public int? GetSwcLong() - { - Object val = GetFieldValue(28, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set SwcLong field - /// Units: semicircles - /// Comment: South west corner latitude. - /// Nullable field value to be set - public void SetSwcLong(int? swcLong_) - { - SetFieldValue(28, 0, swcLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(29, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(29, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(29, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(29, 0, name_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NormalizedPower field - /// Units: watts - /// Returns nullable ushort representing the NormalizedPower field - public ushort? GetNormalizedPower() - { - Object val = GetFieldValue(30, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NormalizedPower field - /// Units: watts - /// Nullable field value to be set - public void SetNormalizedPower(ushort? normalizedPower_) - { - SetFieldValue(30, 0, normalizedPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeftRightBalance field - /// Returns nullable ushort representing the LeftRightBalance field - public ushort? GetLeftRightBalance() - { - Object val = GetFieldValue(31, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set LeftRightBalance field - /// Nullable field value to be set - public void SetLeftRightBalance(ushort? leftRightBalance_) - { - SetFieldValue(31, 0, leftRightBalance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SubSport field - /// Returns nullable SubSport enum representing the SubSport field - public SubSport? GetSubSport() - { - object obj = GetFieldValue(32, 0, Fit.SubfieldIndexMainField); - SubSport? value = obj == null ? (SubSport?)null : (SubSport)obj; - return value; - } - - /// - /// Set SubSport field - /// Nullable field value to be set - public void SetSubSport(SubSport? subSport_) - { - SetFieldValue(32, 0, subSport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalWork field - /// Units: J - /// Returns nullable uint representing the TotalWork field - public uint? GetTotalWork() - { - Object val = GetFieldValue(33, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TotalWork field - /// Units: J - /// Nullable field value to be set - public void SetTotalWork(uint? totalWork_) - { - SetFieldValue(33, 0, totalWork_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgAltitude field - /// Units: m - /// Returns nullable float representing the AvgAltitude field - public float? GetAvgAltitude() - { - Object val = GetFieldValue(34, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgAltitude field - /// Units: m - /// Nullable field value to be set - public void SetAvgAltitude(float? avgAltitude_) - { - SetFieldValue(34, 0, avgAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxAltitude field - /// Units: m - /// Returns nullable float representing the MaxAltitude field - public float? GetMaxAltitude() - { - Object val = GetFieldValue(35, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxAltitude field - /// Units: m - /// Nullable field value to be set - public void SetMaxAltitude(float? maxAltitude_) - { - SetFieldValue(35, 0, maxAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GpsAccuracy field - /// Units: m - /// Returns nullable byte representing the GpsAccuracy field - public byte? GetGpsAccuracy() - { - Object val = GetFieldValue(36, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set GpsAccuracy field - /// Units: m - /// Nullable field value to be set - public void SetGpsAccuracy(byte? gpsAccuracy_) - { - SetFieldValue(36, 0, gpsAccuracy_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgGrade field - /// Units: % - /// Returns nullable float representing the AvgGrade field - public float? GetAvgGrade() - { - Object val = GetFieldValue(37, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgGrade field - /// Units: % - /// Nullable field value to be set - public void SetAvgGrade(float? avgGrade_) - { - SetFieldValue(37, 0, avgGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgPosGrade field - /// Units: % - /// Returns nullable float representing the AvgPosGrade field - public float? GetAvgPosGrade() - { - Object val = GetFieldValue(38, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgPosGrade field - /// Units: % - /// Nullable field value to be set - public void SetAvgPosGrade(float? avgPosGrade_) - { - SetFieldValue(38, 0, avgPosGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgNegGrade field - /// Units: % - /// Returns nullable float representing the AvgNegGrade field - public float? GetAvgNegGrade() - { - Object val = GetFieldValue(39, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgNegGrade field - /// Units: % - /// Nullable field value to be set - public void SetAvgNegGrade(float? avgNegGrade_) - { - SetFieldValue(39, 0, avgNegGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPosGrade field - /// Units: % - /// Returns nullable float representing the MaxPosGrade field - public float? GetMaxPosGrade() - { - Object val = GetFieldValue(40, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxPosGrade field - /// Units: % - /// Nullable field value to be set - public void SetMaxPosGrade(float? maxPosGrade_) - { - SetFieldValue(40, 0, maxPosGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxNegGrade field - /// Units: % - /// Returns nullable float representing the MaxNegGrade field - public float? GetMaxNegGrade() - { - Object val = GetFieldValue(41, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxNegGrade field - /// Units: % - /// Nullable field value to be set - public void SetMaxNegGrade(float? maxNegGrade_) - { - SetFieldValue(41, 0, maxNegGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgTemperature field - /// Units: C - /// Returns nullable sbyte representing the AvgTemperature field - public sbyte? GetAvgTemperature() - { - Object val = GetFieldValue(42, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set AvgTemperature field - /// Units: C - /// Nullable field value to be set - public void SetAvgTemperature(sbyte? avgTemperature_) - { - SetFieldValue(42, 0, avgTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxTemperature field - /// Units: C - /// Returns nullable sbyte representing the MaxTemperature field - public sbyte? GetMaxTemperature() - { - Object val = GetFieldValue(43, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set MaxTemperature field - /// Units: C - /// Nullable field value to be set - public void SetMaxTemperature(sbyte? maxTemperature_) - { - SetFieldValue(43, 0, maxTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalMovingTime field - /// Units: s - /// Returns nullable float representing the TotalMovingTime field - public float? GetTotalMovingTime() - { - Object val = GetFieldValue(44, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalMovingTime field - /// Units: s - /// Nullable field value to be set - public void SetTotalMovingTime(float? totalMovingTime_) - { - SetFieldValue(44, 0, totalMovingTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgPosVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the AvgPosVerticalSpeed field - public float? GetAvgPosVerticalSpeed() - { - Object val = GetFieldValue(45, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgPosVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgPosVerticalSpeed(float? avgPosVerticalSpeed_) - { - SetFieldValue(45, 0, avgPosVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgNegVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the AvgNegVerticalSpeed field - public float? GetAvgNegVerticalSpeed() - { - Object val = GetFieldValue(46, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgNegVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgNegVerticalSpeed(float? avgNegVerticalSpeed_) - { - SetFieldValue(46, 0, avgNegVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPosVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the MaxPosVerticalSpeed field - public float? GetMaxPosVerticalSpeed() - { - Object val = GetFieldValue(47, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxPosVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetMaxPosVerticalSpeed(float? maxPosVerticalSpeed_) - { - SetFieldValue(47, 0, maxPosVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxNegVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the MaxNegVerticalSpeed field - public float? GetMaxNegVerticalSpeed() - { - Object val = GetFieldValue(48, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxNegVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetMaxNegVerticalSpeed(float? maxNegVerticalSpeed_) - { - SetFieldValue(48, 0, maxNegVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInHrZone - public int GetNumTimeInHrZone() - { - return GetNumFieldValues(49, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInHrZone field - /// Units: s - /// 0 based index of TimeInHrZone element to retrieve - /// Returns nullable float representing the TimeInHrZone field - public float? GetTimeInHrZone(int index) - { - Object val = GetFieldValue(49, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInHrZone field - /// Units: s - /// 0 based index of time_in_hr_zone - /// Nullable field value to be set - public void SetTimeInHrZone(int index, float? timeInHrZone_) - { - SetFieldValue(49, index, timeInHrZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInSpeedZone - public int GetNumTimeInSpeedZone() - { - return GetNumFieldValues(50, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInSpeedZone field - /// Units: s - /// 0 based index of TimeInSpeedZone element to retrieve - /// Returns nullable float representing the TimeInSpeedZone field - public float? GetTimeInSpeedZone(int index) - { - Object val = GetFieldValue(50, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInSpeedZone field - /// Units: s - /// 0 based index of time_in_speed_zone - /// Nullable field value to be set - public void SetTimeInSpeedZone(int index, float? timeInSpeedZone_) - { - SetFieldValue(50, index, timeInSpeedZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInCadenceZone - public int GetNumTimeInCadenceZone() - { - return GetNumFieldValues(51, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInCadenceZone field - /// Units: s - /// 0 based index of TimeInCadenceZone element to retrieve - /// Returns nullable float representing the TimeInCadenceZone field - public float? GetTimeInCadenceZone(int index) - { - Object val = GetFieldValue(51, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInCadenceZone field - /// Units: s - /// 0 based index of time_in_cadence_zone - /// Nullable field value to be set - public void SetTimeInCadenceZone(int index, float? timeInCadenceZone_) - { - SetFieldValue(51, index, timeInCadenceZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInPowerZone - public int GetNumTimeInPowerZone() - { - return GetNumFieldValues(52, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInPowerZone field - /// Units: s - /// 0 based index of TimeInPowerZone element to retrieve - /// Returns nullable float representing the TimeInPowerZone field - public float? GetTimeInPowerZone(int index) - { - Object val = GetFieldValue(52, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInPowerZone field - /// Units: s - /// 0 based index of time_in_power_zone - /// Nullable field value to be set - public void SetTimeInPowerZone(int index, float? timeInPowerZone_) - { - SetFieldValue(52, index, timeInPowerZone_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RepetitionNum field - /// Returns nullable ushort representing the RepetitionNum field - public ushort? GetRepetitionNum() - { - Object val = GetFieldValue(53, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set RepetitionNum field - /// Nullable field value to be set - public void SetRepetitionNum(ushort? repetitionNum_) - { - SetFieldValue(53, 0, repetitionNum_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinAltitude field - /// Units: m - /// Returns nullable float representing the MinAltitude field - public float? GetMinAltitude() - { - Object val = GetFieldValue(54, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MinAltitude field - /// Units: m - /// Nullable field value to be set - public void SetMinAltitude(float? minAltitude_) - { - SetFieldValue(54, 0, minAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinHeartRate field - /// Units: bpm - /// Returns nullable byte representing the MinHeartRate field - public byte? GetMinHeartRate() - { - Object val = GetFieldValue(55, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MinHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetMinHeartRate(byte? minHeartRate_) - { - SetFieldValue(55, 0, minHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActiveTime field - /// Units: s - /// Returns nullable float representing the ActiveTime field - public float? GetActiveTime() - { - Object val = GetFieldValue(56, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set ActiveTime field - /// Units: s - /// Nullable field value to be set - public void SetActiveTime(float? activeTime_) - { - SetFieldValue(56, 0, activeTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WktStepIndex field - /// Returns nullable ushort representing the WktStepIndex field - public ushort? GetWktStepIndex() - { - Object val = GetFieldValue(57, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set WktStepIndex field - /// Nullable field value to be set - public void SetWktStepIndex(ushort? wktStepIndex_) - { - SetFieldValue(57, 0, wktStepIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SportEvent field - /// Returns nullable SportEvent enum representing the SportEvent field - public SportEvent? GetSportEvent() - { - object obj = GetFieldValue(58, 0, Fit.SubfieldIndexMainField); - SportEvent? value = obj == null ? (SportEvent?)null : (SportEvent)obj; - return value; - } - - /// - /// Set SportEvent field - /// Nullable field value to be set - public void SetSportEvent(SportEvent? sportEvent_) - { - SetFieldValue(58, 0, sportEvent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftTorqueEffectiveness field - /// Units: percent - /// Returns nullable float representing the AvgLeftTorqueEffectiveness field - public float? GetAvgLeftTorqueEffectiveness() - { - Object val = GetFieldValue(59, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftTorqueEffectiveness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgLeftTorqueEffectiveness(float? avgLeftTorqueEffectiveness_) - { - SetFieldValue(59, 0, avgLeftTorqueEffectiveness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightTorqueEffectiveness field - /// Units: percent - /// Returns nullable float representing the AvgRightTorqueEffectiveness field - public float? GetAvgRightTorqueEffectiveness() - { - Object val = GetFieldValue(60, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightTorqueEffectiveness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgRightTorqueEffectiveness(float? avgRightTorqueEffectiveness_) - { - SetFieldValue(60, 0, avgRightTorqueEffectiveness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the AvgLeftPedalSmoothness field - public float? GetAvgLeftPedalSmoothness() - { - Object val = GetFieldValue(61, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgLeftPedalSmoothness(float? avgLeftPedalSmoothness_) - { - SetFieldValue(61, 0, avgLeftPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the AvgRightPedalSmoothness field - public float? GetAvgRightPedalSmoothness() - { - Object val = GetFieldValue(62, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgRightPedalSmoothness(float? avgRightPedalSmoothness_) - { - SetFieldValue(62, 0, avgRightPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgCombinedPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the AvgCombinedPedalSmoothness field - public float? GetAvgCombinedPedalSmoothness() - { - Object val = GetFieldValue(63, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgCombinedPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgCombinedPedalSmoothness(float? avgCombinedPedalSmoothness_) - { - SetFieldValue(63, 0, avgCombinedPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Status field - /// Returns nullable SegmentLapStatus enum representing the Status field - public SegmentLapStatus? GetStatus() - { - object obj = GetFieldValue(64, 0, Fit.SubfieldIndexMainField); - SegmentLapStatus? value = obj == null ? (SegmentLapStatus?)null : (SegmentLapStatus)obj; - return value; - } - - /// - /// Set Status field - /// Nullable field value to be set - public void SetStatus(SegmentLapStatus? status_) - { - SetFieldValue(64, 0, status_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Uuid field - /// Returns byte[] representing the Uuid field - public byte[] GetUuid() - { - byte[] data = (byte[])GetFieldValue(65, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Uuid field - /// Returns String representing the Uuid field - public String GetUuidAsString() - { - byte[] data = (byte[])GetFieldValue(65, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Uuid field - /// field value to be set - public void SetUuid(String uuid_) - { - byte[] data = Encoding.UTF8.GetBytes(uuid_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(65, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Uuid field - /// field value to be set - public void SetUuid(byte[] uuid_) - { - SetFieldValue(65, 0, uuid_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the avg_cadence - /// Returns nullable float representing the AvgFractionalCadence field - public float? GetAvgFractionalCadence() - { - Object val = GetFieldValue(66, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the avg_cadence - /// Nullable field value to be set - public void SetAvgFractionalCadence(float? avgFractionalCadence_) - { - SetFieldValue(66, 0, avgFractionalCadence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the max_cadence - /// Returns nullable float representing the MaxFractionalCadence field - public float? GetMaxFractionalCadence() - { - Object val = GetFieldValue(67, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the max_cadence - /// Nullable field value to be set - public void SetMaxFractionalCadence(float? maxFractionalCadence_) - { - SetFieldValue(67, 0, maxFractionalCadence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFractionalCycles field - /// Units: cycles - /// Comment: fractional part of the total_cycles - /// Returns nullable float representing the TotalFractionalCycles field - public float? GetTotalFractionalCycles() - { - Object val = GetFieldValue(68, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFractionalCycles field - /// Units: cycles - /// Comment: fractional part of the total_cycles - /// Nullable field value to be set - public void SetTotalFractionalCycles(float? totalFractionalCycles_) - { - SetFieldValue(68, 0, totalFractionalCycles_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FrontGearShiftCount field - /// Returns nullable ushort representing the FrontGearShiftCount field - public ushort? GetFrontGearShiftCount() - { - Object val = GetFieldValue(69, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set FrontGearShiftCount field - /// Nullable field value to be set - public void SetFrontGearShiftCount(ushort? frontGearShiftCount_) - { - SetFieldValue(69, 0, frontGearShiftCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RearGearShiftCount field - /// Returns nullable ushort representing the RearGearShiftCount field - public ushort? GetRearGearShiftCount() - { - Object val = GetFieldValue(70, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set RearGearShiftCount field - /// Nullable field value to be set - public void SetRearGearShiftCount(ushort? rearGearShiftCount_) - { - SetFieldValue(70, 0, rearGearShiftCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeStanding field - /// Units: s - /// Comment: Total time spent in the standing position - /// Returns nullable float representing the TimeStanding field - public float? GetTimeStanding() - { - Object val = GetFieldValue(71, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeStanding field - /// Units: s - /// Comment: Total time spent in the standing position - /// Nullable field value to be set - public void SetTimeStanding(float? timeStanding_) - { - SetFieldValue(71, 0, timeStanding_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StandCount field - /// Comment: Number of transitions to the standing state - /// Returns nullable ushort representing the StandCount field - public ushort? GetStandCount() - { - Object val = GetFieldValue(72, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set StandCount field - /// Comment: Number of transitions to the standing state - /// Nullable field value to be set - public void SetStandCount(ushort? standCount_) - { - SetFieldValue(72, 0, standCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPco field - /// Units: mm - /// Comment: Average left platform center offset - /// Returns nullable sbyte representing the AvgLeftPco field - public sbyte? GetAvgLeftPco() - { - Object val = GetFieldValue(73, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set AvgLeftPco field - /// Units: mm - /// Comment: Average left platform center offset - /// Nullable field value to be set - public void SetAvgLeftPco(sbyte? avgLeftPco_) - { - SetFieldValue(73, 0, avgLeftPco_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPco field - /// Units: mm - /// Comment: Average right platform center offset - /// Returns nullable sbyte representing the AvgRightPco field - public sbyte? GetAvgRightPco() - { - Object val = GetFieldValue(74, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set AvgRightPco field - /// Units: mm - /// Comment: Average right platform center offset - /// Nullable field value to be set - public void SetAvgRightPco(sbyte? avgRightPco_) - { - SetFieldValue(74, 0, avgRightPco_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgLeftPowerPhase - public int GetNumAvgLeftPowerPhase() - { - return GetNumFieldValues(75, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPowerPhase field - /// Units: degrees - /// Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of AvgLeftPowerPhase element to retrieve - /// Returns nullable float representing the AvgLeftPowerPhase field - public float? GetAvgLeftPowerPhase(int index) - { - Object val = GetFieldValue(75, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftPowerPhase field - /// Units: degrees - /// Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of avg_left_power_phase - /// Nullable field value to be set - public void SetAvgLeftPowerPhase(int index, float? avgLeftPowerPhase_) - { - SetFieldValue(75, index, avgLeftPowerPhase_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgLeftPowerPhasePeak - public int GetNumAvgLeftPowerPhasePeak() - { - return GetNumFieldValues(76, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPowerPhasePeak field - /// Units: degrees - /// Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of AvgLeftPowerPhasePeak element to retrieve - /// Returns nullable float representing the AvgLeftPowerPhasePeak field - public float? GetAvgLeftPowerPhasePeak(int index) - { - Object val = GetFieldValue(76, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftPowerPhasePeak field - /// Units: degrees - /// Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of avg_left_power_phase_peak - /// Nullable field value to be set - public void SetAvgLeftPowerPhasePeak(int index, float? avgLeftPowerPhasePeak_) - { - SetFieldValue(76, index, avgLeftPowerPhasePeak_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgRightPowerPhase - public int GetNumAvgRightPowerPhase() - { - return GetNumFieldValues(77, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPowerPhase field - /// Units: degrees - /// Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of AvgRightPowerPhase element to retrieve - /// Returns nullable float representing the AvgRightPowerPhase field - public float? GetAvgRightPowerPhase(int index) - { - Object val = GetFieldValue(77, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightPowerPhase field - /// Units: degrees - /// Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of avg_right_power_phase - /// Nullable field value to be set - public void SetAvgRightPowerPhase(int index, float? avgRightPowerPhase_) - { - SetFieldValue(77, index, avgRightPowerPhase_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgRightPowerPhasePeak - public int GetNumAvgRightPowerPhasePeak() - { - return GetNumFieldValues(78, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPowerPhasePeak field - /// Units: degrees - /// Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of AvgRightPowerPhasePeak element to retrieve - /// Returns nullable float representing the AvgRightPowerPhasePeak field - public float? GetAvgRightPowerPhasePeak(int index) - { - Object val = GetFieldValue(78, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightPowerPhasePeak field - /// Units: degrees - /// Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of avg_right_power_phase_peak - /// Nullable field value to be set - public void SetAvgRightPowerPhasePeak(int index, float? avgRightPowerPhasePeak_) - { - SetFieldValue(78, index, avgRightPowerPhasePeak_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgPowerPosition - public int GetNumAvgPowerPosition() - { - return GetNumFieldValues(79, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgPowerPosition field - /// Units: watts - /// Comment: Average power by position. Data value indexes defined by rider_position_type. - /// 0 based index of AvgPowerPosition element to retrieve - /// Returns nullable ushort representing the AvgPowerPosition field - public ushort? GetAvgPowerPosition(int index) - { - Object val = GetFieldValue(79, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AvgPowerPosition field - /// Units: watts - /// Comment: Average power by position. Data value indexes defined by rider_position_type. - /// 0 based index of avg_power_position - /// Nullable field value to be set - public void SetAvgPowerPosition(int index, ushort? avgPowerPosition_) - { - SetFieldValue(79, index, avgPowerPosition_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MaxPowerPosition - public int GetNumMaxPowerPosition() - { - return GetNumFieldValues(80, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPowerPosition field - /// Units: watts - /// Comment: Maximum power by position. Data value indexes defined by rider_position_type. - /// 0 based index of MaxPowerPosition element to retrieve - /// Returns nullable ushort representing the MaxPowerPosition field - public ushort? GetMaxPowerPosition(int index) - { - Object val = GetFieldValue(80, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MaxPowerPosition field - /// Units: watts - /// Comment: Maximum power by position. Data value indexes defined by rider_position_type. - /// 0 based index of max_power_position - /// Nullable field value to be set - public void SetMaxPowerPosition(int index, ushort? maxPowerPosition_) - { - SetFieldValue(80, index, maxPowerPosition_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgCadencePosition - public int GetNumAvgCadencePosition() - { - return GetNumFieldValues(81, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgCadencePosition field - /// Units: rpm - /// Comment: Average cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of AvgCadencePosition element to retrieve - /// Returns nullable byte representing the AvgCadencePosition field - public byte? GetAvgCadencePosition(int index) - { - Object val = GetFieldValue(81, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgCadencePosition field - /// Units: rpm - /// Comment: Average cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of avg_cadence_position - /// Nullable field value to be set - public void SetAvgCadencePosition(int index, byte? avgCadencePosition_) - { - SetFieldValue(81, index, avgCadencePosition_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MaxCadencePosition - public int GetNumMaxCadencePosition() - { - return GetNumFieldValues(82, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxCadencePosition field - /// Units: rpm - /// Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of MaxCadencePosition element to retrieve - /// Returns nullable byte representing the MaxCadencePosition field - public byte? GetMaxCadencePosition(int index) - { - Object val = GetFieldValue(82, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxCadencePosition field - /// Units: rpm - /// Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of max_cadence_position - /// Nullable field value to be set - public void SetMaxCadencePosition(int index, byte? maxCadencePosition_) - { - SetFieldValue(82, index, maxCadencePosition_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Manufacturer field - /// Comment: Manufacturer that produced the segment - /// Returns nullable ushort representing the Manufacturer field - public ushort? GetManufacturer() - { - Object val = GetFieldValue(83, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Manufacturer field - /// Comment: Manufacturer that produced the segment - /// Nullable field value to be set - public void SetManufacturer(ushort? manufacturer_) - { - SetFieldValue(83, 0, manufacturer_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Returns nullable float representing the TotalGrit field - public float? GetTotalGrit() - { - Object val = GetFieldValue(84, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Nullable field value to be set - public void SetTotalGrit(float? totalGrit_) - { - SetFieldValue(84, 0, totalGrit_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Returns nullable float representing the TotalFlow field - public float? GetTotalFlow() - { - Object val = GetFieldValue(85, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Nullable field value to be set - public void SetTotalFlow(float? totalFlow_) - { - SetFieldValue(85, 0, totalFlow_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Returns nullable float representing the AvgGrit field - public float? GetAvgGrit() - { - Object val = GetFieldValue(86, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Nullable field value to be set - public void SetAvgGrit(float? avgGrit_) - { - SetFieldValue(86, 0, avgGrit_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Returns nullable float representing the AvgFlow field - public float? GetAvgFlow() - { - Object val = GetFieldValue(87, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Nullable field value to be set - public void SetAvgFlow(float? avgFlow_) - { - SetFieldValue(87, 0, avgFlow_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFractionalAscent field - /// Units: m - /// Comment: fractional part of total_ascent - /// Returns nullable float representing the TotalFractionalAscent field - public float? GetTotalFractionalAscent() - { - Object val = GetFieldValue(89, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFractionalAscent field - /// Units: m - /// Comment: fractional part of total_ascent - /// Nullable field value to be set - public void SetTotalFractionalAscent(float? totalFractionalAscent_) - { - SetFieldValue(89, 0, totalFractionalAscent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFractionalDescent field - /// Units: m - /// Comment: fractional part of total_descent - /// Returns nullable float representing the TotalFractionalDescent field - public float? GetTotalFractionalDescent() - { - Object val = GetFieldValue(90, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFractionalDescent field - /// Units: m - /// Comment: fractional part of total_descent - /// Nullable field value to be set - public void SetTotalFractionalDescent(float? totalFractionalDescent_) - { - SetFieldValue(90, 0, totalFractionalDescent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedAvgAltitude field - /// Units: m - /// Returns nullable float representing the EnhancedAvgAltitude field - public float? GetEnhancedAvgAltitude() - { - Object val = GetFieldValue(91, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedAvgAltitude field - /// Units: m - /// Nullable field value to be set - public void SetEnhancedAvgAltitude(float? enhancedAvgAltitude_) - { - SetFieldValue(91, 0, enhancedAvgAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMaxAltitude field - /// Units: m - /// Returns nullable float representing the EnhancedMaxAltitude field - public float? GetEnhancedMaxAltitude() - { - Object val = GetFieldValue(92, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMaxAltitude field - /// Units: m - /// Nullable field value to be set - public void SetEnhancedMaxAltitude(float? enhancedMaxAltitude_) - { - SetFieldValue(92, 0, enhancedMaxAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMinAltitude field - /// Units: m - /// Returns nullable float representing the EnhancedMinAltitude field - public float? GetEnhancedMinAltitude() - { - Object val = GetFieldValue(93, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMinAltitude field - /// Units: m - /// Nullable field value to be set - public void SetEnhancedMinAltitude(float? enhancedMinAltitude_) - { - SetFieldValue(93, 0, enhancedMinAltitude_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SegmentLeaderboardEntryMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SegmentLeaderboardEntryMesg.cs deleted file mode 100644 index a2fdd3ceb..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SegmentLeaderboardEntryMesg.cs +++ /dev/null @@ -1,264 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the SegmentLeaderboardEntry profile message. - /// - public class SegmentLeaderboardEntryMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Name = 0; - public const byte Type = 1; - public const byte GroupPrimaryKey = 2; - public const byte ActivityId = 3; - public const byte SegmentTime = 4; - public const byte ActivityIdString = 5; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SegmentLeaderboardEntryMesg() : base(Profile.GetMesg(MesgNum.SegmentLeaderboardEntry)) - { - } - - public SegmentLeaderboardEntryMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Comment: Friendly name assigned to leader - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Comment: Friendly name assigned to leader - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// Comment: Friendly name assigned to leader - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(0, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// Comment: Friendly name assigned to leader - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(0, 0, name_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Type field - /// Comment: Leader classification - /// Returns nullable SegmentLeaderboardType enum representing the Type field - new public SegmentLeaderboardType? GetType() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - SegmentLeaderboardType? value = obj == null ? (SegmentLeaderboardType?)null : (SegmentLeaderboardType)obj; - return value; - } - - /// - /// Set Type field - /// Comment: Leader classification - /// Nullable field value to be set - public void SetType(SegmentLeaderboardType? type_) - { - SetFieldValue(1, 0, type_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GroupPrimaryKey field - /// Comment: Primary user ID of this leader - /// Returns nullable uint representing the GroupPrimaryKey field - public uint? GetGroupPrimaryKey() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set GroupPrimaryKey field - /// Comment: Primary user ID of this leader - /// Nullable field value to be set - public void SetGroupPrimaryKey(uint? groupPrimaryKey_) - { - SetFieldValue(2, 0, groupPrimaryKey_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActivityId field - /// Comment: ID of the activity associated with this leader time - /// Returns nullable uint representing the ActivityId field - public uint? GetActivityId() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set ActivityId field - /// Comment: ID of the activity associated with this leader time - /// Nullable field value to be set - public void SetActivityId(uint? activityId_) - { - SetFieldValue(3, 0, activityId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SegmentTime field - /// Units: s - /// Comment: Segment Time (includes pauses) - /// Returns nullable float representing the SegmentTime field - public float? GetSegmentTime() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set SegmentTime field - /// Units: s - /// Comment: Segment Time (includes pauses) - /// Nullable field value to be set - public void SetSegmentTime(float? segmentTime_) - { - SetFieldValue(4, 0, segmentTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActivityIdString field - /// Comment: String version of the activity_id. 21 characters long, express in decimal - /// Returns byte[] representing the ActivityIdString field - public byte[] GetActivityIdString() - { - byte[] data = (byte[])GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the ActivityIdString field - /// Comment: String version of the activity_id. 21 characters long, express in decimal - /// Returns String representing the ActivityIdString field - public String GetActivityIdStringAsString() - { - byte[] data = (byte[])GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set ActivityIdString field - /// Comment: String version of the activity_id. 21 characters long, express in decimal - /// field value to be set - public void SetActivityIdString(String activityIdString_) - { - byte[] data = Encoding.UTF8.GetBytes(activityIdString_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(5, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set ActivityIdString field - /// Comment: String version of the activity_id. 21 characters long, express in decimal - /// field value to be set - public void SetActivityIdString(byte[] activityIdString_) - { - SetFieldValue(5, 0, activityIdString_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SegmentPointMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SegmentPointMesg.cs deleted file mode 100644 index 2d564f211..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SegmentPointMesg.cs +++ /dev/null @@ -1,253 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the SegmentPoint profile message. - /// - public class SegmentPointMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte PositionLat = 1; - public const byte PositionLong = 2; - public const byte Distance = 3; - public const byte Altitude = 4; - public const byte LeaderTime = 5; - public const byte EnhancedAltitude = 6; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SegmentPointMesg() : base(Profile.GetMesg(MesgNum.SegmentPoint)) - { - } - - public SegmentPointMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLat field - /// Units: semicircles - /// Returns nullable int representing the PositionLat field - public int? GetPositionLat() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLat(int? positionLat_) - { - SetFieldValue(1, 0, positionLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionLong field - /// Units: semicircles - /// Returns nullable int representing the PositionLong field - public int? GetPositionLong() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set PositionLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetPositionLong(int? positionLong_) - { - SetFieldValue(2, 0, positionLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Distance field - /// Units: m - /// Comment: Accumulated distance along the segment at the described point - /// Returns nullable float representing the Distance field - public float? GetDistance() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Distance field - /// Units: m - /// Comment: Accumulated distance along the segment at the described point - /// Nullable field value to be set - public void SetDistance(float? distance_) - { - SetFieldValue(3, 0, distance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Altitude field - /// Units: m - /// Comment: Accumulated altitude along the segment at the described point - /// Returns nullable float representing the Altitude field - public float? GetAltitude() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Altitude field - /// Units: m - /// Comment: Accumulated altitude along the segment at the described point - /// Nullable field value to be set - public void SetAltitude(float? altitude_) - { - SetFieldValue(4, 0, altitude_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field LeaderTime - public int GetNumLeaderTime() - { - return GetNumFieldValues(5, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeaderTime field - /// Units: s - /// Comment: Accumualted time each leader board member required to reach the described point. This value is zero for all leader board members at the starting point of the segment. - /// 0 based index of LeaderTime element to retrieve - /// Returns nullable float representing the LeaderTime field - public float? GetLeaderTime(int index) - { - Object val = GetFieldValue(5, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set LeaderTime field - /// Units: s - /// Comment: Accumualted time each leader board member required to reach the described point. This value is zero for all leader board members at the starting point of the segment. - /// 0 based index of leader_time - /// Nullable field value to be set - public void SetLeaderTime(int index, float? leaderTime_) - { - SetFieldValue(5, index, leaderTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedAltitude field - /// Units: m - /// Comment: Accumulated altitude along the segment at the described point - /// Returns nullable float representing the EnhancedAltitude field - public float? GetEnhancedAltitude() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedAltitude field - /// Units: m - /// Comment: Accumulated altitude along the segment at the described point - /// Nullable field value to be set - public void SetEnhancedAltitude(float? enhancedAltitude_) - { - SetFieldValue(6, 0, enhancedAltitude_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SessionMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SessionMesg.cs deleted file mode 100644 index 2f6563bae..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SessionMesg.cs +++ /dev/null @@ -1,4007 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Session profile message. - /// - public class SessionMesg : Mesg - { - #region Fields - static class TotalCyclesSubfield - { - public static ushort TotalStrides = 0; - public static ushort TotalStrokes = 1; - public static ushort Subfields = 2; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - static class AvgCadenceSubfield - { - public static ushort AvgRunningCadence = 0; - public static ushort Subfields = 1; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - static class MaxCadenceSubfield - { - public static ushort MaxRunningCadence = 0; - public static ushort Subfields = 1; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Timestamp = 253; - public const byte Event = 0; - public const byte EventType = 1; - public const byte StartTime = 2; - public const byte StartPositionLat = 3; - public const byte StartPositionLong = 4; - public const byte Sport = 5; - public const byte SubSport = 6; - public const byte TotalElapsedTime = 7; - public const byte TotalTimerTime = 8; - public const byte TotalDistance = 9; - public const byte TotalCycles = 10; - public const byte TotalCalories = 11; - public const byte TotalFatCalories = 13; - public const byte AvgSpeed = 14; - public const byte MaxSpeed = 15; - public const byte AvgHeartRate = 16; - public const byte MaxHeartRate = 17; - public const byte AvgCadence = 18; - public const byte MaxCadence = 19; - public const byte AvgPower = 20; - public const byte MaxPower = 21; - public const byte TotalAscent = 22; - public const byte TotalDescent = 23; - public const byte TotalTrainingEffect = 24; - public const byte FirstLapIndex = 25; - public const byte NumLaps = 26; - public const byte EventGroup = 27; - public const byte Trigger = 28; - public const byte NecLat = 29; - public const byte NecLong = 30; - public const byte SwcLat = 31; - public const byte SwcLong = 32; - public const byte NumLengths = 33; - public const byte NormalizedPower = 34; - public const byte TrainingStressScore = 35; - public const byte IntensityFactor = 36; - public const byte LeftRightBalance = 37; - public const byte AvgStrokeCount = 41; - public const byte AvgStrokeDistance = 42; - public const byte SwimStroke = 43; - public const byte PoolLength = 44; - public const byte ThresholdPower = 45; - public const byte PoolLengthUnit = 46; - public const byte NumActiveLengths = 47; - public const byte TotalWork = 48; - public const byte AvgAltitude = 49; - public const byte MaxAltitude = 50; - public const byte GpsAccuracy = 51; - public const byte AvgGrade = 52; - public const byte AvgPosGrade = 53; - public const byte AvgNegGrade = 54; - public const byte MaxPosGrade = 55; - public const byte MaxNegGrade = 56; - public const byte AvgTemperature = 57; - public const byte MaxTemperature = 58; - public const byte TotalMovingTime = 59; - public const byte AvgPosVerticalSpeed = 60; - public const byte AvgNegVerticalSpeed = 61; - public const byte MaxPosVerticalSpeed = 62; - public const byte MaxNegVerticalSpeed = 63; - public const byte MinHeartRate = 64; - public const byte TimeInHrZone = 65; - public const byte TimeInSpeedZone = 66; - public const byte TimeInCadenceZone = 67; - public const byte TimeInPowerZone = 68; - public const byte AvgLapTime = 69; - public const byte BestLapIndex = 70; - public const byte MinAltitude = 71; - public const byte PlayerScore = 82; - public const byte OpponentScore = 83; - public const byte OpponentName = 84; - public const byte StrokeCount = 85; - public const byte ZoneCount = 86; - public const byte MaxBallSpeed = 87; - public const byte AvgBallSpeed = 88; - public const byte AvgVerticalOscillation = 89; - public const byte AvgStanceTimePercent = 90; - public const byte AvgStanceTime = 91; - public const byte AvgFractionalCadence = 92; - public const byte MaxFractionalCadence = 93; - public const byte TotalFractionalCycles = 94; - public const byte AvgTotalHemoglobinConc = 95; - public const byte MinTotalHemoglobinConc = 96; - public const byte MaxTotalHemoglobinConc = 97; - public const byte AvgSaturatedHemoglobinPercent = 98; - public const byte MinSaturatedHemoglobinPercent = 99; - public const byte MaxSaturatedHemoglobinPercent = 100; - public const byte AvgLeftTorqueEffectiveness = 101; - public const byte AvgRightTorqueEffectiveness = 102; - public const byte AvgLeftPedalSmoothness = 103; - public const byte AvgRightPedalSmoothness = 104; - public const byte AvgCombinedPedalSmoothness = 105; - public const byte SportIndex = 111; - public const byte TimeStanding = 112; - public const byte StandCount = 113; - public const byte AvgLeftPco = 114; - public const byte AvgRightPco = 115; - public const byte AvgLeftPowerPhase = 116; - public const byte AvgLeftPowerPhasePeak = 117; - public const byte AvgRightPowerPhase = 118; - public const byte AvgRightPowerPhasePeak = 119; - public const byte AvgPowerPosition = 120; - public const byte MaxPowerPosition = 121; - public const byte AvgCadencePosition = 122; - public const byte MaxCadencePosition = 123; - public const byte EnhancedAvgSpeed = 124; - public const byte EnhancedMaxSpeed = 125; - public const byte EnhancedAvgAltitude = 126; - public const byte EnhancedMinAltitude = 127; - public const byte EnhancedMaxAltitude = 128; - public const byte AvgLevMotorPower = 129; - public const byte MaxLevMotorPower = 130; - public const byte LevBatteryConsumption = 131; - public const byte AvgVerticalRatio = 132; - public const byte AvgStanceTimeBalance = 133; - public const byte AvgStepLength = 134; - public const byte TotalAnaerobicTrainingEffect = 137; - public const byte AvgVam = 139; - public const byte AvgRespirationRate = 147; - public const byte MaxRespirationRate = 148; - public const byte MinRespirationRate = 149; - public const byte TrainingLoadPeak = 168; - public const byte EnhancedAvgRespirationRate = 169; - public const byte EnhancedMaxRespirationRate = 170; - public const byte EnhancedMinRespirationRate = 180; - public const byte TotalGrit = 181; - public const byte TotalFlow = 182; - public const byte JumpCount = 183; - public const byte AvgGrit = 186; - public const byte AvgFlow = 187; - public const byte TotalFractionalAscent = 199; - public const byte TotalFractionalDescent = 200; - public const byte AvgCoreTemperature = 208; - public const byte MinCoreTemperature = 209; - public const byte MaxCoreTemperature = 210; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SessionMesg() : base(Profile.GetMesg(MesgNum.Session)) - { - } - - public SessionMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Comment: Selected bit is set for the current session. - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Comment: Selected bit is set for the current session. - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Sesson end time. - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Sesson end time. - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Event field - /// Comment: session - /// Returns nullable Event enum representing the Event field - public Event? GetEvent() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Event? value = obj == null ? (Event?)null : (Event)obj; - return value; - } - - /// - /// Set Event field - /// Comment: session - /// Nullable field value to be set - public void SetEvent(Event? event_) - { - SetFieldValue(0, 0, event_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventType field - /// Comment: stop - /// Returns nullable EventType enum representing the EventType field - public EventType? GetEventType() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - EventType? value = obj == null ? (EventType?)null : (EventType)obj; - return value; - } - - /// - /// Set EventType field - /// Comment: stop - /// Nullable field value to be set - public void SetEventType(EventType? eventType_) - { - SetFieldValue(1, 0, eventType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartTime field - /// Returns DateTime representing the StartTime field - public DateTime GetStartTime() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set StartTime field - /// Nullable field value to be set - public void SetStartTime(DateTime startTime_) - { - SetFieldValue(2, 0, startTime_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartPositionLat field - /// Units: semicircles - /// Returns nullable int representing the StartPositionLat field - public int? GetStartPositionLat() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set StartPositionLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetStartPositionLat(int? startPositionLat_) - { - SetFieldValue(3, 0, startPositionLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartPositionLong field - /// Units: semicircles - /// Returns nullable int representing the StartPositionLong field - public int? GetStartPositionLong() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set StartPositionLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetStartPositionLong(int? startPositionLong_) - { - SetFieldValue(4, 0, startPositionLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sport field - /// Returns nullable Sport enum representing the Sport field - public Sport? GetSport() - { - object obj = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - Sport? value = obj == null ? (Sport?)null : (Sport)obj; - return value; - } - - /// - /// Set Sport field - /// Nullable field value to be set - public void SetSport(Sport? sport_) - { - SetFieldValue(5, 0, sport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SubSport field - /// Returns nullable SubSport enum representing the SubSport field - public SubSport? GetSubSport() - { - object obj = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - SubSport? value = obj == null ? (SubSport?)null : (SubSport)obj; - return value; - } - - /// - /// Set SubSport field - /// Nullable field value to be set - public void SetSubSport(SubSport? subSport_) - { - SetFieldValue(6, 0, subSport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalElapsedTime field - /// Units: s - /// Comment: Time (includes pauses) - /// Returns nullable float representing the TotalElapsedTime field - public float? GetTotalElapsedTime() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalElapsedTime field - /// Units: s - /// Comment: Time (includes pauses) - /// Nullable field value to be set - public void SetTotalElapsedTime(float? totalElapsedTime_) - { - SetFieldValue(7, 0, totalElapsedTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalTimerTime field - /// Units: s - /// Comment: Timer Time (excludes pauses) - /// Returns nullable float representing the TotalTimerTime field - public float? GetTotalTimerTime() - { - Object val = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalTimerTime field - /// Units: s - /// Comment: Timer Time (excludes pauses) - /// Nullable field value to be set - public void SetTotalTimerTime(float? totalTimerTime_) - { - SetFieldValue(8, 0, totalTimerTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalDistance field - /// Units: m - /// Returns nullable float representing the TotalDistance field - public float? GetTotalDistance() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalDistance field - /// Units: m - /// Nullable field value to be set - public void SetTotalDistance(float? totalDistance_) - { - SetFieldValue(9, 0, totalDistance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalCycles field - /// Units: cycles - /// Returns nullable uint representing the TotalCycles field - public uint? GetTotalCycles() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TotalCycles field - /// Units: cycles - /// Nullable field value to be set - public void SetTotalCycles(uint? totalCycles_) - { - SetFieldValue(10, 0, totalCycles_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the TotalStrides subfield - /// Units: strides - /// Nullable uint representing the TotalStrides subfield - public uint? GetTotalStrides() - { - Object val = GetFieldValue(10, 0, TotalCyclesSubfield.TotalStrides); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set TotalStrides subfield - /// Units: strides - /// Subfield value to be set - public void SetTotalStrides(uint? totalStrides) - { - SetFieldValue(10, 0, totalStrides, TotalCyclesSubfield.TotalStrides); - } - - /// - /// Retrieves the TotalStrokes subfield - /// Units: strokes - /// Nullable uint representing the TotalStrokes subfield - public uint? GetTotalStrokes() - { - Object val = GetFieldValue(10, 0, TotalCyclesSubfield.TotalStrokes); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set TotalStrokes subfield - /// Units: strokes - /// Subfield value to be set - public void SetTotalStrokes(uint? totalStrokes) - { - SetFieldValue(10, 0, totalStrokes, TotalCyclesSubfield.TotalStrokes); - } - /// - /// Retrieves the TotalCalories field - /// Units: kcal - /// Returns nullable ushort representing the TotalCalories field - public ushort? GetTotalCalories() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalCalories field - /// Units: kcal - /// Nullable field value to be set - public void SetTotalCalories(ushort? totalCalories_) - { - SetFieldValue(11, 0, totalCalories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFatCalories field - /// Units: kcal - /// Returns nullable ushort representing the TotalFatCalories field - public ushort? GetTotalFatCalories() - { - Object val = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalFatCalories field - /// Units: kcal - /// Nullable field value to be set - public void SetTotalFatCalories(ushort? totalFatCalories_) - { - SetFieldValue(13, 0, totalFatCalories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgSpeed field - /// Units: m/s - /// Comment: total_distance / total_timer_time - /// Returns nullable float representing the AvgSpeed field - public float? GetAvgSpeed() - { - Object val = GetFieldValue(14, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgSpeed field - /// Units: m/s - /// Comment: total_distance / total_timer_time - /// Nullable field value to be set - public void SetAvgSpeed(float? avgSpeed_) - { - SetFieldValue(14, 0, avgSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxSpeed field - /// Units: m/s - /// Returns nullable float representing the MaxSpeed field - public float? GetMaxSpeed() - { - Object val = GetFieldValue(15, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetMaxSpeed(float? maxSpeed_) - { - SetFieldValue(15, 0, maxSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgHeartRate field - /// Units: bpm - /// Comment: average heart rate (excludes pause time) - /// Returns nullable byte representing the AvgHeartRate field - public byte? GetAvgHeartRate() - { - Object val = GetFieldValue(16, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgHeartRate field - /// Units: bpm - /// Comment: average heart rate (excludes pause time) - /// Nullable field value to be set - public void SetAvgHeartRate(byte? avgHeartRate_) - { - SetFieldValue(16, 0, avgHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxHeartRate field - /// Units: bpm - /// Returns nullable byte representing the MaxHeartRate field - public byte? GetMaxHeartRate() - { - Object val = GetFieldValue(17, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetMaxHeartRate(byte? maxHeartRate_) - { - SetFieldValue(17, 0, maxHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgCadence field - /// Units: rpm - /// Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - /// Returns nullable byte representing the AvgCadence field - public byte? GetAvgCadence() - { - Object val = GetFieldValue(18, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgCadence field - /// Units: rpm - /// Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - /// Nullable field value to be set - public void SetAvgCadence(byte? avgCadence_) - { - SetFieldValue(18, 0, avgCadence_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the AvgRunningCadence subfield - /// Units: strides/min - /// Nullable byte representing the AvgRunningCadence subfield - public byte? GetAvgRunningCadence() - { - Object val = GetFieldValue(18, 0, AvgCadenceSubfield.AvgRunningCadence); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set AvgRunningCadence subfield - /// Units: strides/min - /// Subfield value to be set - public void SetAvgRunningCadence(byte? avgRunningCadence) - { - SetFieldValue(18, 0, avgRunningCadence, AvgCadenceSubfield.AvgRunningCadence); - } - /// - /// Retrieves the MaxCadence field - /// Units: rpm - /// Returns nullable byte representing the MaxCadence field - public byte? GetMaxCadence() - { - Object val = GetFieldValue(19, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxCadence field - /// Units: rpm - /// Nullable field value to be set - public void SetMaxCadence(byte? maxCadence_) - { - SetFieldValue(19, 0, maxCadence_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the MaxRunningCadence subfield - /// Units: strides/min - /// Nullable byte representing the MaxRunningCadence subfield - public byte? GetMaxRunningCadence() - { - Object val = GetFieldValue(19, 0, MaxCadenceSubfield.MaxRunningCadence); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// - /// Set MaxRunningCadence subfield - /// Units: strides/min - /// Subfield value to be set - public void SetMaxRunningCadence(byte? maxRunningCadence) - { - SetFieldValue(19, 0, maxRunningCadence, MaxCadenceSubfield.MaxRunningCadence); - } - /// - /// Retrieves the AvgPower field - /// Units: watts - /// Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - /// Returns nullable ushort representing the AvgPower field - public ushort? GetAvgPower() - { - Object val = GetFieldValue(20, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AvgPower field - /// Units: watts - /// Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - /// Nullable field value to be set - public void SetAvgPower(ushort? avgPower_) - { - SetFieldValue(20, 0, avgPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPower field - /// Units: watts - /// Returns nullable ushort representing the MaxPower field - public ushort? GetMaxPower() - { - Object val = GetFieldValue(21, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MaxPower field - /// Units: watts - /// Nullable field value to be set - public void SetMaxPower(ushort? maxPower_) - { - SetFieldValue(21, 0, maxPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalAscent field - /// Units: m - /// Returns nullable ushort representing the TotalAscent field - public ushort? GetTotalAscent() - { - Object val = GetFieldValue(22, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalAscent field - /// Units: m - /// Nullable field value to be set - public void SetTotalAscent(ushort? totalAscent_) - { - SetFieldValue(22, 0, totalAscent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalDescent field - /// Units: m - /// Returns nullable ushort representing the TotalDescent field - public ushort? GetTotalDescent() - { - Object val = GetFieldValue(23, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TotalDescent field - /// Units: m - /// Nullable field value to be set - public void SetTotalDescent(ushort? totalDescent_) - { - SetFieldValue(23, 0, totalDescent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalTrainingEffect field - /// Returns nullable float representing the TotalTrainingEffect field - public float? GetTotalTrainingEffect() - { - Object val = GetFieldValue(24, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalTrainingEffect field - /// Nullable field value to be set - public void SetTotalTrainingEffect(float? totalTrainingEffect_) - { - SetFieldValue(24, 0, totalTrainingEffect_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FirstLapIndex field - /// Returns nullable ushort representing the FirstLapIndex field - public ushort? GetFirstLapIndex() - { - Object val = GetFieldValue(25, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set FirstLapIndex field - /// Nullable field value to be set - public void SetFirstLapIndex(ushort? firstLapIndex_) - { - SetFieldValue(25, 0, firstLapIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NumLaps field - /// Returns nullable ushort representing the NumLaps field - public ushort? GetNumLaps() - { - Object val = GetFieldValue(26, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NumLaps field - /// Nullable field value to be set - public void SetNumLaps(ushort? numLaps_) - { - SetFieldValue(26, 0, numLaps_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EventGroup field - /// Returns nullable byte representing the EventGroup field - public byte? GetEventGroup() - { - Object val = GetFieldValue(27, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set EventGroup field - /// Nullable field value to be set - public void SetEventGroup(byte? eventGroup_) - { - SetFieldValue(27, 0, eventGroup_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Trigger field - /// Returns nullable SessionTrigger enum representing the Trigger field - public SessionTrigger? GetTrigger() - { - object obj = GetFieldValue(28, 0, Fit.SubfieldIndexMainField); - SessionTrigger? value = obj == null ? (SessionTrigger?)null : (SessionTrigger)obj; - return value; - } - - /// - /// Set Trigger field - /// Nullable field value to be set - public void SetTrigger(SessionTrigger? trigger_) - { - SetFieldValue(28, 0, trigger_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NecLat field - /// Units: semicircles - /// Comment: North east corner latitude - /// Returns nullable int representing the NecLat field - public int? GetNecLat() - { - Object val = GetFieldValue(29, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set NecLat field - /// Units: semicircles - /// Comment: North east corner latitude - /// Nullable field value to be set - public void SetNecLat(int? necLat_) - { - SetFieldValue(29, 0, necLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NecLong field - /// Units: semicircles - /// Comment: North east corner longitude - /// Returns nullable int representing the NecLong field - public int? GetNecLong() - { - Object val = GetFieldValue(30, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set NecLong field - /// Units: semicircles - /// Comment: North east corner longitude - /// Nullable field value to be set - public void SetNecLong(int? necLong_) - { - SetFieldValue(30, 0, necLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SwcLat field - /// Units: semicircles - /// Comment: South west corner latitude - /// Returns nullable int representing the SwcLat field - public int? GetSwcLat() - { - Object val = GetFieldValue(31, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set SwcLat field - /// Units: semicircles - /// Comment: South west corner latitude - /// Nullable field value to be set - public void SetSwcLat(int? swcLat_) - { - SetFieldValue(31, 0, swcLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SwcLong field - /// Units: semicircles - /// Comment: South west corner longitude - /// Returns nullable int representing the SwcLong field - public int? GetSwcLong() - { - Object val = GetFieldValue(32, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set SwcLong field - /// Units: semicircles - /// Comment: South west corner longitude - /// Nullable field value to be set - public void SetSwcLong(int? swcLong_) - { - SetFieldValue(32, 0, swcLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NumLengths field - /// Units: lengths - /// Comment: # of lengths of swim pool - /// Returns nullable ushort representing the NumLengths field - public ushort? GetNumLengths() - { - Object val = GetFieldValue(33, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NumLengths field - /// Units: lengths - /// Comment: # of lengths of swim pool - /// Nullable field value to be set - public void SetNumLengths(ushort? numLengths_) - { - SetFieldValue(33, 0, numLengths_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NormalizedPower field - /// Units: watts - /// Returns nullable ushort representing the NormalizedPower field - public ushort? GetNormalizedPower() - { - Object val = GetFieldValue(34, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NormalizedPower field - /// Units: watts - /// Nullable field value to be set - public void SetNormalizedPower(ushort? normalizedPower_) - { - SetFieldValue(34, 0, normalizedPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TrainingStressScore field - /// Units: tss - /// Returns nullable float representing the TrainingStressScore field - public float? GetTrainingStressScore() - { - Object val = GetFieldValue(35, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TrainingStressScore field - /// Units: tss - /// Nullable field value to be set - public void SetTrainingStressScore(float? trainingStressScore_) - { - SetFieldValue(35, 0, trainingStressScore_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the IntensityFactor field - /// Units: if - /// Returns nullable float representing the IntensityFactor field - public float? GetIntensityFactor() - { - Object val = GetFieldValue(36, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set IntensityFactor field - /// Units: if - /// Nullable field value to be set - public void SetIntensityFactor(float? intensityFactor_) - { - SetFieldValue(36, 0, intensityFactor_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LeftRightBalance field - /// Returns nullable ushort representing the LeftRightBalance field - public ushort? GetLeftRightBalance() - { - Object val = GetFieldValue(37, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set LeftRightBalance field - /// Nullable field value to be set - public void SetLeftRightBalance(ushort? leftRightBalance_) - { - SetFieldValue(37, 0, leftRightBalance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgStrokeCount field - /// Units: strokes/lap - /// Returns nullable float representing the AvgStrokeCount field - public float? GetAvgStrokeCount() - { - Object val = GetFieldValue(41, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgStrokeCount field - /// Units: strokes/lap - /// Nullable field value to be set - public void SetAvgStrokeCount(float? avgStrokeCount_) - { - SetFieldValue(41, 0, avgStrokeCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgStrokeDistance field - /// Units: m - /// Returns nullable float representing the AvgStrokeDistance field - public float? GetAvgStrokeDistance() - { - Object val = GetFieldValue(42, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgStrokeDistance field - /// Units: m - /// Nullable field value to be set - public void SetAvgStrokeDistance(float? avgStrokeDistance_) - { - SetFieldValue(42, 0, avgStrokeDistance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SwimStroke field - /// Units: swim_stroke - /// Returns nullable SwimStroke enum representing the SwimStroke field - public SwimStroke? GetSwimStroke() - { - object obj = GetFieldValue(43, 0, Fit.SubfieldIndexMainField); - SwimStroke? value = obj == null ? (SwimStroke?)null : (SwimStroke)obj; - return value; - } - - /// - /// Set SwimStroke field - /// Units: swim_stroke - /// Nullable field value to be set - public void SetSwimStroke(SwimStroke? swimStroke_) - { - SetFieldValue(43, 0, swimStroke_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PoolLength field - /// Units: m - /// Returns nullable float representing the PoolLength field - public float? GetPoolLength() - { - Object val = GetFieldValue(44, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set PoolLength field - /// Units: m - /// Nullable field value to be set - public void SetPoolLength(float? poolLength_) - { - SetFieldValue(44, 0, poolLength_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ThresholdPower field - /// Units: watts - /// Returns nullable ushort representing the ThresholdPower field - public ushort? GetThresholdPower() - { - Object val = GetFieldValue(45, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ThresholdPower field - /// Units: watts - /// Nullable field value to be set - public void SetThresholdPower(ushort? thresholdPower_) - { - SetFieldValue(45, 0, thresholdPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PoolLengthUnit field - /// Returns nullable DisplayMeasure enum representing the PoolLengthUnit field - public DisplayMeasure? GetPoolLengthUnit() - { - object obj = GetFieldValue(46, 0, Fit.SubfieldIndexMainField); - DisplayMeasure? value = obj == null ? (DisplayMeasure?)null : (DisplayMeasure)obj; - return value; - } - - /// - /// Set PoolLengthUnit field - /// Nullable field value to be set - public void SetPoolLengthUnit(DisplayMeasure? poolLengthUnit_) - { - SetFieldValue(46, 0, poolLengthUnit_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NumActiveLengths field - /// Units: lengths - /// Comment: # of active lengths of swim pool - /// Returns nullable ushort representing the NumActiveLengths field - public ushort? GetNumActiveLengths() - { - Object val = GetFieldValue(47, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NumActiveLengths field - /// Units: lengths - /// Comment: # of active lengths of swim pool - /// Nullable field value to be set - public void SetNumActiveLengths(ushort? numActiveLengths_) - { - SetFieldValue(47, 0, numActiveLengths_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalWork field - /// Units: J - /// Returns nullable uint representing the TotalWork field - public uint? GetTotalWork() - { - Object val = GetFieldValue(48, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TotalWork field - /// Units: J - /// Nullable field value to be set - public void SetTotalWork(uint? totalWork_) - { - SetFieldValue(48, 0, totalWork_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgAltitude field - /// Units: m - /// Returns nullable float representing the AvgAltitude field - public float? GetAvgAltitude() - { - Object val = GetFieldValue(49, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgAltitude field - /// Units: m - /// Nullable field value to be set - public void SetAvgAltitude(float? avgAltitude_) - { - SetFieldValue(49, 0, avgAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxAltitude field - /// Units: m - /// Returns nullable float representing the MaxAltitude field - public float? GetMaxAltitude() - { - Object val = GetFieldValue(50, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxAltitude field - /// Units: m - /// Nullable field value to be set - public void SetMaxAltitude(float? maxAltitude_) - { - SetFieldValue(50, 0, maxAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GpsAccuracy field - /// Units: m - /// Returns nullable byte representing the GpsAccuracy field - public byte? GetGpsAccuracy() - { - Object val = GetFieldValue(51, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set GpsAccuracy field - /// Units: m - /// Nullable field value to be set - public void SetGpsAccuracy(byte? gpsAccuracy_) - { - SetFieldValue(51, 0, gpsAccuracy_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgGrade field - /// Units: % - /// Returns nullable float representing the AvgGrade field - public float? GetAvgGrade() - { - Object val = GetFieldValue(52, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgGrade field - /// Units: % - /// Nullable field value to be set - public void SetAvgGrade(float? avgGrade_) - { - SetFieldValue(52, 0, avgGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgPosGrade field - /// Units: % - /// Returns nullable float representing the AvgPosGrade field - public float? GetAvgPosGrade() - { - Object val = GetFieldValue(53, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgPosGrade field - /// Units: % - /// Nullable field value to be set - public void SetAvgPosGrade(float? avgPosGrade_) - { - SetFieldValue(53, 0, avgPosGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgNegGrade field - /// Units: % - /// Returns nullable float representing the AvgNegGrade field - public float? GetAvgNegGrade() - { - Object val = GetFieldValue(54, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgNegGrade field - /// Units: % - /// Nullable field value to be set - public void SetAvgNegGrade(float? avgNegGrade_) - { - SetFieldValue(54, 0, avgNegGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPosGrade field - /// Units: % - /// Returns nullable float representing the MaxPosGrade field - public float? GetMaxPosGrade() - { - Object val = GetFieldValue(55, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxPosGrade field - /// Units: % - /// Nullable field value to be set - public void SetMaxPosGrade(float? maxPosGrade_) - { - SetFieldValue(55, 0, maxPosGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxNegGrade field - /// Units: % - /// Returns nullable float representing the MaxNegGrade field - public float? GetMaxNegGrade() - { - Object val = GetFieldValue(56, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxNegGrade field - /// Units: % - /// Nullable field value to be set - public void SetMaxNegGrade(float? maxNegGrade_) - { - SetFieldValue(56, 0, maxNegGrade_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgTemperature field - /// Units: C - /// Returns nullable sbyte representing the AvgTemperature field - public sbyte? GetAvgTemperature() - { - Object val = GetFieldValue(57, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set AvgTemperature field - /// Units: C - /// Nullable field value to be set - public void SetAvgTemperature(sbyte? avgTemperature_) - { - SetFieldValue(57, 0, avgTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxTemperature field - /// Units: C - /// Returns nullable sbyte representing the MaxTemperature field - public sbyte? GetMaxTemperature() - { - Object val = GetFieldValue(58, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set MaxTemperature field - /// Units: C - /// Nullable field value to be set - public void SetMaxTemperature(sbyte? maxTemperature_) - { - SetFieldValue(58, 0, maxTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalMovingTime field - /// Units: s - /// Returns nullable float representing the TotalMovingTime field - public float? GetTotalMovingTime() - { - Object val = GetFieldValue(59, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalMovingTime field - /// Units: s - /// Nullable field value to be set - public void SetTotalMovingTime(float? totalMovingTime_) - { - SetFieldValue(59, 0, totalMovingTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgPosVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the AvgPosVerticalSpeed field - public float? GetAvgPosVerticalSpeed() - { - Object val = GetFieldValue(60, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgPosVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgPosVerticalSpeed(float? avgPosVerticalSpeed_) - { - SetFieldValue(60, 0, avgPosVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgNegVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the AvgNegVerticalSpeed field - public float? GetAvgNegVerticalSpeed() - { - Object val = GetFieldValue(61, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgNegVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgNegVerticalSpeed(float? avgNegVerticalSpeed_) - { - SetFieldValue(61, 0, avgNegVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPosVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the MaxPosVerticalSpeed field - public float? GetMaxPosVerticalSpeed() - { - Object val = GetFieldValue(62, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxPosVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetMaxPosVerticalSpeed(float? maxPosVerticalSpeed_) - { - SetFieldValue(62, 0, maxPosVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxNegVerticalSpeed field - /// Units: m/s - /// Returns nullable float representing the MaxNegVerticalSpeed field - public float? GetMaxNegVerticalSpeed() - { - Object val = GetFieldValue(63, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxNegVerticalSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetMaxNegVerticalSpeed(float? maxNegVerticalSpeed_) - { - SetFieldValue(63, 0, maxNegVerticalSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinHeartRate field - /// Units: bpm - /// Returns nullable byte representing the MinHeartRate field - public byte? GetMinHeartRate() - { - Object val = GetFieldValue(64, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MinHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetMinHeartRate(byte? minHeartRate_) - { - SetFieldValue(64, 0, minHeartRate_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInHrZone - public int GetNumTimeInHrZone() - { - return GetNumFieldValues(65, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInHrZone field - /// Units: s - /// 0 based index of TimeInHrZone element to retrieve - /// Returns nullable float representing the TimeInHrZone field - public float? GetTimeInHrZone(int index) - { - Object val = GetFieldValue(65, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInHrZone field - /// Units: s - /// 0 based index of time_in_hr_zone - /// Nullable field value to be set - public void SetTimeInHrZone(int index, float? timeInHrZone_) - { - SetFieldValue(65, index, timeInHrZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInSpeedZone - public int GetNumTimeInSpeedZone() - { - return GetNumFieldValues(66, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInSpeedZone field - /// Units: s - /// 0 based index of TimeInSpeedZone element to retrieve - /// Returns nullable float representing the TimeInSpeedZone field - public float? GetTimeInSpeedZone(int index) - { - Object val = GetFieldValue(66, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInSpeedZone field - /// Units: s - /// 0 based index of time_in_speed_zone - /// Nullable field value to be set - public void SetTimeInSpeedZone(int index, float? timeInSpeedZone_) - { - SetFieldValue(66, index, timeInSpeedZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInCadenceZone - public int GetNumTimeInCadenceZone() - { - return GetNumFieldValues(67, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInCadenceZone field - /// Units: s - /// 0 based index of TimeInCadenceZone element to retrieve - /// Returns nullable float representing the TimeInCadenceZone field - public float? GetTimeInCadenceZone(int index) - { - Object val = GetFieldValue(67, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInCadenceZone field - /// Units: s - /// 0 based index of time_in_cadence_zone - /// Nullable field value to be set - public void SetTimeInCadenceZone(int index, float? timeInCadenceZone_) - { - SetFieldValue(67, index, timeInCadenceZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInPowerZone - public int GetNumTimeInPowerZone() - { - return GetNumFieldValues(68, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInPowerZone field - /// Units: s - /// 0 based index of TimeInPowerZone element to retrieve - /// Returns nullable float representing the TimeInPowerZone field - public float? GetTimeInPowerZone(int index) - { - Object val = GetFieldValue(68, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInPowerZone field - /// Units: s - /// 0 based index of time_in_power_zone - /// Nullable field value to be set - public void SetTimeInPowerZone(int index, float? timeInPowerZone_) - { - SetFieldValue(68, index, timeInPowerZone_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLapTime field - /// Units: s - /// Returns nullable float representing the AvgLapTime field - public float? GetAvgLapTime() - { - Object val = GetFieldValue(69, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLapTime field - /// Units: s - /// Nullable field value to be set - public void SetAvgLapTime(float? avgLapTime_) - { - SetFieldValue(69, 0, avgLapTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BestLapIndex field - /// Returns nullable ushort representing the BestLapIndex field - public ushort? GetBestLapIndex() - { - Object val = GetFieldValue(70, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set BestLapIndex field - /// Nullable field value to be set - public void SetBestLapIndex(ushort? bestLapIndex_) - { - SetFieldValue(70, 0, bestLapIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinAltitude field - /// Units: m - /// Returns nullable float representing the MinAltitude field - public float? GetMinAltitude() - { - Object val = GetFieldValue(71, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MinAltitude field - /// Units: m - /// Nullable field value to be set - public void SetMinAltitude(float? minAltitude_) - { - SetFieldValue(71, 0, minAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PlayerScore field - /// Returns nullable ushort representing the PlayerScore field - public ushort? GetPlayerScore() - { - Object val = GetFieldValue(82, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set PlayerScore field - /// Nullable field value to be set - public void SetPlayerScore(ushort? playerScore_) - { - SetFieldValue(82, 0, playerScore_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the OpponentScore field - /// Returns nullable ushort representing the OpponentScore field - public ushort? GetOpponentScore() - { - Object val = GetFieldValue(83, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set OpponentScore field - /// Nullable field value to be set - public void SetOpponentScore(ushort? opponentScore_) - { - SetFieldValue(83, 0, opponentScore_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the OpponentName field - /// Returns byte[] representing the OpponentName field - public byte[] GetOpponentName() - { - byte[] data = (byte[])GetFieldValue(84, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the OpponentName field - /// Returns String representing the OpponentName field - public String GetOpponentNameAsString() - { - byte[] data = (byte[])GetFieldValue(84, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set OpponentName field - /// field value to be set - public void SetOpponentName(String opponentName_) - { - byte[] data = Encoding.UTF8.GetBytes(opponentName_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(84, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set OpponentName field - /// field value to be set - public void SetOpponentName(byte[] opponentName_) - { - SetFieldValue(84, 0, opponentName_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field StrokeCount - public int GetNumStrokeCount() - { - return GetNumFieldValues(85, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StrokeCount field - /// Units: counts - /// Comment: stroke_type enum used as the index - /// 0 based index of StrokeCount element to retrieve - /// Returns nullable ushort representing the StrokeCount field - public ushort? GetStrokeCount(int index) - { - Object val = GetFieldValue(85, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set StrokeCount field - /// Units: counts - /// Comment: stroke_type enum used as the index - /// 0 based index of stroke_count - /// Nullable field value to be set - public void SetStrokeCount(int index, ushort? strokeCount_) - { - SetFieldValue(85, index, strokeCount_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field ZoneCount - public int GetNumZoneCount() - { - return GetNumFieldValues(86, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ZoneCount field - /// Units: counts - /// Comment: zone number used as the index - /// 0 based index of ZoneCount element to retrieve - /// Returns nullable ushort representing the ZoneCount field - public ushort? GetZoneCount(int index) - { - Object val = GetFieldValue(86, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ZoneCount field - /// Units: counts - /// Comment: zone number used as the index - /// 0 based index of zone_count - /// Nullable field value to be set - public void SetZoneCount(int index, ushort? zoneCount_) - { - SetFieldValue(86, index, zoneCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxBallSpeed field - /// Units: m/s - /// Returns nullable float representing the MaxBallSpeed field - public float? GetMaxBallSpeed() - { - Object val = GetFieldValue(87, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxBallSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetMaxBallSpeed(float? maxBallSpeed_) - { - SetFieldValue(87, 0, maxBallSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgBallSpeed field - /// Units: m/s - /// Returns nullable float representing the AvgBallSpeed field - public float? GetAvgBallSpeed() - { - Object val = GetFieldValue(88, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgBallSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgBallSpeed(float? avgBallSpeed_) - { - SetFieldValue(88, 0, avgBallSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgVerticalOscillation field - /// Units: mm - /// Returns nullable float representing the AvgVerticalOscillation field - public float? GetAvgVerticalOscillation() - { - Object val = GetFieldValue(89, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgVerticalOscillation field - /// Units: mm - /// Nullable field value to be set - public void SetAvgVerticalOscillation(float? avgVerticalOscillation_) - { - SetFieldValue(89, 0, avgVerticalOscillation_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgStanceTimePercent field - /// Units: percent - /// Returns nullable float representing the AvgStanceTimePercent field - public float? GetAvgStanceTimePercent() - { - Object val = GetFieldValue(90, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgStanceTimePercent field - /// Units: percent - /// Nullable field value to be set - public void SetAvgStanceTimePercent(float? avgStanceTimePercent_) - { - SetFieldValue(90, 0, avgStanceTimePercent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgStanceTime field - /// Units: ms - /// Returns nullable float representing the AvgStanceTime field - public float? GetAvgStanceTime() - { - Object val = GetFieldValue(91, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgStanceTime field - /// Units: ms - /// Nullable field value to be set - public void SetAvgStanceTime(float? avgStanceTime_) - { - SetFieldValue(91, 0, avgStanceTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the avg_cadence - /// Returns nullable float representing the AvgFractionalCadence field - public float? GetAvgFractionalCadence() - { - Object val = GetFieldValue(92, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the avg_cadence - /// Nullable field value to be set - public void SetAvgFractionalCadence(float? avgFractionalCadence_) - { - SetFieldValue(92, 0, avgFractionalCadence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the max_cadence - /// Returns nullable float representing the MaxFractionalCadence field - public float? GetMaxFractionalCadence() - { - Object val = GetFieldValue(93, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxFractionalCadence field - /// Units: rpm - /// Comment: fractional part of the max_cadence - /// Nullable field value to be set - public void SetMaxFractionalCadence(float? maxFractionalCadence_) - { - SetFieldValue(93, 0, maxFractionalCadence_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFractionalCycles field - /// Units: cycles - /// Comment: fractional part of the total_cycles - /// Returns nullable float representing the TotalFractionalCycles field - public float? GetTotalFractionalCycles() - { - Object val = GetFieldValue(94, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFractionalCycles field - /// Units: cycles - /// Comment: fractional part of the total_cycles - /// Nullable field value to be set - public void SetTotalFractionalCycles(float? totalFractionalCycles_) - { - SetFieldValue(94, 0, totalFractionalCycles_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgTotalHemoglobinConc - public int GetNumAvgTotalHemoglobinConc() - { - return GetNumFieldValues(95, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Avg saturated and unsaturated hemoglobin - /// 0 based index of AvgTotalHemoglobinConc element to retrieve - /// Returns nullable float representing the AvgTotalHemoglobinConc field - public float? GetAvgTotalHemoglobinConc(int index) - { - Object val = GetFieldValue(95, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Avg saturated and unsaturated hemoglobin - /// 0 based index of avg_total_hemoglobin_conc - /// Nullable field value to be set - public void SetAvgTotalHemoglobinConc(int index, float? avgTotalHemoglobinConc_) - { - SetFieldValue(95, index, avgTotalHemoglobinConc_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MinTotalHemoglobinConc - public int GetNumMinTotalHemoglobinConc() - { - return GetNumFieldValues(96, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Min saturated and unsaturated hemoglobin - /// 0 based index of MinTotalHemoglobinConc element to retrieve - /// Returns nullable float representing the MinTotalHemoglobinConc field - public float? GetMinTotalHemoglobinConc(int index) - { - Object val = GetFieldValue(96, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MinTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Min saturated and unsaturated hemoglobin - /// 0 based index of min_total_hemoglobin_conc - /// Nullable field value to be set - public void SetMinTotalHemoglobinConc(int index, float? minTotalHemoglobinConc_) - { - SetFieldValue(96, index, minTotalHemoglobinConc_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MaxTotalHemoglobinConc - public int GetNumMaxTotalHemoglobinConc() - { - return GetNumFieldValues(97, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Max saturated and unsaturated hemoglobin - /// 0 based index of MaxTotalHemoglobinConc element to retrieve - /// Returns nullable float representing the MaxTotalHemoglobinConc field - public float? GetMaxTotalHemoglobinConc(int index) - { - Object val = GetFieldValue(97, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxTotalHemoglobinConc field - /// Units: g/dL - /// Comment: Max saturated and unsaturated hemoglobin - /// 0 based index of max_total_hemoglobin_conc - /// Nullable field value to be set - public void SetMaxTotalHemoglobinConc(int index, float? maxTotalHemoglobinConc_) - { - SetFieldValue(97, index, maxTotalHemoglobinConc_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgSaturatedHemoglobinPercent - public int GetNumAvgSaturatedHemoglobinPercent() - { - return GetNumFieldValues(98, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Avg percentage of hemoglobin saturated with oxygen - /// 0 based index of AvgSaturatedHemoglobinPercent element to retrieve - /// Returns nullable float representing the AvgSaturatedHemoglobinPercent field - public float? GetAvgSaturatedHemoglobinPercent(int index) - { - Object val = GetFieldValue(98, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Avg percentage of hemoglobin saturated with oxygen - /// 0 based index of avg_saturated_hemoglobin_percent - /// Nullable field value to be set - public void SetAvgSaturatedHemoglobinPercent(int index, float? avgSaturatedHemoglobinPercent_) - { - SetFieldValue(98, index, avgSaturatedHemoglobinPercent_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MinSaturatedHemoglobinPercent - public int GetNumMinSaturatedHemoglobinPercent() - { - return GetNumFieldValues(99, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Min percentage of hemoglobin saturated with oxygen - /// 0 based index of MinSaturatedHemoglobinPercent element to retrieve - /// Returns nullable float representing the MinSaturatedHemoglobinPercent field - public float? GetMinSaturatedHemoglobinPercent(int index) - { - Object val = GetFieldValue(99, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MinSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Min percentage of hemoglobin saturated with oxygen - /// 0 based index of min_saturated_hemoglobin_percent - /// Nullable field value to be set - public void SetMinSaturatedHemoglobinPercent(int index, float? minSaturatedHemoglobinPercent_) - { - SetFieldValue(99, index, minSaturatedHemoglobinPercent_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MaxSaturatedHemoglobinPercent - public int GetNumMaxSaturatedHemoglobinPercent() - { - return GetNumFieldValues(100, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Max percentage of hemoglobin saturated with oxygen - /// 0 based index of MaxSaturatedHemoglobinPercent element to retrieve - /// Returns nullable float representing the MaxSaturatedHemoglobinPercent field - public float? GetMaxSaturatedHemoglobinPercent(int index) - { - Object val = GetFieldValue(100, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxSaturatedHemoglobinPercent field - /// Units: % - /// Comment: Max percentage of hemoglobin saturated with oxygen - /// 0 based index of max_saturated_hemoglobin_percent - /// Nullable field value to be set - public void SetMaxSaturatedHemoglobinPercent(int index, float? maxSaturatedHemoglobinPercent_) - { - SetFieldValue(100, index, maxSaturatedHemoglobinPercent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftTorqueEffectiveness field - /// Units: percent - /// Returns nullable float representing the AvgLeftTorqueEffectiveness field - public float? GetAvgLeftTorqueEffectiveness() - { - Object val = GetFieldValue(101, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftTorqueEffectiveness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgLeftTorqueEffectiveness(float? avgLeftTorqueEffectiveness_) - { - SetFieldValue(101, 0, avgLeftTorqueEffectiveness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightTorqueEffectiveness field - /// Units: percent - /// Returns nullable float representing the AvgRightTorqueEffectiveness field - public float? GetAvgRightTorqueEffectiveness() - { - Object val = GetFieldValue(102, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightTorqueEffectiveness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgRightTorqueEffectiveness(float? avgRightTorqueEffectiveness_) - { - SetFieldValue(102, 0, avgRightTorqueEffectiveness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the AvgLeftPedalSmoothness field - public float? GetAvgLeftPedalSmoothness() - { - Object val = GetFieldValue(103, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgLeftPedalSmoothness(float? avgLeftPedalSmoothness_) - { - SetFieldValue(103, 0, avgLeftPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the AvgRightPedalSmoothness field - public float? GetAvgRightPedalSmoothness() - { - Object val = GetFieldValue(104, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgRightPedalSmoothness(float? avgRightPedalSmoothness_) - { - SetFieldValue(104, 0, avgRightPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgCombinedPedalSmoothness field - /// Units: percent - /// Returns nullable float representing the AvgCombinedPedalSmoothness field - public float? GetAvgCombinedPedalSmoothness() - { - Object val = GetFieldValue(105, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgCombinedPedalSmoothness field - /// Units: percent - /// Nullable field value to be set - public void SetAvgCombinedPedalSmoothness(float? avgCombinedPedalSmoothness_) - { - SetFieldValue(105, 0, avgCombinedPedalSmoothness_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SportIndex field - /// Returns nullable byte representing the SportIndex field - public byte? GetSportIndex() - { - Object val = GetFieldValue(111, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set SportIndex field - /// Nullable field value to be set - public void SetSportIndex(byte? sportIndex_) - { - SetFieldValue(111, 0, sportIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeStanding field - /// Units: s - /// Comment: Total time spend in the standing position - /// Returns nullable float representing the TimeStanding field - public float? GetTimeStanding() - { - Object val = GetFieldValue(112, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeStanding field - /// Units: s - /// Comment: Total time spend in the standing position - /// Nullable field value to be set - public void SetTimeStanding(float? timeStanding_) - { - SetFieldValue(112, 0, timeStanding_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StandCount field - /// Comment: Number of transitions to the standing state - /// Returns nullable ushort representing the StandCount field - public ushort? GetStandCount() - { - Object val = GetFieldValue(113, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set StandCount field - /// Comment: Number of transitions to the standing state - /// Nullable field value to be set - public void SetStandCount(ushort? standCount_) - { - SetFieldValue(113, 0, standCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPco field - /// Units: mm - /// Comment: Average platform center offset Left - /// Returns nullable sbyte representing the AvgLeftPco field - public sbyte? GetAvgLeftPco() - { - Object val = GetFieldValue(114, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set AvgLeftPco field - /// Units: mm - /// Comment: Average platform center offset Left - /// Nullable field value to be set - public void SetAvgLeftPco(sbyte? avgLeftPco_) - { - SetFieldValue(114, 0, avgLeftPco_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPco field - /// Units: mm - /// Comment: Average platform center offset Right - /// Returns nullable sbyte representing the AvgRightPco field - public sbyte? GetAvgRightPco() - { - Object val = GetFieldValue(115, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set AvgRightPco field - /// Units: mm - /// Comment: Average platform center offset Right - /// Nullable field value to be set - public void SetAvgRightPco(sbyte? avgRightPco_) - { - SetFieldValue(115, 0, avgRightPco_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgLeftPowerPhase - public int GetNumAvgLeftPowerPhase() - { - return GetNumFieldValues(116, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPowerPhase field - /// Units: degrees - /// Comment: Average left power phase angles. Indexes defined by power_phase_type. - /// 0 based index of AvgLeftPowerPhase element to retrieve - /// Returns nullable float representing the AvgLeftPowerPhase field - public float? GetAvgLeftPowerPhase(int index) - { - Object val = GetFieldValue(116, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftPowerPhase field - /// Units: degrees - /// Comment: Average left power phase angles. Indexes defined by power_phase_type. - /// 0 based index of avg_left_power_phase - /// Nullable field value to be set - public void SetAvgLeftPowerPhase(int index, float? avgLeftPowerPhase_) - { - SetFieldValue(116, index, avgLeftPowerPhase_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgLeftPowerPhasePeak - public int GetNumAvgLeftPowerPhasePeak() - { - return GetNumFieldValues(117, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLeftPowerPhasePeak field - /// Units: degrees - /// Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of AvgLeftPowerPhasePeak element to retrieve - /// Returns nullable float representing the AvgLeftPowerPhasePeak field - public float? GetAvgLeftPowerPhasePeak(int index) - { - Object val = GetFieldValue(117, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgLeftPowerPhasePeak field - /// Units: degrees - /// Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - /// 0 based index of avg_left_power_phase_peak - /// Nullable field value to be set - public void SetAvgLeftPowerPhasePeak(int index, float? avgLeftPowerPhasePeak_) - { - SetFieldValue(117, index, avgLeftPowerPhasePeak_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgRightPowerPhase - public int GetNumAvgRightPowerPhase() - { - return GetNumFieldValues(118, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPowerPhase field - /// Units: degrees - /// Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of AvgRightPowerPhase element to retrieve - /// Returns nullable float representing the AvgRightPowerPhase field - public float? GetAvgRightPowerPhase(int index) - { - Object val = GetFieldValue(118, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightPowerPhase field - /// Units: degrees - /// Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - /// 0 based index of avg_right_power_phase - /// Nullable field value to be set - public void SetAvgRightPowerPhase(int index, float? avgRightPowerPhase_) - { - SetFieldValue(118, index, avgRightPowerPhase_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgRightPowerPhasePeak - public int GetNumAvgRightPowerPhasePeak() - { - return GetNumFieldValues(119, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRightPowerPhasePeak field - /// Units: degrees - /// Comment: Average right power phase peak angles data value indexes defined by power_phase_type. - /// 0 based index of AvgRightPowerPhasePeak element to retrieve - /// Returns nullable float representing the AvgRightPowerPhasePeak field - public float? GetAvgRightPowerPhasePeak(int index) - { - Object val = GetFieldValue(119, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgRightPowerPhasePeak field - /// Units: degrees - /// Comment: Average right power phase peak angles data value indexes defined by power_phase_type. - /// 0 based index of avg_right_power_phase_peak - /// Nullable field value to be set - public void SetAvgRightPowerPhasePeak(int index, float? avgRightPowerPhasePeak_) - { - SetFieldValue(119, index, avgRightPowerPhasePeak_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgPowerPosition - public int GetNumAvgPowerPosition() - { - return GetNumFieldValues(120, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgPowerPosition field - /// Units: watts - /// Comment: Average power by position. Data value indexes defined by rider_position_type. - /// 0 based index of AvgPowerPosition element to retrieve - /// Returns nullable ushort representing the AvgPowerPosition field - public ushort? GetAvgPowerPosition(int index) - { - Object val = GetFieldValue(120, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AvgPowerPosition field - /// Units: watts - /// Comment: Average power by position. Data value indexes defined by rider_position_type. - /// 0 based index of avg_power_position - /// Nullable field value to be set - public void SetAvgPowerPosition(int index, ushort? avgPowerPosition_) - { - SetFieldValue(120, index, avgPowerPosition_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MaxPowerPosition - public int GetNumMaxPowerPosition() - { - return GetNumFieldValues(121, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxPowerPosition field - /// Units: watts - /// Comment: Maximum power by position. Data value indexes defined by rider_position_type. - /// 0 based index of MaxPowerPosition element to retrieve - /// Returns nullable ushort representing the MaxPowerPosition field - public ushort? GetMaxPowerPosition(int index) - { - Object val = GetFieldValue(121, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MaxPowerPosition field - /// Units: watts - /// Comment: Maximum power by position. Data value indexes defined by rider_position_type. - /// 0 based index of max_power_position - /// Nullable field value to be set - public void SetMaxPowerPosition(int index, ushort? maxPowerPosition_) - { - SetFieldValue(121, index, maxPowerPosition_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field AvgCadencePosition - public int GetNumAvgCadencePosition() - { - return GetNumFieldValues(122, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgCadencePosition field - /// Units: rpm - /// Comment: Average cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of AvgCadencePosition element to retrieve - /// Returns nullable byte representing the AvgCadencePosition field - public byte? GetAvgCadencePosition(int index) - { - Object val = GetFieldValue(122, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgCadencePosition field - /// Units: rpm - /// Comment: Average cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of avg_cadence_position - /// Nullable field value to be set - public void SetAvgCadencePosition(int index, byte? avgCadencePosition_) - { - SetFieldValue(122, index, avgCadencePosition_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field MaxCadencePosition - public int GetNumMaxCadencePosition() - { - return GetNumFieldValues(123, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxCadencePosition field - /// Units: rpm - /// Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of MaxCadencePosition element to retrieve - /// Returns nullable byte representing the MaxCadencePosition field - public byte? GetMaxCadencePosition(int index) - { - Object val = GetFieldValue(123, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxCadencePosition field - /// Units: rpm - /// Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - /// 0 based index of max_cadence_position - /// Nullable field value to be set - public void SetMaxCadencePosition(int index, byte? maxCadencePosition_) - { - SetFieldValue(123, index, maxCadencePosition_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedAvgSpeed field - /// Units: m/s - /// Comment: total_distance / total_timer_time - /// Returns nullable float representing the EnhancedAvgSpeed field - public float? GetEnhancedAvgSpeed() - { - Object val = GetFieldValue(124, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedAvgSpeed field - /// Units: m/s - /// Comment: total_distance / total_timer_time - /// Nullable field value to be set - public void SetEnhancedAvgSpeed(float? enhancedAvgSpeed_) - { - SetFieldValue(124, 0, enhancedAvgSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMaxSpeed field - /// Units: m/s - /// Returns nullable float representing the EnhancedMaxSpeed field - public float? GetEnhancedMaxSpeed() - { - Object val = GetFieldValue(125, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMaxSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetEnhancedMaxSpeed(float? enhancedMaxSpeed_) - { - SetFieldValue(125, 0, enhancedMaxSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedAvgAltitude field - /// Units: m - /// Returns nullable float representing the EnhancedAvgAltitude field - public float? GetEnhancedAvgAltitude() - { - Object val = GetFieldValue(126, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedAvgAltitude field - /// Units: m - /// Nullable field value to be set - public void SetEnhancedAvgAltitude(float? enhancedAvgAltitude_) - { - SetFieldValue(126, 0, enhancedAvgAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMinAltitude field - /// Units: m - /// Returns nullable float representing the EnhancedMinAltitude field - public float? GetEnhancedMinAltitude() - { - Object val = GetFieldValue(127, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMinAltitude field - /// Units: m - /// Nullable field value to be set - public void SetEnhancedMinAltitude(float? enhancedMinAltitude_) - { - SetFieldValue(127, 0, enhancedMinAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMaxAltitude field - /// Units: m - /// Returns nullable float representing the EnhancedMaxAltitude field - public float? GetEnhancedMaxAltitude() - { - Object val = GetFieldValue(128, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMaxAltitude field - /// Units: m - /// Nullable field value to be set - public void SetEnhancedMaxAltitude(float? enhancedMaxAltitude_) - { - SetFieldValue(128, 0, enhancedMaxAltitude_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgLevMotorPower field - /// Units: watts - /// Comment: lev average motor power during session - /// Returns nullable ushort representing the AvgLevMotorPower field - public ushort? GetAvgLevMotorPower() - { - Object val = GetFieldValue(129, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set AvgLevMotorPower field - /// Units: watts - /// Comment: lev average motor power during session - /// Nullable field value to be set - public void SetAvgLevMotorPower(ushort? avgLevMotorPower_) - { - SetFieldValue(129, 0, avgLevMotorPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxLevMotorPower field - /// Units: watts - /// Comment: lev maximum motor power during session - /// Returns nullable ushort representing the MaxLevMotorPower field - public ushort? GetMaxLevMotorPower() - { - Object val = GetFieldValue(130, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MaxLevMotorPower field - /// Units: watts - /// Comment: lev maximum motor power during session - /// Nullable field value to be set - public void SetMaxLevMotorPower(ushort? maxLevMotorPower_) - { - SetFieldValue(130, 0, maxLevMotorPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LevBatteryConsumption field - /// Units: percent - /// Comment: lev battery consumption during session - /// Returns nullable float representing the LevBatteryConsumption field - public float? GetLevBatteryConsumption() - { - Object val = GetFieldValue(131, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set LevBatteryConsumption field - /// Units: percent - /// Comment: lev battery consumption during session - /// Nullable field value to be set - public void SetLevBatteryConsumption(float? levBatteryConsumption_) - { - SetFieldValue(131, 0, levBatteryConsumption_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgVerticalRatio field - /// Units: percent - /// Returns nullable float representing the AvgVerticalRatio field - public float? GetAvgVerticalRatio() - { - Object val = GetFieldValue(132, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgVerticalRatio field - /// Units: percent - /// Nullable field value to be set - public void SetAvgVerticalRatio(float? avgVerticalRatio_) - { - SetFieldValue(132, 0, avgVerticalRatio_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgStanceTimeBalance field - /// Units: percent - /// Returns nullable float representing the AvgStanceTimeBalance field - public float? GetAvgStanceTimeBalance() - { - Object val = GetFieldValue(133, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgStanceTimeBalance field - /// Units: percent - /// Nullable field value to be set - public void SetAvgStanceTimeBalance(float? avgStanceTimeBalance_) - { - SetFieldValue(133, 0, avgStanceTimeBalance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgStepLength field - /// Units: mm - /// Returns nullable float representing the AvgStepLength field - public float? GetAvgStepLength() - { - Object val = GetFieldValue(134, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgStepLength field - /// Units: mm - /// Nullable field value to be set - public void SetAvgStepLength(float? avgStepLength_) - { - SetFieldValue(134, 0, avgStepLength_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalAnaerobicTrainingEffect field - /// Returns nullable float representing the TotalAnaerobicTrainingEffect field - public float? GetTotalAnaerobicTrainingEffect() - { - Object val = GetFieldValue(137, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalAnaerobicTrainingEffect field - /// Nullable field value to be set - public void SetTotalAnaerobicTrainingEffect(float? totalAnaerobicTrainingEffect_) - { - SetFieldValue(137, 0, totalAnaerobicTrainingEffect_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgVam field - /// Units: m/s - /// Returns nullable float representing the AvgVam field - public float? GetAvgVam() - { - Object val = GetFieldValue(139, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgVam field - /// Units: m/s - /// Nullable field value to be set - public void SetAvgVam(float? avgVam_) - { - SetFieldValue(139, 0, avgVam_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgRespirationRate field - /// Returns nullable byte representing the AvgRespirationRate field - public byte? GetAvgRespirationRate() - { - Object val = GetFieldValue(147, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set AvgRespirationRate field - /// Nullable field value to be set - public void SetAvgRespirationRate(byte? avgRespirationRate_) - { - SetFieldValue(147, 0, avgRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxRespirationRate field - /// Returns nullable byte representing the MaxRespirationRate field - public byte? GetMaxRespirationRate() - { - Object val = GetFieldValue(148, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxRespirationRate field - /// Nullable field value to be set - public void SetMaxRespirationRate(byte? maxRespirationRate_) - { - SetFieldValue(148, 0, maxRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinRespirationRate field - /// Returns nullable byte representing the MinRespirationRate field - public byte? GetMinRespirationRate() - { - Object val = GetFieldValue(149, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MinRespirationRate field - /// Nullable field value to be set - public void SetMinRespirationRate(byte? minRespirationRate_) - { - SetFieldValue(149, 0, minRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TrainingLoadPeak field - /// Returns nullable float representing the TrainingLoadPeak field - public float? GetTrainingLoadPeak() - { - Object val = GetFieldValue(168, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TrainingLoadPeak field - /// Nullable field value to be set - public void SetTrainingLoadPeak(float? trainingLoadPeak_) - { - SetFieldValue(168, 0, trainingLoadPeak_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedAvgRespirationRate field - /// Units: Breaths/min - /// Returns nullable float representing the EnhancedAvgRespirationRate field - public float? GetEnhancedAvgRespirationRate() - { - Object val = GetFieldValue(169, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedAvgRespirationRate field - /// Units: Breaths/min - /// Nullable field value to be set - public void SetEnhancedAvgRespirationRate(float? enhancedAvgRespirationRate_) - { - SetFieldValue(169, 0, enhancedAvgRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMaxRespirationRate field - /// Units: Breaths/min - /// Returns nullable float representing the EnhancedMaxRespirationRate field - public float? GetEnhancedMaxRespirationRate() - { - Object val = GetFieldValue(170, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMaxRespirationRate field - /// Units: Breaths/min - /// Nullable field value to be set - public void SetEnhancedMaxRespirationRate(float? enhancedMaxRespirationRate_) - { - SetFieldValue(170, 0, enhancedMaxRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EnhancedMinRespirationRate field - /// Returns nullable float representing the EnhancedMinRespirationRate field - public float? GetEnhancedMinRespirationRate() - { - Object val = GetFieldValue(180, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set EnhancedMinRespirationRate field - /// Nullable field value to be set - public void SetEnhancedMinRespirationRate(float? enhancedMinRespirationRate_) - { - SetFieldValue(180, 0, enhancedMinRespirationRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Returns nullable float representing the TotalGrit field - public float? GetTotalGrit() - { - Object val = GetFieldValue(181, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Nullable field value to be set - public void SetTotalGrit(float? totalGrit_) - { - SetFieldValue(181, 0, totalGrit_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Returns nullable float representing the TotalFlow field - public float? GetTotalFlow() - { - Object val = GetFieldValue(182, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Nullable field value to be set - public void SetTotalFlow(float? totalFlow_) - { - SetFieldValue(182, 0, totalFlow_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the JumpCount field - /// Returns nullable ushort representing the JumpCount field - public ushort? GetJumpCount() - { - Object val = GetFieldValue(183, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set JumpCount field - /// Nullable field value to be set - public void SetJumpCount(ushort? jumpCount_) - { - SetFieldValue(183, 0, jumpCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Returns nullable float representing the AvgGrit field - public float? GetAvgGrit() - { - Object val = GetFieldValue(186, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgGrit field - /// Units: kGrit - /// Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - /// Nullable field value to be set - public void SetAvgGrit(float? avgGrit_) - { - SetFieldValue(186, 0, avgGrit_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Returns nullable float representing the AvgFlow field - public float? GetAvgFlow() - { - Object val = GetFieldValue(187, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgFlow field - /// Units: Flow - /// Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - /// Nullable field value to be set - public void SetAvgFlow(float? avgFlow_) - { - SetFieldValue(187, 0, avgFlow_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFractionalAscent field - /// Units: m - /// Comment: fractional part of total_ascent - /// Returns nullable float representing the TotalFractionalAscent field - public float? GetTotalFractionalAscent() - { - Object val = GetFieldValue(199, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFractionalAscent field - /// Units: m - /// Comment: fractional part of total_ascent - /// Nullable field value to be set - public void SetTotalFractionalAscent(float? totalFractionalAscent_) - { - SetFieldValue(199, 0, totalFractionalAscent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalFractionalDescent field - /// Units: m - /// Comment: fractional part of total_descent - /// Returns nullable float representing the TotalFractionalDescent field - public float? GetTotalFractionalDescent() - { - Object val = GetFieldValue(200, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalFractionalDescent field - /// Units: m - /// Comment: fractional part of total_descent - /// Nullable field value to be set - public void SetTotalFractionalDescent(float? totalFractionalDescent_) - { - SetFieldValue(200, 0, totalFractionalDescent_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the AvgCoreTemperature field - /// Units: C - /// Returns nullable float representing the AvgCoreTemperature field - public float? GetAvgCoreTemperature() - { - Object val = GetFieldValue(208, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set AvgCoreTemperature field - /// Units: C - /// Nullable field value to be set - public void SetAvgCoreTemperature(float? avgCoreTemperature_) - { - SetFieldValue(208, 0, avgCoreTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MinCoreTemperature field - /// Units: C - /// Returns nullable float representing the MinCoreTemperature field - public float? GetMinCoreTemperature() - { - Object val = GetFieldValue(209, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MinCoreTemperature field - /// Units: C - /// Nullable field value to be set - public void SetMinCoreTemperature(float? minCoreTemperature_) - { - SetFieldValue(209, 0, minCoreTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxCoreTemperature field - /// Units: C - /// Returns nullable float representing the MaxCoreTemperature field - public float? GetMaxCoreTemperature() - { - Object val = GetFieldValue(210, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MaxCoreTemperature field - /// Units: C - /// Nullable field value to be set - public void SetMaxCoreTemperature(float? maxCoreTemperature_) - { - SetFieldValue(210, 0, maxCoreTemperature_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SetMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SetMesg.cs deleted file mode 100644 index bd1af36c0..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SetMesg.cs +++ /dev/null @@ -1,355 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Set profile message. - /// - public class SetMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 254; - public const byte Duration = 0; - public const byte Repetitions = 3; - public const byte Weight = 4; - public const byte SetType = 5; - public const byte StartTime = 6; - public const byte Category = 7; - public const byte CategorySubtype = 8; - public const byte WeightDisplayUnit = 9; - public const byte MessageIndex = 10; - public const byte WktStepIndex = 11; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SetMesg() : base(Profile.GetMesg(MesgNum.Set)) - { - } - - public SetMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Comment: Timestamp of the set - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Comment: Timestamp of the set - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(254, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Duration field - /// Units: s - /// Returns nullable float representing the Duration field - public float? GetDuration() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Duration field - /// Units: s - /// Nullable field value to be set - public void SetDuration(float? duration_) - { - SetFieldValue(0, 0, duration_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Repetitions field - /// Comment: # of repitions of the movement - /// Returns nullable ushort representing the Repetitions field - public ushort? GetRepetitions() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Repetitions field - /// Comment: # of repitions of the movement - /// Nullable field value to be set - public void SetRepetitions(ushort? repetitions_) - { - SetFieldValue(3, 0, repetitions_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Weight field - /// Units: kg - /// Comment: Amount of weight applied for the set - /// Returns nullable float representing the Weight field - public float? GetWeight() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Weight field - /// Units: kg - /// Comment: Amount of weight applied for the set - /// Nullable field value to be set - public void SetWeight(float? weight_) - { - SetFieldValue(4, 0, weight_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SetType field - /// Returns nullable byte representing the SetType field - public byte? GetSetType() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set SetType field - /// Nullable field value to be set - public void SetSetType(byte? setType_) - { - SetFieldValue(5, 0, setType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartTime field - /// Comment: Start time of the set - /// Returns DateTime representing the StartTime field - public DateTime GetStartTime() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set StartTime field - /// Comment: Start time of the set - /// Nullable field value to be set - public void SetStartTime(DateTime startTime_) - { - SetFieldValue(6, 0, startTime_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field Category - public int GetNumCategory() - { - return GetNumFieldValues(7, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Category field - /// 0 based index of Category element to retrieve - /// Returns nullable ushort representing the Category field - public ushort? GetCategory(int index) - { - Object val = GetFieldValue(7, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Category field - /// 0 based index of category - /// Nullable field value to be set - public void SetCategory(int index, ushort? category_) - { - SetFieldValue(7, index, category_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CategorySubtype - public int GetNumCategorySubtype() - { - return GetNumFieldValues(8, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CategorySubtype field - /// Comment: Based on the associated category, see [category]_exercise_names - /// 0 based index of CategorySubtype element to retrieve - /// Returns nullable ushort representing the CategorySubtype field - public ushort? GetCategorySubtype(int index) - { - Object val = GetFieldValue(8, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set CategorySubtype field - /// Comment: Based on the associated category, see [category]_exercise_names - /// 0 based index of category_subtype - /// Nullable field value to be set - public void SetCategorySubtype(int index, ushort? categorySubtype_) - { - SetFieldValue(8, index, categorySubtype_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WeightDisplayUnit field - /// Returns nullable ushort representing the WeightDisplayUnit field - public ushort? GetWeightDisplayUnit() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set WeightDisplayUnit field - /// Nullable field value to be set - public void SetWeightDisplayUnit(ushort? weightDisplayUnit_) - { - SetFieldValue(9, 0, weightDisplayUnit_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(10, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WktStepIndex field - /// Returns nullable ushort representing the WktStepIndex field - public ushort? GetWktStepIndex() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set WktStepIndex field - /// Nullable field value to be set - public void SetWktStepIndex(ushort? wktStepIndex_) - { - SetFieldValue(11, 0, wktStepIndex_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SlaveDeviceMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SlaveDeviceMesg.cs deleted file mode 100644 index 78e4eb16a..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SlaveDeviceMesg.cs +++ /dev/null @@ -1,157 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the SlaveDevice profile message. - /// - public class SlaveDeviceMesg : Mesg - { - #region Fields - static class ProductSubfield - { - public static ushort FaveroProduct = 0; - public static ushort GarminProduct = 1; - public static ushort Subfields = 2; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Manufacturer = 0; - public const byte Product = 1; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SlaveDeviceMesg() : base(Profile.GetMesg(MesgNum.SlaveDevice)) - { - } - - public SlaveDeviceMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Manufacturer field - /// Returns nullable ushort representing the Manufacturer field - public ushort? GetManufacturer() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Manufacturer field - /// Nullable field value to be set - public void SetManufacturer(ushort? manufacturer_) - { - SetFieldValue(0, 0, manufacturer_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Product field - /// Returns nullable ushort representing the Product field - public ushort? GetProduct() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Product field - /// Nullable field value to be set - public void SetProduct(ushort? product_) - { - SetFieldValue(1, 0, product_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the FaveroProduct subfield - /// Nullable ushort representing the FaveroProduct subfield - public ushort? GetFaveroProduct() - { - Object val = GetFieldValue(1, 0, ProductSubfield.FaveroProduct); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set FaveroProduct subfield - /// Subfield value to be set - public void SetFaveroProduct(ushort? faveroProduct) - { - SetFieldValue(1, 0, faveroProduct, ProductSubfield.FaveroProduct); - } - - /// - /// Retrieves the GarminProduct subfield - /// Nullable ushort representing the GarminProduct subfield - public ushort? GetGarminProduct() - { - Object val = GetFieldValue(1, 0, ProductSubfield.GarminProduct); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set GarminProduct subfield - /// Subfield value to be set - public void SetGarminProduct(ushort? garminProduct) - { - SetFieldValue(1, 0, garminProduct, ProductSubfield.GarminProduct); - } - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SoftwareMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SoftwareMesg.cs deleted file mode 100644 index 7d5f6ab2c..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SoftwareMesg.cs +++ /dev/null @@ -1,140 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Software profile message. - /// - public class SoftwareMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Version = 3; - public const byte PartNumber = 5; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SoftwareMesg() : base(Profile.GetMesg(MesgNum.Software)) - { - } - - public SoftwareMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Version field - /// Returns nullable float representing the Version field - public float? GetVersion() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Version field - /// Nullable field value to be set - public void SetVersion(float? version_) - { - SetFieldValue(3, 0, version_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PartNumber field - /// Returns byte[] representing the PartNumber field - public byte[] GetPartNumber() - { - byte[] data = (byte[])GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the PartNumber field - /// Returns String representing the PartNumber field - public String GetPartNumberAsString() - { - byte[] data = (byte[])GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set PartNumber field - /// field value to be set - public void SetPartNumber(String partNumber_) - { - byte[] data = Encoding.UTF8.GetBytes(partNumber_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(5, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set PartNumber field - /// field value to be set - public void SetPartNumber(byte[] partNumber_) - { - SetFieldValue(5, 0, partNumber_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SpeedZoneMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SpeedZoneMesg.cs deleted file mode 100644 index a915f82db..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SpeedZoneMesg.cs +++ /dev/null @@ -1,142 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the SpeedZone profile message. - /// - public class SpeedZoneMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte HighValue = 0; - public const byte Name = 1; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SpeedZoneMesg() : base(Profile.GetMesg(MesgNum.SpeedZone)) - { - } - - public SpeedZoneMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HighValue field - /// Units: m/s - /// Returns nullable float representing the HighValue field - public float? GetHighValue() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set HighValue field - /// Units: m/s - /// Nullable field value to be set - public void SetHighValue(float? highValue_) - { - SetFieldValue(0, 0, highValue_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(1, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(1, 0, name_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SplitMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SplitMesg.cs deleted file mode 100644 index 125c92d49..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SplitMesg.cs +++ /dev/null @@ -1,174 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Split profile message. - /// - public class SplitMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte SplitType = 0; - public const byte TotalElapsedTime = 1; - public const byte TotalTimerTime = 2; - public const byte TotalDistance = 3; - public const byte StartTime = 9; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SplitMesg() : base(Profile.GetMesg(MesgNum.Split)) - { - } - - public SplitMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the SplitType field - /// Returns nullable SplitType enum representing the SplitType field - public SplitType? GetSplitType() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - SplitType? value = obj == null ? (SplitType?)null : (SplitType)obj; - return value; - } - - /// - /// Set SplitType field - /// Nullable field value to be set - public void SetSplitType(SplitType? splitType_) - { - SetFieldValue(0, 0, splitType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalElapsedTime field - /// Units: s - /// Returns nullable float representing the TotalElapsedTime field - public float? GetTotalElapsedTime() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalElapsedTime field - /// Units: s - /// Nullable field value to be set - public void SetTotalElapsedTime(float? totalElapsedTime_) - { - SetFieldValue(1, 0, totalElapsedTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalTimerTime field - /// Units: s - /// Returns nullable float representing the TotalTimerTime field - public float? GetTotalTimerTime() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalTimerTime field - /// Units: s - /// Nullable field value to be set - public void SetTotalTimerTime(float? totalTimerTime_) - { - SetFieldValue(2, 0, totalTimerTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TotalDistance field - /// Units: m - /// Returns nullable float representing the TotalDistance field - public float? GetTotalDistance() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TotalDistance field - /// Units: m - /// Nullable field value to be set - public void SetTotalDistance(float? totalDistance_) - { - SetFieldValue(3, 0, totalDistance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartTime field - /// Returns DateTime representing the StartTime field - public DateTime GetStartTime() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set StartTime field - /// Nullable field value to be set - public void SetStartTime(DateTime startTime_) - { - SetFieldValue(9, 0, startTime_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SportMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SportMesg.cs deleted file mode 100644 index 220f246a6..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/SportMesg.cs +++ /dev/null @@ -1,130 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Sport profile message. - /// - public class SportMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Sport = 0; - public const byte SubSport = 1; - public const byte Name = 3; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public SportMesg() : base(Profile.GetMesg(MesgNum.Sport)) - { - } - - public SportMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Sport field - /// Returns nullable Sport enum representing the Sport field - public Sport? GetSport() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Sport? value = obj == null ? (Sport?)null : (Sport)obj; - return value; - } - - /// - /// Set Sport field - /// Nullable field value to be set - public void SetSport(Sport? sport_) - { - SetFieldValue(0, 0, sport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SubSport field - /// Returns nullable SubSport enum representing the SubSport field - public SubSport? GetSubSport() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - SubSport? value = obj == null ? (SubSport?)null : (SubSport)obj; - return value; - } - - /// - /// Set SubSport field - /// Nullable field value to be set - public void SetSubSport(SubSport? subSport_) - { - SetFieldValue(1, 0, subSport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Name field - /// Returns byte[] representing the Name field - public byte[] GetName() - { - byte[] data = (byte[])GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Name field - /// Returns String representing the Name field - public String GetNameAsString() - { - byte[] data = (byte[])GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Name field - /// field value to be set - public void SetName(String name_) - { - byte[] data = Encoding.UTF8.GetBytes(name_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(3, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Name field - /// field value to be set - public void SetName(byte[] name_) - { - SetFieldValue(3, 0, name_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/StressLevelMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/StressLevelMesg.cs deleted file mode 100644 index 1418869b5..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/StressLevelMesg.cs +++ /dev/null @@ -1,105 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the StressLevel profile message. - /// - public class StressLevelMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte StressLevelValue = 0; - public const byte StressLevelTime = 1; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public StressLevelMesg() : base(Profile.GetMesg(MesgNum.StressLevel)) - { - } - - public StressLevelMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the StressLevelValue field - /// Returns nullable short representing the StressLevelValue field - public short? GetStressLevelValue() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt16(val)); - - } - - /// - /// Set StressLevelValue field - /// Nullable field value to be set - public void SetStressLevelValue(short? stressLevelValue_) - { - SetFieldValue(0, 0, stressLevelValue_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StressLevelTime field - /// Units: s - /// Comment: Time stress score was calculated - /// Returns DateTime representing the StressLevelTime field - public DateTime GetStressLevelTime() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set StressLevelTime field - /// Units: s - /// Comment: Time stress score was calculated - /// Nullable field value to be set - public void SetStressLevelTime(DateTime stressLevelTime_) - { - SetFieldValue(1, 0, stressLevelTime_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ThreeDSensorCalibrationMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ThreeDSensorCalibrationMesg.cs deleted file mode 100644 index 71ff10dd2..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ThreeDSensorCalibrationMesg.cs +++ /dev/null @@ -1,322 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the ThreeDSensorCalibration profile message. - /// - public class ThreeDSensorCalibrationMesg : Mesg - { - #region Fields - static class CalibrationFactorSubfield - { - public static ushort AccelCalFactor = 0; - public static ushort GyroCalFactor = 1; - public static ushort Subfields = 2; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte SensorType = 0; - public const byte CalibrationFactor = 1; - public const byte CalibrationDivisor = 2; - public const byte LevelShift = 3; - public const byte OffsetCal = 4; - public const byte OrientationMatrix = 5; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public ThreeDSensorCalibrationMesg() : base(Profile.GetMesg(MesgNum.ThreeDSensorCalibration)) - { - } - - public ThreeDSensorCalibrationMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SensorType field - /// Comment: Indicates which sensor the calibration is for - /// Returns nullable SensorType enum representing the SensorType field - public SensorType? GetSensorType() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - SensorType? value = obj == null ? (SensorType?)null : (SensorType)obj; - return value; - } - - /// - /// Set SensorType field - /// Comment: Indicates which sensor the calibration is for - /// Nullable field value to be set - public void SetSensorType(SensorType? sensorType_) - { - SetFieldValue(0, 0, sensorType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CalibrationFactor field - /// Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - /// Returns nullable uint representing the CalibrationFactor field - public uint? GetCalibrationFactor() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set CalibrationFactor field - /// Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - /// Nullable field value to be set - public void SetCalibrationFactor(uint? calibrationFactor_) - { - SetFieldValue(1, 0, calibrationFactor_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the AccelCalFactor subfield - /// Units: g - /// Comment: Accelerometer calibration factor - /// Nullable uint representing the AccelCalFactor subfield - public uint? GetAccelCalFactor() - { - Object val = GetFieldValue(1, 0, CalibrationFactorSubfield.AccelCalFactor); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set AccelCalFactor subfield - /// Units: g - /// Comment: Accelerometer calibration factor - /// Subfield value to be set - public void SetAccelCalFactor(uint? accelCalFactor) - { - SetFieldValue(1, 0, accelCalFactor, CalibrationFactorSubfield.AccelCalFactor); - } - - /// - /// Retrieves the GyroCalFactor subfield - /// Units: deg/s - /// Comment: Gyro calibration factor - /// Nullable uint representing the GyroCalFactor subfield - public uint? GetGyroCalFactor() - { - Object val = GetFieldValue(1, 0, CalibrationFactorSubfield.GyroCalFactor); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set GyroCalFactor subfield - /// Units: deg/s - /// Comment: Gyro calibration factor - /// Subfield value to be set - public void SetGyroCalFactor(uint? gyroCalFactor) - { - SetFieldValue(1, 0, gyroCalFactor, CalibrationFactorSubfield.GyroCalFactor); - } - /// - /// Retrieves the CalibrationDivisor field - /// Units: counts - /// Comment: Calibration factor divisor - /// Returns nullable uint representing the CalibrationDivisor field - public uint? GetCalibrationDivisor() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set CalibrationDivisor field - /// Units: counts - /// Comment: Calibration factor divisor - /// Nullable field value to be set - public void SetCalibrationDivisor(uint? calibrationDivisor_) - { - SetFieldValue(2, 0, calibrationDivisor_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LevelShift field - /// Comment: Level shift value used to shift the ADC value back into range - /// Returns nullable uint representing the LevelShift field - public uint? GetLevelShift() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set LevelShift field - /// Comment: Level shift value used to shift the ADC value back into range - /// Nullable field value to be set - public void SetLevelShift(uint? levelShift_) - { - SetFieldValue(3, 0, levelShift_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field OffsetCal - public int GetNumOffsetCal() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the OffsetCal field - /// Comment: Internal calibration factors, one for each: xy, yx, zx - /// 0 based index of OffsetCal element to retrieve - /// Returns nullable int representing the OffsetCal field - public int? GetOffsetCal(int index) - { - Object val = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set OffsetCal field - /// Comment: Internal calibration factors, one for each: xy, yx, zx - /// 0 based index of offset_cal - /// Nullable field value to be set - public void SetOffsetCal(int index, int? offsetCal_) - { - SetFieldValue(4, index, offsetCal_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field OrientationMatrix - public int GetNumOrientationMatrix() - { - return GetNumFieldValues(5, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the OrientationMatrix field - /// Comment: 3 x 3 rotation matrix (row major) - /// 0 based index of OrientationMatrix element to retrieve - /// Returns nullable float representing the OrientationMatrix field - public float? GetOrientationMatrix(int index) - { - Object val = GetFieldValue(5, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set OrientationMatrix field - /// Comment: 3 x 3 rotation matrix (row major) - /// 0 based index of orientation_matrix - /// Nullable field value to be set - public void SetOrientationMatrix(int index, float? orientationMatrix_) - { - SetFieldValue(5, index, orientationMatrix_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/TimeInZoneMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/TimeInZoneMesg.cs deleted file mode 100644 index d08024e63..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/TimeInZoneMesg.cs +++ /dev/null @@ -1,565 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the TimeInZone profile message. - /// - public class TimeInZoneMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte ReferenceMesg = 0; - public const byte ReferenceIndex = 1; - public const byte TimeInHrZone = 2; - public const byte TimeInSpeedZone = 3; - public const byte TimeInCadenceZone = 4; - public const byte TimeInPowerZone = 5; - public const byte HrZoneHighBoundary = 6; - public const byte SpeedZoneHighBoundary = 7; - public const byte CadenceZoneHighBondary = 8; - public const byte PowerZoneHighBoundary = 9; - public const byte HrCalcType = 10; - public const byte MaxHeartRate = 11; - public const byte RestingHeartRate = 12; - public const byte ThresholdHeartRate = 13; - public const byte PwrCalcType = 14; - public const byte FunctionalThresholdPower = 15; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public TimeInZoneMesg() : base(Profile.GetMesg(MesgNum.TimeInZone)) - { - } - - public TimeInZoneMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ReferenceMesg field - /// Returns nullable ushort representing the ReferenceMesg field - public ushort? GetReferenceMesg() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ReferenceMesg field - /// Nullable field value to be set - public void SetReferenceMesg(ushort? referenceMesg_) - { - SetFieldValue(0, 0, referenceMesg_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ReferenceIndex field - /// Returns nullable ushort representing the ReferenceIndex field - public ushort? GetReferenceIndex() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ReferenceIndex field - /// Nullable field value to be set - public void SetReferenceIndex(ushort? referenceIndex_) - { - SetFieldValue(1, 0, referenceIndex_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInHrZone - public int GetNumTimeInHrZone() - { - return GetNumFieldValues(2, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInHrZone field - /// Units: s - /// 0 based index of TimeInHrZone element to retrieve - /// Returns nullable float representing the TimeInHrZone field - public float? GetTimeInHrZone(int index) - { - Object val = GetFieldValue(2, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInHrZone field - /// Units: s - /// 0 based index of time_in_hr_zone - /// Nullable field value to be set - public void SetTimeInHrZone(int index, float? timeInHrZone_) - { - SetFieldValue(2, index, timeInHrZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInSpeedZone - public int GetNumTimeInSpeedZone() - { - return GetNumFieldValues(3, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInSpeedZone field - /// Units: s - /// 0 based index of TimeInSpeedZone element to retrieve - /// Returns nullable float representing the TimeInSpeedZone field - public float? GetTimeInSpeedZone(int index) - { - Object val = GetFieldValue(3, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInSpeedZone field - /// Units: s - /// 0 based index of time_in_speed_zone - /// Nullable field value to be set - public void SetTimeInSpeedZone(int index, float? timeInSpeedZone_) - { - SetFieldValue(3, index, timeInSpeedZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInCadenceZone - public int GetNumTimeInCadenceZone() - { - return GetNumFieldValues(4, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInCadenceZone field - /// Units: s - /// 0 based index of TimeInCadenceZone element to retrieve - /// Returns nullable float representing the TimeInCadenceZone field - public float? GetTimeInCadenceZone(int index) - { - Object val = GetFieldValue(4, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInCadenceZone field - /// Units: s - /// 0 based index of time_in_cadence_zone - /// Nullable field value to be set - public void SetTimeInCadenceZone(int index, float? timeInCadenceZone_) - { - SetFieldValue(4, index, timeInCadenceZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field TimeInPowerZone - public int GetNumTimeInPowerZone() - { - return GetNumFieldValues(5, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeInPowerZone field - /// Units: s - /// 0 based index of TimeInPowerZone element to retrieve - /// Returns nullable float representing the TimeInPowerZone field - public float? GetTimeInPowerZone(int index) - { - Object val = GetFieldValue(5, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set TimeInPowerZone field - /// Units: s - /// 0 based index of time_in_power_zone - /// Nullable field value to be set - public void SetTimeInPowerZone(int index, float? timeInPowerZone_) - { - SetFieldValue(5, index, timeInPowerZone_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field HrZoneHighBoundary - public int GetNumHrZoneHighBoundary() - { - return GetNumFieldValues(6, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HrZoneHighBoundary field - /// Units: bpm - /// 0 based index of HrZoneHighBoundary element to retrieve - /// Returns nullable byte representing the HrZoneHighBoundary field - public byte? GetHrZoneHighBoundary(int index) - { - Object val = GetFieldValue(6, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set HrZoneHighBoundary field - /// Units: bpm - /// 0 based index of hr_zone_high_boundary - /// Nullable field value to be set - public void SetHrZoneHighBoundary(int index, byte? hrZoneHighBoundary_) - { - SetFieldValue(6, index, hrZoneHighBoundary_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field SpeedZoneHighBoundary - public int GetNumSpeedZoneHighBoundary() - { - return GetNumFieldValues(7, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SpeedZoneHighBoundary field - /// Units: m/s - /// 0 based index of SpeedZoneHighBoundary element to retrieve - /// Returns nullable float representing the SpeedZoneHighBoundary field - public float? GetSpeedZoneHighBoundary(int index) - { - Object val = GetFieldValue(7, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set SpeedZoneHighBoundary field - /// Units: m/s - /// 0 based index of speed_zone_high_boundary - /// Nullable field value to be set - public void SetSpeedZoneHighBoundary(int index, float? speedZoneHighBoundary_) - { - SetFieldValue(7, index, speedZoneHighBoundary_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field CadenceZoneHighBondary - public int GetNumCadenceZoneHighBondary() - { - return GetNumFieldValues(8, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the CadenceZoneHighBondary field - /// Units: rpm - /// 0 based index of CadenceZoneHighBondary element to retrieve - /// Returns nullable byte representing the CadenceZoneHighBondary field - public byte? GetCadenceZoneHighBondary(int index) - { - Object val = GetFieldValue(8, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set CadenceZoneHighBondary field - /// Units: rpm - /// 0 based index of cadence_zone_high_bondary - /// Nullable field value to be set - public void SetCadenceZoneHighBondary(int index, byte? cadenceZoneHighBondary_) - { - SetFieldValue(8, index, cadenceZoneHighBondary_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field PowerZoneHighBoundary - public int GetNumPowerZoneHighBoundary() - { - return GetNumFieldValues(9, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PowerZoneHighBoundary field - /// Units: watts - /// 0 based index of PowerZoneHighBoundary element to retrieve - /// Returns nullable ushort representing the PowerZoneHighBoundary field - public ushort? GetPowerZoneHighBoundary(int index) - { - Object val = GetFieldValue(9, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set PowerZoneHighBoundary field - /// Units: watts - /// 0 based index of power_zone_high_boundary - /// Nullable field value to be set - public void SetPowerZoneHighBoundary(int index, ushort? powerZoneHighBoundary_) - { - SetFieldValue(9, index, powerZoneHighBoundary_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HrCalcType field - /// Returns nullable HrZoneCalc enum representing the HrCalcType field - public HrZoneCalc? GetHrCalcType() - { - object obj = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - HrZoneCalc? value = obj == null ? (HrZoneCalc?)null : (HrZoneCalc)obj; - return value; - } - - /// - /// Set HrCalcType field - /// Nullable field value to be set - public void SetHrCalcType(HrZoneCalc? hrCalcType_) - { - SetFieldValue(10, 0, hrCalcType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MaxHeartRate field - /// Returns nullable byte representing the MaxHeartRate field - public byte? GetMaxHeartRate() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxHeartRate field - /// Nullable field value to be set - public void SetMaxHeartRate(byte? maxHeartRate_) - { - SetFieldValue(11, 0, maxHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RestingHeartRate field - /// Returns nullable byte representing the RestingHeartRate field - public byte? GetRestingHeartRate() - { - Object val = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set RestingHeartRate field - /// Nullable field value to be set - public void SetRestingHeartRate(byte? restingHeartRate_) - { - SetFieldValue(12, 0, restingHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ThresholdHeartRate field - /// Returns nullable byte representing the ThresholdHeartRate field - public byte? GetThresholdHeartRate() - { - Object val = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ThresholdHeartRate field - /// Nullable field value to be set - public void SetThresholdHeartRate(byte? thresholdHeartRate_) - { - SetFieldValue(13, 0, thresholdHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PwrCalcType field - /// Returns nullable PwrZoneCalc enum representing the PwrCalcType field - public PwrZoneCalc? GetPwrCalcType() - { - object obj = GetFieldValue(14, 0, Fit.SubfieldIndexMainField); - PwrZoneCalc? value = obj == null ? (PwrZoneCalc?)null : (PwrZoneCalc)obj; - return value; - } - - /// - /// Set PwrCalcType field - /// Nullable field value to be set - public void SetPwrCalcType(PwrZoneCalc? pwrCalcType_) - { - SetFieldValue(14, 0, pwrCalcType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FunctionalThresholdPower field - /// Returns nullable ushort representing the FunctionalThresholdPower field - public ushort? GetFunctionalThresholdPower() - { - Object val = GetFieldValue(15, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set FunctionalThresholdPower field - /// Nullable field value to be set - public void SetFunctionalThresholdPower(ushort? functionalThresholdPower_) - { - SetFieldValue(15, 0, functionalThresholdPower_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/TimestampCorrelationMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/TimestampCorrelationMesg.cs deleted file mode 100644 index a7a43856f..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/TimestampCorrelationMesg.cs +++ /dev/null @@ -1,249 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the TimestampCorrelation profile message. - /// - public class TimestampCorrelationMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte FractionalTimestamp = 0; - public const byte SystemTimestamp = 1; - public const byte FractionalSystemTimestamp = 2; - public const byte LocalTimestamp = 3; - public const byte TimestampMs = 4; - public const byte SystemTimestampMs = 5; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public TimestampCorrelationMesg() : base(Profile.GetMesg(MesgNum.TimestampCorrelation)) - { - } - - public TimestampCorrelationMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Whole second part of UTC timestamp at the time the system timestamp was recorded. - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Whole second part of UTC timestamp at the time the system timestamp was recorded. - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FractionalTimestamp field - /// Units: s - /// Comment: Fractional part of the UTC timestamp at the time the system timestamp was recorded. - /// Returns nullable float representing the FractionalTimestamp field - public float? GetFractionalTimestamp() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set FractionalTimestamp field - /// Units: s - /// Comment: Fractional part of the UTC timestamp at the time the system timestamp was recorded. - /// Nullable field value to be set - public void SetFractionalTimestamp(float? fractionalTimestamp_) - { - SetFieldValue(0, 0, fractionalTimestamp_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SystemTimestamp field - /// Units: s - /// Comment: Whole second part of the system timestamp - /// Returns DateTime representing the SystemTimestamp field - public DateTime GetSystemTimestamp() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set SystemTimestamp field - /// Units: s - /// Comment: Whole second part of the system timestamp - /// Nullable field value to be set - public void SetSystemTimestamp(DateTime systemTimestamp_) - { - SetFieldValue(1, 0, systemTimestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FractionalSystemTimestamp field - /// Units: s - /// Comment: Fractional part of the system timestamp - /// Returns nullable float representing the FractionalSystemTimestamp field - public float? GetFractionalSystemTimestamp() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set FractionalSystemTimestamp field - /// Units: s - /// Comment: Fractional part of the system timestamp - /// Nullable field value to be set - public void SetFractionalSystemTimestamp(float? fractionalSystemTimestamp_) - { - SetFieldValue(2, 0, fractionalSystemTimestamp_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LocalTimestamp field - /// Units: s - /// Comment: timestamp epoch expressed in local time used to convert timestamps to local time - /// Returns nullable uint representing the LocalTimestamp field - public uint? GetLocalTimestamp() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set LocalTimestamp field - /// Units: s - /// Comment: timestamp epoch expressed in local time used to convert timestamps to local time - /// Nullable field value to be set - public void SetLocalTimestamp(uint? localTimestamp_) - { - SetFieldValue(3, 0, localTimestamp_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the UTC timestamp at the time the system timestamp was recorded. - /// Returns nullable ushort representing the TimestampMs field - public ushort? GetTimestampMs() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the UTC timestamp at the time the system timestamp was recorded. - /// Nullable field value to be set - public void SetTimestampMs(ushort? timestampMs_) - { - SetFieldValue(4, 0, timestampMs_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SystemTimestampMs field - /// Units: ms - /// Comment: Millisecond part of the system timestamp - /// Returns nullable ushort representing the SystemTimestampMs field - public ushort? GetSystemTimestampMs() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set SystemTimestampMs field - /// Units: ms - /// Comment: Millisecond part of the system timestamp - /// Nullable field value to be set - public void SetSystemTimestampMs(ushort? systemTimestampMs_) - { - SetFieldValue(5, 0, systemTimestampMs_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/TotalsMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/TotalsMesg.cs deleted file mode 100644 index bcca7c811..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/TotalsMesg.cs +++ /dev/null @@ -1,304 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Totals profile message. - /// - public class TotalsMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Timestamp = 253; - public const byte TimerTime = 0; - public const byte Distance = 1; - public const byte Calories = 2; - public const byte Sport = 3; - public const byte ElapsedTime = 4; - public const byte Sessions = 5; - public const byte ActiveTime = 6; - public const byte SportIndex = 9; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public TotalsMesg() : base(Profile.GetMesg(MesgNum.Totals)) - { - } - - public TotalsMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimerTime field - /// Units: s - /// Comment: Excludes pauses - /// Returns nullable uint representing the TimerTime field - public uint? GetTimerTime() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TimerTime field - /// Units: s - /// Comment: Excludes pauses - /// Nullable field value to be set - public void SetTimerTime(uint? timerTime_) - { - SetFieldValue(0, 0, timerTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Distance field - /// Units: m - /// Returns nullable uint representing the Distance field - public uint? GetDistance() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set Distance field - /// Units: m - /// Nullable field value to be set - public void SetDistance(uint? distance_) - { - SetFieldValue(1, 0, distance_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Calories field - /// Units: kcal - /// Returns nullable uint representing the Calories field - public uint? GetCalories() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set Calories field - /// Units: kcal - /// Nullable field value to be set - public void SetCalories(uint? calories_) - { - SetFieldValue(2, 0, calories_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sport field - /// Returns nullable Sport enum representing the Sport field - public Sport? GetSport() - { - object obj = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - Sport? value = obj == null ? (Sport?)null : (Sport)obj; - return value; - } - - /// - /// Set Sport field - /// Nullable field value to be set - public void SetSport(Sport? sport_) - { - SetFieldValue(3, 0, sport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ElapsedTime field - /// Units: s - /// Comment: Includes pauses - /// Returns nullable uint representing the ElapsedTime field - public uint? GetElapsedTime() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set ElapsedTime field - /// Units: s - /// Comment: Includes pauses - /// Nullable field value to be set - public void SetElapsedTime(uint? elapsedTime_) - { - SetFieldValue(4, 0, elapsedTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sessions field - /// Returns nullable ushort representing the Sessions field - public ushort? GetSessions() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Sessions field - /// Nullable field value to be set - public void SetSessions(ushort? sessions_) - { - SetFieldValue(5, 0, sessions_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActiveTime field - /// Units: s - /// Returns nullable uint representing the ActiveTime field - public uint? GetActiveTime() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set ActiveTime field - /// Units: s - /// Nullable field value to be set - public void SetActiveTime(uint? activeTime_) - { - SetFieldValue(6, 0, activeTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SportIndex field - /// Returns nullable byte representing the SportIndex field - public byte? GetSportIndex() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set SportIndex field - /// Nullable field value to be set - public void SetSportIndex(byte? sportIndex_) - { - SetFieldValue(9, 0, sportIndex_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/TrainingFileMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/TrainingFileMesg.cs deleted file mode 100644 index 1ba3e2b54..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/TrainingFileMesg.cs +++ /dev/null @@ -1,248 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the TrainingFile profile message. - /// - public class TrainingFileMesg : Mesg - { - #region Fields - static class ProductSubfield - { - public static ushort FaveroProduct = 0; - public static ushort GarminProduct = 1; - public static ushort Subfields = 2; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte Type = 0; - public const byte Manufacturer = 1; - public const byte Product = 2; - public const byte SerialNumber = 3; - public const byte TimeCreated = 4; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public TrainingFileMesg() : base(Profile.GetMesg(MesgNum.TrainingFile)) - { - } - - public TrainingFileMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Type field - /// Returns nullable File enum representing the Type field - new public File? GetType() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - File? value = obj == null ? (File?)null : (File)obj; - return value; - } - - /// - /// Set Type field - /// Nullable field value to be set - public void SetType(File? type_) - { - SetFieldValue(0, 0, type_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Manufacturer field - /// Returns nullable ushort representing the Manufacturer field - public ushort? GetManufacturer() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Manufacturer field - /// Nullable field value to be set - public void SetManufacturer(ushort? manufacturer_) - { - SetFieldValue(1, 0, manufacturer_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Product field - /// Returns nullable ushort representing the Product field - public ushort? GetProduct() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set Product field - /// Nullable field value to be set - public void SetProduct(ushort? product_) - { - SetFieldValue(2, 0, product_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the FaveroProduct subfield - /// Nullable ushort representing the FaveroProduct subfield - public ushort? GetFaveroProduct() - { - Object val = GetFieldValue(2, 0, ProductSubfield.FaveroProduct); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set FaveroProduct subfield - /// Subfield value to be set - public void SetFaveroProduct(ushort? faveroProduct) - { - SetFieldValue(2, 0, faveroProduct, ProductSubfield.FaveroProduct); - } - - /// - /// Retrieves the GarminProduct subfield - /// Nullable ushort representing the GarminProduct subfield - public ushort? GetGarminProduct() - { - Object val = GetFieldValue(2, 0, ProductSubfield.GarminProduct); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// - /// Set GarminProduct subfield - /// Subfield value to be set - public void SetGarminProduct(ushort? garminProduct) - { - SetFieldValue(2, 0, garminProduct, ProductSubfield.GarminProduct); - } - /// - /// Retrieves the SerialNumber field - /// Returns nullable uint representing the SerialNumber field - public uint? GetSerialNumber() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set SerialNumber field - /// Nullable field value to be set - public void SetSerialNumber(uint? serialNumber_) - { - SetFieldValue(3, 0, serialNumber_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimeCreated field - /// Returns DateTime representing the TimeCreated field - public DateTime GetTimeCreated() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set TimeCreated field - /// Nullable field value to be set - public void SetTimeCreated(DateTime timeCreated_) - { - SetFieldValue(4, 0, timeCreated_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/UserProfileMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/UserProfileMesg.cs deleted file mode 100644 index 062978d25..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/UserProfileMesg.cs +++ /dev/null @@ -1,737 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the UserProfile profile message. - /// - public class UserProfileMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte FriendlyName = 0; - public const byte Gender = 1; - public const byte Age = 2; - public const byte Height = 3; - public const byte Weight = 4; - public const byte Language = 5; - public const byte ElevSetting = 6; - public const byte WeightSetting = 7; - public const byte RestingHeartRate = 8; - public const byte DefaultMaxRunningHeartRate = 9; - public const byte DefaultMaxBikingHeartRate = 10; - public const byte DefaultMaxHeartRate = 11; - public const byte HrSetting = 12; - public const byte SpeedSetting = 13; - public const byte DistSetting = 14; - public const byte PowerSetting = 16; - public const byte ActivityClass = 17; - public const byte PositionSetting = 18; - public const byte TemperatureSetting = 21; - public const byte LocalId = 22; - public const byte GlobalId = 23; - public const byte WakeTime = 28; - public const byte SleepTime = 29; - public const byte HeightSetting = 30; - public const byte UserRunningStepLength = 31; - public const byte UserWalkingStepLength = 32; - public const byte DepthSetting = 47; - public const byte DiveCount = 49; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public UserProfileMesg() : base(Profile.GetMesg(MesgNum.UserProfile)) - { - } - - public UserProfileMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FriendlyName field - /// Returns byte[] representing the FriendlyName field - public byte[] GetFriendlyName() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the FriendlyName field - /// Returns String representing the FriendlyName field - public String GetFriendlyNameAsString() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set FriendlyName field - /// field value to be set - public void SetFriendlyName(String friendlyName_) - { - byte[] data = Encoding.UTF8.GetBytes(friendlyName_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(0, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set FriendlyName field - /// field value to be set - public void SetFriendlyName(byte[] friendlyName_) - { - SetFieldValue(0, 0, friendlyName_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Gender field - /// Returns nullable Gender enum representing the Gender field - public Gender? GetGender() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - Gender? value = obj == null ? (Gender?)null : (Gender)obj; - return value; - } - - /// - /// Set Gender field - /// Nullable field value to be set - public void SetGender(Gender? gender_) - { - SetFieldValue(1, 0, gender_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Age field - /// Units: years - /// Returns nullable byte representing the Age field - public byte? GetAge() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Age field - /// Units: years - /// Nullable field value to be set - public void SetAge(byte? age_) - { - SetFieldValue(2, 0, age_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Height field - /// Units: m - /// Returns nullable float representing the Height field - public float? GetHeight() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Height field - /// Units: m - /// Nullable field value to be set - public void SetHeight(float? height_) - { - SetFieldValue(3, 0, height_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Weight field - /// Units: kg - /// Returns nullable float representing the Weight field - public float? GetWeight() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Weight field - /// Units: kg - /// Nullable field value to be set - public void SetWeight(float? weight_) - { - SetFieldValue(4, 0, weight_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Language field - /// Returns nullable Language enum representing the Language field - public Language? GetLanguage() - { - object obj = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - Language? value = obj == null ? (Language?)null : (Language)obj; - return value; - } - - /// - /// Set Language field - /// Nullable field value to be set - public void SetLanguage(Language? language_) - { - SetFieldValue(5, 0, language_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ElevSetting field - /// Returns nullable DisplayMeasure enum representing the ElevSetting field - public DisplayMeasure? GetElevSetting() - { - object obj = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - DisplayMeasure? value = obj == null ? (DisplayMeasure?)null : (DisplayMeasure)obj; - return value; - } - - /// - /// Set ElevSetting field - /// Nullable field value to be set - public void SetElevSetting(DisplayMeasure? elevSetting_) - { - SetFieldValue(6, 0, elevSetting_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WeightSetting field - /// Returns nullable DisplayMeasure enum representing the WeightSetting field - public DisplayMeasure? GetWeightSetting() - { - object obj = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - DisplayMeasure? value = obj == null ? (DisplayMeasure?)null : (DisplayMeasure)obj; - return value; - } - - /// - /// Set WeightSetting field - /// Nullable field value to be set - public void SetWeightSetting(DisplayMeasure? weightSetting_) - { - SetFieldValue(7, 0, weightSetting_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RestingHeartRate field - /// Units: bpm - /// Returns nullable byte representing the RestingHeartRate field - public byte? GetRestingHeartRate() - { - Object val = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set RestingHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetRestingHeartRate(byte? restingHeartRate_) - { - SetFieldValue(8, 0, restingHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DefaultMaxRunningHeartRate field - /// Units: bpm - /// Returns nullable byte representing the DefaultMaxRunningHeartRate field - public byte? GetDefaultMaxRunningHeartRate() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DefaultMaxRunningHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetDefaultMaxRunningHeartRate(byte? defaultMaxRunningHeartRate_) - { - SetFieldValue(9, 0, defaultMaxRunningHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DefaultMaxBikingHeartRate field - /// Units: bpm - /// Returns nullable byte representing the DefaultMaxBikingHeartRate field - public byte? GetDefaultMaxBikingHeartRate() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DefaultMaxBikingHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetDefaultMaxBikingHeartRate(byte? defaultMaxBikingHeartRate_) - { - SetFieldValue(10, 0, defaultMaxBikingHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DefaultMaxHeartRate field - /// Units: bpm - /// Returns nullable byte representing the DefaultMaxHeartRate field - public byte? GetDefaultMaxHeartRate() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set DefaultMaxHeartRate field - /// Units: bpm - /// Nullable field value to be set - public void SetDefaultMaxHeartRate(byte? defaultMaxHeartRate_) - { - SetFieldValue(11, 0, defaultMaxHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HrSetting field - /// Returns nullable DisplayHeart enum representing the HrSetting field - public DisplayHeart? GetHrSetting() - { - object obj = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - DisplayHeart? value = obj == null ? (DisplayHeart?)null : (DisplayHeart)obj; - return value; - } - - /// - /// Set HrSetting field - /// Nullable field value to be set - public void SetHrSetting(DisplayHeart? hrSetting_) - { - SetFieldValue(12, 0, hrSetting_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SpeedSetting field - /// Returns nullable DisplayMeasure enum representing the SpeedSetting field - public DisplayMeasure? GetSpeedSetting() - { - object obj = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - DisplayMeasure? value = obj == null ? (DisplayMeasure?)null : (DisplayMeasure)obj; - return value; - } - - /// - /// Set SpeedSetting field - /// Nullable field value to be set - public void SetSpeedSetting(DisplayMeasure? speedSetting_) - { - SetFieldValue(13, 0, speedSetting_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DistSetting field - /// Returns nullable DisplayMeasure enum representing the DistSetting field - public DisplayMeasure? GetDistSetting() - { - object obj = GetFieldValue(14, 0, Fit.SubfieldIndexMainField); - DisplayMeasure? value = obj == null ? (DisplayMeasure?)null : (DisplayMeasure)obj; - return value; - } - - /// - /// Set DistSetting field - /// Nullable field value to be set - public void SetDistSetting(DisplayMeasure? distSetting_) - { - SetFieldValue(14, 0, distSetting_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PowerSetting field - /// Returns nullable DisplayPower enum representing the PowerSetting field - public DisplayPower? GetPowerSetting() - { - object obj = GetFieldValue(16, 0, Fit.SubfieldIndexMainField); - DisplayPower? value = obj == null ? (DisplayPower?)null : (DisplayPower)obj; - return value; - } - - /// - /// Set PowerSetting field - /// Nullable field value to be set - public void SetPowerSetting(DisplayPower? powerSetting_) - { - SetFieldValue(16, 0, powerSetting_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActivityClass field - /// Returns nullable ActivityClass enum representing the ActivityClass field - public ActivityClass? GetActivityClass() - { - object obj = GetFieldValue(17, 0, Fit.SubfieldIndexMainField); - ActivityClass? value = obj == null ? (ActivityClass?)null : (ActivityClass)obj; - return value; - } - - /// - /// Set ActivityClass field - /// Nullable field value to be set - public void SetActivityClass(ActivityClass? activityClass_) - { - SetFieldValue(17, 0, activityClass_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PositionSetting field - /// Returns nullable DisplayPosition enum representing the PositionSetting field - public DisplayPosition? GetPositionSetting() - { - object obj = GetFieldValue(18, 0, Fit.SubfieldIndexMainField); - DisplayPosition? value = obj == null ? (DisplayPosition?)null : (DisplayPosition)obj; - return value; - } - - /// - /// Set PositionSetting field - /// Nullable field value to be set - public void SetPositionSetting(DisplayPosition? positionSetting_) - { - SetFieldValue(18, 0, positionSetting_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TemperatureSetting field - /// Returns nullable DisplayMeasure enum representing the TemperatureSetting field - public DisplayMeasure? GetTemperatureSetting() - { - object obj = GetFieldValue(21, 0, Fit.SubfieldIndexMainField); - DisplayMeasure? value = obj == null ? (DisplayMeasure?)null : (DisplayMeasure)obj; - return value; - } - - /// - /// Set TemperatureSetting field - /// Nullable field value to be set - public void SetTemperatureSetting(DisplayMeasure? temperatureSetting_) - { - SetFieldValue(21, 0, temperatureSetting_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LocalId field - /// Returns nullable ushort representing the LocalId field - public ushort? GetLocalId() - { - Object val = GetFieldValue(22, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set LocalId field - /// Nullable field value to be set - public void SetLocalId(ushort? localId_) - { - SetFieldValue(22, 0, localId_, Fit.SubfieldIndexMainField); - } - - - /// - /// - /// - /// returns number of elements in field GlobalId - public int GetNumGlobalId() - { - return GetNumFieldValues(23, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the GlobalId field - /// 0 based index of GlobalId element to retrieve - /// Returns nullable byte representing the GlobalId field - public byte? GetGlobalId(int index) - { - Object val = GetFieldValue(23, index, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set GlobalId field - /// 0 based index of global_id - /// Nullable field value to be set - public void SetGlobalId(int index, byte? globalId_) - { - SetFieldValue(23, index, globalId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WakeTime field - /// Comment: Typical wake time - /// Returns nullable uint representing the WakeTime field - public uint? GetWakeTime() - { - Object val = GetFieldValue(28, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set WakeTime field - /// Comment: Typical wake time - /// Nullable field value to be set - public void SetWakeTime(uint? wakeTime_) - { - SetFieldValue(28, 0, wakeTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SleepTime field - /// Comment: Typical bed time - /// Returns nullable uint representing the SleepTime field - public uint? GetSleepTime() - { - Object val = GetFieldValue(29, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set SleepTime field - /// Comment: Typical bed time - /// Nullable field value to be set - public void SetSleepTime(uint? sleepTime_) - { - SetFieldValue(29, 0, sleepTime_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HeightSetting field - /// Returns nullable DisplayMeasure enum representing the HeightSetting field - public DisplayMeasure? GetHeightSetting() - { - object obj = GetFieldValue(30, 0, Fit.SubfieldIndexMainField); - DisplayMeasure? value = obj == null ? (DisplayMeasure?)null : (DisplayMeasure)obj; - return value; - } - - /// - /// Set HeightSetting field - /// Nullable field value to be set - public void SetHeightSetting(DisplayMeasure? heightSetting_) - { - SetFieldValue(30, 0, heightSetting_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the UserRunningStepLength field - /// Units: m - /// Comment: User defined running step length set to 0 for auto length - /// Returns nullable float representing the UserRunningStepLength field - public float? GetUserRunningStepLength() - { - Object val = GetFieldValue(31, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set UserRunningStepLength field - /// Units: m - /// Comment: User defined running step length set to 0 for auto length - /// Nullable field value to be set - public void SetUserRunningStepLength(float? userRunningStepLength_) - { - SetFieldValue(31, 0, userRunningStepLength_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the UserWalkingStepLength field - /// Units: m - /// Comment: User defined walking step length set to 0 for auto length - /// Returns nullable float representing the UserWalkingStepLength field - public float? GetUserWalkingStepLength() - { - Object val = GetFieldValue(32, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set UserWalkingStepLength field - /// Units: m - /// Comment: User defined walking step length set to 0 for auto length - /// Nullable field value to be set - public void SetUserWalkingStepLength(float? userWalkingStepLength_) - { - SetFieldValue(32, 0, userWalkingStepLength_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DepthSetting field - /// Returns nullable DisplayMeasure enum representing the DepthSetting field - public DisplayMeasure? GetDepthSetting() - { - object obj = GetFieldValue(47, 0, Fit.SubfieldIndexMainField); - DisplayMeasure? value = obj == null ? (DisplayMeasure?)null : (DisplayMeasure)obj; - return value; - } - - /// - /// Set DepthSetting field - /// Nullable field value to be set - public void SetDepthSetting(DisplayMeasure? depthSetting_) - { - SetFieldValue(47, 0, depthSetting_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DiveCount field - /// Returns nullable uint representing the DiveCount field - public uint? GetDiveCount() - { - Object val = GetFieldValue(49, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set DiveCount field - /// Nullable field value to be set - public void SetDiveCount(uint? diveCount_) - { - SetFieldValue(49, 0, diveCount_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/VideoClipMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/VideoClipMesg.cs deleted file mode 100644 index 432f5b59e..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/VideoClipMesg.cs +++ /dev/null @@ -1,229 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the VideoClip profile message. - /// - public class VideoClipMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte ClipNumber = 0; - public const byte StartTimestamp = 1; - public const byte StartTimestampMs = 2; - public const byte EndTimestamp = 3; - public const byte EndTimestampMs = 4; - public const byte ClipStart = 6; - public const byte ClipEnd = 7; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public VideoClipMesg() : base(Profile.GetMesg(MesgNum.VideoClip)) - { - } - - public VideoClipMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the ClipNumber field - /// Returns nullable ushort representing the ClipNumber field - public ushort? GetClipNumber() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ClipNumber field - /// Nullable field value to be set - public void SetClipNumber(ushort? clipNumber_) - { - SetFieldValue(0, 0, clipNumber_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartTimestamp field - /// Returns DateTime representing the StartTimestamp field - public DateTime GetStartTimestamp() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set StartTimestamp field - /// Nullable field value to be set - public void SetStartTimestamp(DateTime startTimestamp_) - { - SetFieldValue(1, 0, startTimestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the StartTimestampMs field - /// Returns nullable ushort representing the StartTimestampMs field - public ushort? GetStartTimestampMs() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set StartTimestampMs field - /// Nullable field value to be set - public void SetStartTimestampMs(ushort? startTimestampMs_) - { - SetFieldValue(2, 0, startTimestampMs_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EndTimestamp field - /// Returns DateTime representing the EndTimestamp field - public DateTime GetEndTimestamp() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set EndTimestamp field - /// Nullable field value to be set - public void SetEndTimestamp(DateTime endTimestamp_) - { - SetFieldValue(3, 0, endTimestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the EndTimestampMs field - /// Returns nullable ushort representing the EndTimestampMs field - public ushort? GetEndTimestampMs() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set EndTimestampMs field - /// Nullable field value to be set - public void SetEndTimestampMs(ushort? endTimestampMs_) - { - SetFieldValue(4, 0, endTimestampMs_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ClipStart field - /// Units: ms - /// Comment: Start of clip in video time - /// Returns nullable uint representing the ClipStart field - public uint? GetClipStart() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set ClipStart field - /// Units: ms - /// Comment: Start of clip in video time - /// Nullable field value to be set - public void SetClipStart(uint? clipStart_) - { - SetFieldValue(6, 0, clipStart_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ClipEnd field - /// Units: ms - /// Comment: End of clip in video time - /// Returns nullable uint representing the ClipEnd field - public uint? GetClipEnd() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set ClipEnd field - /// Units: ms - /// Comment: End of clip in video time - /// Nullable field value to be set - public void SetClipEnd(uint? clipEnd_) - { - SetFieldValue(7, 0, clipEnd_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/VideoDescriptionMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/VideoDescriptionMesg.cs deleted file mode 100644 index cbf429f6d..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/VideoDescriptionMesg.cs +++ /dev/null @@ -1,144 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the VideoDescription profile message. - /// - public class VideoDescriptionMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte MessageCount = 0; - public const byte Text = 1; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public VideoDescriptionMesg() : base(Profile.GetMesg(MesgNum.VideoDescription)) - { - } - - public VideoDescriptionMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Comment: Long descriptions will be split into multiple parts - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Comment: Long descriptions will be split into multiple parts - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MessageCount field - /// Comment: Total number of description parts - /// Returns nullable ushort representing the MessageCount field - public ushort? GetMessageCount() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageCount field - /// Comment: Total number of description parts - /// Nullable field value to be set - public void SetMessageCount(ushort? messageCount_) - { - SetFieldValue(0, 0, messageCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Text field - /// Returns byte[] representing the Text field - public byte[] GetText() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Text field - /// Returns String representing the Text field - public String GetTextAsString() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Text field - /// field value to be set - public void SetText(String text_) - { - byte[] data = Encoding.UTF8.GetBytes(text_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(1, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Text field - /// field value to be set - public void SetText(byte[] text_) - { - SetFieldValue(1, 0, text_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/VideoFrameMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/VideoFrameMesg.cs deleted file mode 100644 index 0b14a70a0..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/VideoFrameMesg.cs +++ /dev/null @@ -1,135 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the VideoFrame profile message. - /// - public class VideoFrameMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte TimestampMs = 0; - public const byte FrameNumber = 1; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public VideoFrameMesg() : base(Profile.GetMesg(MesgNum.VideoFrame)) - { - } - - public VideoFrameMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Comment: Whole second part of the timestamp - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Returns nullable ushort representing the TimestampMs field - public ushort? GetTimestampMs() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set TimestampMs field - /// Units: ms - /// Comment: Millisecond part of the timestamp. - /// Nullable field value to be set - public void SetTimestampMs(ushort? timestampMs_) - { - SetFieldValue(0, 0, timestampMs_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FrameNumber field - /// Comment: Number of the frame that the timestamp and timestamp_ms correlate to - /// Returns nullable uint representing the FrameNumber field - public uint? GetFrameNumber() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set FrameNumber field - /// Comment: Number of the frame that the timestamp and timestamp_ms correlate to - /// Nullable field value to be set - public void SetFrameNumber(uint? frameNumber_) - { - SetFieldValue(1, 0, frameNumber_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/VideoMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/VideoMesg.cs deleted file mode 100644 index facb47367..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/VideoMesg.cs +++ /dev/null @@ -1,159 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Video profile message. - /// - public class VideoMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Url = 0; - public const byte HostingProvider = 1; - public const byte Duration = 2; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public VideoMesg() : base(Profile.GetMesg(MesgNum.Video)) - { - } - - public VideoMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Url field - /// Returns byte[] representing the Url field - public byte[] GetUrl() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Url field - /// Returns String representing the Url field - public String GetUrlAsString() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Url field - /// field value to be set - public void SetUrl(String url_) - { - byte[] data = Encoding.UTF8.GetBytes(url_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(0, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Url field - /// field value to be set - public void SetUrl(byte[] url_) - { - SetFieldValue(0, 0, url_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HostingProvider field - /// Returns byte[] representing the HostingProvider field - public byte[] GetHostingProvider() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the HostingProvider field - /// Returns String representing the HostingProvider field - public String GetHostingProviderAsString() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set HostingProvider field - /// field value to be set - public void SetHostingProvider(String hostingProvider_) - { - byte[] data = Encoding.UTF8.GetBytes(hostingProvider_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(1, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set HostingProvider field - /// field value to be set - public void SetHostingProvider(byte[] hostingProvider_) - { - SetFieldValue(1, 0, hostingProvider_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Duration field - /// Units: ms - /// Comment: Playback time of video - /// Returns nullable uint representing the Duration field - public uint? GetDuration() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set Duration field - /// Units: ms - /// Comment: Playback time of video - /// Nullable field value to be set - public void SetDuration(uint? duration_) - { - SetFieldValue(2, 0, duration_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/VideoTitleMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/VideoTitleMesg.cs deleted file mode 100644 index e4b47eb4a..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/VideoTitleMesg.cs +++ /dev/null @@ -1,144 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the VideoTitle profile message. - /// - public class VideoTitleMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte MessageCount = 0; - public const byte Text = 1; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public VideoTitleMesg() : base(Profile.GetMesg(MesgNum.VideoTitle)) - { - } - - public VideoTitleMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Comment: Long titles will be split into multiple parts - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Comment: Long titles will be split into multiple parts - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MessageCount field - /// Comment: Total number of title parts - /// Returns nullable ushort representing the MessageCount field - public ushort? GetMessageCount() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageCount field - /// Comment: Total number of title parts - /// Nullable field value to be set - public void SetMessageCount(ushort? messageCount_) - { - SetFieldValue(0, 0, messageCount_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Text field - /// Returns byte[] representing the Text field - public byte[] GetText() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Text field - /// Returns String representing the Text field - public String GetTextAsString() - { - byte[] data = (byte[])GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Text field - /// field value to be set - public void SetText(String text_) - { - byte[] data = Encoding.UTF8.GetBytes(text_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(1, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Text field - /// field value to be set - public void SetText(byte[] text_) - { - SetFieldValue(1, 0, text_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/WatchfaceSettingsMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/WatchfaceSettingsMesg.cs deleted file mode 100644 index 62ce4c0f9..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/WatchfaceSettingsMesg.cs +++ /dev/null @@ -1,162 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the WatchfaceSettings profile message. - /// - public class WatchfaceSettingsMesg : Mesg - { - #region Fields - static class LayoutSubfield - { - public static ushort DigitalLayout = 0; - public static ushort AnalogLayout = 1; - public static ushort Subfields = 2; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Mode = 0; - public const byte Layout = 1; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public WatchfaceSettingsMesg() : base(Profile.GetMesg(MesgNum.WatchfaceSettings)) - { - } - - public WatchfaceSettingsMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Mode field - /// Returns nullable WatchfaceMode enum representing the Mode field - public WatchfaceMode? GetMode() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - WatchfaceMode? value = obj == null ? (WatchfaceMode?)null : (WatchfaceMode)obj; - return value; - } - - /// - /// Set Mode field - /// Nullable field value to be set - public void SetMode(WatchfaceMode? mode_) - { - SetFieldValue(0, 0, mode_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Layout field - /// Returns nullable byte representing the Layout field - public byte? GetLayout() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set Layout field - /// Nullable field value to be set - public void SetLayout(byte? layout_) - { - SetFieldValue(1, 0, layout_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the DigitalLayout subfield - /// Nullable DigitalWatchfaceLayout enum representing the DigitalLayout subfield - public DigitalWatchfaceLayout? GetDigitalLayout() - { - return (DigitalWatchfaceLayout?)GetFieldValue(1, 0, LayoutSubfield.DigitalLayout); - } - - /// - /// - /// Set DigitalLayout subfield - /// Subfield value to be set - public void SetDigitalLayout(byte? digitalLayout) - { - SetFieldValue(1, 0, digitalLayout, LayoutSubfield.DigitalLayout); - } - - /// - /// Retrieves the AnalogLayout subfield - /// Nullable AnalogWatchfaceLayout enum representing the AnalogLayout subfield - public AnalogWatchfaceLayout? GetAnalogLayout() - { - return (AnalogWatchfaceLayout?)GetFieldValue(1, 0, LayoutSubfield.AnalogLayout); - } - - /// - /// - /// Set AnalogLayout subfield - /// Subfield value to be set - public void SetAnalogLayout(byte? analogLayout) - { - SetFieldValue(1, 0, analogLayout, LayoutSubfield.AnalogLayout); - } - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/WeatherAlertMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/WeatherAlertMesg.cs deleted file mode 100644 index 2c80a81b0..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/WeatherAlertMesg.cs +++ /dev/null @@ -1,214 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the WeatherAlert profile message. - /// - public class WeatherAlertMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte ReportId = 0; - public const byte IssueTime = 1; - public const byte ExpireTime = 2; - public const byte Severity = 3; - public const byte Type = 4; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public WeatherAlertMesg() : base(Profile.GetMesg(MesgNum.WeatherAlert)) - { - } - - public WeatherAlertMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ReportId field - /// Comment: Unique identifier from GCS report ID string, length is 12 - /// Returns byte[] representing the ReportId field - public byte[] GetReportId() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the ReportId field - /// Comment: Unique identifier from GCS report ID string, length is 12 - /// Returns String representing the ReportId field - public String GetReportIdAsString() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set ReportId field - /// Comment: Unique identifier from GCS report ID string, length is 12 - /// field value to be set - public void SetReportId(String reportId_) - { - byte[] data = Encoding.UTF8.GetBytes(reportId_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(0, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set ReportId field - /// Comment: Unique identifier from GCS report ID string, length is 12 - /// field value to be set - public void SetReportId(byte[] reportId_) - { - SetFieldValue(0, 0, reportId_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the IssueTime field - /// Comment: Time alert was issued - /// Returns DateTime representing the IssueTime field - public DateTime GetIssueTime() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set IssueTime field - /// Comment: Time alert was issued - /// Nullable field value to be set - public void SetIssueTime(DateTime issueTime_) - { - SetFieldValue(1, 0, issueTime_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ExpireTime field - /// Comment: Time alert expires - /// Returns DateTime representing the ExpireTime field - public DateTime GetExpireTime() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set ExpireTime field - /// Comment: Time alert expires - /// Nullable field value to be set - public void SetExpireTime(DateTime expireTime_) - { - SetFieldValue(2, 0, expireTime_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Severity field - /// Comment: Warning, Watch, Advisory, Statement - /// Returns nullable WeatherSeverity enum representing the Severity field - public WeatherSeverity? GetSeverity() - { - object obj = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - WeatherSeverity? value = obj == null ? (WeatherSeverity?)null : (WeatherSeverity)obj; - return value; - } - - /// - /// Set Severity field - /// Comment: Warning, Watch, Advisory, Statement - /// Nullable field value to be set - public void SetSeverity(WeatherSeverity? severity_) - { - SetFieldValue(3, 0, severity_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Type field - /// Comment: Tornado, Severe Thunderstorm, etc. - /// Returns nullable WeatherSevereType enum representing the Type field - new public WeatherSevereType? GetType() - { - object obj = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - WeatherSevereType? value = obj == null ? (WeatherSevereType?)null : (WeatherSevereType)obj; - return value; - } - - /// - /// Set Type field - /// Comment: Tornado, Severe Thunderstorm, etc. - /// Nullable field value to be set - public void SetType(WeatherSevereType? type_) - { - SetFieldValue(4, 0, type_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/WeatherConditionsMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/WeatherConditionsMesg.cs deleted file mode 100644 index 861aa2801..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/WeatherConditionsMesg.cs +++ /dev/null @@ -1,467 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the WeatherConditions profile message. - /// - public class WeatherConditionsMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte WeatherReport = 0; - public const byte Temperature = 1; - public const byte Condition = 2; - public const byte WindDirection = 3; - public const byte WindSpeed = 4; - public const byte PrecipitationProbability = 5; - public const byte TemperatureFeelsLike = 6; - public const byte RelativeHumidity = 7; - public const byte Location = 8; - public const byte ObservedAtTime = 9; - public const byte ObservedLocationLat = 10; - public const byte ObservedLocationLong = 11; - public const byte DayOfWeek = 12; - public const byte HighTemperature = 13; - public const byte LowTemperature = 14; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public WeatherConditionsMesg() : base(Profile.GetMesg(MesgNum.WeatherConditions)) - { - } - - public WeatherConditionsMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Comment: time of update for current conditions, else forecast time - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Comment: time of update for current conditions, else forecast time - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WeatherReport field - /// Comment: Current or forecast - /// Returns nullable WeatherReport enum representing the WeatherReport field - public WeatherReport? GetWeatherReport() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - WeatherReport? value = obj == null ? (WeatherReport?)null : (WeatherReport)obj; - return value; - } - - /// - /// Set WeatherReport field - /// Comment: Current or forecast - /// Nullable field value to be set - public void SetWeatherReport(WeatherReport? weatherReport_) - { - SetFieldValue(0, 0, weatherReport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Temperature field - /// Units: C - /// Returns nullable sbyte representing the Temperature field - public sbyte? GetTemperature() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set Temperature field - /// Units: C - /// Nullable field value to be set - public void SetTemperature(sbyte? temperature_) - { - SetFieldValue(1, 0, temperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Condition field - /// Comment: Corresponds to GSC Response weatherIcon field - /// Returns nullable WeatherStatus enum representing the Condition field - public WeatherStatus? GetCondition() - { - object obj = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - WeatherStatus? value = obj == null ? (WeatherStatus?)null : (WeatherStatus)obj; - return value; - } - - /// - /// Set Condition field - /// Comment: Corresponds to GSC Response weatherIcon field - /// Nullable field value to be set - public void SetCondition(WeatherStatus? condition_) - { - SetFieldValue(2, 0, condition_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WindDirection field - /// Units: degrees - /// Returns nullable ushort representing the WindDirection field - public ushort? GetWindDirection() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set WindDirection field - /// Units: degrees - /// Nullable field value to be set - public void SetWindDirection(ushort? windDirection_) - { - SetFieldValue(3, 0, windDirection_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WindSpeed field - /// Units: m/s - /// Returns nullable float representing the WindSpeed field - public float? GetWindSpeed() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set WindSpeed field - /// Units: m/s - /// Nullable field value to be set - public void SetWindSpeed(float? windSpeed_) - { - SetFieldValue(4, 0, windSpeed_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PrecipitationProbability field - /// Comment: range 0-100 - /// Returns nullable byte representing the PrecipitationProbability field - public byte? GetPrecipitationProbability() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set PrecipitationProbability field - /// Comment: range 0-100 - /// Nullable field value to be set - public void SetPrecipitationProbability(byte? precipitationProbability_) - { - SetFieldValue(5, 0, precipitationProbability_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TemperatureFeelsLike field - /// Units: C - /// Comment: Heat Index if GCS heatIdx above or equal to 90F or wind chill if GCS windChill below or equal to 32F - /// Returns nullable sbyte representing the TemperatureFeelsLike field - public sbyte? GetTemperatureFeelsLike() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set TemperatureFeelsLike field - /// Units: C - /// Comment: Heat Index if GCS heatIdx above or equal to 90F or wind chill if GCS windChill below or equal to 32F - /// Nullable field value to be set - public void SetTemperatureFeelsLike(sbyte? temperatureFeelsLike_) - { - SetFieldValue(6, 0, temperatureFeelsLike_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the RelativeHumidity field - /// Returns nullable byte representing the RelativeHumidity field - public byte? GetRelativeHumidity() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set RelativeHumidity field - /// Nullable field value to be set - public void SetRelativeHumidity(byte? relativeHumidity_) - { - SetFieldValue(7, 0, relativeHumidity_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Location field - /// Comment: string corresponding to GCS response location string - /// Returns byte[] representing the Location field - public byte[] GetLocation() - { - byte[] data = (byte[])GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Location field - /// Comment: string corresponding to GCS response location string - /// Returns String representing the Location field - public String GetLocationAsString() - { - byte[] data = (byte[])GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Location field - /// Comment: string corresponding to GCS response location string - /// field value to be set - public void SetLocation(String location_) - { - byte[] data = Encoding.UTF8.GetBytes(location_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(8, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Location field - /// Comment: string corresponding to GCS response location string - /// field value to be set - public void SetLocation(byte[] location_) - { - SetFieldValue(8, 0, location_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ObservedAtTime field - /// Returns DateTime representing the ObservedAtTime field - public DateTime GetObservedAtTime() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set ObservedAtTime field - /// Nullable field value to be set - public void SetObservedAtTime(DateTime observedAtTime_) - { - SetFieldValue(9, 0, observedAtTime_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ObservedLocationLat field - /// Units: semicircles - /// Returns nullable int representing the ObservedLocationLat field - public int? GetObservedLocationLat() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set ObservedLocationLat field - /// Units: semicircles - /// Nullable field value to be set - public void SetObservedLocationLat(int? observedLocationLat_) - { - SetFieldValue(10, 0, observedLocationLat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ObservedLocationLong field - /// Units: semicircles - /// Returns nullable int representing the ObservedLocationLong field - public int? GetObservedLocationLong() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToInt32(val)); - - } - - /// - /// Set ObservedLocationLong field - /// Units: semicircles - /// Nullable field value to be set - public void SetObservedLocationLong(int? observedLocationLong_) - { - SetFieldValue(11, 0, observedLocationLong_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DayOfWeek field - /// Returns nullable DayOfWeek enum representing the DayOfWeek field - public DayOfWeek? GetDayOfWeek() - { - object obj = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - DayOfWeek? value = obj == null ? (DayOfWeek?)null : (DayOfWeek)obj; - return value; - } - - /// - /// Set DayOfWeek field - /// Nullable field value to be set - public void SetDayOfWeek(DayOfWeek? dayOfWeek_) - { - SetFieldValue(12, 0, dayOfWeek_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HighTemperature field - /// Units: C - /// Returns nullable sbyte representing the HighTemperature field - public sbyte? GetHighTemperature() - { - Object val = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set HighTemperature field - /// Units: C - /// Nullable field value to be set - public void SetHighTemperature(sbyte? highTemperature_) - { - SetFieldValue(13, 0, highTemperature_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the LowTemperature field - /// Units: C - /// Returns nullable sbyte representing the LowTemperature field - public sbyte? GetLowTemperature() - { - Object val = GetFieldValue(14, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSByte(val)); - - } - - /// - /// Set LowTemperature field - /// Units: C - /// Nullable field value to be set - public void SetLowTemperature(sbyte? lowTemperature_) - { - SetFieldValue(14, 0, lowTemperature_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/WeightScaleMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/WeightScaleMesg.cs deleted file mode 100644 index 979bf70bc..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/WeightScaleMesg.cs +++ /dev/null @@ -1,389 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the WeightScale profile message. - /// - public class WeightScaleMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Timestamp = 253; - public const byte Weight = 0; - public const byte PercentFat = 1; - public const byte PercentHydration = 2; - public const byte VisceralFatMass = 3; - public const byte BoneMass = 4; - public const byte MuscleMass = 5; - public const byte BasalMet = 7; - public const byte PhysiqueRating = 8; - public const byte ActiveMet = 9; - public const byte MetabolicAge = 10; - public const byte VisceralFatRating = 11; - public const byte UserProfileIndex = 12; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public WeightScaleMesg() : base(Profile.GetMesg(MesgNum.WeightScale)) - { - } - - public WeightScaleMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Timestamp field - /// Units: s - /// Returns DateTime representing the Timestamp field - public DateTime GetTimestamp() - { - Object val = GetFieldValue(253, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return TimestampToDateTime(Convert.ToUInt32(val)); - - } - - /// - /// Set Timestamp field - /// Units: s - /// Nullable field value to be set - public void SetTimestamp(DateTime timestamp_) - { - SetFieldValue(253, 0, timestamp_.GetTimeStamp(), Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Weight field - /// Units: kg - /// Returns nullable float representing the Weight field - public float? GetWeight() - { - Object val = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set Weight field - /// Units: kg - /// Nullable field value to be set - public void SetWeight(float? weight_) - { - SetFieldValue(0, 0, weight_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PercentFat field - /// Units: % - /// Returns nullable float representing the PercentFat field - public float? GetPercentFat() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set PercentFat field - /// Units: % - /// Nullable field value to be set - public void SetPercentFat(float? percentFat_) - { - SetFieldValue(1, 0, percentFat_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PercentHydration field - /// Units: % - /// Returns nullable float representing the PercentHydration field - public float? GetPercentHydration() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set PercentHydration field - /// Units: % - /// Nullable field value to be set - public void SetPercentHydration(float? percentHydration_) - { - SetFieldValue(2, 0, percentHydration_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the VisceralFatMass field - /// Units: kg - /// Returns nullable float representing the VisceralFatMass field - public float? GetVisceralFatMass() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set VisceralFatMass field - /// Units: kg - /// Nullable field value to be set - public void SetVisceralFatMass(float? visceralFatMass_) - { - SetFieldValue(3, 0, visceralFatMass_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BoneMass field - /// Units: kg - /// Returns nullable float representing the BoneMass field - public float? GetBoneMass() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set BoneMass field - /// Units: kg - /// Nullable field value to be set - public void SetBoneMass(float? boneMass_) - { - SetFieldValue(4, 0, boneMass_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MuscleMass field - /// Units: kg - /// Returns nullable float representing the MuscleMass field - public float? GetMuscleMass() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set MuscleMass field - /// Units: kg - /// Nullable field value to be set - public void SetMuscleMass(float? muscleMass_) - { - SetFieldValue(5, 0, muscleMass_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the BasalMet field - /// Units: kcal/day - /// Returns nullable float representing the BasalMet field - public float? GetBasalMet() - { - Object val = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set BasalMet field - /// Units: kcal/day - /// Nullable field value to be set - public void SetBasalMet(float? basalMet_) - { - SetFieldValue(7, 0, basalMet_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PhysiqueRating field - /// Returns nullable byte representing the PhysiqueRating field - public byte? GetPhysiqueRating() - { - Object val = GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set PhysiqueRating field - /// Nullable field value to be set - public void SetPhysiqueRating(byte? physiqueRating_) - { - SetFieldValue(8, 0, physiqueRating_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ActiveMet field - /// Units: kcal/day - /// Comment: ~4kJ per kcal, 0.25 allows max 16384 kcal - /// Returns nullable float representing the ActiveMet field - public float? GetActiveMet() - { - Object val = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set ActiveMet field - /// Units: kcal/day - /// Comment: ~4kJ per kcal, 0.25 allows max 16384 kcal - /// Nullable field value to be set - public void SetActiveMet(float? activeMet_) - { - SetFieldValue(9, 0, activeMet_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the MetabolicAge field - /// Units: years - /// Returns nullable byte representing the MetabolicAge field - public byte? GetMetabolicAge() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MetabolicAge field - /// Units: years - /// Nullable field value to be set - public void SetMetabolicAge(byte? metabolicAge_) - { - SetFieldValue(10, 0, metabolicAge_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the VisceralFatRating field - /// Returns nullable byte representing the VisceralFatRating field - public byte? GetVisceralFatRating() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set VisceralFatRating field - /// Nullable field value to be set - public void SetVisceralFatRating(byte? visceralFatRating_) - { - SetFieldValue(11, 0, visceralFatRating_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the UserProfileIndex field - /// Comment: Associates this weight scale message to a user. This corresponds to the index of the user profile message in the weight scale file. - /// Returns nullable ushort representing the UserProfileIndex field - public ushort? GetUserProfileIndex() - { - Object val = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set UserProfileIndex field - /// Comment: Associates this weight scale message to a user. This corresponds to the index of the user profile message in the weight scale file. - /// Nullable field value to be set - public void SetUserProfileIndex(ushort? userProfileIndex_) - { - SetFieldValue(12, 0, userProfileIndex_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/WorkoutMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/WorkoutMesg.cs deleted file mode 100644 index aec4d8513..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/WorkoutMesg.cs +++ /dev/null @@ -1,225 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the Workout profile message. - /// - public class WorkoutMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte Sport = 4; - public const byte Capabilities = 5; - public const byte NumValidSteps = 6; - public const byte WktName = 8; - public const byte SubSport = 11; - public const byte PoolLength = 14; - public const byte PoolLengthUnit = 15; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public WorkoutMesg() : base(Profile.GetMesg(MesgNum.Workout)) - { - } - - public WorkoutMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the Sport field - /// Returns nullable Sport enum representing the Sport field - public Sport? GetSport() - { - object obj = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - Sport? value = obj == null ? (Sport?)null : (Sport)obj; - return value; - } - - /// - /// Set Sport field - /// Nullable field value to be set - public void SetSport(Sport? sport_) - { - SetFieldValue(4, 0, sport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Capabilities field - /// Returns nullable uint representing the Capabilities field - public uint? GetCapabilities() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set Capabilities field - /// Nullable field value to be set - public void SetCapabilities(uint? capabilities_) - { - SetFieldValue(5, 0, capabilities_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NumValidSteps field - /// Comment: number of valid steps - /// Returns nullable ushort representing the NumValidSteps field - public ushort? GetNumValidSteps() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NumValidSteps field - /// Comment: number of valid steps - /// Nullable field value to be set - public void SetNumValidSteps(ushort? numValidSteps_) - { - SetFieldValue(6, 0, numValidSteps_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WktName field - /// Returns byte[] representing the WktName field - public byte[] GetWktName() - { - byte[] data = (byte[])GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the WktName field - /// Returns String representing the WktName field - public String GetWktNameAsString() - { - byte[] data = (byte[])GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set WktName field - /// field value to be set - public void SetWktName(String wktName_) - { - byte[] data = Encoding.UTF8.GetBytes(wktName_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(8, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set WktName field - /// field value to be set - public void SetWktName(byte[] wktName_) - { - SetFieldValue(8, 0, wktName_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SubSport field - /// Returns nullable SubSport enum representing the SubSport field - public SubSport? GetSubSport() - { - object obj = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - SubSport? value = obj == null ? (SubSport?)null : (SubSport)obj; - return value; - } - - /// - /// Set SubSport field - /// Nullable field value to be set - public void SetSubSport(SubSport? subSport_) - { - SetFieldValue(11, 0, subSport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PoolLength field - /// Units: m - /// Returns nullable float representing the PoolLength field - public float? GetPoolLength() - { - Object val = GetFieldValue(14, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set PoolLength field - /// Units: m - /// Nullable field value to be set - public void SetPoolLength(float? poolLength_) - { - SetFieldValue(14, 0, poolLength_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PoolLengthUnit field - /// Returns nullable DisplayMeasure enum representing the PoolLengthUnit field - public DisplayMeasure? GetPoolLengthUnit() - { - object obj = GetFieldValue(15, 0, Fit.SubfieldIndexMainField); - DisplayMeasure? value = obj == null ? (DisplayMeasure?)null : (DisplayMeasure)obj; - return value; - } - - /// - /// Set PoolLengthUnit field - /// Nullable field value to be set - public void SetPoolLengthUnit(DisplayMeasure? poolLengthUnit_) - { - SetFieldValue(15, 0, poolLengthUnit_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/WorkoutSessionMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/WorkoutSessionMesg.cs deleted file mode 100644 index 8cd4c7efc..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/WorkoutSessionMesg.cs +++ /dev/null @@ -1,208 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the WorkoutSession profile message. - /// - public class WorkoutSessionMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte Sport = 0; - public const byte SubSport = 1; - public const byte NumValidSteps = 2; - public const byte FirstStepIndex = 3; - public const byte PoolLength = 4; - public const byte PoolLengthUnit = 5; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public WorkoutSessionMesg() : base(Profile.GetMesg(MesgNum.WorkoutSession)) - { - } - - public WorkoutSessionMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Sport field - /// Returns nullable Sport enum representing the Sport field - public Sport? GetSport() - { - object obj = GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - Sport? value = obj == null ? (Sport?)null : (Sport)obj; - return value; - } - - /// - /// Set Sport field - /// Nullable field value to be set - public void SetSport(Sport? sport_) - { - SetFieldValue(0, 0, sport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SubSport field - /// Returns nullable SubSport enum representing the SubSport field - public SubSport? GetSubSport() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - SubSport? value = obj == null ? (SubSport?)null : (SubSport)obj; - return value; - } - - /// - /// Set SubSport field - /// Nullable field value to be set - public void SetSubSport(SubSport? subSport_) - { - SetFieldValue(1, 0, subSport_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the NumValidSteps field - /// Returns nullable ushort representing the NumValidSteps field - public ushort? GetNumValidSteps() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set NumValidSteps field - /// Nullable field value to be set - public void SetNumValidSteps(ushort? numValidSteps_) - { - SetFieldValue(2, 0, numValidSteps_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FirstStepIndex field - /// Returns nullable ushort representing the FirstStepIndex field - public ushort? GetFirstStepIndex() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set FirstStepIndex field - /// Nullable field value to be set - public void SetFirstStepIndex(ushort? firstStepIndex_) - { - SetFieldValue(3, 0, firstStepIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PoolLength field - /// Units: m - /// Returns nullable float representing the PoolLength field - public float? GetPoolLength() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set PoolLength field - /// Units: m - /// Nullable field value to be set - public void SetPoolLength(float? poolLength_) - { - SetFieldValue(4, 0, poolLength_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PoolLengthUnit field - /// Returns nullable DisplayMeasure enum representing the PoolLengthUnit field - public DisplayMeasure? GetPoolLengthUnit() - { - object obj = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - DisplayMeasure? value = obj == null ? (DisplayMeasure?)null : (DisplayMeasure)obj; - return value; - } - - /// - /// Set PoolLengthUnit field - /// Nullable field value to be set - public void SetPoolLengthUnit(DisplayMeasure? poolLengthUnit_) - { - SetFieldValue(5, 0, poolLengthUnit_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/WorkoutStepMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/WorkoutStepMesg.cs deleted file mode 100644 index 0b08c6c8a..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/WorkoutStepMesg.cs +++ /dev/null @@ -1,1591 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the WorkoutStep profile message. - /// - public class WorkoutStepMesg : Mesg - { - #region Fields - static class DurationValueSubfield - { - public static ushort DurationTime = 0; - public static ushort DurationDistance = 1; - public static ushort DurationHr = 2; - public static ushort DurationCalories = 3; - public static ushort DurationStep = 4; - public static ushort DurationPower = 5; - public static ushort DurationReps = 6; - public static ushort Subfields = 7; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - static class TargetValueSubfield - { - public static ushort TargetSpeedZone = 0; - public static ushort TargetHrZone = 1; - public static ushort TargetCadenceZone = 2; - public static ushort TargetPowerZone = 3; - public static ushort RepeatSteps = 4; - public static ushort RepeatTime = 5; - public static ushort RepeatDistance = 6; - public static ushort RepeatCalories = 7; - public static ushort RepeatHr = 8; - public static ushort RepeatPower = 9; - public static ushort TargetStrokeType = 10; - public static ushort Subfields = 11; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - static class CustomTargetValueLowSubfield - { - public static ushort CustomTargetSpeedLow = 0; - public static ushort CustomTargetHeartRateLow = 1; - public static ushort CustomTargetCadenceLow = 2; - public static ushort CustomTargetPowerLow = 3; - public static ushort Subfields = 4; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - static class CustomTargetValueHighSubfield - { - public static ushort CustomTargetSpeedHigh = 0; - public static ushort CustomTargetHeartRateHigh = 1; - public static ushort CustomTargetCadenceHigh = 2; - public static ushort CustomTargetPowerHigh = 3; - public static ushort Subfields = 4; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - static class SecondaryTargetValueSubfield - { - public static ushort SecondaryTargetSpeedZone = 0; - public static ushort SecondaryTargetHrZone = 1; - public static ushort SecondaryTargetCadenceZone = 2; - public static ushort SecondaryTargetPowerZone = 3; - public static ushort SecondaryTargetStrokeType = 4; - public static ushort Subfields = 5; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - static class SecondaryCustomTargetValueLowSubfield - { - public static ushort SecondaryCustomTargetSpeedLow = 0; - public static ushort SecondaryCustomTargetHeartRateLow = 1; - public static ushort SecondaryCustomTargetCadenceLow = 2; - public static ushort SecondaryCustomTargetPowerLow = 3; - public static ushort Subfields = 4; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - static class SecondaryCustomTargetValueHighSubfield - { - public static ushort SecondaryCustomTargetSpeedHigh = 0; - public static ushort SecondaryCustomTargetHeartRateHigh = 1; - public static ushort SecondaryCustomTargetCadenceHigh = 2; - public static ushort SecondaryCustomTargetPowerHigh = 3; - public static ushort Subfields = 4; - public static ushort Active = Fit.SubfieldIndexActiveSubfield; - public static ushort MainField = Fit.SubfieldIndexMainField; - } - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MessageIndex = 254; - public const byte WktStepName = 0; - public const byte DurationType = 1; - public const byte DurationValue = 2; - public const byte TargetType = 3; - public const byte TargetValue = 4; - public const byte CustomTargetValueLow = 5; - public const byte CustomTargetValueHigh = 6; - public const byte Intensity = 7; - public const byte Notes = 8; - public const byte Equipment = 9; - public const byte ExerciseCategory = 10; - public const byte ExerciseName = 11; - public const byte ExerciseWeight = 12; - public const byte WeightDisplayUnit = 13; - public const byte SecondaryTargetType = 19; - public const byte SecondaryTargetValue = 20; - public const byte SecondaryCustomTargetValueLow = 21; - public const byte SecondaryCustomTargetValueHigh = 22; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public WorkoutStepMesg() : base(Profile.GetMesg(MesgNum.WorkoutStep)) - { - } - - public WorkoutStepMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MessageIndex field - /// Returns nullable ushort representing the MessageIndex field - public ushort? GetMessageIndex() - { - Object val = GetFieldValue(254, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set MessageIndex field - /// Nullable field value to be set - public void SetMessageIndex(ushort? messageIndex_) - { - SetFieldValue(254, 0, messageIndex_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WktStepName field - /// Returns byte[] representing the WktStepName field - public byte[] GetWktStepName() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the WktStepName field - /// Returns String representing the WktStepName field - public String GetWktStepNameAsString() - { - byte[] data = (byte[])GetFieldValue(0, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set WktStepName field - /// field value to be set - public void SetWktStepName(String wktStepName_) - { - byte[] data = Encoding.UTF8.GetBytes(wktStepName_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(0, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set WktStepName field - /// field value to be set - public void SetWktStepName(byte[] wktStepName_) - { - SetFieldValue(0, 0, wktStepName_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DurationType field - /// Returns nullable WktStepDuration enum representing the DurationType field - public WktStepDuration? GetDurationType() - { - object obj = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - WktStepDuration? value = obj == null ? (WktStepDuration?)null : (WktStepDuration)obj; - return value; - } - - /// - /// Set DurationType field - /// Nullable field value to be set - public void SetDurationType(WktStepDuration? durationType_) - { - SetFieldValue(1, 0, durationType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the DurationValue field - /// Returns nullable uint representing the DurationValue field - public uint? GetDurationValue() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set DurationValue field - /// Nullable field value to be set - public void SetDurationValue(uint? durationValue_) - { - SetFieldValue(2, 0, durationValue_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the DurationTime subfield - /// Units: s - /// Nullable float representing the DurationTime subfield - public float? GetDurationTime() - { - Object val = GetFieldValue(2, 0, DurationValueSubfield.DurationTime); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set DurationTime subfield - /// Units: s - /// Subfield value to be set - public void SetDurationTime(float? durationTime) - { - SetFieldValue(2, 0, durationTime, DurationValueSubfield.DurationTime); - } - - /// - /// Retrieves the DurationDistance subfield - /// Units: m - /// Nullable float representing the DurationDistance subfield - public float? GetDurationDistance() - { - Object val = GetFieldValue(2, 0, DurationValueSubfield.DurationDistance); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set DurationDistance subfield - /// Units: m - /// Subfield value to be set - public void SetDurationDistance(float? durationDistance) - { - SetFieldValue(2, 0, durationDistance, DurationValueSubfield.DurationDistance); - } - - /// - /// Retrieves the DurationHr subfield - /// Units: % or bpm - /// Nullable uint representing the DurationHr subfield - public uint? GetDurationHr() - { - Object val = GetFieldValue(2, 0, DurationValueSubfield.DurationHr); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set DurationHr subfield - /// Units: % or bpm - /// Subfield value to be set - public void SetDurationHr(uint? durationHr) - { - SetFieldValue(2, 0, durationHr, DurationValueSubfield.DurationHr); - } - - /// - /// Retrieves the DurationCalories subfield - /// Units: calories - /// Nullable uint representing the DurationCalories subfield - public uint? GetDurationCalories() - { - Object val = GetFieldValue(2, 0, DurationValueSubfield.DurationCalories); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set DurationCalories subfield - /// Units: calories - /// Subfield value to be set - public void SetDurationCalories(uint? durationCalories) - { - SetFieldValue(2, 0, durationCalories, DurationValueSubfield.DurationCalories); - } - - /// - /// Retrieves the DurationStep subfield - /// Comment: message_index of step to loop back to. Steps are assumed to be in the order by message_index. custom_name and intensity members are undefined for this duration type. - /// Nullable uint representing the DurationStep subfield - public uint? GetDurationStep() - { - Object val = GetFieldValue(2, 0, DurationValueSubfield.DurationStep); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set DurationStep subfield - /// Comment: message_index of step to loop back to. Steps are assumed to be in the order by message_index. custom_name and intensity members are undefined for this duration type. - /// Subfield value to be set - public void SetDurationStep(uint? durationStep) - { - SetFieldValue(2, 0, durationStep, DurationValueSubfield.DurationStep); - } - - /// - /// Retrieves the DurationPower subfield - /// Units: % or watts - /// Nullable uint representing the DurationPower subfield - public uint? GetDurationPower() - { - Object val = GetFieldValue(2, 0, DurationValueSubfield.DurationPower); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set DurationPower subfield - /// Units: % or watts - /// Subfield value to be set - public void SetDurationPower(uint? durationPower) - { - SetFieldValue(2, 0, durationPower, DurationValueSubfield.DurationPower); - } - - /// - /// Retrieves the DurationReps subfield - /// Nullable uint representing the DurationReps subfield - public uint? GetDurationReps() - { - Object val = GetFieldValue(2, 0, DurationValueSubfield.DurationReps); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set DurationReps subfield - /// Subfield value to be set - public void SetDurationReps(uint? durationReps) - { - SetFieldValue(2, 0, durationReps, DurationValueSubfield.DurationReps); - } - /// - /// Retrieves the TargetType field - /// Returns nullable WktStepTarget enum representing the TargetType field - public WktStepTarget? GetTargetType() - { - object obj = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - WktStepTarget? value = obj == null ? (WktStepTarget?)null : (WktStepTarget)obj; - return value; - } - - /// - /// Set TargetType field - /// Nullable field value to be set - public void SetTargetType(WktStepTarget? targetType_) - { - SetFieldValue(3, 0, targetType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the TargetValue field - /// Returns nullable uint representing the TargetValue field - public uint? GetTargetValue() - { - Object val = GetFieldValue(4, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set TargetValue field - /// Nullable field value to be set - public void SetTargetValue(uint? targetValue_) - { - SetFieldValue(4, 0, targetValue_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the TargetSpeedZone subfield - /// Comment: speed zone (1-10);Custom =0; - /// Nullable uint representing the TargetSpeedZone subfield - public uint? GetTargetSpeedZone() - { - Object val = GetFieldValue(4, 0, TargetValueSubfield.TargetSpeedZone); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set TargetSpeedZone subfield - /// Comment: speed zone (1-10);Custom =0; - /// Subfield value to be set - public void SetTargetSpeedZone(uint? targetSpeedZone) - { - SetFieldValue(4, 0, targetSpeedZone, TargetValueSubfield.TargetSpeedZone); - } - - /// - /// Retrieves the TargetHrZone subfield - /// Comment: hr zone (1-5);Custom =0; - /// Nullable uint representing the TargetHrZone subfield - public uint? GetTargetHrZone() - { - Object val = GetFieldValue(4, 0, TargetValueSubfield.TargetHrZone); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set TargetHrZone subfield - /// Comment: hr zone (1-5);Custom =0; - /// Subfield value to be set - public void SetTargetHrZone(uint? targetHrZone) - { - SetFieldValue(4, 0, targetHrZone, TargetValueSubfield.TargetHrZone); - } - - /// - /// Retrieves the TargetCadenceZone subfield - /// Comment: Zone (1-?); Custom = 0; - /// Nullable uint representing the TargetCadenceZone subfield - public uint? GetTargetCadenceZone() - { - Object val = GetFieldValue(4, 0, TargetValueSubfield.TargetCadenceZone); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set TargetCadenceZone subfield - /// Comment: Zone (1-?); Custom = 0; - /// Subfield value to be set - public void SetTargetCadenceZone(uint? targetCadenceZone) - { - SetFieldValue(4, 0, targetCadenceZone, TargetValueSubfield.TargetCadenceZone); - } - - /// - /// Retrieves the TargetPowerZone subfield - /// Comment: Power Zone ( 1-7); Custom = 0; - /// Nullable uint representing the TargetPowerZone subfield - public uint? GetTargetPowerZone() - { - Object val = GetFieldValue(4, 0, TargetValueSubfield.TargetPowerZone); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set TargetPowerZone subfield - /// Comment: Power Zone ( 1-7); Custom = 0; - /// Subfield value to be set - public void SetTargetPowerZone(uint? targetPowerZone) - { - SetFieldValue(4, 0, targetPowerZone, TargetValueSubfield.TargetPowerZone); - } - - /// - /// Retrieves the RepeatSteps subfield - /// Comment: # of repetitions - /// Nullable uint representing the RepeatSteps subfield - public uint? GetRepeatSteps() - { - Object val = GetFieldValue(4, 0, TargetValueSubfield.RepeatSteps); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set RepeatSteps subfield - /// Comment: # of repetitions - /// Subfield value to be set - public void SetRepeatSteps(uint? repeatSteps) - { - SetFieldValue(4, 0, repeatSteps, TargetValueSubfield.RepeatSteps); - } - - /// - /// Retrieves the RepeatTime subfield - /// Units: s - /// Nullable float representing the RepeatTime subfield - public float? GetRepeatTime() - { - Object val = GetFieldValue(4, 0, TargetValueSubfield.RepeatTime); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set RepeatTime subfield - /// Units: s - /// Subfield value to be set - public void SetRepeatTime(float? repeatTime) - { - SetFieldValue(4, 0, repeatTime, TargetValueSubfield.RepeatTime); - } - - /// - /// Retrieves the RepeatDistance subfield - /// Units: m - /// Nullable float representing the RepeatDistance subfield - public float? GetRepeatDistance() - { - Object val = GetFieldValue(4, 0, TargetValueSubfield.RepeatDistance); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set RepeatDistance subfield - /// Units: m - /// Subfield value to be set - public void SetRepeatDistance(float? repeatDistance) - { - SetFieldValue(4, 0, repeatDistance, TargetValueSubfield.RepeatDistance); - } - - /// - /// Retrieves the RepeatCalories subfield - /// Units: calories - /// Nullable uint representing the RepeatCalories subfield - public uint? GetRepeatCalories() - { - Object val = GetFieldValue(4, 0, TargetValueSubfield.RepeatCalories); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set RepeatCalories subfield - /// Units: calories - /// Subfield value to be set - public void SetRepeatCalories(uint? repeatCalories) - { - SetFieldValue(4, 0, repeatCalories, TargetValueSubfield.RepeatCalories); - } - - /// - /// Retrieves the RepeatHr subfield - /// Units: % or bpm - /// Nullable uint representing the RepeatHr subfield - public uint? GetRepeatHr() - { - Object val = GetFieldValue(4, 0, TargetValueSubfield.RepeatHr); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set RepeatHr subfield - /// Units: % or bpm - /// Subfield value to be set - public void SetRepeatHr(uint? repeatHr) - { - SetFieldValue(4, 0, repeatHr, TargetValueSubfield.RepeatHr); - } - - /// - /// Retrieves the RepeatPower subfield - /// Units: % or watts - /// Nullable uint representing the RepeatPower subfield - public uint? GetRepeatPower() - { - Object val = GetFieldValue(4, 0, TargetValueSubfield.RepeatPower); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set RepeatPower subfield - /// Units: % or watts - /// Subfield value to be set - public void SetRepeatPower(uint? repeatPower) - { - SetFieldValue(4, 0, repeatPower, TargetValueSubfield.RepeatPower); - } - - /// - /// Retrieves the TargetStrokeType subfield - /// Nullable SwimStroke enum representing the TargetStrokeType subfield - public SwimStroke? GetTargetStrokeType() - { - return (SwimStroke?)GetFieldValue(4, 0, TargetValueSubfield.TargetStrokeType); - } - - /// - /// - /// Set TargetStrokeType subfield - /// Subfield value to be set - public void SetTargetStrokeType(byte? targetStrokeType) - { - SetFieldValue(4, 0, targetStrokeType, TargetValueSubfield.TargetStrokeType); - } - /// - /// Retrieves the CustomTargetValueLow field - /// Returns nullable uint representing the CustomTargetValueLow field - public uint? GetCustomTargetValueLow() - { - Object val = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set CustomTargetValueLow field - /// Nullable field value to be set - public void SetCustomTargetValueLow(uint? customTargetValueLow_) - { - SetFieldValue(5, 0, customTargetValueLow_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the CustomTargetSpeedLow subfield - /// Units: m/s - /// Nullable float representing the CustomTargetSpeedLow subfield - public float? GetCustomTargetSpeedLow() - { - Object val = GetFieldValue(5, 0, CustomTargetValueLowSubfield.CustomTargetSpeedLow); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set CustomTargetSpeedLow subfield - /// Units: m/s - /// Subfield value to be set - public void SetCustomTargetSpeedLow(float? customTargetSpeedLow) - { - SetFieldValue(5, 0, customTargetSpeedLow, CustomTargetValueLowSubfield.CustomTargetSpeedLow); - } - - /// - /// Retrieves the CustomTargetHeartRateLow subfield - /// Units: % or bpm - /// Nullable uint representing the CustomTargetHeartRateLow subfield - public uint? GetCustomTargetHeartRateLow() - { - Object val = GetFieldValue(5, 0, CustomTargetValueLowSubfield.CustomTargetHeartRateLow); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set CustomTargetHeartRateLow subfield - /// Units: % or bpm - /// Subfield value to be set - public void SetCustomTargetHeartRateLow(uint? customTargetHeartRateLow) - { - SetFieldValue(5, 0, customTargetHeartRateLow, CustomTargetValueLowSubfield.CustomTargetHeartRateLow); - } - - /// - /// Retrieves the CustomTargetCadenceLow subfield - /// Units: rpm - /// Nullable uint representing the CustomTargetCadenceLow subfield - public uint? GetCustomTargetCadenceLow() - { - Object val = GetFieldValue(5, 0, CustomTargetValueLowSubfield.CustomTargetCadenceLow); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set CustomTargetCadenceLow subfield - /// Units: rpm - /// Subfield value to be set - public void SetCustomTargetCadenceLow(uint? customTargetCadenceLow) - { - SetFieldValue(5, 0, customTargetCadenceLow, CustomTargetValueLowSubfield.CustomTargetCadenceLow); - } - - /// - /// Retrieves the CustomTargetPowerLow subfield - /// Units: % or watts - /// Nullable uint representing the CustomTargetPowerLow subfield - public uint? GetCustomTargetPowerLow() - { - Object val = GetFieldValue(5, 0, CustomTargetValueLowSubfield.CustomTargetPowerLow); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set CustomTargetPowerLow subfield - /// Units: % or watts - /// Subfield value to be set - public void SetCustomTargetPowerLow(uint? customTargetPowerLow) - { - SetFieldValue(5, 0, customTargetPowerLow, CustomTargetValueLowSubfield.CustomTargetPowerLow); - } - /// - /// Retrieves the CustomTargetValueHigh field - /// Returns nullable uint representing the CustomTargetValueHigh field - public uint? GetCustomTargetValueHigh() - { - Object val = GetFieldValue(6, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set CustomTargetValueHigh field - /// Nullable field value to be set - public void SetCustomTargetValueHigh(uint? customTargetValueHigh_) - { - SetFieldValue(6, 0, customTargetValueHigh_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the CustomTargetSpeedHigh subfield - /// Units: m/s - /// Nullable float representing the CustomTargetSpeedHigh subfield - public float? GetCustomTargetSpeedHigh() - { - Object val = GetFieldValue(6, 0, CustomTargetValueHighSubfield.CustomTargetSpeedHigh); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set CustomTargetSpeedHigh subfield - /// Units: m/s - /// Subfield value to be set - public void SetCustomTargetSpeedHigh(float? customTargetSpeedHigh) - { - SetFieldValue(6, 0, customTargetSpeedHigh, CustomTargetValueHighSubfield.CustomTargetSpeedHigh); - } - - /// - /// Retrieves the CustomTargetHeartRateHigh subfield - /// Units: % or bpm - /// Nullable uint representing the CustomTargetHeartRateHigh subfield - public uint? GetCustomTargetHeartRateHigh() - { - Object val = GetFieldValue(6, 0, CustomTargetValueHighSubfield.CustomTargetHeartRateHigh); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set CustomTargetHeartRateHigh subfield - /// Units: % or bpm - /// Subfield value to be set - public void SetCustomTargetHeartRateHigh(uint? customTargetHeartRateHigh) - { - SetFieldValue(6, 0, customTargetHeartRateHigh, CustomTargetValueHighSubfield.CustomTargetHeartRateHigh); - } - - /// - /// Retrieves the CustomTargetCadenceHigh subfield - /// Units: rpm - /// Nullable uint representing the CustomTargetCadenceHigh subfield - public uint? GetCustomTargetCadenceHigh() - { - Object val = GetFieldValue(6, 0, CustomTargetValueHighSubfield.CustomTargetCadenceHigh); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set CustomTargetCadenceHigh subfield - /// Units: rpm - /// Subfield value to be set - public void SetCustomTargetCadenceHigh(uint? customTargetCadenceHigh) - { - SetFieldValue(6, 0, customTargetCadenceHigh, CustomTargetValueHighSubfield.CustomTargetCadenceHigh); - } - - /// - /// Retrieves the CustomTargetPowerHigh subfield - /// Units: % or watts - /// Nullable uint representing the CustomTargetPowerHigh subfield - public uint? GetCustomTargetPowerHigh() - { - Object val = GetFieldValue(6, 0, CustomTargetValueHighSubfield.CustomTargetPowerHigh); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set CustomTargetPowerHigh subfield - /// Units: % or watts - /// Subfield value to be set - public void SetCustomTargetPowerHigh(uint? customTargetPowerHigh) - { - SetFieldValue(6, 0, customTargetPowerHigh, CustomTargetValueHighSubfield.CustomTargetPowerHigh); - } - /// - /// Retrieves the Intensity field - /// Returns nullable Intensity enum representing the Intensity field - public Intensity? GetIntensity() - { - object obj = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - Intensity? value = obj == null ? (Intensity?)null : (Intensity)obj; - return value; - } - - /// - /// Set Intensity field - /// Nullable field value to be set - public void SetIntensity(Intensity? intensity_) - { - SetFieldValue(7, 0, intensity_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Notes field - /// Returns byte[] representing the Notes field - public byte[] GetNotes() - { - byte[] data = (byte[])GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - return data.Take(data.Length - 1).ToArray(); - } - - /// - /// Retrieves the Notes field - /// Returns String representing the Notes field - public String GetNotesAsString() - { - byte[] data = (byte[])GetFieldValue(8, 0, Fit.SubfieldIndexMainField); - return data != null ? Encoding.UTF8.GetString(data, 0, data.Length - 1) : null; - } - - /// - /// Set Notes field - /// field value to be set - public void SetNotes(String notes_) - { - byte[] data = Encoding.UTF8.GetBytes(notes_); - byte[] zdata = new byte[data.Length + 1]; - data.CopyTo(zdata, 0); - SetFieldValue(8, 0, zdata, Fit.SubfieldIndexMainField); - } - - - /// - /// Set Notes field - /// field value to be set - public void SetNotes(byte[] notes_) - { - SetFieldValue(8, 0, notes_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the Equipment field - /// Returns nullable WorkoutEquipment enum representing the Equipment field - public WorkoutEquipment? GetEquipment() - { - object obj = GetFieldValue(9, 0, Fit.SubfieldIndexMainField); - WorkoutEquipment? value = obj == null ? (WorkoutEquipment?)null : (WorkoutEquipment)obj; - return value; - } - - /// - /// Set Equipment field - /// Nullable field value to be set - public void SetEquipment(WorkoutEquipment? equipment_) - { - SetFieldValue(9, 0, equipment_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ExerciseCategory field - /// Returns nullable ushort representing the ExerciseCategory field - public ushort? GetExerciseCategory() - { - Object val = GetFieldValue(10, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ExerciseCategory field - /// Nullable field value to be set - public void SetExerciseCategory(ushort? exerciseCategory_) - { - SetFieldValue(10, 0, exerciseCategory_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ExerciseName field - /// Returns nullable ushort representing the ExerciseName field - public ushort? GetExerciseName() - { - Object val = GetFieldValue(11, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set ExerciseName field - /// Nullable field value to be set - public void SetExerciseName(ushort? exerciseName_) - { - SetFieldValue(11, 0, exerciseName_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ExerciseWeight field - /// Units: kg - /// Returns nullable float representing the ExerciseWeight field - public float? GetExerciseWeight() - { - Object val = GetFieldValue(12, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// Set ExerciseWeight field - /// Units: kg - /// Nullable field value to be set - public void SetExerciseWeight(float? exerciseWeight_) - { - SetFieldValue(12, 0, exerciseWeight_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the WeightDisplayUnit field - /// Returns nullable ushort representing the WeightDisplayUnit field - public ushort? GetWeightDisplayUnit() - { - Object val = GetFieldValue(13, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set WeightDisplayUnit field - /// Nullable field value to be set - public void SetWeightDisplayUnit(ushort? weightDisplayUnit_) - { - SetFieldValue(13, 0, weightDisplayUnit_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SecondaryTargetType field - /// Returns nullable WktStepTarget enum representing the SecondaryTargetType field - public WktStepTarget? GetSecondaryTargetType() - { - object obj = GetFieldValue(19, 0, Fit.SubfieldIndexMainField); - WktStepTarget? value = obj == null ? (WktStepTarget?)null : (WktStepTarget)obj; - return value; - } - - /// - /// Set SecondaryTargetType field - /// Nullable field value to be set - public void SetSecondaryTargetType(WktStepTarget? secondaryTargetType_) - { - SetFieldValue(19, 0, secondaryTargetType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the SecondaryTargetValue field - /// Returns nullable uint representing the SecondaryTargetValue field - public uint? GetSecondaryTargetValue() - { - Object val = GetFieldValue(20, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set SecondaryTargetValue field - /// Nullable field value to be set - public void SetSecondaryTargetValue(uint? secondaryTargetValue_) - { - SetFieldValue(20, 0, secondaryTargetValue_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the SecondaryTargetSpeedZone subfield - /// Comment: speed zone (1-10);Custom =0; - /// Nullable uint representing the SecondaryTargetSpeedZone subfield - public uint? GetSecondaryTargetSpeedZone() - { - Object val = GetFieldValue(20, 0, SecondaryTargetValueSubfield.SecondaryTargetSpeedZone); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set SecondaryTargetSpeedZone subfield - /// Comment: speed zone (1-10);Custom =0; - /// Subfield value to be set - public void SetSecondaryTargetSpeedZone(uint? secondaryTargetSpeedZone) - { - SetFieldValue(20, 0, secondaryTargetSpeedZone, SecondaryTargetValueSubfield.SecondaryTargetSpeedZone); - } - - /// - /// Retrieves the SecondaryTargetHrZone subfield - /// Comment: hr zone (1-5);Custom =0; - /// Nullable uint representing the SecondaryTargetHrZone subfield - public uint? GetSecondaryTargetHrZone() - { - Object val = GetFieldValue(20, 0, SecondaryTargetValueSubfield.SecondaryTargetHrZone); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set SecondaryTargetHrZone subfield - /// Comment: hr zone (1-5);Custom =0; - /// Subfield value to be set - public void SetSecondaryTargetHrZone(uint? secondaryTargetHrZone) - { - SetFieldValue(20, 0, secondaryTargetHrZone, SecondaryTargetValueSubfield.SecondaryTargetHrZone); - } - - /// - /// Retrieves the SecondaryTargetCadenceZone subfield - /// Comment: Zone (1-?); Custom = 0; - /// Nullable uint representing the SecondaryTargetCadenceZone subfield - public uint? GetSecondaryTargetCadenceZone() - { - Object val = GetFieldValue(20, 0, SecondaryTargetValueSubfield.SecondaryTargetCadenceZone); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set SecondaryTargetCadenceZone subfield - /// Comment: Zone (1-?); Custom = 0; - /// Subfield value to be set - public void SetSecondaryTargetCadenceZone(uint? secondaryTargetCadenceZone) - { - SetFieldValue(20, 0, secondaryTargetCadenceZone, SecondaryTargetValueSubfield.SecondaryTargetCadenceZone); - } - - /// - /// Retrieves the SecondaryTargetPowerZone subfield - /// Comment: Power Zone ( 1-7); Custom = 0; - /// Nullable uint representing the SecondaryTargetPowerZone subfield - public uint? GetSecondaryTargetPowerZone() - { - Object val = GetFieldValue(20, 0, SecondaryTargetValueSubfield.SecondaryTargetPowerZone); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set SecondaryTargetPowerZone subfield - /// Comment: Power Zone ( 1-7); Custom = 0; - /// Subfield value to be set - public void SetSecondaryTargetPowerZone(uint? secondaryTargetPowerZone) - { - SetFieldValue(20, 0, secondaryTargetPowerZone, SecondaryTargetValueSubfield.SecondaryTargetPowerZone); - } - - /// - /// Retrieves the SecondaryTargetStrokeType subfield - /// Nullable SwimStroke enum representing the SecondaryTargetStrokeType subfield - public SwimStroke? GetSecondaryTargetStrokeType() - { - return (SwimStroke?)GetFieldValue(20, 0, SecondaryTargetValueSubfield.SecondaryTargetStrokeType); - } - - /// - /// - /// Set SecondaryTargetStrokeType subfield - /// Subfield value to be set - public void SetSecondaryTargetStrokeType(byte? secondaryTargetStrokeType) - { - SetFieldValue(20, 0, secondaryTargetStrokeType, SecondaryTargetValueSubfield.SecondaryTargetStrokeType); - } - /// - /// Retrieves the SecondaryCustomTargetValueLow field - /// Returns nullable uint representing the SecondaryCustomTargetValueLow field - public uint? GetSecondaryCustomTargetValueLow() - { - Object val = GetFieldValue(21, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set SecondaryCustomTargetValueLow field - /// Nullable field value to be set - public void SetSecondaryCustomTargetValueLow(uint? secondaryCustomTargetValueLow_) - { - SetFieldValue(21, 0, secondaryCustomTargetValueLow_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the SecondaryCustomTargetSpeedLow subfield - /// Units: m/s - /// Nullable float representing the SecondaryCustomTargetSpeedLow subfield - public float? GetSecondaryCustomTargetSpeedLow() - { - Object val = GetFieldValue(21, 0, SecondaryCustomTargetValueLowSubfield.SecondaryCustomTargetSpeedLow); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set SecondaryCustomTargetSpeedLow subfield - /// Units: m/s - /// Subfield value to be set - public void SetSecondaryCustomTargetSpeedLow(float? secondaryCustomTargetSpeedLow) - { - SetFieldValue(21, 0, secondaryCustomTargetSpeedLow, SecondaryCustomTargetValueLowSubfield.SecondaryCustomTargetSpeedLow); - } - - /// - /// Retrieves the SecondaryCustomTargetHeartRateLow subfield - /// Units: % or bpm - /// Nullable uint representing the SecondaryCustomTargetHeartRateLow subfield - public uint? GetSecondaryCustomTargetHeartRateLow() - { - Object val = GetFieldValue(21, 0, SecondaryCustomTargetValueLowSubfield.SecondaryCustomTargetHeartRateLow); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set SecondaryCustomTargetHeartRateLow subfield - /// Units: % or bpm - /// Subfield value to be set - public void SetSecondaryCustomTargetHeartRateLow(uint? secondaryCustomTargetHeartRateLow) - { - SetFieldValue(21, 0, secondaryCustomTargetHeartRateLow, SecondaryCustomTargetValueLowSubfield.SecondaryCustomTargetHeartRateLow); - } - - /// - /// Retrieves the SecondaryCustomTargetCadenceLow subfield - /// Units: rpm - /// Nullable uint representing the SecondaryCustomTargetCadenceLow subfield - public uint? GetSecondaryCustomTargetCadenceLow() - { - Object val = GetFieldValue(21, 0, SecondaryCustomTargetValueLowSubfield.SecondaryCustomTargetCadenceLow); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set SecondaryCustomTargetCadenceLow subfield - /// Units: rpm - /// Subfield value to be set - public void SetSecondaryCustomTargetCadenceLow(uint? secondaryCustomTargetCadenceLow) - { - SetFieldValue(21, 0, secondaryCustomTargetCadenceLow, SecondaryCustomTargetValueLowSubfield.SecondaryCustomTargetCadenceLow); - } - - /// - /// Retrieves the SecondaryCustomTargetPowerLow subfield - /// Units: % or watts - /// Nullable uint representing the SecondaryCustomTargetPowerLow subfield - public uint? GetSecondaryCustomTargetPowerLow() - { - Object val = GetFieldValue(21, 0, SecondaryCustomTargetValueLowSubfield.SecondaryCustomTargetPowerLow); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set SecondaryCustomTargetPowerLow subfield - /// Units: % or watts - /// Subfield value to be set - public void SetSecondaryCustomTargetPowerLow(uint? secondaryCustomTargetPowerLow) - { - SetFieldValue(21, 0, secondaryCustomTargetPowerLow, SecondaryCustomTargetValueLowSubfield.SecondaryCustomTargetPowerLow); - } - /// - /// Retrieves the SecondaryCustomTargetValueHigh field - /// Returns nullable uint representing the SecondaryCustomTargetValueHigh field - public uint? GetSecondaryCustomTargetValueHigh() - { - Object val = GetFieldValue(22, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// Set SecondaryCustomTargetValueHigh field - /// Nullable field value to be set - public void SetSecondaryCustomTargetValueHigh(uint? secondaryCustomTargetValueHigh_) - { - SetFieldValue(22, 0, secondaryCustomTargetValueHigh_, Fit.SubfieldIndexMainField); - } - - - /// - /// Retrieves the SecondaryCustomTargetSpeedHigh subfield - /// Units: m/s - /// Nullable float representing the SecondaryCustomTargetSpeedHigh subfield - public float? GetSecondaryCustomTargetSpeedHigh() - { - Object val = GetFieldValue(22, 0, SecondaryCustomTargetValueHighSubfield.SecondaryCustomTargetSpeedHigh); - if(val == null) - { - return null; - } - - return (Convert.ToSingle(val)); - - } - - /// - /// - /// Set SecondaryCustomTargetSpeedHigh subfield - /// Units: m/s - /// Subfield value to be set - public void SetSecondaryCustomTargetSpeedHigh(float? secondaryCustomTargetSpeedHigh) - { - SetFieldValue(22, 0, secondaryCustomTargetSpeedHigh, SecondaryCustomTargetValueHighSubfield.SecondaryCustomTargetSpeedHigh); - } - - /// - /// Retrieves the SecondaryCustomTargetHeartRateHigh subfield - /// Units: % or bpm - /// Nullable uint representing the SecondaryCustomTargetHeartRateHigh subfield - public uint? GetSecondaryCustomTargetHeartRateHigh() - { - Object val = GetFieldValue(22, 0, SecondaryCustomTargetValueHighSubfield.SecondaryCustomTargetHeartRateHigh); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set SecondaryCustomTargetHeartRateHigh subfield - /// Units: % or bpm - /// Subfield value to be set - public void SetSecondaryCustomTargetHeartRateHigh(uint? secondaryCustomTargetHeartRateHigh) - { - SetFieldValue(22, 0, secondaryCustomTargetHeartRateHigh, SecondaryCustomTargetValueHighSubfield.SecondaryCustomTargetHeartRateHigh); - } - - /// - /// Retrieves the SecondaryCustomTargetCadenceHigh subfield - /// Units: rpm - /// Nullable uint representing the SecondaryCustomTargetCadenceHigh subfield - public uint? GetSecondaryCustomTargetCadenceHigh() - { - Object val = GetFieldValue(22, 0, SecondaryCustomTargetValueHighSubfield.SecondaryCustomTargetCadenceHigh); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set SecondaryCustomTargetCadenceHigh subfield - /// Units: rpm - /// Subfield value to be set - public void SetSecondaryCustomTargetCadenceHigh(uint? secondaryCustomTargetCadenceHigh) - { - SetFieldValue(22, 0, secondaryCustomTargetCadenceHigh, SecondaryCustomTargetValueHighSubfield.SecondaryCustomTargetCadenceHigh); - } - - /// - /// Retrieves the SecondaryCustomTargetPowerHigh subfield - /// Units: % or watts - /// Nullable uint representing the SecondaryCustomTargetPowerHigh subfield - public uint? GetSecondaryCustomTargetPowerHigh() - { - Object val = GetFieldValue(22, 0, SecondaryCustomTargetValueHighSubfield.SecondaryCustomTargetPowerHigh); - if(val == null) - { - return null; - } - - return (Convert.ToUInt32(val)); - - } - - /// - /// - /// Set SecondaryCustomTargetPowerHigh subfield - /// Units: % or watts - /// Subfield value to be set - public void SetSecondaryCustomTargetPowerHigh(uint? secondaryCustomTargetPowerHigh) - { - SetFieldValue(22, 0, secondaryCustomTargetPowerHigh, SecondaryCustomTargetValueHighSubfield.SecondaryCustomTargetPowerHigh); - } - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ZonesTargetMesg.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ZonesTargetMesg.cs deleted file mode 100644 index 5e805f44c..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Mesgs/ZonesTargetMesg.cs +++ /dev/null @@ -1,163 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; -using System.Linq; - -namespace Dynastream.Fit -{ - /// - /// Implements the ZonesTarget profile message. - /// - public class ZonesTargetMesg : Mesg - { - #region Fields - #endregion - - /// - /// Field Numbers for - /// - public sealed class FieldDefNum - { - public const byte MaxHeartRate = 1; - public const byte ThresholdHeartRate = 2; - public const byte FunctionalThresholdPower = 3; - public const byte HrCalcType = 5; - public const byte PwrCalcType = 7; - public const byte Invalid = Fit.FieldNumInvalid; - } - - #region Constructors - public ZonesTargetMesg() : base(Profile.GetMesg(MesgNum.ZonesTarget)) - { - } - - public ZonesTargetMesg(Mesg mesg) : base(mesg) - { - } - #endregion // Constructors - - #region Methods - /// - /// Retrieves the MaxHeartRate field - /// Returns nullable byte representing the MaxHeartRate field - public byte? GetMaxHeartRate() - { - Object val = GetFieldValue(1, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set MaxHeartRate field - /// Nullable field value to be set - public void SetMaxHeartRate(byte? maxHeartRate_) - { - SetFieldValue(1, 0, maxHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the ThresholdHeartRate field - /// Returns nullable byte representing the ThresholdHeartRate field - public byte? GetThresholdHeartRate() - { - Object val = GetFieldValue(2, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToByte(val)); - - } - - /// - /// Set ThresholdHeartRate field - /// Nullable field value to be set - public void SetThresholdHeartRate(byte? thresholdHeartRate_) - { - SetFieldValue(2, 0, thresholdHeartRate_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the FunctionalThresholdPower field - /// Returns nullable ushort representing the FunctionalThresholdPower field - public ushort? GetFunctionalThresholdPower() - { - Object val = GetFieldValue(3, 0, Fit.SubfieldIndexMainField); - if(val == null) - { - return null; - } - - return (Convert.ToUInt16(val)); - - } - - /// - /// Set FunctionalThresholdPower field - /// Nullable field value to be set - public void SetFunctionalThresholdPower(ushort? functionalThresholdPower_) - { - SetFieldValue(3, 0, functionalThresholdPower_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the HrCalcType field - /// Returns nullable HrZoneCalc enum representing the HrCalcType field - public HrZoneCalc? GetHrCalcType() - { - object obj = GetFieldValue(5, 0, Fit.SubfieldIndexMainField); - HrZoneCalc? value = obj == null ? (HrZoneCalc?)null : (HrZoneCalc)obj; - return value; - } - - /// - /// Set HrCalcType field - /// Nullable field value to be set - public void SetHrCalcType(HrZoneCalc? hrCalcType_) - { - SetFieldValue(5, 0, hrCalcType_, Fit.SubfieldIndexMainField); - } - - /// - /// Retrieves the PwrCalcType field - /// Returns nullable PwrZoneCalc enum representing the PwrCalcType field - public PwrZoneCalc? GetPwrCalcType() - { - object obj = GetFieldValue(7, 0, Fit.SubfieldIndexMainField); - PwrZoneCalc? value = obj == null ? (PwrZoneCalc?)null : (PwrZoneCalc)obj; - return value; - } - - /// - /// Set PwrCalcType field - /// Nullable field value to be set - public void SetPwrCalcType(PwrZoneCalc? pwrCalcType_) - { - SetFieldValue(7, 0, pwrCalcType_, Fit.SubfieldIndexMainField); - } - - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Activity.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Activity.cs deleted file mode 100644 index c1a01cb4f..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Activity.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Activity type as an enum - /// - public enum Activity : byte - { - Manual = 0, - AutoMultiSport = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ActivityClass.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ActivityClass.cs deleted file mode 100644 index 57f3b2ff8..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ActivityClass.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ActivityClass type as an enum - /// - public enum ActivityClass : byte - { - Level = 0x7F, - LevelMax = 100, - Athlete = 0x80, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ActivityLevel.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ActivityLevel.cs deleted file mode 100644 index 6e1ecc08e..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ActivityLevel.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ActivityLevel type as an enum - /// - public enum ActivityLevel : byte - { - Low = 0, - Medium = 1, - High = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ActivitySubtype.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ActivitySubtype.cs deleted file mode 100644 index 8c241966e..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ActivitySubtype.cs +++ /dev/null @@ -1,47 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ActivitySubtype type as an enum - /// - public enum ActivitySubtype : byte - { - Generic = 0, - Treadmill = 1, - Street = 2, - Trail = 3, - Track = 4, - Spin = 5, - IndoorCycling = 6, - Road = 7, - Mountain = 8, - Downhill = 9, - Recumbent = 10, - Cyclocross = 11, - HandCycling = 12, - TrackCycling = 13, - IndoorRowing = 14, - Elliptical = 15, - StairClimbing = 16, - LapSwimming = 17, - OpenWater = 18, - All = 254, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ActivityType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ActivityType.cs deleted file mode 100644 index e7be625d1..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ActivityType.cs +++ /dev/null @@ -1,36 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ActivityType type as an enum - /// - public enum ActivityType : byte - { - Generic = 0, - Running = 1, - Cycling = 2, - Transition = 3, - FitnessEquipment = 4, - Swimming = 5, - Walking = 6, - Sedentary = 8, - All = 254, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AnalogWatchfaceLayout.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AnalogWatchfaceLayout.cs deleted file mode 100644 index e23cb7678..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AnalogWatchfaceLayout.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile AnalogWatchfaceLayout type as an enum - /// - public enum AnalogWatchfaceLayout : byte - { - Minimal = 0, - Traditional = 1, - Modern = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AntNetwork.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AntNetwork.cs deleted file mode 100644 index 4dadb7373..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AntNetwork.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile AntNetwork type as an enum - /// - public enum AntNetwork : byte - { - Public = 0, - Antplus = 1, - Antfs = 2, - Private = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AntplusDeviceType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AntplusDeviceType.cs deleted file mode 100644 index e724487f4..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AntplusDeviceType.cs +++ /dev/null @@ -1,52 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile AntplusDeviceType type as a class - /// - public static class AntplusDeviceType - { - public const byte Antfs = 1; - public const byte BikePower = 11; - public const byte EnvironmentSensorLegacy = 12; - public const byte MultiSportSpeedDistance = 15; - public const byte Control = 16; - public const byte FitnessEquipment = 17; - public const byte BloodPressure = 18; - public const byte GeocacheNode = 19; - public const byte LightElectricVehicle = 20; - public const byte EnvSensor = 25; - public const byte Racquet = 26; - public const byte ControlHub = 27; - public const byte MuscleOxygen = 31; - public const byte Shifting = 34; - public const byte BikeLightMain = 35; - public const byte BikeLightShared = 36; - public const byte Exd = 38; - public const byte BikeRadar = 40; - public const byte BikeAero = 46; - public const byte WeightScale = 119; - public const byte HeartRate = 120; - public const byte BikeSpeedCadence = 121; - public const byte BikeCadence = 122; - public const byte BikeSpeed = 123; - public const byte StrideSpeedDistance = 124; - public const byte Invalid = (byte)0xFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AttitudeStage.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AttitudeStage.cs deleted file mode 100644 index 4096c0fc4..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AttitudeStage.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile AttitudeStage type as an enum - /// - public enum AttitudeStage : byte - { - Failed = 0, - Aligning = 1, - Degraded = 2, - Valid = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AttitudeValidity.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AttitudeValidity.cs deleted file mode 100644 index 73a145d15..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AttitudeValidity.cs +++ /dev/null @@ -1,40 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile AttitudeValidity type as a class - /// - public static class AttitudeValidity - { - public const ushort TrackAngleHeadingValid = 0x0001; - public const ushort PitchValid = 0x0002; - public const ushort RollValid = 0x0004; - public const ushort LateralBodyAccelValid = 0x0008; - public const ushort NormalBodyAccelValid = 0x0010; - public const ushort TurnRateValid = 0x0020; - public const ushort HwFail = 0x0040; - public const ushort MagInvalid = 0x0080; - public const ushort NoGps = 0x0100; - public const ushort GpsInvalid = 0x0200; - public const ushort SolutionCoasting = 0x0400; - public const ushort TrueTrackAngle = 0x0800; - public const ushort MagneticHeading = 0x1000; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AutoActivityDetect.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AutoActivityDetect.cs deleted file mode 100644 index c12bb9162..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AutoActivityDetect.cs +++ /dev/null @@ -1,34 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile AutoActivityDetect type as a class - /// - public static class AutoActivityDetect - { - public const uint None = 0x00000000; - public const uint Running = 0x00000001; - public const uint Cycling = 0x00000002; - public const uint Swimming = 0x00000004; - public const uint Walking = 0x00000008; - public const uint Elliptical = 0x00000020; - public const uint Sedentary = 0x00000400; - public const uint Invalid = (uint)0xFFFFFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AutoSyncFrequency.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AutoSyncFrequency.cs deleted file mode 100644 index 4f73f8eae..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AutoSyncFrequency.cs +++ /dev/null @@ -1,32 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile AutoSyncFrequency type as an enum - /// - public enum AutoSyncFrequency : byte - { - Never = 0, - Occasionally = 1, - Frequent = 2, - OnceADay = 3, - Remote = 4, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AutolapTrigger.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AutolapTrigger.cs deleted file mode 100644 index dc4409bda..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/AutolapTrigger.cs +++ /dev/null @@ -1,34 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile AutolapTrigger type as an enum - /// - public enum AutolapTrigger : byte - { - Time = 0, - Distance = 1, - PositionStart = 2, - PositionLap = 3, - PositionWaypoint = 4, - PositionMarked = 5, - Off = 6, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Autoscroll.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Autoscroll.cs deleted file mode 100644 index f22895183..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Autoscroll.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Autoscroll type as an enum - /// - public enum Autoscroll : byte - { - None = 0, - Slow = 1, - Medium = 2, - Fast = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BacklightMode.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BacklightMode.cs deleted file mode 100644 index f82aab6bc..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BacklightMode.cs +++ /dev/null @@ -1,34 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile BacklightMode type as an enum - /// - public enum BacklightMode : byte - { - Off = 0, - Manual = 1, - KeyAndMessages = 2, - AutoBrightness = 3, - SmartNotifications = 4, - KeyAndMessagesNight = 5, - KeyAndMessagesAndSmartNotifications = 6, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BacklightTimeout.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BacklightTimeout.cs deleted file mode 100644 index fd2dc25a8..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BacklightTimeout.cs +++ /dev/null @@ -1,28 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile BacklightTimeout type as a class - /// - public static class BacklightTimeout - { - public const byte Infinite = 0; // Backlight stays on forever. - public const byte Invalid = (byte)0xFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BatteryStatus.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BatteryStatus.cs deleted file mode 100644 index a7c612d29..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BatteryStatus.cs +++ /dev/null @@ -1,34 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile BatteryStatus type as a class - /// - public static class BatteryStatus - { - public const byte New = 1; - public const byte Good = 2; - public const byte Ok = 3; - public const byte Low = 4; - public const byte Critical = 5; - public const byte Charging = 6; - public const byte Unknown = 7; - public const byte Invalid = (byte)0xFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BenchPressExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BenchPressExerciseName.cs deleted file mode 100644 index e1f752eff..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BenchPressExerciseName.cs +++ /dev/null @@ -1,54 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile BenchPressExerciseName type as a class - /// - public static class BenchPressExerciseName - { - public const ushort AlternatingDumbbellChestPressOnSwissBall = 0; - public const ushort BarbellBenchPress = 1; - public const ushort BarbellBoardBenchPress = 2; - public const ushort BarbellFloorPress = 3; - public const ushort CloseGripBarbellBenchPress = 4; - public const ushort DeclineDumbbellBenchPress = 5; - public const ushort DumbbellBenchPress = 6; - public const ushort DumbbellFloorPress = 7; - public const ushort InclineBarbellBenchPress = 8; - public const ushort InclineDumbbellBenchPress = 9; - public const ushort InclineSmithMachineBenchPress = 10; - public const ushort IsometricBarbellBenchPress = 11; - public const ushort KettlebellChestPress = 12; - public const ushort NeutralGripDumbbellBenchPress = 13; - public const ushort NeutralGripDumbbellInclineBenchPress = 14; - public const ushort OneArmFloorPress = 15; - public const ushort WeightedOneArmFloorPress = 16; - public const ushort PartialLockout = 17; - public const ushort ReverseGripBarbellBenchPress = 18; - public const ushort ReverseGripInclineBenchPress = 19; - public const ushort SingleArmCableChestPress = 20; - public const ushort SingleArmDumbbellBenchPress = 21; - public const ushort SmithMachineBenchPress = 22; - public const ushort SwissBallDumbbellChestPress = 23; - public const ushort TripleStopBarbellBenchPress = 24; - public const ushort WideGripBarbellBenchPress = 25; - public const ushort AlternatingDumbbellChestPress = 26; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BikeLightBeamAngleMode.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BikeLightBeamAngleMode.cs deleted file mode 100644 index 1d879e753..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BikeLightBeamAngleMode.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile BikeLightBeamAngleMode type as a class - /// - public static class BikeLightBeamAngleMode - { - public const byte Manual = 0; - public const byte Auto = 1; - public const byte Invalid = (byte)0xFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BikeLightNetworkConfigType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BikeLightNetworkConfigType.cs deleted file mode 100644 index faba83889..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BikeLightNetworkConfigType.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile BikeLightNetworkConfigType type as an enum - /// - public enum BikeLightNetworkConfigType : byte - { - Auto = 0, - Individual = 4, - HighVisibility = 5, - Trail = 6, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BleDeviceType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BleDeviceType.cs deleted file mode 100644 index 167702c09..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BleDeviceType.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile BleDeviceType type as a class - /// - public static class BleDeviceType - { - public const byte ConnectedGps = 0; // GPS that is provided over a proprietary bluetooth service - public const byte HeartRate = 1; - public const byte BikePower = 2; - public const byte BikeSpeedCadence = 3; - public const byte BikeSpeed = 4; - public const byte BikeCadence = 5; - public const byte Footpod = 6; - public const byte BikeTrainer = 7; // Indoor-Bike FTMS protocol - public const byte Invalid = (byte)0xFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BodyLocation.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BodyLocation.cs deleted file mode 100644 index 4283aa8ac..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BodyLocation.cs +++ /dev/null @@ -1,67 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile BodyLocation type as an enum - /// - public enum BodyLocation : byte - { - LeftLeg = 0, - LeftCalf = 1, - LeftShin = 2, - LeftHamstring = 3, - LeftQuad = 4, - LeftGlute = 5, - RightLeg = 6, - RightCalf = 7, - RightShin = 8, - RightHamstring = 9, - RightQuad = 10, - RightGlute = 11, - TorsoBack = 12, - LeftLowerBack = 13, - LeftUpperBack = 14, - RightLowerBack = 15, - RightUpperBack = 16, - TorsoFront = 17, - LeftAbdomen = 18, - LeftChest = 19, - RightAbdomen = 20, - RightChest = 21, - LeftArm = 22, - LeftShoulder = 23, - LeftBicep = 24, - LeftTricep = 25, - LeftBrachioradialis = 26, - LeftForearmExtensors = 27, - RightArm = 28, - RightShoulder = 29, - RightBicep = 30, - RightTricep = 31, - RightBrachioradialis = 32, - RightForearmExtensors = 33, - Neck = 34, - Throat = 35, - WaistMidBack = 36, - WaistFront = 37, - WaistLeft = 38, - WaistRight = 39, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Bool.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Bool.cs deleted file mode 100644 index eecc7df46..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Bool.cs +++ /dev/null @@ -1,26 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Bool type as an enum - /// - public enum Bool : byte - { - False = 0, - True = 1, - Invalid = 0xFF - } // enum -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BpStatus.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BpStatus.cs deleted file mode 100644 index 7a1b62fce..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/BpStatus.cs +++ /dev/null @@ -1,32 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile BpStatus type as an enum - /// - public enum BpStatus : byte - { - NoError = 0, - ErrorIncompleteData = 1, - ErrorNoMeasurement = 2, - ErrorDataOutOfRange = 3, - ErrorIrregularHeartRate = 4, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CalfRaiseExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CalfRaiseExerciseName.cs deleted file mode 100644 index 30de220af..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CalfRaiseExerciseName.cs +++ /dev/null @@ -1,48 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile CalfRaiseExerciseName type as a class - /// - public static class CalfRaiseExerciseName - { - public const ushort _3WayCalfRaise = 0; - public const ushort _3WayWeightedCalfRaise = 1; - public const ushort _3WaySingleLegCalfRaise = 2; - public const ushort _3WayWeightedSingleLegCalfRaise = 3; - public const ushort DonkeyCalfRaise = 4; - public const ushort WeightedDonkeyCalfRaise = 5; - public const ushort SeatedCalfRaise = 6; - public const ushort WeightedSeatedCalfRaise = 7; - public const ushort SeatedDumbbellToeRaise = 8; - public const ushort SingleLegBentKneeCalfRaise = 9; - public const ushort WeightedSingleLegBentKneeCalfRaise = 10; - public const ushort SingleLegDeclinePushUp = 11; - public const ushort SingleLegDonkeyCalfRaise = 12; - public const ushort WeightedSingleLegDonkeyCalfRaise = 13; - public const ushort SingleLegHipRaiseWithKneeHold = 14; - public const ushort SingleLegStandingCalfRaise = 15; - public const ushort SingleLegStandingDumbbellCalfRaise = 16; - public const ushort StandingBarbellCalfRaise = 17; - public const ushort StandingCalfRaise = 18; - public const ushort WeightedStandingCalfRaise = 19; - public const ushort StandingDumbbellCalfRaise = 20; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CameraEventType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CameraEventType.cs deleted file mode 100644 index 3a3f5a990..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CameraEventType.cs +++ /dev/null @@ -1,40 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile CameraEventType type as an enum - /// - public enum CameraEventType : byte - { - VideoStart = 0, - VideoSplit = 1, - VideoEnd = 2, - PhotoTaken = 3, - VideoSecondStreamStart = 4, - VideoSecondStreamSplit = 5, - VideoSecondStreamEnd = 6, - VideoSplitStart = 7, - VideoSecondStreamSplitStart = 8, - VideoPause = 11, - VideoSecondStreamPause = 12, - VideoResume = 13, - VideoSecondStreamResume = 14, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CameraOrientationType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CameraOrientationType.cs deleted file mode 100644 index c8ff66ffd..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CameraOrientationType.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile CameraOrientationType type as an enum - /// - public enum CameraOrientationType : byte - { - CameraOrientation0 = 0, - CameraOrientation90 = 1, - CameraOrientation180 = 2, - CameraOrientation270 = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CardioExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CardioExerciseName.cs deleted file mode 100644 index b787f9c99..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CardioExerciseName.cs +++ /dev/null @@ -1,49 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile CardioExerciseName type as a class - /// - public static class CardioExerciseName - { - public const ushort BobAndWeaveCircle = 0; - public const ushort WeightedBobAndWeaveCircle = 1; - public const ushort CardioCoreCrawl = 2; - public const ushort WeightedCardioCoreCrawl = 3; - public const ushort DoubleUnder = 4; - public const ushort WeightedDoubleUnder = 5; - public const ushort JumpRope = 6; - public const ushort WeightedJumpRope = 7; - public const ushort JumpRopeCrossover = 8; - public const ushort WeightedJumpRopeCrossover = 9; - public const ushort JumpRopeJog = 10; - public const ushort WeightedJumpRopeJog = 11; - public const ushort JumpingJacks = 12; - public const ushort WeightedJumpingJacks = 13; - public const ushort SkiMoguls = 14; - public const ushort WeightedSkiMoguls = 15; - public const ushort SplitJacks = 16; - public const ushort WeightedSplitJacks = 17; - public const ushort SquatJacks = 18; - public const ushort WeightedSquatJacks = 19; - public const ushort TripleUnder = 20; - public const ushort WeightedTripleUnder = 21; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CarryExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CarryExerciseName.cs deleted file mode 100644 index f1724904f..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CarryExerciseName.cs +++ /dev/null @@ -1,32 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile CarryExerciseName type as a class - /// - public static class CarryExerciseName - { - public const ushort BarHolds = 0; - public const ushort FarmersWalk = 1; - public const ushort FarmersWalkOnToes = 2; - public const ushort HexDumbbellHold = 3; - public const ushort OverheadCarry = 4; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Checksum.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Checksum.cs deleted file mode 100644 index 1564649d1..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Checksum.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Checksum type as a class - /// - public static class Checksum - { - public const byte Clear = 0; // Allows clear of checksum for flash memory where can only write 1 to 0 without erasing sector. - public const byte Ok = 1; // 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. - public const byte Invalid = (byte)0xFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ChopExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ChopExerciseName.cs deleted file mode 100644 index afef2b40e..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ChopExerciseName.cs +++ /dev/null @@ -1,50 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ChopExerciseName type as a class - /// - public static class ChopExerciseName - { - public const ushort CablePullThrough = 0; - public const ushort CableRotationalLift = 1; - public const ushort CableWoodchop = 2; - public const ushort CrossChopToKnee = 3; - public const ushort WeightedCrossChopToKnee = 4; - public const ushort DumbbellChop = 5; - public const ushort HalfKneelingRotation = 6; - public const ushort WeightedHalfKneelingRotation = 7; - public const ushort HalfKneelingRotationalChop = 8; - public const ushort HalfKneelingRotationalReverseChop = 9; - public const ushort HalfKneelingStabilityChop = 10; - public const ushort HalfKneelingStabilityReverseChop = 11; - public const ushort KneelingRotationalChop = 12; - public const ushort KneelingRotationalReverseChop = 13; - public const ushort KneelingStabilityChop = 14; - public const ushort KneelingWoodchopper = 15; - public const ushort MedicineBallWoodChops = 16; - public const ushort PowerSquatChops = 17; - public const ushort WeightedPowerSquatChops = 18; - public const ushort StandingRotationalChop = 19; - public const ushort StandingSplitRotationalChop = 20; - public const ushort StandingSplitRotationalReverseChop = 21; - public const ushort StandingStabilityReverseChop = 22; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ClimbProEvent.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ClimbProEvent.cs deleted file mode 100644 index 0290e2699..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ClimbProEvent.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ClimbProEvent type as an enum - /// - public enum ClimbProEvent : byte - { - Approach = 0, - Start = 1, - Complete = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CommTimeoutType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CommTimeoutType.cs deleted file mode 100644 index 7baa3f51d..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CommTimeoutType.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile CommTimeoutType type as a class - /// - public static class CommTimeoutType - { - public const ushort WildcardPairingTimeout = 0; // Timeout pairing to any device - public const ushort PairingTimeout = 1; // Timeout pairing to previously paired device - public const ushort ConnectionLost = 2; // Temporary loss of communications - public const ushort ConnectionTimeout = 3; // Connection closed due to extended bad communications - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ConnectivityCapabilities.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ConnectivityCapabilities.cs deleted file mode 100644 index 76afa90bd..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ConnectivityCapabilities.cs +++ /dev/null @@ -1,59 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ConnectivityCapabilities type as a class - /// - public static class ConnectivityCapabilities - { - public const uint Bluetooth = 0x00000001; - public const uint BluetoothLe = 0x00000002; - public const uint Ant = 0x00000004; - public const uint ActivityUpload = 0x00000008; - public const uint CourseDownload = 0x00000010; - public const uint WorkoutDownload = 0x00000020; - public const uint LiveTrack = 0x00000040; - public const uint WeatherConditions = 0x00000080; - public const uint WeatherAlerts = 0x00000100; - public const uint GpsEphemerisDownload = 0x00000200; - public const uint ExplicitArchive = 0x00000400; - public const uint SetupIncomplete = 0x00000800; - public const uint ContinueSyncAfterSoftwareUpdate = 0x00001000; - public const uint ConnectIqAppDownload = 0x00002000; - public const uint GolfCourseDownload = 0x00004000; - public const uint DeviceInitiatesSync = 0x00008000; // Indicates device is in control of initiating all syncs - public const uint ConnectIqWatchAppDownload = 0x00010000; - public const uint ConnectIqWidgetDownload = 0x00020000; - public const uint ConnectIqWatchFaceDownload = 0x00040000; - public const uint ConnectIqDataFieldDownload = 0x00080000; - public const uint ConnectIqAppManagment = 0x00100000; // Device supports delete and reorder of apps via GCM - public const uint SwingSensor = 0x00200000; - public const uint SwingSensorRemote = 0x00400000; - public const uint IncidentDetection = 0x00800000; // Device supports incident detection - public const uint AudioPrompts = 0x01000000; - public const uint WifiVerification = 0x02000000; // Device supports reporting wifi verification via GCM - public const uint TrueUp = 0x04000000; // Device supports True Up - public const uint FindMyWatch = 0x08000000; // Device supports Find My Watch - public const uint RemoteManualSync = 0x10000000; - public const uint LiveTrackAutoStart = 0x20000000; // Device supports LiveTrack auto start - public const uint LiveTrackMessaging = 0x40000000; // Device supports LiveTrack Messaging - public const uint InstantInput = 0x80000000; // Device supports instant input feature - public const uint Invalid = (uint)0x00000000; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CoreExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CoreExerciseName.cs deleted file mode 100644 index 7bf15d152..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CoreExerciseName.cs +++ /dev/null @@ -1,100 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile CoreExerciseName type as a class - /// - public static class CoreExerciseName - { - public const ushort AbsJabs = 0; - public const ushort WeightedAbsJabs = 1; - public const ushort AlternatingPlateReach = 2; - public const ushort BarbellRollout = 3; - public const ushort WeightedBarbellRollout = 4; - public const ushort BodyBarObliqueTwist = 5; - public const ushort CableCorePress = 6; - public const ushort CableSideBend = 7; - public const ushort SideBend = 8; - public const ushort WeightedSideBend = 9; - public const ushort CrescentCircle = 10; - public const ushort WeightedCrescentCircle = 11; - public const ushort CyclingRussianTwist = 12; - public const ushort WeightedCyclingRussianTwist = 13; - public const ushort ElevatedFeetRussianTwist = 14; - public const ushort WeightedElevatedFeetRussianTwist = 15; - public const ushort HalfTurkishGetUp = 16; - public const ushort KettlebellWindmill = 17; - public const ushort KneelingAbWheel = 18; - public const ushort WeightedKneelingAbWheel = 19; - public const ushort ModifiedFrontLever = 20; - public const ushort OpenKneeTucks = 21; - public const ushort WeightedOpenKneeTucks = 22; - public const ushort SideAbsLegLift = 23; - public const ushort WeightedSideAbsLegLift = 24; - public const ushort SwissBallJackknife = 25; - public const ushort WeightedSwissBallJackknife = 26; - public const ushort SwissBallPike = 27; - public const ushort WeightedSwissBallPike = 28; - public const ushort SwissBallRollout = 29; - public const ushort WeightedSwissBallRollout = 30; - public const ushort TriangleHipPress = 31; - public const ushort WeightedTriangleHipPress = 32; - public const ushort TrxSuspendedJackknife = 33; - public const ushort WeightedTrxSuspendedJackknife = 34; - public const ushort UBoat = 35; - public const ushort WeightedUBoat = 36; - public const ushort WindmillSwitches = 37; - public const ushort WeightedWindmillSwitches = 38; - public const ushort AlternatingSlideOut = 39; - public const ushort WeightedAlternatingSlideOut = 40; - public const ushort GhdBackExtensions = 41; - public const ushort WeightedGhdBackExtensions = 42; - public const ushort OverheadWalk = 43; - public const ushort Inchworm = 44; - public const ushort WeightedModifiedFrontLever = 45; - public const ushort RussianTwist = 46; - public const ushort AbdominalLegRotations = 47; // Deprecated do not use - public const ushort ArmAndLegExtensionOnKnees = 48; - public const ushort Bicycle = 49; - public const ushort BicepCurlWithLegExtension = 50; - public const ushort CatCow = 51; - public const ushort Corkscrew = 52; - public const ushort CrissCross = 53; - public const ushort CrissCrossWithBall = 54; // Deprecated do not use - public const ushort DoubleLegStretch = 55; - public const ushort KneeFolds = 56; - public const ushort LowerLift = 57; - public const ushort NeckPull = 58; - public const ushort PelvicClocks = 59; - public const ushort RollOver = 60; - public const ushort RollUp = 61; - public const ushort Rolling = 62; - public const ushort Rowing1 = 63; - public const ushort Rowing2 = 64; - public const ushort Scissors = 65; - public const ushort SingleLegCircles = 66; - public const ushort SingleLegStretch = 67; - public const ushort SnakeTwist1And2 = 68; // Deprecated do not use - public const ushort Swan = 69; - public const ushort Swimming = 70; - public const ushort Teaser = 71; - public const ushort TheHundred = 72; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CourseCapabilities.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CourseCapabilities.cs deleted file mode 100644 index cb4bb7499..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CourseCapabilities.cs +++ /dev/null @@ -1,39 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile CourseCapabilities type as a class - /// - public static class CourseCapabilities - { - public const uint Processed = 0x00000001; - public const uint Valid = 0x00000002; - public const uint Time = 0x00000004; - public const uint Distance = 0x00000008; - public const uint Position = 0x00000010; - public const uint HeartRate = 0x00000020; - public const uint Power = 0x00000040; - public const uint Cadence = 0x00000080; - public const uint Training = 0x00000100; - public const uint Navigation = 0x00000200; - public const uint Bikeway = 0x00000400; - public const uint Aviation = 0x00001000; // Denote course files to be used as flight plans - public const uint Invalid = (uint)0x00000000; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CoursePoint.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CoursePoint.cs deleted file mode 100644 index 433daf600..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CoursePoint.cs +++ /dev/null @@ -1,80 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile CoursePoint type as an enum - /// - public enum CoursePoint : byte - { - Generic = 0, - Summit = 1, - Valley = 2, - Water = 3, - Food = 4, - Danger = 5, - Left = 6, - Right = 7, - Straight = 8, - FirstAid = 9, - FourthCategory = 10, - ThirdCategory = 11, - SecondCategory = 12, - FirstCategory = 13, - HorsCategory = 14, - Sprint = 15, - LeftFork = 16, - RightFork = 17, - MiddleFork = 18, - SlightLeft = 19, - SharpLeft = 20, - SlightRight = 21, - SharpRight = 22, - UTurn = 23, - SegmentStart = 24, - SegmentEnd = 25, - Campsite = 27, - AidStation = 28, - RestArea = 29, - GeneralDistance = 30, - Service = 31, - EnergyGel = 32, - SportsDrink = 33, - MileMarker = 34, - Checkpoint = 35, - Shelter = 36, - MeetingSpot = 37, - Overlook = 38, - Toilet = 39, - Shower = 40, - Gear = 41, - SharpCurve = 42, - SteepIncline = 43, - Tunnel = 44, - Bridge = 45, - Obstacle = 46, - Crossing = 47, - Store = 48, - Transition = 49, - Navaid = 50, - Transport = 51, - Alert = 52, - Info = 53, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CrunchExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CrunchExerciseName.cs deleted file mode 100644 index f234bcfbd..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CrunchExerciseName.cs +++ /dev/null @@ -1,112 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile CrunchExerciseName type as a class - /// - public static class CrunchExerciseName - { - public const ushort BicycleCrunch = 0; - public const ushort CableCrunch = 1; - public const ushort CircularArmCrunch = 2; - public const ushort CrossedArmsCrunch = 3; - public const ushort WeightedCrossedArmsCrunch = 4; - public const ushort CrossLegReverseCrunch = 5; - public const ushort WeightedCrossLegReverseCrunch = 6; - public const ushort CrunchChop = 7; - public const ushort WeightedCrunchChop = 8; - public const ushort DoubleCrunch = 9; - public const ushort WeightedDoubleCrunch = 10; - public const ushort ElbowToKneeCrunch = 11; - public const ushort WeightedElbowToKneeCrunch = 12; - public const ushort FlutterKicks = 13; - public const ushort WeightedFlutterKicks = 14; - public const ushort FoamRollerReverseCrunchOnBench = 15; - public const ushort WeightedFoamRollerReverseCrunchOnBench = 16; - public const ushort FoamRollerReverseCrunchWithDumbbell = 17; - public const ushort FoamRollerReverseCrunchWithMedicineBall = 18; - public const ushort FrogPress = 19; - public const ushort HangingKneeRaiseObliqueCrunch = 20; - public const ushort WeightedHangingKneeRaiseObliqueCrunch = 21; - public const ushort HipCrossover = 22; - public const ushort WeightedHipCrossover = 23; - public const ushort HollowRock = 24; - public const ushort WeightedHollowRock = 25; - public const ushort InclineReverseCrunch = 26; - public const ushort WeightedInclineReverseCrunch = 27; - public const ushort KneelingCableCrunch = 28; - public const ushort KneelingCrossCrunch = 29; - public const ushort WeightedKneelingCrossCrunch = 30; - public const ushort KneelingObliqueCableCrunch = 31; - public const ushort KneesToElbow = 32; - public const ushort LegExtensions = 33; - public const ushort WeightedLegExtensions = 34; - public const ushort LegLevers = 35; - public const ushort McgillCurlUp = 36; - public const ushort WeightedMcgillCurlUp = 37; - public const ushort ModifiedPilatesRollUpWithBall = 38; - public const ushort WeightedModifiedPilatesRollUpWithBall = 39; - public const ushort PilatesCrunch = 40; - public const ushort WeightedPilatesCrunch = 41; - public const ushort PilatesRollUpWithBall = 42; - public const ushort WeightedPilatesRollUpWithBall = 43; - public const ushort RaisedLegsCrunch = 44; - public const ushort WeightedRaisedLegsCrunch = 45; - public const ushort ReverseCrunch = 46; - public const ushort WeightedReverseCrunch = 47; - public const ushort ReverseCrunchOnABench = 48; - public const ushort WeightedReverseCrunchOnABench = 49; - public const ushort ReverseCurlAndLift = 50; - public const ushort WeightedReverseCurlAndLift = 51; - public const ushort RotationalLift = 52; - public const ushort WeightedRotationalLift = 53; - public const ushort SeatedAlternatingReverseCrunch = 54; - public const ushort WeightedSeatedAlternatingReverseCrunch = 55; - public const ushort SeatedLegU = 56; - public const ushort WeightedSeatedLegU = 57; - public const ushort SideToSideCrunchAndWeave = 58; - public const ushort WeightedSideToSideCrunchAndWeave = 59; - public const ushort SingleLegReverseCrunch = 60; - public const ushort WeightedSingleLegReverseCrunch = 61; - public const ushort SkaterCrunchCross = 62; - public const ushort WeightedSkaterCrunchCross = 63; - public const ushort StandingCableCrunch = 64; - public const ushort StandingSideCrunch = 65; - public const ushort StepClimb = 66; - public const ushort WeightedStepClimb = 67; - public const ushort SwissBallCrunch = 68; - public const ushort SwissBallReverseCrunch = 69; - public const ushort WeightedSwissBallReverseCrunch = 70; - public const ushort SwissBallRussianTwist = 71; - public const ushort WeightedSwissBallRussianTwist = 72; - public const ushort SwissBallSideCrunch = 73; - public const ushort WeightedSwissBallSideCrunch = 74; - public const ushort ThoracicCrunchesOnFoamRoller = 75; - public const ushort WeightedThoracicCrunchesOnFoamRoller = 76; - public const ushort TricepsCrunch = 77; - public const ushort WeightedBicycleCrunch = 78; - public const ushort WeightedCrunch = 79; - public const ushort WeightedSwissBallCrunch = 80; - public const ushort ToesToBar = 81; - public const ushort WeightedToesToBar = 82; - public const ushort Crunch = 83; - public const ushort StraightLegCrunchWithBall = 84; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CurlExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CurlExerciseName.cs deleted file mode 100644 index 6605225c2..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/CurlExerciseName.cs +++ /dev/null @@ -1,71 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile CurlExerciseName type as a class - /// - public static class CurlExerciseName - { - public const ushort AlternatingDumbbellBicepsCurl = 0; - public const ushort AlternatingDumbbellBicepsCurlOnSwissBall = 1; - public const ushort AlternatingInclineDumbbellBicepsCurl = 2; - public const ushort BarbellBicepsCurl = 3; - public const ushort BarbellReverseWristCurl = 4; - public const ushort BarbellWristCurl = 5; - public const ushort BehindTheBackBarbellReverseWristCurl = 6; - public const ushort BehindTheBackOneArmCableCurl = 7; - public const ushort CableBicepsCurl = 8; - public const ushort CableHammerCurl = 9; - public const ushort CheatingBarbellBicepsCurl = 10; - public const ushort CloseGripEzBarBicepsCurl = 11; - public const ushort CrossBodyDumbbellHammerCurl = 12; - public const ushort DeadHangBicepsCurl = 13; - public const ushort DeclineHammerCurl = 14; - public const ushort DumbbellBicepsCurlWithStaticHold = 15; - public const ushort DumbbellHammerCurl = 16; - public const ushort DumbbellReverseWristCurl = 17; - public const ushort DumbbellWristCurl = 18; - public const ushort EzBarPreacherCurl = 19; - public const ushort ForwardBendBicepsCurl = 20; - public const ushort HammerCurlToPress = 21; - public const ushort InclineDumbbellBicepsCurl = 22; - public const ushort InclineOffsetThumbDumbbellCurl = 23; - public const ushort KettlebellBicepsCurl = 24; - public const ushort LyingConcentrationCableCurl = 25; - public const ushort OneArmPreacherCurl = 26; - public const ushort PlatePinchCurl = 27; - public const ushort PreacherCurlWithCable = 28; - public const ushort ReverseEzBarCurl = 29; - public const ushort ReverseGripWristCurl = 30; - public const ushort ReverseGripBarbellBicepsCurl = 31; - public const ushort SeatedAlternatingDumbbellBicepsCurl = 32; - public const ushort SeatedDumbbellBicepsCurl = 33; - public const ushort SeatedReverseDumbbellCurl = 34; - public const ushort SplitStanceOffsetPinkyDumbbellCurl = 35; - public const ushort StandingAlternatingDumbbellCurls = 36; - public const ushort StandingDumbbellBicepsCurl = 37; - public const ushort StandingEzBarBicepsCurl = 38; - public const ushort StaticCurl = 39; - public const ushort SwissBallDumbbellOverheadTricepsExtension = 40; - public const ushort SwissBallEzBarPreacherCurl = 41; - public const ushort TwistingStandingDumbbellBicepsCurl = 42; - public const ushort WideGripEzBarBicepsCurl = 43; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DateMode.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DateMode.cs deleted file mode 100644 index 494400d15..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DateMode.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DateMode type as an enum - /// - public enum DateMode : byte - { - DayMonth = 0, - MonthDay = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DateTime.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DateTime.cs deleted file mode 100644 index d962565c4..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DateTime.cs +++ /dev/null @@ -1,146 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - /// - /// The DateTime class implements the Fit date_time type which references - /// UTC 00:00 Dec 31 1989 in second resolution - /// - public class DateTime - { - #region Fields - private double fractionalTimeStamp; - private uint timeStamp; - // if date_time is < 0x10000000 then it is system time (seconds from device power on) - // 0x10000000 => uptime of 8years => earliest date you can express ~1997 - private uint min = 0x10000000; - // .NET datetime uses 100ns ticks starting 12:00:00 midnight, January 1, 0001 - public System.DateTime offset = new System.DateTime(1989, 12, 31, 0, 0, 0, System.DateTimeKind.Utc); - #endregion // Fields - - #region Properties - - #endregion // Properties - - #region Constructors - public DateTime(uint timeStamp) - { - this.timeStamp = timeStamp; - this.fractionalTimeStamp = 0.0; - } - - public DateTime(System.DateTime dateTime) - { - timeStamp = (uint)((dateTime.Ticks - offset.Ticks) / 10000000); - fractionalTimeStamp = (((dateTime.Ticks - offset.Ticks) % 10000000) / 10000000.0); - } - - public DateTime(Dynastream.Fit.DateTime dateTime) - : this(dateTime.GetTimeStamp(), dateTime.GetFractionalTimeStamp()) - { - - } - - public DateTime(uint timeStamp, double fractionalTimeStamp) - { - this.timeStamp = timeStamp + (uint)Math.Floor(fractionalTimeStamp); - this.fractionalTimeStamp = fractionalTimeStamp - (double)Math.Floor(fractionalTimeStamp); - } - #endregion // Constructors - - #region Methods - public bool Equals(DateTime dateTime) - { - return (this.GetTimeStamp().Equals(dateTime.GetTimeStamp()) && (this.GetFractionalTimeStamp().Equals(dateTime.GetFractionalTimeStamp()))); - } - - public uint GetTimeStamp() - { - return timeStamp; - } - - public double GetFractionalTimeStamp() - { - return fractionalTimeStamp; - } - - public void ConvertSystemTimeToUTC(uint systemTimeOffset) - { - if (timeStamp < min) - { - timeStamp += systemTimeOffset; - } - } - - public System.DateTime GetDateTime() - { - return System.DateTime.SpecifyKind(new System.DateTime(timeStamp * 10000000L + offset.Ticks + (long)(fractionalTimeStamp * 10000000L)), DateTimeKind.Utc); - } - - new public string ToString() - { - return GetDateTime().ToString(); - } - - public void Add(DateTime dateTime) - { - this.timeStamp += dateTime.GetTimeStamp(); - this.fractionalTimeStamp += dateTime.GetFractionalTimeStamp(); - - // Adjust fractional part to be less that 1 - this.timeStamp += (uint)Math.Floor(this.fractionalTimeStamp); - this.fractionalTimeStamp -= (float)Math.Floor(this.fractionalTimeStamp); - } - - public void Add(uint timeStamp) - { - this.Add(new DateTime(timeStamp)); - } - - public void Add(double fractionalTimeStamp) - { - this.Add(new DateTime(0, fractionalTimeStamp)); - } - - //Returns 0 if DateTimes are equal - //Returns -1 if t1 > target object (this) - //Returns 1 if target object (this) > t1 - //If timeStamps are equal, fractional timestamps are compared - public int CompareTo(DateTime t1) - { - // fractional_timestamp is guaranteed to be less that 1 which allows simplified comparison below - if (this.timeStamp == t1.GetTimeStamp()) - { - // Timestamps are equal; must compare fractional part. - return this.fractionalTimeStamp.CompareTo(t1.GetFractionalTimeStamp()); - } - else if (this.timeStamp > t1.GetTimeStamp()) - { - return 1; - } - else - { - return -1; - } - } - #endregion // Methods - } // class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DayOfWeek.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DayOfWeek.cs deleted file mode 100644 index 4b25bdd6b..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DayOfWeek.cs +++ /dev/null @@ -1,34 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DayOfWeek type as an enum - /// - public enum DayOfWeek : byte - { - Sunday = 0, - Monday = 1, - Tuesday = 2, - Wednesday = 3, - Thursday = 4, - Friday = 5, - Saturday = 6, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DeadliftExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DeadliftExerciseName.cs deleted file mode 100644 index 1f2cd65f9..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DeadliftExerciseName.cs +++ /dev/null @@ -1,46 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DeadliftExerciseName type as a class - /// - public static class DeadliftExerciseName - { - public const ushort BarbellDeadlift = 0; - public const ushort BarbellStraightLegDeadlift = 1; - public const ushort DumbbellDeadlift = 2; - public const ushort DumbbellSingleLegDeadliftToRow = 3; - public const ushort DumbbellStraightLegDeadlift = 4; - public const ushort KettlebellFloorToShelf = 5; - public const ushort OneArmOneLegDeadlift = 6; - public const ushort RackPull = 7; - public const ushort RotationalDumbbellStraightLegDeadlift = 8; - public const ushort SingleArmDeadlift = 9; - public const ushort SingleLegBarbellDeadlift = 10; - public const ushort SingleLegBarbellStraightLegDeadlift = 11; - public const ushort SingleLegDeadliftWithBarbell = 12; - public const ushort SingleLegRdlCircuit = 13; - public const ushort SingleLegRomanianDeadliftWithDumbbell = 14; - public const ushort SumoDeadlift = 15; - public const ushort SumoDeadliftHighPull = 16; - public const ushort TrapBarDeadlift = 17; - public const ushort WideGripBarbellDeadlift = 18; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DeviceIndex.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DeviceIndex.cs deleted file mode 100644 index 428abd877..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DeviceIndex.cs +++ /dev/null @@ -1,28 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DeviceIndex type as a class - /// - public static class DeviceIndex - { - public const byte Creator = 0; // Creator of the file is always device index 0. - public const byte Invalid = (byte)0xFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DigitalWatchfaceLayout.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DigitalWatchfaceLayout.cs deleted file mode 100644 index 6daa06554..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DigitalWatchfaceLayout.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DigitalWatchfaceLayout type as an enum - /// - public enum DigitalWatchfaceLayout : byte - { - Traditional = 0, - Modern = 1, - Bold = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DisplayHeart.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DisplayHeart.cs deleted file mode 100644 index b297175f6..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DisplayHeart.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DisplayHeart type as an enum - /// - public enum DisplayHeart : byte - { - Bpm = 0, - Max = 1, - Reserve = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DisplayMeasure.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DisplayMeasure.cs deleted file mode 100644 index 62008a107..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DisplayMeasure.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DisplayMeasure type as an enum - /// - public enum DisplayMeasure : byte - { - Metric = 0, - Statute = 1, - Nautical = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DisplayOrientation.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DisplayOrientation.cs deleted file mode 100644 index 93091334a..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DisplayOrientation.cs +++ /dev/null @@ -1,32 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DisplayOrientation type as an enum - /// - public enum DisplayOrientation : byte - { - Auto = 0, - Portrait = 1, - Landscape = 2, - PortraitFlipped = 3, - LandscapeFlipped = 4, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DisplayPosition.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DisplayPosition.cs deleted file mode 100644 index c736e064d..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DisplayPosition.cs +++ /dev/null @@ -1,69 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DisplayPosition type as an enum - /// - public enum DisplayPosition : byte - { - Degree = 0, - DegreeMinute = 1, - DegreeMinuteSecond = 2, - AustrianGrid = 3, - BritishGrid = 4, - DutchGrid = 5, - HungarianGrid = 6, - FinnishGrid = 7, - GermanGrid = 8, - IcelandicGrid = 9, - IndonesianEquatorial = 10, - IndonesianIrian = 11, - IndonesianSouthern = 12, - IndiaZone0 = 13, - IndiaZoneIA = 14, - IndiaZoneIB = 15, - IndiaZoneIIA = 16, - IndiaZoneIIB = 17, - IndiaZoneIIIA = 18, - IndiaZoneIIIB = 19, - IndiaZoneIVA = 20, - IndiaZoneIVB = 21, - IrishTransverse = 22, - IrishGrid = 23, - Loran = 24, - MaidenheadGrid = 25, - MgrsGrid = 26, - NewZealandGrid = 27, - NewZealandTransverse = 28, - QatarGrid = 29, - ModifiedSwedishGrid = 30, - SwedishGrid = 31, - SouthAfricanGrid = 32, - SwissGrid = 33, - TaiwanGrid = 34, - UnitedStatesGrid = 35, - UtmUpsGrid = 36, - WestMalayan = 37, - BorneoRso = 38, - EstonianGrid = 39, - LatvianGrid = 40, - SwedishRef99Grid = 41, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DisplayPower.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DisplayPower.cs deleted file mode 100644 index 3e70b338c..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DisplayPower.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DisplayPower type as an enum - /// - public enum DisplayPower : byte - { - Watts = 0, - PercentFtp = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DiveAlarmType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DiveAlarmType.cs deleted file mode 100644 index fb8214f66..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DiveAlarmType.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DiveAlarmType type as an enum - /// - public enum DiveAlarmType : byte - { - Depth = 0, - Time = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DiveBacklightMode.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DiveBacklightMode.cs deleted file mode 100644 index 6cf129196..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DiveBacklightMode.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DiveBacklightMode type as an enum - /// - public enum DiveBacklightMode : byte - { - AtDepth = 0, - AlwaysOn = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DiveGasStatus.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DiveGasStatus.cs deleted file mode 100644 index db53f069a..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/DiveGasStatus.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile DiveGasStatus type as an enum - /// - public enum DiveGasStatus : byte - { - Disabled = 0, - Enabled = 1, - BackupOnly = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Event.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Event.cs deleted file mode 100644 index cff4a5570..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Event.cs +++ /dev/null @@ -1,64 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Event type as an enum - /// - public enum Event : byte - { - Timer = 0, - Workout = 3, - WorkoutStep = 4, - PowerDown = 5, - PowerUp = 6, - OffCourse = 7, - Session = 8, - Lap = 9, - CoursePoint = 10, - Battery = 11, - VirtualPartnerPace = 12, - HrHighAlert = 13, - HrLowAlert = 14, - SpeedHighAlert = 15, - SpeedLowAlert = 16, - CadHighAlert = 17, - CadLowAlert = 18, - PowerHighAlert = 19, - PowerLowAlert = 20, - RecoveryHr = 21, - BatteryLow = 22, - TimeDurationAlert = 23, - DistanceDurationAlert = 24, - CalorieDurationAlert = 25, - Activity = 26, - FitnessEquipment = 27, - Length = 28, - UserMarker = 32, - SportPoint = 33, - Calibration = 36, - FrontGearChange = 42, - RearGearChange = 43, - RiderPositionChange = 44, - ElevHighAlert = 45, - ElevLowAlert = 46, - CommTimeout = 47, - RadarThreatAlert = 75, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/EventType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/EventType.cs deleted file mode 100644 index 1ed6b401b..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/EventType.cs +++ /dev/null @@ -1,37 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile EventType type as an enum - /// - public enum EventType : byte - { - Start = 0, - Stop = 1, - ConsecutiveDepreciated = 2, - Marker = 3, - StopAll = 4, - BeginDepreciated = 5, - EndDepreciated = 6, - EndAllDepreciated = 7, - StopDisable = 8, - StopDisableAll = 9, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ExdDataUnits.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ExdDataUnits.cs deleted file mode 100644 index a1437a03a..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ExdDataUnits.cs +++ /dev/null @@ -1,77 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ExdDataUnits type as an enum - /// - public enum ExdDataUnits : byte - { - NoUnits = 0, - Laps = 1, - MilesPerHour = 2, - KilometersPerHour = 3, - FeetPerHour = 4, - MetersPerHour = 5, - DegreesCelsius = 6, - DegreesFarenheit = 7, - Zone = 8, - Gear = 9, - Rpm = 10, - Bpm = 11, - Degrees = 12, - Millimeters = 13, - Meters = 14, - Kilometers = 15, - Feet = 16, - Yards = 17, - Kilofeet = 18, - Miles = 19, - Time = 20, - EnumTurnType = 21, - Percent = 22, - Watts = 23, - WattsPerKilogram = 24, - EnumBatteryStatus = 25, - EnumBikeLightBeamAngleMode = 26, - EnumBikeLightBatteryStatus = 27, - EnumBikeLightNetworkConfigType = 28, - Lights = 29, - Seconds = 30, - Minutes = 31, - Hours = 32, - Calories = 33, - Kilojoules = 34, - Milliseconds = 35, - SecondPerMile = 36, - SecondPerKilometer = 37, - Centimeter = 38, - EnumCoursePoint = 39, - Bradians = 40, - EnumSport = 41, - InchesHg = 42, - MmHg = 43, - Mbars = 44, - HectoPascals = 45, - FeetPerMin = 46, - MetersPerMin = 47, - MetersPerSec = 48, - EightCardinal = 49, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ExdDescriptors.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ExdDescriptors.cs deleted file mode 100644 index 1a68206db..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ExdDescriptors.cs +++ /dev/null @@ -1,124 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ExdDescriptors type as an enum - /// - public enum ExdDescriptors : byte - { - BikeLightBatteryStatus = 0, - BeamAngleStatus = 1, - BateryLevel = 2, - LightNetworkMode = 3, - NumberLightsConnected = 4, - Cadence = 5, - Distance = 6, - EstimatedTimeOfArrival = 7, - Heading = 8, - Time = 9, - BatteryLevel = 10, - TrainerResistance = 11, - TrainerTargetPower = 12, - TimeSeated = 13, - TimeStanding = 14, - Elevation = 15, - Grade = 16, - Ascent = 17, - Descent = 18, - VerticalSpeed = 19, - Di2BatteryLevel = 20, - FrontGear = 21, - RearGear = 22, - GearRatio = 23, - HeartRate = 24, - HeartRateZone = 25, - TimeInHeartRateZone = 26, - HeartRateReserve = 27, - Calories = 28, - GpsAccuracy = 29, - GpsSignalStrength = 30, - Temperature = 31, - TimeOfDay = 32, - Balance = 33, - PedalSmoothness = 34, - Power = 35, - FunctionalThresholdPower = 36, - IntensityFactor = 37, - Work = 38, - PowerRatio = 39, - NormalizedPower = 40, - TrainingStressScore = 41, - TimeOnZone = 42, - Speed = 43, - Laps = 44, - Reps = 45, - WorkoutStep = 46, - CourseDistance = 47, - NavigationDistance = 48, - CourseEstimatedTimeOfArrival = 49, - NavigationEstimatedTimeOfArrival = 50, - CourseTime = 51, - NavigationTime = 52, - CourseHeading = 53, - NavigationHeading = 54, - PowerZone = 55, - TorqueEffectiveness = 56, - TimerTime = 57, - PowerWeightRatio = 58, - LeftPlatformCenterOffset = 59, - RightPlatformCenterOffset = 60, - LeftPowerPhaseStartAngle = 61, - RightPowerPhaseStartAngle = 62, - LeftPowerPhaseFinishAngle = 63, - RightPowerPhaseFinishAngle = 64, - Gears = 65, - Pace = 66, - TrainingEffect = 67, - VerticalOscillation = 68, - VerticalRatio = 69, - GroundContactTime = 70, - LeftGroundContactTimeBalance = 71, - RightGroundContactTimeBalance = 72, - StrideLength = 73, - RunningCadence = 74, - PerformanceCondition = 75, - CourseType = 76, - TimeInPowerZone = 77, - NavigationTurn = 78, - CourseLocation = 79, - NavigationLocation = 80, - Compass = 81, - GearCombo = 82, - MuscleOxygen = 83, - Icon = 84, - CompassHeading = 85, - GpsHeading = 86, - GpsElevation = 87, - AnaerobicTrainingEffect = 88, - Course = 89, - OffCourse = 90, - GlideRatio = 91, - VerticalDistance = 92, - Vmg = 93, - AmbientPressure = 94, - Pressure = 95, - Vam = 96, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ExdDisplayType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ExdDisplayType.cs deleted file mode 100644 index 6353230c6..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ExdDisplayType.cs +++ /dev/null @@ -1,38 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ExdDisplayType type as an enum - /// - public enum ExdDisplayType : byte - { - Numerical = 0, - Simple = 1, - Graph = 2, - Bar = 3, - CircleGraph = 4, - VirtualPartner = 5, - Balance = 6, - StringList = 7, - String = 8, - SimpleDynamicIcon = 9, - Gauge = 10, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ExdLayout.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ExdLayout.cs deleted file mode 100644 index 986d0af64..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ExdLayout.cs +++ /dev/null @@ -1,36 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ExdLayout type as an enum - /// - public enum ExdLayout : byte - { - FullScreen = 0, - HalfVertical = 1, - HalfHorizontal = 2, - HalfVerticalRightSplit = 3, - HalfHorizontalBottomSplit = 4, - FullQuarterSplit = 5, - HalfVerticalLeftSplit = 6, - HalfHorizontalTopSplit = 7, - Dynamic = 8, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ExdQualifiers.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ExdQualifiers.cs deleted file mode 100644 index e8cd839e4..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ExdQualifiers.cs +++ /dev/null @@ -1,71 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ExdQualifiers type as an enum - /// - public enum ExdQualifiers : byte - { - NoQualifier = 0, - Instantaneous = 1, - Average = 2, - Lap = 3, - Maximum = 4, - MaximumAverage = 5, - MaximumLap = 6, - LastLap = 7, - AverageLap = 8, - ToDestination = 9, - ToGo = 10, - ToNext = 11, - NextCoursePoint = 12, - Total = 13, - ThreeSecondAverage = 14, - TenSecondAverage = 15, - ThirtySecondAverage = 16, - PercentMaximum = 17, - PercentMaximumAverage = 18, - LapPercentMaximum = 19, - Elapsed = 20, - Sunrise = 21, - Sunset = 22, - ComparedToVirtualPartner = 23, - Maximum24h = 24, - Minimum24h = 25, - Minimum = 26, - First = 27, - Second = 28, - Third = 29, - Shifter = 30, - LastSport = 31, - Moving = 32, - Stopped = 33, - EstimatedTotal = 34, - Zone9 = 242, - Zone8 = 243, - Zone7 = 244, - Zone6 = 245, - Zone5 = 246, - Zone4 = 247, - Zone3 = 248, - Zone2 = 249, - Zone1 = 250, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ExerciseCategory.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ExerciseCategory.cs deleted file mode 100644 index c92339933..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ExerciseCategory.cs +++ /dev/null @@ -1,61 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ExerciseCategory type as a class - /// - public static class ExerciseCategory - { - public const ushort BenchPress = 0; - public const ushort CalfRaise = 1; - public const ushort Cardio = 2; - public const ushort Carry = 3; - public const ushort Chop = 4; - public const ushort Core = 5; - public const ushort Crunch = 6; - public const ushort Curl = 7; - public const ushort Deadlift = 8; - public const ushort Flye = 9; - public const ushort HipRaise = 10; - public const ushort HipStability = 11; - public const ushort HipSwing = 12; - public const ushort Hyperextension = 13; - public const ushort LateralRaise = 14; - public const ushort LegCurl = 15; - public const ushort LegRaise = 16; - public const ushort Lunge = 17; - public const ushort OlympicLift = 18; - public const ushort Plank = 19; - public const ushort Plyo = 20; - public const ushort PullUp = 21; - public const ushort PushUp = 22; - public const ushort Row = 23; - public const ushort ShoulderPress = 24; - public const ushort ShoulderStability = 25; - public const ushort Shrug = 26; - public const ushort SitUp = 27; - public const ushort Squat = 28; - public const ushort TotalBody = 29; - public const ushort TricepsExtension = 30; - public const ushort WarmUp = 31; - public const ushort Run = 32; - public const ushort Unknown = 65534; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/FaveroProduct.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/FaveroProduct.cs deleted file mode 100644 index 6fd54c312..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/FaveroProduct.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile FaveroProduct type as a class - /// - public static class FaveroProduct - { - public const ushort AssiomaUno = 10; - public const ushort AssiomaDuo = 12; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/File.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/File.cs deleted file mode 100644 index 4cf800535..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/File.cs +++ /dev/null @@ -1,47 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile File type as an enum - /// - public enum File : byte - { - Device = 1, - Settings = 2, - Sport = 3, - Activity = 4, - Workout = 5, - Course = 6, - Schedules = 7, - Weight = 9, - Totals = 10, - Goals = 11, - BloodPressure = 14, - MonitoringA = 15, - ActivitySummary = 20, - MonitoringDaily = 28, - MonitoringB = 32, - Segment = 34, - SegmentList = 35, - ExdConfiguration = 40, - MfgRangeMin = 0xF7, - MfgRangeMax = 0xFE, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/FileFlags.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/FileFlags.cs deleted file mode 100644 index 59031fd36..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/FileFlags.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile FileFlags type as a class - /// - public static class FileFlags - { - public const byte Read = 0x02; - public const byte Write = 0x04; - public const byte Erase = 0x08; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/FitBaseType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/FitBaseType.cs deleted file mode 100644 index 50ed3448f..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/FitBaseType.cs +++ /dev/null @@ -1,118 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile FitBaseType type as a class - /// - public static class FitBaseType - { - public const byte Enum = 0; - public const byte Sint8 = 1; - public const byte Uint8 = 2; - public const byte Sint16 = 131; - public const byte Uint16 = 132; - public const byte Sint32 = 133; - public const byte Uint32 = 134; - public const byte String = 7; - public const byte Float32 = 136; - public const byte Float64 = 137; - public const byte Uint8z = 10; - public const byte Uint16z = 139; - public const byte Uint32z = 140; - public const byte Byte = 13; - public const byte Sint64 = 142; - public const byte Uint64 = 143; - public const byte Uint64z = 144; - public const byte Invalid = (byte)0xFF; - - - public static bool IsNumericInvalid(long value, byte type) - { - bool isInvalid = false; - - switch(type) - { - case Enum: - case Byte: - case Uint8: - case Uint8z: - { - byte val = (byte)Fit.BaseType[type & Fit.BaseTypeNumMask].invalidValue; - if ((byte)value == val) - isInvalid = true; - break; - } - case Sint8: - { - sbyte val = (sbyte)Fit.BaseType[type & Fit.BaseTypeNumMask].invalidValue; - if ((sbyte)value == val) - isInvalid = true; - break; - } - case Sint16: - { - short val = (short)Fit.BaseType[type & Fit.BaseTypeNumMask].invalidValue; - if ((short)value == val) - isInvalid = true; - break; - } - case Uint16: - case Uint16z: - { - ushort val = (ushort)Fit.BaseType[type & Fit.BaseTypeNumMask].invalidValue; - if ((ushort)value == val) - isInvalid = true; - break; - } - case Sint32: - { - int val = (int)Fit.BaseType[type & Fit.BaseTypeNumMask].invalidValue; - if ((int)value == val) - isInvalid = true; - break; - } - case Uint32: - case Uint32z: - { - uint val = (uint)Fit.BaseType[type & Fit.BaseTypeNumMask].invalidValue; - if (((uint)value) == val) - isInvalid = true; - break; - } - case Float32: - { - float val = (float)Fit.BaseType[type & Fit.BaseTypeNumMask].invalidValue; - if ((float)value == val) - isInvalid = true; - break; - } - case Float64: - { - double val = (double)Fit.BaseType[type & Fit.BaseTypeNumMask].invalidValue; - if ((double)value == val) - isInvalid = true; - break; - } - default: - isInvalid = true; - break; - } - - return isInvalid; - } - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/FitBaseUnit.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/FitBaseUnit.cs deleted file mode 100644 index 1205becd0..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/FitBaseUnit.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile FitBaseUnit type as a class - /// - public static class FitBaseUnit - { - public const ushort Other = 0; - public const ushort Kilogram = 1; - public const ushort Pound = 2; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/FitnessEquipmentState.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/FitnessEquipmentState.cs deleted file mode 100644 index ef2461d59..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/FitnessEquipmentState.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile FitnessEquipmentState type as an enum - /// - public enum FitnessEquipmentState : byte - { - Ready = 0, - InUse = 1, - Paused = 2, - Unknown = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/FlyeExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/FlyeExerciseName.cs deleted file mode 100644 index f19494166..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/FlyeExerciseName.cs +++ /dev/null @@ -1,37 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile FlyeExerciseName type as a class - /// - public static class FlyeExerciseName - { - public const ushort CableCrossover = 0; - public const ushort DeclineDumbbellFlye = 1; - public const ushort DumbbellFlye = 2; - public const ushort InclineDumbbellFlye = 3; - public const ushort KettlebellFlye = 4; - public const ushort KneelingRearFlye = 5; - public const ushort SingleArmStandingCableReverseFlye = 6; - public const ushort SwissBallDumbbellFlye = 7; - public const ushort ArmRotations = 8; - public const ushort HugATree = 9; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/GarminProduct.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/GarminProduct.cs deleted file mode 100644 index 7a55d4c20..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/GarminProduct.cs +++ /dev/null @@ -1,430 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile GarminProduct type as a class - /// - public static class GarminProduct - { - public const ushort Hrm1 = 1; - public const ushort Axh01 = 2; // AXH01 HRM chipset - public const ushort Axb01 = 3; - public const ushort Axb02 = 4; - public const ushort Hrm2ss = 5; - public const ushort DsiAlf02 = 6; - public const ushort Hrm3ss = 7; - public const ushort HrmRunSingleByteProductId = 8; // hrm_run model for HRM ANT+ messaging - public const ushort Bsm = 9; // BSM model for ANT+ messaging - public const ushort Bcm = 10; // BCM model for ANT+ messaging - public const ushort Axs01 = 11; // AXS01 HRM Bike Chipset model for ANT+ messaging - public const ushort HrmTriSingleByteProductId = 12; // hrm_tri model for HRM ANT+ messaging - public const ushort Hrm4RunSingleByteProductId = 13; // hrm4 run model for HRM ANT+ messaging - public const ushort Fr225SingleByteProductId = 14; // fr225 model for HRM ANT+ messaging - public const ushort Gen3BsmSingleByteProductId = 15; // gen3_bsm model for Bike Speed ANT+ messaging - public const ushort Gen3BcmSingleByteProductId = 16; // gen3_bcm model for Bike Cadence ANT+ messaging - public const ushort OHR = 255; // Garmin Wearable Optical Heart Rate Sensor for ANT+ HR Profile Broadcasting - public const ushort Fr301China = 473; - public const ushort Fr301Japan = 474; - public const ushort Fr301Korea = 475; - public const ushort Fr301Taiwan = 494; - public const ushort Fr405 = 717; // Forerunner 405 - public const ushort Fr50 = 782; // Forerunner 50 - public const ushort Fr405Japan = 987; - public const ushort Fr60 = 988; // Forerunner 60 - public const ushort DsiAlf01 = 1011; - public const ushort Fr310xt = 1018; // Forerunner 310 - public const ushort Edge500 = 1036; - public const ushort Fr110 = 1124; // Forerunner 110 - public const ushort Edge800 = 1169; - public const ushort Edge500Taiwan = 1199; - public const ushort Edge500Japan = 1213; - public const ushort Chirp = 1253; - public const ushort Fr110Japan = 1274; - public const ushort Edge200 = 1325; - public const ushort Fr910xt = 1328; - public const ushort Edge800Taiwan = 1333; - public const ushort Edge800Japan = 1334; - public const ushort Alf04 = 1341; - public const ushort Fr610 = 1345; - public const ushort Fr210Japan = 1360; - public const ushort VectorSs = 1380; - public const ushort VectorCp = 1381; - public const ushort Edge800China = 1386; - public const ushort Edge500China = 1387; - public const ushort ApproachG10 = 1405; - public const ushort Fr610Japan = 1410; - public const ushort Edge500Korea = 1422; - public const ushort Fr70 = 1436; - public const ushort Fr310xt4t = 1446; - public const ushort Amx = 1461; - public const ushort Fr10 = 1482; - public const ushort Edge800Korea = 1497; - public const ushort Swim = 1499; - public const ushort Fr910xtChina = 1537; - public const ushort Fenix = 1551; - public const ushort Edge200Taiwan = 1555; - public const ushort Edge510 = 1561; - public const ushort Edge810 = 1567; - public const ushort Tempe = 1570; - public const ushort Fr910xtJapan = 1600; - public const ushort Fr620 = 1623; - public const ushort Fr220 = 1632; - public const ushort Fr910xtKorea = 1664; - public const ushort Fr10Japan = 1688; - public const ushort Edge810Japan = 1721; - public const ushort VirbElite = 1735; - public const ushort EdgeTouring = 1736; // Also Edge Touring Plus - public const ushort Edge510Japan = 1742; - public const ushort HrmTri = 1743; // Also HRM-Swim - public const ushort HrmRun = 1752; - public const ushort Fr920xt = 1765; - public const ushort Edge510Asia = 1821; - public const ushort Edge810China = 1822; - public const ushort Edge810Taiwan = 1823; - public const ushort Edge1000 = 1836; - public const ushort VivoFit = 1837; - public const ushort VirbRemote = 1853; - public const ushort VivoKi = 1885; - public const ushort Fr15 = 1903; - public const ushort VivoActive = 1907; - public const ushort Edge510Korea = 1918; - public const ushort Fr620Japan = 1928; - public const ushort Fr620China = 1929; - public const ushort Fr220Japan = 1930; - public const ushort Fr220China = 1931; - public const ushort ApproachS6 = 1936; - public const ushort VivoSmart = 1956; - public const ushort Fenix2 = 1967; - public const ushort Epix = 1988; - public const ushort Fenix3 = 2050; - public const ushort Edge1000Taiwan = 2052; - public const ushort Edge1000Japan = 2053; - public const ushort Fr15Japan = 2061; - public const ushort Edge520 = 2067; - public const ushort Edge1000China = 2070; - public const ushort Fr620Russia = 2072; - public const ushort Fr220Russia = 2073; - public const ushort VectorS = 2079; - public const ushort Edge1000Korea = 2100; - public const ushort Fr920xtTaiwan = 2130; - public const ushort Fr920xtChina = 2131; - public const ushort Fr920xtJapan = 2132; - public const ushort Virbx = 2134; - public const ushort VivoSmartApac = 2135; - public const ushort EtrexTouch = 2140; - public const ushort Edge25 = 2147; - public const ushort Fr25 = 2148; - public const ushort VivoFit2 = 2150; - public const ushort Fr225 = 2153; - public const ushort Fr630 = 2156; - public const ushort Fr230 = 2157; - public const ushort Fr735xt = 2158; - public const ushort VivoActiveApac = 2160; - public const ushort Vector2 = 2161; - public const ushort Vector2s = 2162; - public const ushort Virbxe = 2172; - public const ushort Fr620Taiwan = 2173; - public const ushort Fr220Taiwan = 2174; - public const ushort Truswing = 2175; - public const ushort D2airvenu = 2187; - public const ushort Fenix3China = 2188; - public const ushort Fenix3Twn = 2189; - public const ushort VariaHeadlight = 2192; - public const ushort VariaTaillightOld = 2193; - public const ushort EdgeExplore1000 = 2204; - public const ushort Fr225Asia = 2219; - public const ushort VariaRadarTaillight = 2225; - public const ushort VariaRadarDisplay = 2226; - public const ushort Edge20 = 2238; - public const ushort Edge520Asia = 2260; - public const ushort Edge520Japan = 2261; - public const ushort D2Bravo = 2262; - public const ushort ApproachS20 = 2266; - public const ushort VivoSmart2 = 2271; - public const ushort Edge1000Thai = 2274; - public const ushort VariaRemote = 2276; - public const ushort Edge25Asia = 2288; - public const ushort Edge25Jpn = 2289; - public const ushort Edge20Asia = 2290; - public const ushort ApproachX40 = 2292; - public const ushort Fenix3Japan = 2293; - public const ushort VivoSmartEmea = 2294; - public const ushort Fr630Asia = 2310; - public const ushort Fr630Jpn = 2311; - public const ushort Fr230Jpn = 2313; - public const ushort Hrm4Run = 2327; - public const ushort EpixJapan = 2332; - public const ushort VivoActiveHr = 2337; - public const ushort VivoSmartGpsHr = 2347; - public const ushort VivoSmartHr = 2348; - public const ushort VivoSmartHrAsia = 2361; - public const ushort VivoSmartGpsHrAsia = 2362; - public const ushort VivoMove = 2368; - public const ushort VariaTaillight = 2379; - public const ushort Fr235Asia = 2396; - public const ushort Fr235Japan = 2397; - public const ushort VariaVision = 2398; - public const ushort VivoFit3 = 2406; - public const ushort Fenix3Korea = 2407; - public const ushort Fenix3Sea = 2408; - public const ushort Fenix3Hr = 2413; - public const ushort VirbUltra30 = 2417; - public const ushort IndexSmartScale = 2429; - public const ushort Fr235 = 2431; - public const ushort Fenix3Chronos = 2432; - public const ushort Oregon7xx = 2441; - public const ushort Rino7xx = 2444; - public const ushort EpixKorea = 2457; - public const ushort Fenix3HrChn = 2473; - public const ushort Fenix3HrTwn = 2474; - public const ushort Fenix3HrJpn = 2475; - public const ushort Fenix3HrSea = 2476; - public const ushort Fenix3HrKor = 2477; - public const ushort Nautix = 2496; - public const ushort VivoActiveHrApac = 2497; - public const ushort Oregon7xxWw = 2512; - public const ushort Edge820 = 2530; - public const ushort EdgeExplore820 = 2531; - public const ushort Fr735xtApac = 2533; - public const ushort Fr735xtJapan = 2534; - public const ushort Fenix5s = 2544; - public const ushort D2BravoTitanium = 2547; - public const ushort VariaUt800 = 2567; // Varia UT 800 SW - public const ushort RunningDynamicsPod = 2593; - public const ushort Edge820China = 2599; - public const ushort Edge820Japan = 2600; - public const ushort Fenix5x = 2604; - public const ushort VivoFitJr = 2606; - public const ushort VivoSmart3 = 2622; - public const ushort VivoSport = 2623; - public const ushort Edge820Taiwan = 2628; - public const ushort Edge820Korea = 2629; - public const ushort Edge820Sea = 2630; - public const ushort Fr35Hebrew = 2650; - public const ushort ApproachS60 = 2656; - public const ushort Fr35Apac = 2667; - public const ushort Fr35Japan = 2668; - public const ushort Fenix3ChronosAsia = 2675; - public const ushort Virb360 = 2687; - public const ushort Fr935 = 2691; - public const ushort Fenix5 = 2697; - public const ushort Vivoactive3 = 2700; - public const ushort Fr235ChinaNfc = 2733; - public const ushort Foretrex601_701 = 2769; - public const ushort VivoMoveHr = 2772; - public const ushort Edge1030 = 2713; - public const ushort Fr35Sea = 2727; - public const ushort Vector3 = 2787; - public const ushort Fenix5Asia = 2796; - public const ushort Fenix5sAsia = 2797; - public const ushort Fenix5xAsia = 2798; - public const ushort ApproachZ80 = 2806; - public const ushort Fr35Korea = 2814; - public const ushort D2charlie = 2819; - public const ushort VivoSmart3Apac = 2831; - public const ushort VivoSportApac = 2832; - public const ushort Fr935Asia = 2833; - public const ushort Descent = 2859; - public const ushort VivoFit4 = 2878; - public const ushort Fr645 = 2886; - public const ushort Fr645m = 2888; - public const ushort Fr30 = 2891; - public const ushort Fenix5sPlus = 2900; - public const ushort Edge130 = 2909; - public const ushort Edge1030Asia = 2924; - public const ushort Vivosmart4 = 2927; - public const ushort VivoMoveHrAsia = 2945; - public const ushort ApproachX10 = 2962; - public const ushort Fr30Asia = 2977; - public const ushort Vivoactive3mW = 2988; - public const ushort Fr645Asia = 3003; - public const ushort Fr645mAsia = 3004; - public const ushort EdgeExplore = 3011; - public const ushort Gpsmap66 = 3028; - public const ushort ApproachS10 = 3049; - public const ushort Vivoactive3mL = 3066; - public const ushort ApproachG80 = 3085; - public const ushort Edge130Asia = 3092; - public const ushort Edge1030Bontrager = 3095; - public const ushort Fenix5Plus = 3110; - public const ushort Fenix5xPlus = 3111; - public const ushort Edge520Plus = 3112; - public const ushort Fr945 = 3113; - public const ushort Edge530 = 3121; - public const ushort Edge830 = 3122; - public const ushort InstinctEsports = 3126; - public const ushort Fenix5sPlusApac = 3134; - public const ushort Fenix5xPlusApac = 3135; - public const ushort Edge520PlusApac = 3142; - public const ushort Fr235lAsia = 3144; - public const ushort Fr245Asia = 3145; - public const ushort VivoActive3mApac = 3163; - public const ushort Gen3Bsm = 3192; // gen3 bike speed sensor - public const ushort Gen3Bcm = 3193; // gen3 bike cadence sensor - public const ushort VivoSmart4Asia = 3218; - public const ushort Vivoactive4Small = 3224; - public const ushort Vivoactive4Large = 3225; - public const ushort Venu = 3226; - public const ushort MarqDriver = 3246; - public const ushort MarqAviator = 3247; - public const ushort MarqCaptain = 3248; - public const ushort MarqCommander = 3249; - public const ushort MarqExpedition = 3250; - public const ushort MarqAthlete = 3251; - public const ushort DescentMk2 = 3258; - public const ushort Gpsmap66i = 3284; - public const ushort Fenix6SSport = 3287; - public const ushort Fenix6S = 3288; - public const ushort Fenix6Sport = 3289; - public const ushort Fenix6 = 3290; - public const ushort Fenix6x = 3291; - public const ushort HrmDual = 3299; // HRM-Dual - public const ushort HrmPro = 3300; // HRM-Pro - public const ushort VivoMove3Premium = 3308; - public const ushort ApproachS40 = 3314; - public const ushort Fr245mAsia = 3321; - public const ushort Edge530Apac = 3349; - public const ushort Edge830Apac = 3350; - public const ushort VivoMove3 = 3378; - public const ushort VivoActive4SmallAsia = 3387; - public const ushort VivoActive4LargeAsia = 3388; - public const ushort VivoActive4OledAsia = 3389; - public const ushort Swim2 = 3405; - public const ushort MarqDriverAsia = 3420; - public const ushort MarqAviatorAsia = 3421; - public const ushort VivoMove3Asia = 3422; - public const ushort Fr945Asia = 3441; - public const ushort VivoActive3tChn = 3446; - public const ushort MarqCaptainAsia = 3448; - public const ushort MarqCommanderAsia = 3449; - public const ushort MarqExpeditionAsia = 3450; - public const ushort MarqAthleteAsia = 3451; - public const ushort InstinctSolar = 3466; - public const ushort Fr45Asia = 3469; - public const ushort Vivoactive3Daimler = 3473; - public const ushort LegacyRey = 3498; - public const ushort LegacyDarthVader = 3499; - public const ushort LegacyCaptainMarvel = 3500; - public const ushort LegacyFirstAvenger = 3501; - public const ushort Fenix6sSportAsia = 3512; - public const ushort Fenix6sAsia = 3513; - public const ushort Fenix6SportAsia = 3514; - public const ushort Fenix6Asia = 3515; - public const ushort Fenix6xAsia = 3516; - public const ushort LegacyCaptainMarvelAsia = 3535; - public const ushort LegacyFirstAvengerAsia = 3536; - public const ushort LegacyReyAsia = 3537; - public const ushort LegacyDarthVaderAsia = 3538; - public const ushort DescentMk2s = 3542; - public const ushort Edge130Plus = 3558; - public const ushort Edge1030Plus = 3570; - public const ushort Rally200 = 3578; // Rally 100/200 Power Meter Series - public const ushort Fr745 = 3589; - public const ushort Venusq = 3600; - public const ushort Lily = 3615; - public const ushort MarqAdventurer = 3624; - public const ushort Enduro = 3638; - public const ushort Swim2Apac = 3639; - public const ushort MarqAdventurerAsia = 3648; - public const ushort Fr945Lte = 3652; - public const ushort DescentMk2Asia = 3702; // Mk2 and Mk2i - public const ushort Venu2 = 3703; - public const ushort Venu2s = 3704; - public const ushort VenuDaimlerAsia = 3737; - public const ushort MarqGolfer = 3739; - public const ushort VenuDaimler = 3740; - public const ushort Fr745Asia = 3794; - public const ushort LilyAsia = 3809; - public const ushort Edge1030PlusAsia = 3812; - public const ushort Edge130PlusAsia = 3813; - public const ushort ApproachS12 = 3823; - public const ushort EnduroAsia = 3872; - public const ushort VenusqAsia = 3837; - public const ushort Edge1040 = 3843; - public const ushort MarqGolferAsia = 3850; - public const ushort Venu2Plus = 3851; - public const ushort Fr55 = 3869; - public const ushort Instinct2 = 3888; - public const ushort Fenix7s = 3905; - public const ushort Fenix7 = 3906; - public const ushort Fenix7x = 3907; - public const ushort Fenix7sApac = 3908; - public const ushort Fenix7Apac = 3909; - public const ushort Fenix7xApac = 3910; - public const ushort ApproachG12 = 3927; - public const ushort DescentMk2sAsia = 3930; - public const ushort ApproachS42 = 3934; - public const ushort EpixGen2 = 3943; - public const ushort EpixGen2Apac = 3944; - public const ushort Venu2sAsia = 3949; - public const ushort Venu2Asia = 3950; - public const ushort Fr945LteAsia = 3978; - public const ushort VivoMoveSport = 3982; - public const ushort ApproachS12Asia = 3986; - public const ushort Fr255Music = 3990; - public const ushort Fr255SmallMusic = 3991; - public const ushort Fr255 = 3992; - public const ushort Fr255Small = 3993; - public const ushort ApproachG12Asia = 4001; - public const ushort ApproachS42Asia = 4002; - public const ushort DescentG1 = 4005; - public const ushort Venu2PlusAsia = 4017; - public const ushort Fr955 = 4024; - public const ushort Fr55Asia = 4033; - public const ushort Vivosmart5 = 4063; - public const ushort Instinct2Asia = 4071; - public const ushort MarqGen2 = 4105; // Adventurer, Athlete, Captain, Golfer - public const ushort Venusq2 = 4115; - public const ushort Venusq2music = 4116; - public const ushort MarqGen2Aviator = 4124; - public const ushort D2AirX10 = 4125; - public const ushort HrmProPlus = 4130; - public const ushort DescentG1Asia = 4132; - public const ushort Tactix7 = 4135; - public const ushort InstinctCrossover = 4155; - public const ushort EdgeExplore2 = 4169; - public const ushort TacxNeoSmart = 4265; // Neo Smart, Tacx - public const ushort TacxNeo2Smart = 4266; // Neo 2 Smart, Tacx - public const ushort TacxNeo2TSmart = 4267; // Neo 2T Smart, Tacx - public const ushort TacxNeoSmartBike = 4268; // Neo Smart Bike, Tacx - public const ushort TacxSatoriSmart = 4269; // Satori Smart, Tacx - public const ushort TacxFlowSmart = 4270; // Flow Smart, Tacx - public const ushort TacxVortexSmart = 4271; // Vortex Smart, Tacx - public const ushort TacxBushidoSmart = 4272; // Bushido Smart, Tacx - public const ushort TacxGeniusSmart = 4273; // Genius Smart, Tacx - public const ushort TacxFluxFluxSSmart = 4274; // Flux/Flux S Smart, Tacx - public const ushort TacxFlux2Smart = 4275; // Flux 2 Smart, Tacx - public const ushort TacxMagnum = 4276; // Magnum, Tacx - public const ushort Edge1040Asia = 4305; - public const ushort Enduro2 = 4341; - public const ushort Sdm4 = 10007; // SDM4 footpod - public const ushort EdgeRemote = 10014; - public const ushort TacxTrainingAppWin = 20533; - public const ushort TacxTrainingAppMac = 20534; - public const ushort TacxTrainingAppMacCatalyst = 20565; - public const ushort TrainingCenter = 20119; - public const ushort TacxTrainingAppAndroid = 30045; - public const ushort TacxTrainingAppIos = 30046; - public const ushort TacxTrainingAppLegacy = 30047; - public const ushort ConnectiqSimulator = 65531; - public const ushort AndroidAntplusPlugin = 65532; - public const ushort Connect = 65534; // Garmin Connect website - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Gender.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Gender.cs deleted file mode 100644 index b18aa7c8c..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Gender.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Gender type as an enum - /// - public enum Gender : byte - { - Female = 0, - Male = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Goal.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Goal.cs deleted file mode 100644 index a5c74b6d5..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Goal.cs +++ /dev/null @@ -1,34 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Goal type as an enum - /// - public enum Goal : byte - { - Time = 0, - Distance = 1, - Calories = 2, - Frequency = 3, - Steps = 4, - Ascent = 5, - ActiveMinutes = 6, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/GoalRecurrence.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/GoalRecurrence.cs deleted file mode 100644 index e8005c73b..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/GoalRecurrence.cs +++ /dev/null @@ -1,33 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile GoalRecurrence type as an enum - /// - public enum GoalRecurrence : byte - { - Off = 0, - Daily = 1, - Weekly = 2, - Monthly = 3, - Yearly = 4, - Custom = 5, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/GoalSource.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/GoalSource.cs deleted file mode 100644 index 9cdd73e5d..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/GoalSource.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile GoalSource type as an enum - /// - public enum GoalSource : byte - { - Auto = 0, - Community = 1, - User = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/HipRaiseExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/HipRaiseExerciseName.cs deleted file mode 100644 index 734223fa1..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/HipRaiseExerciseName.cs +++ /dev/null @@ -1,77 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile HipRaiseExerciseName type as a class - /// - public static class HipRaiseExerciseName - { - public const ushort BarbellHipThrustOnFloor = 0; - public const ushort BarbellHipThrustWithBench = 1; - public const ushort BentKneeSwissBallReverseHipRaise = 2; - public const ushort WeightedBentKneeSwissBallReverseHipRaise = 3; - public const ushort BridgeWithLegExtension = 4; - public const ushort WeightedBridgeWithLegExtension = 5; - public const ushort ClamBridge = 6; - public const ushort FrontKickTabletop = 7; - public const ushort WeightedFrontKickTabletop = 8; - public const ushort HipExtensionAndCross = 9; - public const ushort WeightedHipExtensionAndCross = 10; - public const ushort HipRaise = 11; - public const ushort WeightedHipRaise = 12; - public const ushort HipRaiseWithFeetOnSwissBall = 13; - public const ushort WeightedHipRaiseWithFeetOnSwissBall = 14; - public const ushort HipRaiseWithHeadOnBosuBall = 15; - public const ushort WeightedHipRaiseWithHeadOnBosuBall = 16; - public const ushort HipRaiseWithHeadOnSwissBall = 17; - public const ushort WeightedHipRaiseWithHeadOnSwissBall = 18; - public const ushort HipRaiseWithKneeSqueeze = 19; - public const ushort WeightedHipRaiseWithKneeSqueeze = 20; - public const ushort InclineRearLegExtension = 21; - public const ushort WeightedInclineRearLegExtension = 22; - public const ushort KettlebellSwing = 23; - public const ushort MarchingHipRaise = 24; - public const ushort WeightedMarchingHipRaise = 25; - public const ushort MarchingHipRaiseWithFeetOnASwissBall = 26; - public const ushort WeightedMarchingHipRaiseWithFeetOnASwissBall = 27; - public const ushort ReverseHipRaise = 28; - public const ushort WeightedReverseHipRaise = 29; - public const ushort SingleLegHipRaise = 30; - public const ushort WeightedSingleLegHipRaise = 31; - public const ushort SingleLegHipRaiseWithFootOnBench = 32; - public const ushort WeightedSingleLegHipRaiseWithFootOnBench = 33; - public const ushort SingleLegHipRaiseWithFootOnBosuBall = 34; - public const ushort WeightedSingleLegHipRaiseWithFootOnBosuBall = 35; - public const ushort SingleLegHipRaiseWithFootOnFoamRoller = 36; - public const ushort WeightedSingleLegHipRaiseWithFootOnFoamRoller = 37; - public const ushort SingleLegHipRaiseWithFootOnMedicineBall = 38; - public const ushort WeightedSingleLegHipRaiseWithFootOnMedicineBall = 39; - public const ushort SingleLegHipRaiseWithHeadOnBosuBall = 40; - public const ushort WeightedSingleLegHipRaiseWithHeadOnBosuBall = 41; - public const ushort WeightedClamBridge = 42; - public const ushort SingleLegSwissBallHipRaiseAndLegCurl = 43; - public const ushort Clams = 44; - public const ushort InnerThighCircles = 45; // Deprecated do not use - public const ushort InnerThighSideLift = 46; // Deprecated do not use - public const ushort LegCircles = 47; - public const ushort LegLift = 48; - public const ushort LegLiftInExternalRotation = 49; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/HipStabilityExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/HipStabilityExerciseName.cs deleted file mode 100644 index 353634de5..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/HipStabilityExerciseName.cs +++ /dev/null @@ -1,61 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile HipStabilityExerciseName type as a class - /// - public static class HipStabilityExerciseName - { - public const ushort BandSideLyingLegRaise = 0; - public const ushort DeadBug = 1; - public const ushort WeightedDeadBug = 2; - public const ushort ExternalHipRaise = 3; - public const ushort WeightedExternalHipRaise = 4; - public const ushort FireHydrantKicks = 5; - public const ushort WeightedFireHydrantKicks = 6; - public const ushort HipCircles = 7; - public const ushort WeightedHipCircles = 8; - public const ushort InnerThighLift = 9; - public const ushort WeightedInnerThighLift = 10; - public const ushort LateralWalksWithBandAtAnkles = 11; - public const ushort PretzelSideKick = 12; - public const ushort WeightedPretzelSideKick = 13; - public const ushort ProneHipInternalRotation = 14; - public const ushort WeightedProneHipInternalRotation = 15; - public const ushort Quadruped = 16; - public const ushort QuadrupedHipExtension = 17; - public const ushort WeightedQuadrupedHipExtension = 18; - public const ushort QuadrupedWithLegLift = 19; - public const ushort WeightedQuadrupedWithLegLift = 20; - public const ushort SideLyingLegRaise = 21; - public const ushort WeightedSideLyingLegRaise = 22; - public const ushort SlidingHipAdduction = 23; - public const ushort WeightedSlidingHipAdduction = 24; - public const ushort StandingAdduction = 25; - public const ushort WeightedStandingAdduction = 26; - public const ushort StandingCableHipAbduction = 27; - public const ushort StandingHipAbduction = 28; - public const ushort WeightedStandingHipAbduction = 29; - public const ushort StandingRearLegRaise = 30; - public const ushort WeightedStandingRearLegRaise = 31; - public const ushort SupineHipInternalRotation = 32; - public const ushort WeightedSupineHipInternalRotation = 33; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/HipSwingExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/HipSwingExerciseName.cs deleted file mode 100644 index f3ecfedfc..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/HipSwingExerciseName.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile HipSwingExerciseName type as a class - /// - public static class HipSwingExerciseName - { - public const ushort SingleArmKettlebellSwing = 0; - public const ushort SingleArmDumbbellSwing = 1; - public const ushort StepOutSwing = 2; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/HrType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/HrType.cs deleted file mode 100644 index d77e83f89..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/HrType.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile HrType type as an enum - /// - public enum HrType : byte - { - Normal = 0, - Irregular = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/HrZoneCalc.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/HrZoneCalc.cs deleted file mode 100644 index 7cac1b7ca..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/HrZoneCalc.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile HrZoneCalc type as an enum - /// - public enum HrZoneCalc : byte - { - Custom = 0, - PercentMaxHr = 1, - PercentHrr = 2, - PercentLthr = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/HyperextensionExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/HyperextensionExerciseName.cs deleted file mode 100644 index 80f939187..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/HyperextensionExerciseName.cs +++ /dev/null @@ -1,67 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile HyperextensionExerciseName type as a class - /// - public static class HyperextensionExerciseName - { - public const ushort BackExtensionWithOppositeArmAndLegReach = 0; - public const ushort WeightedBackExtensionWithOppositeArmAndLegReach = 1; - public const ushort BaseRotations = 2; - public const ushort WeightedBaseRotations = 3; - public const ushort BentKneeReverseHyperextension = 4; - public const ushort WeightedBentKneeReverseHyperextension = 5; - public const ushort HollowHoldAndRoll = 6; - public const ushort WeightedHollowHoldAndRoll = 7; - public const ushort Kicks = 8; - public const ushort WeightedKicks = 9; - public const ushort KneeRaises = 10; - public const ushort WeightedKneeRaises = 11; - public const ushort KneelingSuperman = 12; - public const ushort WeightedKneelingSuperman = 13; - public const ushort LatPullDownWithRow = 14; - public const ushort MedicineBallDeadliftToReach = 15; - public const ushort OneArmOneLegRow = 16; - public const ushort OneArmRowWithBand = 17; - public const ushort OverheadLungeWithMedicineBall = 18; - public const ushort PlankKneeTucks = 19; - public const ushort WeightedPlankKneeTucks = 20; - public const ushort SideStep = 21; - public const ushort WeightedSideStep = 22; - public const ushort SingleLegBackExtension = 23; - public const ushort WeightedSingleLegBackExtension = 24; - public const ushort SpineExtension = 25; - public const ushort WeightedSpineExtension = 26; - public const ushort StaticBackExtension = 27; - public const ushort WeightedStaticBackExtension = 28; - public const ushort SupermanFromFloor = 29; - public const ushort WeightedSupermanFromFloor = 30; - public const ushort SwissBallBackExtension = 31; - public const ushort WeightedSwissBallBackExtension = 32; - public const ushort SwissBallHyperextension = 33; - public const ushort WeightedSwissBallHyperextension = 34; - public const ushort SwissBallOppositeArmAndLegLift = 35; - public const ushort WeightedSwissBallOppositeArmAndLegLift = 36; - public const ushort SupermanOnSwissBall = 37; - public const ushort Cobra = 38; - public const ushort SupineFloorBarre = 39; // Deprecated do not use - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Intensity.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Intensity.cs deleted file mode 100644 index 99abcf2b2..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Intensity.cs +++ /dev/null @@ -1,34 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Intensity type as an enum - /// - public enum Intensity : byte - { - Active = 0, - Rest = 1, - Warmup = 2, - Cooldown = 3, - Recovery = 4, - Interval = 5, - Other = 6, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Language.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Language.cs deleted file mode 100644 index 2bb67a525..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Language.cs +++ /dev/null @@ -1,66 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Language type as an enum - /// - public enum Language : byte - { - English = 0, - French = 1, - Italian = 2, - German = 3, - Spanish = 4, - Croatian = 5, - Czech = 6, - Danish = 7, - Dutch = 8, - Finnish = 9, - Greek = 10, - Hungarian = 11, - Norwegian = 12, - Polish = 13, - Portuguese = 14, - Slovakian = 15, - Slovenian = 16, - Swedish = 17, - Russian = 18, - Turkish = 19, - Latvian = 20, - Ukrainian = 21, - Arabic = 22, - Farsi = 23, - Bulgarian = 24, - Romanian = 25, - Chinese = 26, - Japanese = 27, - Korean = 28, - Taiwanese = 29, - Thai = 30, - Hebrew = 31, - BrazilianPortuguese = 32, - Indonesian = 33, - Malaysian = 34, - Vietnamese = 35, - Burmese = 36, - Mongolian = 37, - Custom = 254, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LanguageBits0.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LanguageBits0.cs deleted file mode 100644 index d4280ca5d..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LanguageBits0.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LanguageBits0 type as a class - /// - public static class LanguageBits0 - { - public const byte English = 0x01; - public const byte French = 0x02; - public const byte Italian = 0x04; - public const byte German = 0x08; - public const byte Spanish = 0x10; - public const byte Croatian = 0x20; - public const byte Czech = 0x40; - public const byte Danish = 0x80; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LanguageBits1.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LanguageBits1.cs deleted file mode 100644 index dfb611cc9..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LanguageBits1.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LanguageBits1 type as a class - /// - public static class LanguageBits1 - { - public const byte Dutch = 0x01; - public const byte Finnish = 0x02; - public const byte Greek = 0x04; - public const byte Hungarian = 0x08; - public const byte Norwegian = 0x10; - public const byte Polish = 0x20; - public const byte Portuguese = 0x40; - public const byte Slovakian = 0x80; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LanguageBits2.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LanguageBits2.cs deleted file mode 100644 index b8afadbde..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LanguageBits2.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LanguageBits2 type as a class - /// - public static class LanguageBits2 - { - public const byte Slovenian = 0x01; - public const byte Swedish = 0x02; - public const byte Russian = 0x04; - public const byte Turkish = 0x08; - public const byte Latvian = 0x10; - public const byte Ukrainian = 0x20; - public const byte Arabic = 0x40; - public const byte Farsi = 0x80; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LanguageBits3.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LanguageBits3.cs deleted file mode 100644 index 522eb1a87..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LanguageBits3.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LanguageBits3 type as a class - /// - public static class LanguageBits3 - { - public const byte Bulgarian = 0x01; - public const byte Romanian = 0x02; - public const byte Chinese = 0x04; - public const byte Japanese = 0x08; - public const byte Korean = 0x10; - public const byte Taiwanese = 0x20; - public const byte Thai = 0x40; - public const byte Hebrew = 0x80; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LanguageBits4.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LanguageBits4.cs deleted file mode 100644 index d1c7caca9..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LanguageBits4.cs +++ /dev/null @@ -1,33 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LanguageBits4 type as a class - /// - public static class LanguageBits4 - { - public const byte BrazilianPortuguese = 0x01; - public const byte Indonesian = 0x02; - public const byte Malaysian = 0x04; - public const byte Vietnamese = 0x08; - public const byte Burmese = 0x10; - public const byte Mongolian = 0x20; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LapTrigger.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LapTrigger.cs deleted file mode 100644 index 5e63caf03..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LapTrigger.cs +++ /dev/null @@ -1,36 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LapTrigger type as an enum - /// - public enum LapTrigger : byte - { - Manual = 0, - Time = 1, - Distance = 2, - PositionStart = 3, - PositionLap = 4, - PositionWaypoint = 5, - PositionMarked = 6, - SessionEnd = 7, - FitnessEquipment = 8, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LateralRaiseExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LateralRaiseExerciseName.cs deleted file mode 100644 index 5c608cd0a..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LateralRaiseExerciseName.cs +++ /dev/null @@ -1,61 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LateralRaiseExerciseName type as a class - /// - public static class LateralRaiseExerciseName - { - public const ushort _45DegreeCableExternalRotation = 0; - public const ushort AlternatingLateralRaiseWithStaticHold = 1; - public const ushort BarMuscleUp = 2; - public const ushort BentOverLateralRaise = 3; - public const ushort CableDiagonalRaise = 4; - public const ushort CableFrontRaise = 5; - public const ushort CalorieRow = 6; - public const ushort ComboShoulderRaise = 7; - public const ushort DumbbellDiagonalRaise = 8; - public const ushort DumbbellVRaise = 9; - public const ushort FrontRaise = 10; - public const ushort LeaningDumbbellLateralRaise = 11; - public const ushort LyingDumbbellRaise = 12; - public const ushort MuscleUp = 13; - public const ushort OneArmCableLateralRaise = 14; - public const ushort OverhandGripRearLateralRaise = 15; - public const ushort PlateRaises = 16; - public const ushort RingDip = 17; - public const ushort WeightedRingDip = 18; - public const ushort RingMuscleUp = 19; - public const ushort WeightedRingMuscleUp = 20; - public const ushort RopeClimb = 21; - public const ushort WeightedRopeClimb = 22; - public const ushort Scaption = 23; - public const ushort SeatedLateralRaise = 24; - public const ushort SeatedRearLateralRaise = 25; - public const ushort SideLyingLateralRaise = 26; - public const ushort StandingLift = 27; - public const ushort SuspendedRow = 28; - public const ushort UnderhandGripRearLateralRaise = 29; - public const ushort WallSlide = 30; - public const ushort WeightedWallSlide = 31; - public const ushort ArmCircles = 32; - public const ushort ShavingTheHead = 33; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LeftRightBalance.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LeftRightBalance.cs deleted file mode 100644 index 6b9298572..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LeftRightBalance.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LeftRightBalance type as a class - /// - public static class LeftRightBalance - { - public const byte Mask = 0x7F; // % contribution - public const byte Right = 0x80; // data corresponds to right if set, otherwise unknown - public const byte Invalid = (byte)0xFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LeftRightBalance100.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LeftRightBalance100.cs deleted file mode 100644 index 59aaa3145..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LeftRightBalance100.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LeftRightBalance100 type as a class - /// - public static class LeftRightBalance100 - { - public const ushort Mask = 0x3FFF; // % contribution scaled by 100 - public const ushort Right = 0x8000; // data corresponds to right if set, otherwise unknown - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LegCurlExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LegCurlExerciseName.cs deleted file mode 100644 index cbef04600..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LegCurlExerciseName.cs +++ /dev/null @@ -1,39 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LegCurlExerciseName type as a class - /// - public static class LegCurlExerciseName - { - public const ushort LegCurl = 0; - public const ushort WeightedLegCurl = 1; - public const ushort GoodMorning = 2; - public const ushort SeatedBarbellGoodMorning = 3; - public const ushort SingleLegBarbellGoodMorning = 4; - public const ushort SingleLegSlidingLegCurl = 5; - public const ushort SlidingLegCurl = 6; - public const ushort SplitBarbellGoodMorning = 7; - public const ushort SplitStanceExtension = 8; - public const ushort StaggeredStanceGoodMorning = 9; - public const ushort SwissBallHipRaiseAndLegCurl = 10; - public const ushort ZercherGoodMorning = 11; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LegRaiseExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LegRaiseExerciseName.cs deleted file mode 100644 index 1f51b83ba..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LegRaiseExerciseName.cs +++ /dev/null @@ -1,49 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LegRaiseExerciseName type as a class - /// - public static class LegRaiseExerciseName - { - public const ushort HangingKneeRaise = 0; - public const ushort HangingLegRaise = 1; - public const ushort WeightedHangingLegRaise = 2; - public const ushort HangingSingleLegRaise = 3; - public const ushort WeightedHangingSingleLegRaise = 4; - public const ushort KettlebellLegRaises = 5; - public const ushort LegLoweringDrill = 6; - public const ushort WeightedLegLoweringDrill = 7; - public const ushort LyingStraightLegRaise = 8; - public const ushort WeightedLyingStraightLegRaise = 9; - public const ushort MedicineBallLegDrops = 10; - public const ushort QuadrupedLegRaise = 11; - public const ushort WeightedQuadrupedLegRaise = 12; - public const ushort ReverseLegRaise = 13; - public const ushort WeightedReverseLegRaise = 14; - public const ushort ReverseLegRaiseOnSwissBall = 15; - public const ushort WeightedReverseLegRaiseOnSwissBall = 16; - public const ushort SingleLegLoweringDrill = 17; - public const ushort WeightedSingleLegLoweringDrill = 18; - public const ushort WeightedHangingKneeRaise = 19; - public const ushort LateralStepover = 20; - public const ushort WeightedLateralStepover = 21; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LengthType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LengthType.cs deleted file mode 100644 index 16f28e8b8..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LengthType.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LengthType type as an enum - /// - public enum LengthType : byte - { - Idle = 0, - Active = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LocalDateTime.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LocalDateTime.cs deleted file mode 100644 index da9a469e2..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LocalDateTime.cs +++ /dev/null @@ -1,28 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LocalDateTime type as a class - /// - public static class LocalDateTime - { - public const uint Min = 0x10000000; // if date_time is < 0x10000000 then it is system time (seconds from device power on) - public const uint Invalid = (uint)0xFFFFFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LocalDeviceType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LocalDeviceType.cs deleted file mode 100644 index d8be92943..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LocalDeviceType.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LocalDeviceType type as a class - /// - public static class LocalDeviceType - { - public const byte Gps = 0; // Onboard gps receiver - public const byte Glonass = 1; // Onboard glonass receiver - public const byte GpsGlonass = 2; // Onboard gps glonass receiver - public const byte Accelerometer = 3; // Onboard sensor - public const byte Barometer = 4; // Onboard sensor - public const byte Temperature = 5; // Onboard sensor - public const byte Whr = 10; // Onboard wrist HR sensor - public const byte SensorHub = 12; // Onboard software package - public const byte Invalid = (byte)0xFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LocaltimeIntoDay.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LocaltimeIntoDay.cs deleted file mode 100644 index c1a95a7e4..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LocaltimeIntoDay.cs +++ /dev/null @@ -1,27 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LocaltimeIntoDay type as a class - /// - public static class LocaltimeIntoDay - { - public const uint Invalid = (uint)0xFFFFFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LungeExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LungeExerciseName.cs deleted file mode 100644 index 6fb3e1798..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/LungeExerciseName.cs +++ /dev/null @@ -1,108 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile LungeExerciseName type as a class - /// - public static class LungeExerciseName - { - public const ushort OverheadLunge = 0; - public const ushort LungeMatrix = 1; - public const ushort WeightedLungeMatrix = 2; - public const ushort AlternatingBarbellForwardLunge = 3; - public const ushort AlternatingDumbbellLungeWithReach = 4; - public const ushort BackFootElevatedDumbbellSplitSquat = 5; - public const ushort BarbellBoxLunge = 6; - public const ushort BarbellBulgarianSplitSquat = 7; - public const ushort BarbellCrossoverLunge = 8; - public const ushort BarbellFrontSplitSquat = 9; - public const ushort BarbellLunge = 10; - public const ushort BarbellReverseLunge = 11; - public const ushort BarbellSideLunge = 12; - public const ushort BarbellSplitSquat = 13; - public const ushort CoreControlRearLunge = 14; - public const ushort DiagonalLunge = 15; - public const ushort DropLunge = 16; - public const ushort DumbbellBoxLunge = 17; - public const ushort DumbbellBulgarianSplitSquat = 18; - public const ushort DumbbellCrossoverLunge = 19; - public const ushort DumbbellDiagonalLunge = 20; - public const ushort DumbbellLunge = 21; - public const ushort DumbbellLungeAndRotation = 22; - public const ushort DumbbellOverheadBulgarianSplitSquat = 23; - public const ushort DumbbellReverseLungeToHighKneeAndPress = 24; - public const ushort DumbbellSideLunge = 25; - public const ushort ElevatedFrontFootBarbellSplitSquat = 26; - public const ushort FrontFootElevatedDumbbellSplitSquat = 27; - public const ushort GunslingerLunge = 28; - public const ushort LawnmowerLunge = 29; - public const ushort LowLungeWithIsometricAdduction = 30; - public const ushort LowSideToSideLunge = 31; - public const ushort Lunge = 32; - public const ushort WeightedLunge = 33; - public const ushort LungeWithArmReach = 34; - public const ushort LungeWithDiagonalReach = 35; - public const ushort LungeWithSideBend = 36; - public const ushort OffsetDumbbellLunge = 37; - public const ushort OffsetDumbbellReverseLunge = 38; - public const ushort OverheadBulgarianSplitSquat = 39; - public const ushort OverheadDumbbellReverseLunge = 40; - public const ushort OverheadDumbbellSplitSquat = 41; - public const ushort OverheadLungeWithRotation = 42; - public const ushort ReverseBarbellBoxLunge = 43; - public const ushort ReverseBoxLunge = 44; - public const ushort ReverseDumbbellBoxLunge = 45; - public const ushort ReverseDumbbellCrossoverLunge = 46; - public const ushort ReverseDumbbellDiagonalLunge = 47; - public const ushort ReverseLungeWithReachBack = 48; - public const ushort WeightedReverseLungeWithReachBack = 49; - public const ushort ReverseLungeWithTwistAndOverheadReach = 50; - public const ushort WeightedReverseLungeWithTwistAndOverheadReach = 51; - public const ushort ReverseSlidingBoxLunge = 52; - public const ushort WeightedReverseSlidingBoxLunge = 53; - public const ushort ReverseSlidingLunge = 54; - public const ushort WeightedReverseSlidingLunge = 55; - public const ushort RunnersLungeToBalance = 56; - public const ushort WeightedRunnersLungeToBalance = 57; - public const ushort ShiftingSideLunge = 58; - public const ushort SideAndCrossoverLunge = 59; - public const ushort WeightedSideAndCrossoverLunge = 60; - public const ushort SideLunge = 61; - public const ushort WeightedSideLunge = 62; - public const ushort SideLungeAndPress = 63; - public const ushort SideLungeJumpOff = 64; - public const ushort SideLungeSweep = 65; - public const ushort WeightedSideLungeSweep = 66; - public const ushort SideLungeToCrossoverTap = 67; - public const ushort WeightedSideLungeToCrossoverTap = 68; - public const ushort SideToSideLungeChops = 69; - public const ushort WeightedSideToSideLungeChops = 70; - public const ushort SiffJumpLunge = 71; - public const ushort WeightedSiffJumpLunge = 72; - public const ushort SingleArmReverseLungeAndPress = 73; - public const ushort SlidingLateralLunge = 74; - public const ushort WeightedSlidingLateralLunge = 75; - public const ushort WalkingBarbellLunge = 76; - public const ushort WalkingDumbbellLunge = 77; - public const ushort WalkingLunge = 78; - public const ushort WeightedWalkingLunge = 79; - public const ushort WideGripOverheadBarbellSplitSquat = 80; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Manufacturer.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Manufacturer.cs deleted file mode 100644 index ee025b183..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Manufacturer.cs +++ /dev/null @@ -1,238 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Manufacturer type as a class - /// - public static class Manufacturer - { - public const ushort Garmin = 1; - public const ushort GarminFr405Antfs = 2; // Do not use. Used by FR405 for ANTFS man id. - public const ushort Zephyr = 3; - public const ushort Dayton = 4; - public const ushort Idt = 5; - public const ushort Srm = 6; - public const ushort Quarq = 7; - public const ushort Ibike = 8; - public const ushort Saris = 9; - public const ushort SparkHk = 10; - public const ushort Tanita = 11; - public const ushort Echowell = 12; - public const ushort DynastreamOem = 13; - public const ushort Nautilus = 14; - public const ushort Dynastream = 15; - public const ushort Timex = 16; - public const ushort Metrigear = 17; - public const ushort Xelic = 18; - public const ushort Beurer = 19; - public const ushort Cardiosport = 20; - public const ushort AAndD = 21; - public const ushort Hmm = 22; - public const ushort Suunto = 23; - public const ushort ThitaElektronik = 24; - public const ushort Gpulse = 25; - public const ushort CleanMobile = 26; - public const ushort PedalBrain = 27; - public const ushort Peaksware = 28; - public const ushort Saxonar = 29; - public const ushort LemondFitness = 30; - public const ushort Dexcom = 31; - public const ushort WahooFitness = 32; - public const ushort OctaneFitness = 33; - public const ushort Archinoetics = 34; - public const ushort TheHurtBox = 35; - public const ushort CitizenSystems = 36; - public const ushort Magellan = 37; - public const ushort Osynce = 38; - public const ushort Holux = 39; - public const ushort Concept2 = 40; - public const ushort Shimano = 41; - public const ushort OneGiantLeap = 42; - public const ushort AceSensor = 43; - public const ushort BrimBrothers = 44; - public const ushort Xplova = 45; - public const ushort PerceptionDigital = 46; - public const ushort Bf1systems = 47; - public const ushort Pioneer = 48; - public const ushort Spantec = 49; - public const ushort Metalogics = 50; - public const ushort _4iiiis = 51; - public const ushort SeikoEpson = 52; - public const ushort SeikoEpsonOem = 53; - public const ushort IforPowell = 54; - public const ushort MaxwellGuider = 55; - public const ushort StarTrac = 56; - public const ushort Breakaway = 57; - public const ushort AlatechTechnologyLtd = 58; - public const ushort MioTechnologyEurope = 59; - public const ushort Rotor = 60; - public const ushort Geonaute = 61; - public const ushort IdBike = 62; - public const ushort Specialized = 63; - public const ushort Wtek = 64; - public const ushort PhysicalEnterprises = 65; - public const ushort NorthPoleEngineering = 66; - public const ushort Bkool = 67; - public const ushort Cateye = 68; - public const ushort StagesCycling = 69; - public const ushort Sigmasport = 70; - public const ushort Tomtom = 71; - public const ushort Peripedal = 72; - public const ushort Wattbike = 73; - public const ushort Moxy = 76; - public const ushort Ciclosport = 77; - public const ushort Powerbahn = 78; - public const ushort AcornProjectsAps = 79; - public const ushort Lifebeam = 80; - public const ushort Bontrager = 81; - public const ushort Wellgo = 82; - public const ushort Scosche = 83; - public const ushort Magura = 84; - public const ushort Woodway = 85; - public const ushort Elite = 86; - public const ushort NielsenKellerman = 87; - public const ushort DkCity = 88; - public const ushort Tacx = 89; - public const ushort DirectionTechnology = 90; - public const ushort Magtonic = 91; - public const ushort _1partcarbon = 92; - public const ushort InsideRideTechnologies = 93; - public const ushort SoundOfMotion = 94; - public const ushort Stryd = 95; - public const ushort Icg = 96; // Indoorcycling Group - public const ushort MiPulse = 97; - public const ushort BsxAthletics = 98; - public const ushort Look = 99; - public const ushort CampagnoloSrl = 100; - public const ushort BodyBikeSmart = 101; - public const ushort Praxisworks = 102; - public const ushort LimitsTechnology = 103; // Limits Technology Ltd. - public const ushort TopactionTechnology = 104; // TopAction Technology Inc. - public const ushort Cosinuss = 105; - public const ushort Fitcare = 106; - public const ushort Magene = 107; - public const ushort GiantManufacturingCo = 108; - public const ushort Tigrasport = 109; // Tigrasport - public const ushort Salutron = 110; - public const ushort Technogym = 111; - public const ushort BrytonSensors = 112; - public const ushort LatitudeLimited = 113; - public const ushort SoaringTechnology = 114; - public const ushort Igpsport = 115; - public const ushort Thinkrider = 116; - public const ushort GopherSport = 117; - public const ushort Waterrower = 118; - public const ushort Orangetheory = 119; - public const ushort Inpeak = 120; - public const ushort Kinetic = 121; - public const ushort JohnsonHealthTech = 122; - public const ushort PolarElectro = 123; - public const ushort Seesense = 124; - public const ushort NciTechnology = 125; - public const ushort Iqsquare = 126; - public const ushort Leomo = 127; - public const ushort IfitCom = 128; - public const ushort CorosByte = 129; - public const ushort VersaDesign = 130; - public const ushort Chileaf = 131; - public const ushort Cycplus = 132; - public const ushort GravaaByte = 133; - public const ushort Sigeyi = 134; - public const ushort Coospo = 135; - public const ushort Geoid = 136; - public const ushort Bosch = 137; - public const ushort Kyto = 138; - public const ushort KineticSports = 139; - public const ushort DecathlonByte = 140; - public const ushort TqSystems = 141; - public const ushort TagHeuer = 142; - public const ushort KeiserFitness = 143; - public const ushort ZwiftByte = 144; - public const ushort PorscheEp = 145; - public const ushort Development = 255; - public const ushort Healthandlife = 257; - public const ushort Lezyne = 258; - public const ushort ScribeLabs = 259; - public const ushort Zwift = 260; - public const ushort Watteam = 261; - public const ushort Recon = 262; - public const ushort FaveroElectronics = 263; - public const ushort Dynovelo = 264; - public const ushort Strava = 265; - public const ushort Precor = 266; // Amer Sports - public const ushort Bryton = 267; - public const ushort Sram = 268; - public const ushort Navman = 269; // MiTAC Global Corporation (Mio Technology) - public const ushort Cobi = 270; // COBI GmbH - public const ushort Spivi = 271; - public const ushort MioMagellan = 272; - public const ushort Evesports = 273; - public const ushort SensitivusGauge = 274; - public const ushort Podoon = 275; - public const ushort LifeTimeFitness = 276; - public const ushort FalcoEMotors = 277; // Falco eMotors Inc. - public const ushort Minoura = 278; - public const ushort Cycliq = 279; - public const ushort Luxottica = 280; - public const ushort TrainerRoad = 281; - public const ushort TheSufferfest = 282; - public const ushort Fullspeedahead = 283; - public const ushort Virtualtraining = 284; - public const ushort Feedbacksports = 285; - public const ushort Omata = 286; - public const ushort Vdo = 287; - public const ushort Magneticdays = 288; - public const ushort Hammerhead = 289; - public const ushort KineticByKurt = 290; - public const ushort Shapelog = 291; - public const ushort Dabuziduo = 292; - public const ushort Jetblack = 293; - public const ushort Coros = 294; - public const ushort Virtugo = 295; - public const ushort Velosense = 296; - public const ushort Cycligentinc = 297; - public const ushort Trailforks = 298; - public const ushort MahleEbikemotion = 299; - public const ushort Nurvv = 300; - public const ushort Microprogram = 301; - public const ushort Zone5cloud = 302; - public const ushort Greenteg = 303; - public const ushort YamahaMotors = 304; - public const ushort Whoop = 305; - public const ushort Gravaa = 306; - public const ushort Onelap = 307; - public const ushort MonarkExercise = 308; - public const ushort Form = 309; - public const ushort Decathlon = 310; - public const ushort Syncros = 311; - public const ushort Heatup = 312; - public const ushort Cannondale = 313; - public const ushort TrueFitness = 314; - public const ushort RGTCycling = 315; - public const ushort Vasa = 316; - public const ushort RaceRepublic = 317; - public const ushort Fazua = 318; - public const ushort OrekaTraining = 319; - public const ushort Lsec = 320; // Lishun Electric & Communication - public const ushort LululemonStudio = 321; - public const ushort Shanyue = 322; - public const ushort Actigraphcorp = 5759; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/MesgCount.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/MesgCount.cs deleted file mode 100644 index 6dc1abe91..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/MesgCount.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile MesgCount type as an enum - /// - public enum MesgCount : byte - { - NumPerFile = 0, - MaxPerFile = 1, - MaxPerFileType = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/MesgNum.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/MesgNum.cs deleted file mode 100644 index ffb63fc88..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/MesgNum.cs +++ /dev/null @@ -1,120 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile MesgNum type as a class - /// - public static class MesgNum - { - public const ushort FileId = 0; - public const ushort Capabilities = 1; - public const ushort DeviceSettings = 2; - public const ushort UserProfile = 3; - public const ushort HrmProfile = 4; - public const ushort SdmProfile = 5; - public const ushort BikeProfile = 6; - public const ushort ZonesTarget = 7; - public const ushort HrZone = 8; - public const ushort PowerZone = 9; - public const ushort MetZone = 10; - public const ushort Sport = 12; - public const ushort Goal = 15; - public const ushort Session = 18; - public const ushort Lap = 19; - public const ushort Record = 20; - public const ushort Event = 21; - public const ushort DeviceInfo = 23; - public const ushort Workout = 26; - public const ushort WorkoutStep = 27; - public const ushort Schedule = 28; - public const ushort WeightScale = 30; - public const ushort Course = 31; - public const ushort CoursePoint = 32; - public const ushort Totals = 33; - public const ushort Activity = 34; - public const ushort Software = 35; - public const ushort FileCapabilities = 37; - public const ushort MesgCapabilities = 38; - public const ushort FieldCapabilities = 39; - public const ushort FileCreator = 49; - public const ushort BloodPressure = 51; - public const ushort SpeedZone = 53; - public const ushort Monitoring = 55; - public const ushort TrainingFile = 72; - public const ushort Hrv = 78; - public const ushort AntRx = 80; - public const ushort AntTx = 81; - public const ushort AntChannelId = 82; - public const ushort Length = 101; - public const ushort MonitoringInfo = 103; - public const ushort Pad = 105; - public const ushort SlaveDevice = 106; - public const ushort Connectivity = 127; - public const ushort WeatherConditions = 128; - public const ushort WeatherAlert = 129; - public const ushort CadenceZone = 131; - public const ushort Hr = 132; - public const ushort SegmentLap = 142; - public const ushort MemoGlob = 145; - public const ushort SegmentId = 148; - public const ushort SegmentLeaderboardEntry = 149; - public const ushort SegmentPoint = 150; - public const ushort SegmentFile = 151; - public const ushort WorkoutSession = 158; - public const ushort WatchfaceSettings = 159; - public const ushort GpsMetadata = 160; - public const ushort CameraEvent = 161; - public const ushort TimestampCorrelation = 162; - public const ushort GyroscopeData = 164; - public const ushort AccelerometerData = 165; - public const ushort ThreeDSensorCalibration = 167; - public const ushort VideoFrame = 169; - public const ushort ObdiiData = 174; - public const ushort NmeaSentence = 177; - public const ushort AviationAttitude = 178; - public const ushort Video = 184; - public const ushort VideoTitle = 185; - public const ushort VideoDescription = 186; - public const ushort VideoClip = 187; - public const ushort OhrSettings = 188; - public const ushort ExdScreenConfiguration = 200; - public const ushort ExdDataFieldConfiguration = 201; - public const ushort ExdDataConceptConfiguration = 202; - public const ushort FieldDescription = 206; - public const ushort DeveloperDataId = 207; - public const ushort MagnetometerData = 208; - public const ushort BarometerData = 209; - public const ushort OneDSensorCalibration = 210; - public const ushort TimeInZone = 216; - public const ushort Set = 225; - public const ushort StressLevel = 227; - public const ushort DiveSettings = 258; - public const ushort DiveGas = 259; - public const ushort DiveAlarm = 262; - public const ushort ExerciseTitle = 264; - public const ushort DiveSummary = 268; - public const ushort Jump = 285; - public const ushort Split = 312; - public const ushort ClimbPro = 317; - public const ushort DeviceAuxBatteryInfo = 375; - public const ushort MfgRangeMin = 0xFF00; // 0xFF00 - 0xFFFE reserved for manufacturer specific messages - public const ushort MfgRangeMax = 0xFFFE; // 0xFF00 - 0xFFFE reserved for manufacturer specific messages - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/MessageIndex.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/MessageIndex.cs deleted file mode 100644 index bdbef817a..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/MessageIndex.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile MessageIndex type as a class - /// - public static class MessageIndex - { - public const ushort Selected = 0x8000; // message is selected if set - public const ushort Reserved = 0x7000; // reserved (default 0) - public const ushort Mask = 0x0FFF; // index - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/OlympicLiftExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/OlympicLiftExerciseName.cs deleted file mode 100644 index 1ec4eb0a5..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/OlympicLiftExerciseName.cs +++ /dev/null @@ -1,48 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile OlympicLiftExerciseName type as a class - /// - public static class OlympicLiftExerciseName - { - public const ushort BarbellHangPowerClean = 0; - public const ushort BarbellHangSquatClean = 1; - public const ushort BarbellPowerClean = 2; - public const ushort BarbellPowerSnatch = 3; - public const ushort BarbellSquatClean = 4; - public const ushort CleanAndJerk = 5; - public const ushort BarbellHangPowerSnatch = 6; - public const ushort BarbellHangPull = 7; - public const ushort BarbellHighPull = 8; - public const ushort BarbellSnatch = 9; - public const ushort BarbellSplitJerk = 10; - public const ushort Clean = 11; - public const ushort DumbbellClean = 12; - public const ushort DumbbellHangPull = 13; - public const ushort OneHandDumbbellSplitSnatch = 14; - public const ushort PushJerk = 15; - public const ushort SingleArmDumbbellSnatch = 16; - public const ushort SingleArmHangSnatch = 17; - public const ushort SingleArmKettlebellSnatch = 18; - public const ushort SplitJerk = 19; - public const ushort SquatCleanAndJerk = 20; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/PlankExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/PlankExerciseName.cs deleted file mode 100644 index 51b2a07a9..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/PlankExerciseName.cs +++ /dev/null @@ -1,162 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile PlankExerciseName type as a class - /// - public static class PlankExerciseName - { - public const ushort _45DegreePlank = 0; - public const ushort Weighted45DegreePlank = 1; - public const ushort _90DegreeStaticHold = 2; - public const ushort Weighted90DegreeStaticHold = 3; - public const ushort BearCrawl = 4; - public const ushort WeightedBearCrawl = 5; - public const ushort CrossBodyMountainClimber = 6; - public const ushort WeightedCrossBodyMountainClimber = 7; - public const ushort ElbowPlankPikeJacks = 8; - public const ushort WeightedElbowPlankPikeJacks = 9; - public const ushort ElevatedFeetPlank = 10; - public const ushort WeightedElevatedFeetPlank = 11; - public const ushort ElevatorAbs = 12; - public const ushort WeightedElevatorAbs = 13; - public const ushort ExtendedPlank = 14; - public const ushort WeightedExtendedPlank = 15; - public const ushort FullPlankPasseTwist = 16; - public const ushort WeightedFullPlankPasseTwist = 17; - public const ushort InchingElbowPlank = 18; - public const ushort WeightedInchingElbowPlank = 19; - public const ushort InchwormToSidePlank = 20; - public const ushort WeightedInchwormToSidePlank = 21; - public const ushort KneelingPlank = 22; - public const ushort WeightedKneelingPlank = 23; - public const ushort KneelingSidePlankWithLegLift = 24; - public const ushort WeightedKneelingSidePlankWithLegLift = 25; - public const ushort LateralRoll = 26; - public const ushort WeightedLateralRoll = 27; - public const ushort LyingReversePlank = 28; - public const ushort WeightedLyingReversePlank = 29; - public const ushort MedicineBallMountainClimber = 30; - public const ushort WeightedMedicineBallMountainClimber = 31; - public const ushort ModifiedMountainClimberAndExtension = 32; - public const ushort WeightedModifiedMountainClimberAndExtension = 33; - public const ushort MountainClimber = 34; - public const ushort WeightedMountainClimber = 35; - public const ushort MountainClimberOnSlidingDiscs = 36; - public const ushort WeightedMountainClimberOnSlidingDiscs = 37; - public const ushort MountainClimberWithFeetOnBosuBall = 38; - public const ushort WeightedMountainClimberWithFeetOnBosuBall = 39; - public const ushort MountainClimberWithHandsOnBench = 40; - public const ushort MountainClimberWithHandsOnSwissBall = 41; - public const ushort WeightedMountainClimberWithHandsOnSwissBall = 42; - public const ushort Plank = 43; - public const ushort PlankJacksWithFeetOnSlidingDiscs = 44; - public const ushort WeightedPlankJacksWithFeetOnSlidingDiscs = 45; - public const ushort PlankKneeTwist = 46; - public const ushort WeightedPlankKneeTwist = 47; - public const ushort PlankPikeJumps = 48; - public const ushort WeightedPlankPikeJumps = 49; - public const ushort PlankPikes = 50; - public const ushort WeightedPlankPikes = 51; - public const ushort PlankToStandUp = 52; - public const ushort WeightedPlankToStandUp = 53; - public const ushort PlankWithArmRaise = 54; - public const ushort WeightedPlankWithArmRaise = 55; - public const ushort PlankWithKneeToElbow = 56; - public const ushort WeightedPlankWithKneeToElbow = 57; - public const ushort PlankWithObliqueCrunch = 58; - public const ushort WeightedPlankWithObliqueCrunch = 59; - public const ushort PlyometricSidePlank = 60; - public const ushort WeightedPlyometricSidePlank = 61; - public const ushort RollingSidePlank = 62; - public const ushort WeightedRollingSidePlank = 63; - public const ushort SideKickPlank = 64; - public const ushort WeightedSideKickPlank = 65; - public const ushort SidePlank = 66; - public const ushort WeightedSidePlank = 67; - public const ushort SidePlankAndRow = 68; - public const ushort WeightedSidePlankAndRow = 69; - public const ushort SidePlankLift = 70; - public const ushort WeightedSidePlankLift = 71; - public const ushort SidePlankWithElbowOnBosuBall = 72; - public const ushort WeightedSidePlankWithElbowOnBosuBall = 73; - public const ushort SidePlankWithFeetOnBench = 74; - public const ushort WeightedSidePlankWithFeetOnBench = 75; - public const ushort SidePlankWithKneeCircle = 76; - public const ushort WeightedSidePlankWithKneeCircle = 77; - public const ushort SidePlankWithKneeTuck = 78; - public const ushort WeightedSidePlankWithKneeTuck = 79; - public const ushort SidePlankWithLegLift = 80; - public const ushort WeightedSidePlankWithLegLift = 81; - public const ushort SidePlankWithReachUnder = 82; - public const ushort WeightedSidePlankWithReachUnder = 83; - public const ushort SingleLegElevatedFeetPlank = 84; - public const ushort WeightedSingleLegElevatedFeetPlank = 85; - public const ushort SingleLegFlexAndExtend = 86; - public const ushort WeightedSingleLegFlexAndExtend = 87; - public const ushort SingleLegSidePlank = 88; - public const ushort WeightedSingleLegSidePlank = 89; - public const ushort SpidermanPlank = 90; - public const ushort WeightedSpidermanPlank = 91; - public const ushort StraightArmPlank = 92; - public const ushort WeightedStraightArmPlank = 93; - public const ushort StraightArmPlankWithShoulderTouch = 94; - public const ushort WeightedStraightArmPlankWithShoulderTouch = 95; - public const ushort SwissBallPlank = 96; - public const ushort WeightedSwissBallPlank = 97; - public const ushort SwissBallPlankLegLift = 98; - public const ushort WeightedSwissBallPlankLegLift = 99; - public const ushort SwissBallPlankLegLiftAndHold = 100; - public const ushort SwissBallPlankWithFeetOnBench = 101; - public const ushort WeightedSwissBallPlankWithFeetOnBench = 102; - public const ushort SwissBallProneJackknife = 103; - public const ushort WeightedSwissBallProneJackknife = 104; - public const ushort SwissBallSidePlank = 105; - public const ushort WeightedSwissBallSidePlank = 106; - public const ushort ThreeWayPlank = 107; - public const ushort WeightedThreeWayPlank = 108; - public const ushort TowelPlankAndKneeIn = 109; - public const ushort WeightedTowelPlankAndKneeIn = 110; - public const ushort TStabilization = 111; - public const ushort WeightedTStabilization = 112; - public const ushort TurkishGetUpToSidePlank = 113; - public const ushort WeightedTurkishGetUpToSidePlank = 114; - public const ushort TwoPointPlank = 115; - public const ushort WeightedTwoPointPlank = 116; - public const ushort WeightedPlank = 117; - public const ushort WideStancePlankWithDiagonalArmLift = 118; - public const ushort WeightedWideStancePlankWithDiagonalArmLift = 119; - public const ushort WideStancePlankWithDiagonalLegLift = 120; - public const ushort WeightedWideStancePlankWithDiagonalLegLift = 121; - public const ushort WideStancePlankWithLegLift = 122; - public const ushort WeightedWideStancePlankWithLegLift = 123; - public const ushort WideStancePlankWithOppositeArmAndLegLift = 124; - public const ushort WeightedMountainClimberWithHandsOnBench = 125; - public const ushort WeightedSwissBallPlankLegLiftAndHold = 126; - public const ushort WeightedWideStancePlankWithOppositeArmAndLegLift = 127; - public const ushort PlankWithFeetOnSwissBall = 128; - public const ushort SidePlankToPlankWithReachUnder = 129; - public const ushort BridgeWithGluteLowerLift = 130; - public const ushort BridgeOneLegBridge = 131; - public const ushort PlankWithArmVariations = 132; - public const ushort PlankWithLegLift = 133; - public const ushort ReversePlankWithLegPull = 134; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/PlyoExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/PlyoExerciseName.cs deleted file mode 100644 index 13254229a..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/PlyoExerciseName.cs +++ /dev/null @@ -1,60 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile PlyoExerciseName type as a class - /// - public static class PlyoExerciseName - { - public const ushort AlternatingJumpLunge = 0; - public const ushort WeightedAlternatingJumpLunge = 1; - public const ushort BarbellJumpSquat = 2; - public const ushort BodyWeightJumpSquat = 3; - public const ushort WeightedJumpSquat = 4; - public const ushort CrossKneeStrike = 5; - public const ushort WeightedCrossKneeStrike = 6; - public const ushort DepthJump = 7; - public const ushort WeightedDepthJump = 8; - public const ushort DumbbellJumpSquat = 9; - public const ushort DumbbellSplitJump = 10; - public const ushort FrontKneeStrike = 11; - public const ushort WeightedFrontKneeStrike = 12; - public const ushort HighBoxJump = 13; - public const ushort WeightedHighBoxJump = 14; - public const ushort IsometricExplosiveBodyWeightJumpSquat = 15; - public const ushort WeightedIsometricExplosiveJumpSquat = 16; - public const ushort LateralLeapAndHop = 17; - public const ushort WeightedLateralLeapAndHop = 18; - public const ushort LateralPlyoSquats = 19; - public const ushort WeightedLateralPlyoSquats = 20; - public const ushort LateralSlide = 21; - public const ushort WeightedLateralSlide = 22; - public const ushort MedicineBallOverheadThrows = 23; - public const ushort MedicineBallSideThrow = 24; - public const ushort MedicineBallSlam = 25; - public const ushort SideToSideMedicineBallThrows = 26; - public const ushort SideToSideShuffleJump = 27; - public const ushort WeightedSideToSideShuffleJump = 28; - public const ushort SquatJumpOntoBox = 29; - public const ushort WeightedSquatJumpOntoBox = 30; - public const ushort SquatJumpsInAndOut = 31; - public const ushort WeightedSquatJumpsInAndOut = 32; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/PowerPhaseType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/PowerPhaseType.cs deleted file mode 100644 index 529ccd25a..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/PowerPhaseType.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile PowerPhaseType type as an enum - /// - public enum PowerPhaseType : byte - { - PowerPhaseStartAngle = 0, - PowerPhaseEndAngle = 1, - PowerPhaseArcLength = 2, - PowerPhaseCenter = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/PullUpExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/PullUpExerciseName.cs deleted file mode 100644 index 58b2edf22..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/PullUpExerciseName.cs +++ /dev/null @@ -1,66 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile PullUpExerciseName type as a class - /// - public static class PullUpExerciseName - { - public const ushort BandedPullUps = 0; - public const ushort _30DegreeLatPulldown = 1; - public const ushort BandAssistedChinUp = 2; - public const ushort CloseGripChinUp = 3; - public const ushort WeightedCloseGripChinUp = 4; - public const ushort CloseGripLatPulldown = 5; - public const ushort CrossoverChinUp = 6; - public const ushort WeightedCrossoverChinUp = 7; - public const ushort EzBarPullover = 8; - public const ushort HangingHurdle = 9; - public const ushort WeightedHangingHurdle = 10; - public const ushort KneelingLatPulldown = 11; - public const ushort KneelingUnderhandGripLatPulldown = 12; - public const ushort LatPulldown = 13; - public const ushort MixedGripChinUp = 14; - public const ushort WeightedMixedGripChinUp = 15; - public const ushort MixedGripPullUp = 16; - public const ushort WeightedMixedGripPullUp = 17; - public const ushort ReverseGripPulldown = 18; - public const ushort StandingCablePullover = 19; - public const ushort StraightArmPulldown = 20; - public const ushort SwissBallEzBarPullover = 21; - public const ushort TowelPullUp = 22; - public const ushort WeightedTowelPullUp = 23; - public const ushort WeightedPullUp = 24; - public const ushort WideGripLatPulldown = 25; - public const ushort WideGripPullUp = 26; - public const ushort WeightedWideGripPullUp = 27; - public const ushort BurpeePullUp = 28; - public const ushort WeightedBurpeePullUp = 29; - public const ushort JumpingPullUps = 30; - public const ushort WeightedJumpingPullUps = 31; - public const ushort KippingPullUp = 32; - public const ushort WeightedKippingPullUp = 33; - public const ushort LPullUp = 34; - public const ushort WeightedLPullUp = 35; - public const ushort SuspendedChinUp = 36; - public const ushort WeightedSuspendedChinUp = 37; - public const ushort PullUp = 38; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/PushUpExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/PushUpExerciseName.cs deleted file mode 100644 index 06c7d0cea..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/PushUpExerciseName.cs +++ /dev/null @@ -1,106 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile PushUpExerciseName type as a class - /// - public static class PushUpExerciseName - { - public const ushort ChestPressWithBand = 0; - public const ushort AlternatingStaggeredPushUp = 1; - public const ushort WeightedAlternatingStaggeredPushUp = 2; - public const ushort AlternatingHandsMedicineBallPushUp = 3; - public const ushort WeightedAlternatingHandsMedicineBallPushUp = 4; - public const ushort BosuBallPushUp = 5; - public const ushort WeightedBosuBallPushUp = 6; - public const ushort ClappingPushUp = 7; - public const ushort WeightedClappingPushUp = 8; - public const ushort CloseGripMedicineBallPushUp = 9; - public const ushort WeightedCloseGripMedicineBallPushUp = 10; - public const ushort CloseHandsPushUp = 11; - public const ushort WeightedCloseHandsPushUp = 12; - public const ushort DeclinePushUp = 13; - public const ushort WeightedDeclinePushUp = 14; - public const ushort DiamondPushUp = 15; - public const ushort WeightedDiamondPushUp = 16; - public const ushort ExplosiveCrossoverPushUp = 17; - public const ushort WeightedExplosiveCrossoverPushUp = 18; - public const ushort ExplosivePushUp = 19; - public const ushort WeightedExplosivePushUp = 20; - public const ushort FeetElevatedSideToSidePushUp = 21; - public const ushort WeightedFeetElevatedSideToSidePushUp = 22; - public const ushort HandReleasePushUp = 23; - public const ushort WeightedHandReleasePushUp = 24; - public const ushort HandstandPushUp = 25; - public const ushort WeightedHandstandPushUp = 26; - public const ushort InclinePushUp = 27; - public const ushort WeightedInclinePushUp = 28; - public const ushort IsometricExplosivePushUp = 29; - public const ushort WeightedIsometricExplosivePushUp = 30; - public const ushort JudoPushUp = 31; - public const ushort WeightedJudoPushUp = 32; - public const ushort KneelingPushUp = 33; - public const ushort WeightedKneelingPushUp = 34; - public const ushort MedicineBallChestPass = 35; - public const ushort MedicineBallPushUp = 36; - public const ushort WeightedMedicineBallPushUp = 37; - public const ushort OneArmPushUp = 38; - public const ushort WeightedOneArmPushUp = 39; - public const ushort WeightedPushUp = 40; - public const ushort PushUpAndRow = 41; - public const ushort WeightedPushUpAndRow = 42; - public const ushort PushUpPlus = 43; - public const ushort WeightedPushUpPlus = 44; - public const ushort PushUpWithFeetOnSwissBall = 45; - public const ushort WeightedPushUpWithFeetOnSwissBall = 46; - public const ushort PushUpWithOneHandOnMedicineBall = 47; - public const ushort WeightedPushUpWithOneHandOnMedicineBall = 48; - public const ushort ShoulderPushUp = 49; - public const ushort WeightedShoulderPushUp = 50; - public const ushort SingleArmMedicineBallPushUp = 51; - public const ushort WeightedSingleArmMedicineBallPushUp = 52; - public const ushort SpidermanPushUp = 53; - public const ushort WeightedSpidermanPushUp = 54; - public const ushort StackedFeetPushUp = 55; - public const ushort WeightedStackedFeetPushUp = 56; - public const ushort StaggeredHandsPushUp = 57; - public const ushort WeightedStaggeredHandsPushUp = 58; - public const ushort SuspendedPushUp = 59; - public const ushort WeightedSuspendedPushUp = 60; - public const ushort SwissBallPushUp = 61; - public const ushort WeightedSwissBallPushUp = 62; - public const ushort SwissBallPushUpPlus = 63; - public const ushort WeightedSwissBallPushUpPlus = 64; - public const ushort TPushUp = 65; - public const ushort WeightedTPushUp = 66; - public const ushort TripleStopPushUp = 67; - public const ushort WeightedTripleStopPushUp = 68; - public const ushort WideHandsPushUp = 69; - public const ushort WeightedWideHandsPushUp = 70; - public const ushort ParalletteHandstandPushUp = 71; - public const ushort WeightedParalletteHandstandPushUp = 72; - public const ushort RingHandstandPushUp = 73; - public const ushort WeightedRingHandstandPushUp = 74; - public const ushort RingPushUp = 75; - public const ushort WeightedRingPushUp = 76; - public const ushort PushUp = 77; - public const ushort PilatesPushup = 78; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/PwrZoneCalc.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/PwrZoneCalc.cs deleted file mode 100644 index 78fa00721..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/PwrZoneCalc.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile PwrZoneCalc type as an enum - /// - public enum PwrZoneCalc : byte - { - Custom = 0, - PercentFtp = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/RadarThreatLevelType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/RadarThreatLevelType.cs deleted file mode 100644 index 493c36560..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/RadarThreatLevelType.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile RadarThreatLevelType type as an enum - /// - public enum RadarThreatLevelType : byte - { - ThreatUnknown = 0, - ThreatNone = 1, - ThreatApproaching = 2, - ThreatApproachingFast = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/RiderPositionType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/RiderPositionType.cs deleted file mode 100644 index d6db94eb6..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/RiderPositionType.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile RiderPositionType type as an enum - /// - public enum RiderPositionType : byte - { - Seated = 0, - Standing = 1, - TransitionToSeated = 2, - TransitionToStanding = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/RowExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/RowExerciseName.cs deleted file mode 100644 index 1f56f3438..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/RowExerciseName.cs +++ /dev/null @@ -1,61 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile RowExerciseName type as a class - /// - public static class RowExerciseName - { - public const ushort BarbellStraightLegDeadliftToRow = 0; - public const ushort CableRowStanding = 1; - public const ushort DumbbellRow = 2; - public const ushort ElevatedFeetInvertedRow = 3; - public const ushort WeightedElevatedFeetInvertedRow = 4; - public const ushort FacePull = 5; - public const ushort FacePullWithExternalRotation = 6; - public const ushort InvertedRowWithFeetOnSwissBall = 7; - public const ushort WeightedInvertedRowWithFeetOnSwissBall = 8; - public const ushort KettlebellRow = 9; - public const ushort ModifiedInvertedRow = 10; - public const ushort WeightedModifiedInvertedRow = 11; - public const ushort NeutralGripAlternatingDumbbellRow = 12; - public const ushort OneArmBentOverRow = 13; - public const ushort OneLeggedDumbbellRow = 14; - public const ushort RenegadeRow = 15; - public const ushort ReverseGripBarbellRow = 16; - public const ushort RopeHandleCableRow = 17; - public const ushort SeatedCableRow = 18; - public const ushort SeatedDumbbellRow = 19; - public const ushort SingleArmCableRow = 20; - public const ushort SingleArmCableRowAndRotation = 21; - public const ushort SingleArmInvertedRow = 22; - public const ushort WeightedSingleArmInvertedRow = 23; - public const ushort SingleArmNeutralGripDumbbellRow = 24; - public const ushort SingleArmNeutralGripDumbbellRowAndRotation = 25; - public const ushort SuspendedInvertedRow = 26; - public const ushort WeightedSuspendedInvertedRow = 27; - public const ushort TBarRow = 28; - public const ushort TowelGripInvertedRow = 29; - public const ushort WeightedTowelGripInvertedRow = 30; - public const ushort UnderhandGripCableRow = 31; - public const ushort VGripCableRow = 32; - public const ushort WideGripSeatedCableRow = 33; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/RunExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/RunExerciseName.cs deleted file mode 100644 index c77fc5cee..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/RunExerciseName.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile RunExerciseName type as a class - /// - public static class RunExerciseName - { - public const ushort Run = 0; - public const ushort Walk = 1; - public const ushort Jog = 2; - public const ushort Sprint = 3; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Schedule.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Schedule.cs deleted file mode 100644 index 6f55651dd..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Schedule.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Schedule type as an enum - /// - public enum Schedule : byte - { - Workout = 0, - Course = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SegmentDeleteStatus.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SegmentDeleteStatus.cs deleted file mode 100644 index 90d1e4fe8..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SegmentDeleteStatus.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SegmentDeleteStatus type as an enum - /// - public enum SegmentDeleteStatus : byte - { - DoNotDelete = 0, - DeleteOne = 1, - DeleteAll = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SegmentLapStatus.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SegmentLapStatus.cs deleted file mode 100644 index 115b83ad9..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SegmentLapStatus.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SegmentLapStatus type as an enum - /// - public enum SegmentLapStatus : byte - { - End = 0, - Fail = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SegmentLeaderboardType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SegmentLeaderboardType.cs deleted file mode 100644 index 9fb58405a..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SegmentLeaderboardType.cs +++ /dev/null @@ -1,38 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SegmentLeaderboardType type as an enum - /// - public enum SegmentLeaderboardType : byte - { - Overall = 0, - PersonalBest = 1, - Connections = 2, - Group = 3, - Challenger = 4, - Kom = 5, - Qom = 6, - Pr = 7, - Goal = 8, - Rival = 9, - ClubLeader = 10, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SegmentSelectionType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SegmentSelectionType.cs deleted file mode 100644 index 11ae8ed52..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SegmentSelectionType.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SegmentSelectionType type as an enum - /// - public enum SegmentSelectionType : byte - { - Starred = 0, - Suggested = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SensorType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SensorType.cs deleted file mode 100644 index 3f0ce0c28..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SensorType.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SensorType type as an enum - /// - public enum SensorType : byte - { - Accelerometer = 0, - Gyroscope = 1, - Compass = 2, - Barometer = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SessionTrigger.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SessionTrigger.cs deleted file mode 100644 index 903e50559..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SessionTrigger.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SessionTrigger type as an enum - /// - public enum SessionTrigger : byte - { - ActivityEnd = 0, - Manual = 1, - AutoMultiSport = 2, - FitnessEquipment = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SetType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SetType.cs deleted file mode 100644 index 0f27658a6..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SetType.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SetType type as a class - /// - public static class SetType - { - public const byte Rest = 0; - public const byte Active = 1; - public const byte Invalid = (byte)0xFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ShoulderPressExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ShoulderPressExerciseName.cs deleted file mode 100644 index 66980e5fc..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ShoulderPressExerciseName.cs +++ /dev/null @@ -1,51 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ShoulderPressExerciseName type as a class - /// - public static class ShoulderPressExerciseName - { - public const ushort AlternatingDumbbellShoulderPress = 0; - public const ushort ArnoldPress = 1; - public const ushort BarbellFrontSquatToPushPress = 2; - public const ushort BarbellPushPress = 3; - public const ushort BarbellShoulderPress = 4; - public const ushort DeadCurlPress = 5; - public const ushort DumbbellAlternatingShoulderPressAndTwist = 6; - public const ushort DumbbellHammerCurlToLungeToPress = 7; - public const ushort DumbbellPushPress = 8; - public const ushort FloorInvertedShoulderPress = 9; - public const ushort WeightedFloorInvertedShoulderPress = 10; - public const ushort InvertedShoulderPress = 11; - public const ushort WeightedInvertedShoulderPress = 12; - public const ushort OneArmPushPress = 13; - public const ushort OverheadBarbellPress = 14; - public const ushort OverheadDumbbellPress = 15; - public const ushort SeatedBarbellShoulderPress = 16; - public const ushort SeatedDumbbellShoulderPress = 17; - public const ushort SingleArmDumbbellShoulderPress = 18; - public const ushort SingleArmStepUpAndPress = 19; - public const ushort SmithMachineOverheadPress = 20; - public const ushort SplitStanceHammerCurlToPress = 21; - public const ushort SwissBallDumbbellShoulderPress = 22; - public const ushort WeightPlateFrontRaise = 23; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ShoulderStabilityExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ShoulderStabilityExerciseName.cs deleted file mode 100644 index e4f3c0342..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ShoulderStabilityExerciseName.cs +++ /dev/null @@ -1,60 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ShoulderStabilityExerciseName type as a class - /// - public static class ShoulderStabilityExerciseName - { - public const ushort _90DegreeCableExternalRotation = 0; - public const ushort BandExternalRotation = 1; - public const ushort BandInternalRotation = 2; - public const ushort BentArmLateralRaiseAndExternalRotation = 3; - public const ushort CableExternalRotation = 4; - public const ushort DumbbellFacePullWithExternalRotation = 5; - public const ushort FloorIRaise = 6; - public const ushort WeightedFloorIRaise = 7; - public const ushort FloorTRaise = 8; - public const ushort WeightedFloorTRaise = 9; - public const ushort FloorYRaise = 10; - public const ushort WeightedFloorYRaise = 11; - public const ushort InclineIRaise = 12; - public const ushort WeightedInclineIRaise = 13; - public const ushort InclineLRaise = 14; - public const ushort WeightedInclineLRaise = 15; - public const ushort InclineTRaise = 16; - public const ushort WeightedInclineTRaise = 17; - public const ushort InclineWRaise = 18; - public const ushort WeightedInclineWRaise = 19; - public const ushort InclineYRaise = 20; - public const ushort WeightedInclineYRaise = 21; - public const ushort LyingExternalRotation = 22; - public const ushort SeatedDumbbellExternalRotation = 23; - public const ushort StandingLRaise = 24; - public const ushort SwissBallIRaise = 25; - public const ushort WeightedSwissBallIRaise = 26; - public const ushort SwissBallTRaise = 27; - public const ushort WeightedSwissBallTRaise = 28; - public const ushort SwissBallWRaise = 29; - public const ushort WeightedSwissBallWRaise = 30; - public const ushort SwissBallYRaise = 31; - public const ushort WeightedSwissBallYRaise = 32; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ShrugExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ShrugExerciseName.cs deleted file mode 100644 index 24be0b374..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/ShrugExerciseName.cs +++ /dev/null @@ -1,44 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile ShrugExerciseName type as a class - /// - public static class ShrugExerciseName - { - public const ushort BarbellJumpShrug = 0; - public const ushort BarbellShrug = 1; - public const ushort BarbellUprightRow = 2; - public const ushort BehindTheBackSmithMachineShrug = 3; - public const ushort DumbbellJumpShrug = 4; - public const ushort DumbbellShrug = 5; - public const ushort DumbbellUprightRow = 6; - public const ushort InclineDumbbellShrug = 7; - public const ushort OverheadBarbellShrug = 8; - public const ushort OverheadDumbbellShrug = 9; - public const ushort ScaptionAndShrug = 10; - public const ushort ScapularRetraction = 11; - public const ushort SerratusChairShrug = 12; - public const ushort WeightedSerratusChairShrug = 13; - public const ushort SerratusShrug = 14; - public const ushort WeightedSerratusShrug = 15; - public const ushort WideGripJumpShrug = 16; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Side.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Side.cs deleted file mode 100644 index 377e04554..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Side.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Side type as an enum - /// - public enum Side : byte - { - Right = 0, - Left = 1, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SitUpExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SitUpExerciseName.cs deleted file mode 100644 index c1e8cc9b2..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SitUpExerciseName.cs +++ /dev/null @@ -1,65 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SitUpExerciseName type as a class - /// - public static class SitUpExerciseName - { - public const ushort AlternatingSitUp = 0; - public const ushort WeightedAlternatingSitUp = 1; - public const ushort BentKneeVUp = 2; - public const ushort WeightedBentKneeVUp = 3; - public const ushort ButterflySitUp = 4; - public const ushort WeightedButterflySitup = 5; - public const ushort CrossPunchRollUp = 6; - public const ushort WeightedCrossPunchRollUp = 7; - public const ushort CrossedArmsSitUp = 8; - public const ushort WeightedCrossedArmsSitUp = 9; - public const ushort GetUpSitUp = 10; - public const ushort WeightedGetUpSitUp = 11; - public const ushort HoveringSitUp = 12; - public const ushort WeightedHoveringSitUp = 13; - public const ushort KettlebellSitUp = 14; - public const ushort MedicineBallAlternatingVUp = 15; - public const ushort MedicineBallSitUp = 16; - public const ushort MedicineBallVUp = 17; - public const ushort ModifiedSitUp = 18; - public const ushort NegativeSitUp = 19; - public const ushort OneArmFullSitUp = 20; - public const ushort RecliningCircle = 21; - public const ushort WeightedRecliningCircle = 22; - public const ushort ReverseCurlUp = 23; - public const ushort WeightedReverseCurlUp = 24; - public const ushort SingleLegSwissBallJackknife = 25; - public const ushort WeightedSingleLegSwissBallJackknife = 26; - public const ushort TheTeaser = 27; - public const ushort TheTeaserWeighted = 28; - public const ushort ThreePartRollDown = 29; - public const ushort WeightedThreePartRollDown = 30; - public const ushort VUp = 31; - public const ushort WeightedVUp = 32; - public const ushort WeightedRussianTwistOnSwissBall = 33; - public const ushort WeightedSitUp = 34; - public const ushort XAbs = 35; - public const ushort WeightedXAbs = 36; - public const ushort SitUp = 37; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SourceType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SourceType.cs deleted file mode 100644 index 922ce78c1..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SourceType.cs +++ /dev/null @@ -1,33 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SourceType type as an enum - /// - public enum SourceType : byte - { - Ant = 0, - Antplus = 1, - Bluetooth = 2, - BluetoothLowEnergy = 3, - Wifi = 4, - Local = 5, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SplitType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SplitType.cs deleted file mode 100644 index 6368b4bfd..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SplitType.cs +++ /dev/null @@ -1,48 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SplitType type as an enum - /// - public enum SplitType : byte - { - AscentSplit = 1, - DescentSplit = 2, - IntervalActive = 3, - IntervalRest = 4, - IntervalWarmup = 5, - IntervalCooldown = 6, - IntervalRecovery = 7, - IntervalOther = 8, - ClimbActive = 9, - ClimbRest = 10, - SurfActive = 11, - RunActive = 12, - RunRest = 13, - WorkoutRound = 14, - RwdRun = 17, - RwdWalk = 18, - WindsurfActive = 21, - RwdStand = 22, - Transition = 23, - SkiLiftSplit = 28, - SkiRunSplit = 29, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Sport.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Sport.cs deleted file mode 100644 index a9b6e4880..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Sport.cs +++ /dev/null @@ -1,81 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Sport type as an enum - /// - public enum Sport : byte - { - Generic = 0, - Running = 1, - Cycling = 2, - Transition = 3, - FitnessEquipment = 4, - Swimming = 5, - Basketball = 6, - Soccer = 7, - Tennis = 8, - AmericanFootball = 9, - Training = 10, - Walking = 11, - CrossCountrySkiing = 12, - AlpineSkiing = 13, - Snowboarding = 14, - Rowing = 15, - Mountaineering = 16, - Hiking = 17, - Multisport = 18, - Paddling = 19, - Flying = 20, - EBiking = 21, - Motorcycling = 22, - Boating = 23, - Driving = 24, - Golf = 25, - HangGliding = 26, - HorsebackRiding = 27, - Hunting = 28, - Fishing = 29, - InlineSkating = 30, - RockClimbing = 31, - Sailing = 32, - IceSkating = 33, - SkyDiving = 34, - Snowshoeing = 35, - Snowmobiling = 36, - StandUpPaddleboarding = 37, - Surfing = 38, - Wakeboarding = 39, - WaterSkiing = 40, - Kayaking = 41, - Rafting = 42, - Windsurfing = 43, - Kitesurfing = 44, - Tactical = 45, - Jumpmaster = 46, - Boxing = 47, - FloorClimbing = 48, - Diving = 53, - Racket = 64, - WaterTubing = 76, - Wakesurfing = 77, - All = 254, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportBits0.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportBits0.cs deleted file mode 100644 index 58fb9742e..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportBits0.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SportBits0 type as a class - /// - public static class SportBits0 - { - public const byte Generic = 0x01; - public const byte Running = 0x02; - public const byte Cycling = 0x04; - public const byte Transition = 0x08; // Mulitsport transition - public const byte FitnessEquipment = 0x10; - public const byte Swimming = 0x20; - public const byte Basketball = 0x40; - public const byte Soccer = 0x80; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportBits1.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportBits1.cs deleted file mode 100644 index a7cb79d5d..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportBits1.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SportBits1 type as a class - /// - public static class SportBits1 - { - public const byte Tennis = 0x01; - public const byte AmericanFootball = 0x02; - public const byte Training = 0x04; - public const byte Walking = 0x08; - public const byte CrossCountrySkiing = 0x10; - public const byte AlpineSkiing = 0x20; - public const byte Snowboarding = 0x40; - public const byte Rowing = 0x80; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportBits2.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportBits2.cs deleted file mode 100644 index fce9b2ef5..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportBits2.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SportBits2 type as a class - /// - public static class SportBits2 - { - public const byte Mountaineering = 0x01; - public const byte Hiking = 0x02; - public const byte Multisport = 0x04; - public const byte Paddling = 0x08; - public const byte Flying = 0x10; - public const byte EBiking = 0x20; - public const byte Motorcycling = 0x40; - public const byte Boating = 0x80; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportBits3.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportBits3.cs deleted file mode 100644 index cd437960b..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportBits3.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SportBits3 type as a class - /// - public static class SportBits3 - { - public const byte Driving = 0x01; - public const byte Golf = 0x02; - public const byte HangGliding = 0x04; - public const byte HorsebackRiding = 0x08; - public const byte Hunting = 0x10; - public const byte Fishing = 0x20; - public const byte InlineSkating = 0x40; - public const byte RockClimbing = 0x80; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportBits4.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportBits4.cs deleted file mode 100644 index 631fe0cf5..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportBits4.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SportBits4 type as a class - /// - public static class SportBits4 - { - public const byte Sailing = 0x01; - public const byte IceSkating = 0x02; - public const byte SkyDiving = 0x04; - public const byte Snowshoeing = 0x08; - public const byte Snowmobiling = 0x10; - public const byte StandUpPaddleboarding = 0x20; - public const byte Surfing = 0x40; - public const byte Wakeboarding = 0x80; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportBits5.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportBits5.cs deleted file mode 100644 index d0c813fea..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportBits5.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SportBits5 type as a class - /// - public static class SportBits5 - { - public const byte WaterSkiing = 0x01; - public const byte Kayaking = 0x02; - public const byte Rafting = 0x04; - public const byte Windsurfing = 0x08; - public const byte Kitesurfing = 0x10; - public const byte Tactical = 0x20; - public const byte Jumpmaster = 0x40; - public const byte Boxing = 0x80; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportBits6.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportBits6.cs deleted file mode 100644 index 391f896d1..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportBits6.cs +++ /dev/null @@ -1,28 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SportBits6 type as a class - /// - public static class SportBits6 - { - public const byte FloorClimbing = 0x01; - public const byte Invalid = (byte)0x00; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportEvent.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportEvent.cs deleted file mode 100644 index e30a04db0..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SportEvent.cs +++ /dev/null @@ -1,36 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SportEvent type as an enum - /// - public enum SportEvent : byte - { - Uncategorized = 0, - Geocaching = 1, - Fitness = 2, - Recreation = 3, - Race = 4, - SpecialEvent = 5, - Training = 6, - Transportation = 7, - Touring = 8, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SquatExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SquatExerciseName.cs deleted file mode 100644 index 01822aef4..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SquatExerciseName.cs +++ /dev/null @@ -1,119 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SquatExerciseName type as a class - /// - public static class SquatExerciseName - { - public const ushort LegPress = 0; - public const ushort BackSquatWithBodyBar = 1; - public const ushort BackSquats = 2; - public const ushort WeightedBackSquats = 3; - public const ushort BalancingSquat = 4; - public const ushort WeightedBalancingSquat = 5; - public const ushort BarbellBackSquat = 6; - public const ushort BarbellBoxSquat = 7; - public const ushort BarbellFrontSquat = 8; - public const ushort BarbellHackSquat = 9; - public const ushort BarbellHangSquatSnatch = 10; - public const ushort BarbellLateralStepUp = 11; - public const ushort BarbellQuarterSquat = 12; - public const ushort BarbellSiffSquat = 13; - public const ushort BarbellSquatSnatch = 14; - public const ushort BarbellSquatWithHeelsRaised = 15; - public const ushort BarbellStepover = 16; - public const ushort BarbellStepUp = 17; - public const ushort BenchSquatWithRotationalChop = 18; - public const ushort WeightedBenchSquatWithRotationalChop = 19; - public const ushort BodyWeightWallSquat = 20; - public const ushort WeightedWallSquat = 21; - public const ushort BoxStepSquat = 22; - public const ushort WeightedBoxStepSquat = 23; - public const ushort BracedSquat = 24; - public const ushort CrossedArmBarbellFrontSquat = 25; - public const ushort CrossoverDumbbellStepUp = 26; - public const ushort DumbbellFrontSquat = 27; - public const ushort DumbbellSplitSquat = 28; - public const ushort DumbbellSquat = 29; - public const ushort DumbbellSquatClean = 30; - public const ushort DumbbellStepover = 31; - public const ushort DumbbellStepUp = 32; - public const ushort ElevatedSingleLegSquat = 33; - public const ushort WeightedElevatedSingleLegSquat = 34; - public const ushort FigureFourSquats = 35; - public const ushort WeightedFigureFourSquats = 36; - public const ushort GobletSquat = 37; - public const ushort KettlebellSquat = 38; - public const ushort KettlebellSwingOverhead = 39; - public const ushort KettlebellSwingWithFlipToSquat = 40; - public const ushort LateralDumbbellStepUp = 41; - public const ushort OneLeggedSquat = 42; - public const ushort OverheadDumbbellSquat = 43; - public const ushort OverheadSquat = 44; - public const ushort PartialSingleLegSquat = 45; - public const ushort WeightedPartialSingleLegSquat = 46; - public const ushort PistolSquat = 47; - public const ushort WeightedPistolSquat = 48; - public const ushort PlieSlides = 49; - public const ushort WeightedPlieSlides = 50; - public const ushort PlieSquat = 51; - public const ushort WeightedPlieSquat = 52; - public const ushort PrisonerSquat = 53; - public const ushort WeightedPrisonerSquat = 54; - public const ushort SingleLegBenchGetUp = 55; - public const ushort WeightedSingleLegBenchGetUp = 56; - public const ushort SingleLegBenchSquat = 57; - public const ushort WeightedSingleLegBenchSquat = 58; - public const ushort SingleLegSquatOnSwissBall = 59; - public const ushort WeightedSingleLegSquatOnSwissBall = 60; - public const ushort Squat = 61; - public const ushort WeightedSquat = 62; - public const ushort SquatsWithBand = 63; - public const ushort StaggeredSquat = 64; - public const ushort WeightedStaggeredSquat = 65; - public const ushort StepUp = 66; - public const ushort WeightedStepUp = 67; - public const ushort SuitcaseSquats = 68; - public const ushort SumoSquat = 69; - public const ushort SumoSquatSlideIn = 70; - public const ushort WeightedSumoSquatSlideIn = 71; - public const ushort SumoSquatToHighPull = 72; - public const ushort SumoSquatToStand = 73; - public const ushort WeightedSumoSquatToStand = 74; - public const ushort SumoSquatWithRotation = 75; - public const ushort WeightedSumoSquatWithRotation = 76; - public const ushort SwissBallBodyWeightWallSquat = 77; - public const ushort WeightedSwissBallWallSquat = 78; - public const ushort Thrusters = 79; - public const ushort UnevenSquat = 80; - public const ushort WeightedUnevenSquat = 81; - public const ushort WaistSlimmingSquat = 82; - public const ushort WallBall = 83; - public const ushort WideStanceBarbellSquat = 84; - public const ushort WideStanceGobletSquat = 85; - public const ushort ZercherSquat = 86; - public const ushort KbsOverhead = 87; // Deprecated do not use - public const ushort SquatAndSideKick = 88; - public const ushort SquatJumpsInNOut = 89; - public const ushort PilatesPlieSquatsParallelTurnedOutFlatAndHeels = 90; - public const ushort ReleveStraightLegAndKneeBentWithOneLegVariation = 91; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/StrokeType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/StrokeType.cs deleted file mode 100644 index 2be56a001..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/StrokeType.cs +++ /dev/null @@ -1,33 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile StrokeType type as an enum - /// - public enum StrokeType : byte - { - NoEvent = 0, - Other = 1, - Serve = 2, - Forehand = 3, - Backhand = 4, - Smash = 5, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SubSport.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SubSport.cs deleted file mode 100644 index a74e955f2..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SubSport.cs +++ /dev/null @@ -1,95 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SubSport type as an enum - /// - public enum SubSport : byte - { - Generic = 0, - Treadmill = 1, - Street = 2, - Trail = 3, - Track = 4, - Spin = 5, - IndoorCycling = 6, - Road = 7, - Mountain = 8, - Downhill = 9, - Recumbent = 10, - Cyclocross = 11, - HandCycling = 12, - TrackCycling = 13, - IndoorRowing = 14, - Elliptical = 15, - StairClimbing = 16, - LapSwimming = 17, - OpenWater = 18, - FlexibilityTraining = 19, - StrengthTraining = 20, - WarmUp = 21, - Match = 22, - Exercise = 23, - Challenge = 24, - IndoorSkiing = 25, - CardioTraining = 26, - IndoorWalking = 27, - EBikeFitness = 28, - Bmx = 29, - CasualWalking = 30, - SpeedWalking = 31, - BikeToRunTransition = 32, - RunToBikeTransition = 33, - SwimToBikeTransition = 34, - Atv = 35, - Motocross = 36, - Backcountry = 37, - Resort = 38, - RcDrone = 39, - Wingsuit = 40, - Whitewater = 41, - SkateSkiing = 42, - Yoga = 43, - Pilates = 44, - IndoorRunning = 45, - GravelCycling = 46, - EBikeMountain = 47, - Commuting = 48, - MixedSurface = 49, - Navigate = 50, - TrackMe = 51, - Map = 52, - SingleGasDiving = 53, - MultiGasDiving = 54, - GaugeDiving = 55, - ApneaDiving = 56, - ApneaHunting = 57, - VirtualActivity = 58, - Obstacle = 59, - Breathing = 62, - SailRace = 65, - Ultra = 67, - IndoorClimbing = 68, - Bouldering = 69, - Pickleball = 84, - Padel = 85, - All = 254, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SupportedExdScreenLayouts.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SupportedExdScreenLayouts.cs deleted file mode 100644 index c016eb03f..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SupportedExdScreenLayouts.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SupportedExdScreenLayouts type as a class - /// - public static class SupportedExdScreenLayouts - { - public const uint FullScreen = 0x00000001; - public const uint HalfVertical = 0x00000002; - public const uint HalfHorizontal = 0x00000004; - public const uint HalfVerticalRightSplit = 0x00000008; - public const uint HalfHorizontalBottomSplit = 0x00000010; - public const uint FullQuarterSplit = 0x00000020; - public const uint HalfVerticalLeftSplit = 0x00000040; - public const uint HalfHorizontalTopSplit = 0x00000080; - public const uint Invalid = (uint)0x00000000; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SwimStroke.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SwimStroke.cs deleted file mode 100644 index bc1719a60..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/SwimStroke.cs +++ /dev/null @@ -1,34 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile SwimStroke type as an enum - /// - public enum SwimStroke : byte - { - Freestyle = 0, - Backstroke = 1, - Breaststroke = 2, - Butterfly = 3, - Drill = 4, - Mixed = 5, - Im = 6, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Switch.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Switch.cs deleted file mode 100644 index 151d6e06b..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Switch.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Switch type as an enum - /// - public enum Switch : byte - { - Off = 0, - On = 1, - Auto = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TapSensitivity.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TapSensitivity.cs deleted file mode 100644 index 908f313f6..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TapSensitivity.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile TapSensitivity type as an enum - /// - public enum TapSensitivity : byte - { - High = 0, - Medium = 1, - Low = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TimeIntoDay.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TimeIntoDay.cs deleted file mode 100644 index 28b14bdb5..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TimeIntoDay.cs +++ /dev/null @@ -1,27 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile TimeIntoDay type as a class - /// - public static class TimeIntoDay - { - public const uint Invalid = (uint)0xFFFFFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TimeMode.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TimeMode.cs deleted file mode 100644 index 8484b3e0a..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TimeMode.cs +++ /dev/null @@ -1,33 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile TimeMode type as an enum - /// - public enum TimeMode : byte - { - Hour12 = 0, - Hour24 = 1, - Military = 2, - Hour12WithSeconds = 3, - Hour24WithSeconds = 4, - Utc = 5, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TimeZone.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TimeZone.cs deleted file mode 100644 index bbeb478a7..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TimeZone.cs +++ /dev/null @@ -1,133 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile TimeZone type as an enum - /// - public enum TimeZone : byte - { - Almaty = 0, - Bangkok = 1, - Bombay = 2, - Brasilia = 3, - Cairo = 4, - CapeVerdeIs = 5, - Darwin = 6, - Eniwetok = 7, - Fiji = 8, - HongKong = 9, - Islamabad = 10, - Kabul = 11, - Magadan = 12, - MidAtlantic = 13, - Moscow = 14, - Muscat = 15, - Newfoundland = 16, - Samoa = 17, - Sydney = 18, - Tehran = 19, - Tokyo = 20, - UsAlaska = 21, - UsAtlantic = 22, - UsCentral = 23, - UsEastern = 24, - UsHawaii = 25, - UsMountain = 26, - UsPacific = 27, - Other = 28, - Auckland = 29, - Kathmandu = 30, - EuropeWesternWet = 31, - EuropeCentralCet = 32, - EuropeEasternEet = 33, - Jakarta = 34, - Perth = 35, - Adelaide = 36, - Brisbane = 37, - Tasmania = 38, - Iceland = 39, - Amsterdam = 40, - Athens = 41, - Barcelona = 42, - Berlin = 43, - Brussels = 44, - Budapest = 45, - Copenhagen = 46, - Dublin = 47, - Helsinki = 48, - Lisbon = 49, - London = 50, - Madrid = 51, - Munich = 52, - Oslo = 53, - Paris = 54, - Prague = 55, - Reykjavik = 56, - Rome = 57, - Stockholm = 58, - Vienna = 59, - Warsaw = 60, - Zurich = 61, - Quebec = 62, - Ontario = 63, - Manitoba = 64, - Saskatchewan = 65, - Alberta = 66, - BritishColumbia = 67, - Boise = 68, - Boston = 69, - Chicago = 70, - Dallas = 71, - Denver = 72, - KansasCity = 73, - LasVegas = 74, - LosAngeles = 75, - Miami = 76, - Minneapolis = 77, - NewYork = 78, - NewOrleans = 79, - Phoenix = 80, - SantaFe = 81, - Seattle = 82, - WashingtonDc = 83, - UsArizona = 84, - Chita = 85, - Ekaterinburg = 86, - Irkutsk = 87, - Kaliningrad = 88, - Krasnoyarsk = 89, - Novosibirsk = 90, - PetropavlovskKamchatskiy = 91, - Samara = 92, - Vladivostok = 93, - MexicoCentral = 94, - MexicoMountain = 95, - MexicoPacific = 96, - CapeTown = 97, - Winkhoek = 98, - Lagos = 99, - Riyahd = 100, - Venezuela = 101, - AustraliaLh = 102, - Santiago = 103, - Manual = 253, - Automatic = 254, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TimerTrigger.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TimerTrigger.cs deleted file mode 100644 index 3bb4f295a..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TimerTrigger.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile TimerTrigger type as an enum - /// - public enum TimerTrigger : byte - { - Manual = 0, - Auto = 1, - FitnessEquipment = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TissueModelType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TissueModelType.cs deleted file mode 100644 index 825cc284d..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TissueModelType.cs +++ /dev/null @@ -1,28 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile TissueModelType type as an enum - /// - public enum TissueModelType : byte - { - Zhl16c = 0, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Tone.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Tone.cs deleted file mode 100644 index 0831a7d4c..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Tone.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Tone type as an enum - /// - public enum Tone : byte - { - Off = 0, - Tone = 1, - Vibrate = 2, - ToneAndVibrate = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TotalBodyExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TotalBodyExerciseName.cs deleted file mode 100644 index 73c5621c6..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TotalBodyExerciseName.cs +++ /dev/null @@ -1,40 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile TotalBodyExerciseName type as a class - /// - public static class TotalBodyExerciseName - { - public const ushort Burpee = 0; - public const ushort WeightedBurpee = 1; - public const ushort BurpeeBoxJump = 2; - public const ushort WeightedBurpeeBoxJump = 3; - public const ushort HighPullBurpee = 4; - public const ushort ManMakers = 5; - public const ushort OneArmBurpee = 6; - public const ushort SquatThrusts = 7; - public const ushort WeightedSquatThrusts = 8; - public const ushort SquatPlankPushUp = 9; - public const ushort WeightedSquatPlankPushUp = 10; - public const ushort StandingTRotationBalance = 11; - public const ushort WeightedStandingTRotationBalance = 12; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TricepsExtensionExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TricepsExtensionExerciseName.cs deleted file mode 100644 index 26f5eed3a..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TricepsExtensionExerciseName.cs +++ /dev/null @@ -1,68 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile TricepsExtensionExerciseName type as a class - /// - public static class TricepsExtensionExerciseName - { - public const ushort BenchDip = 0; - public const ushort WeightedBenchDip = 1; - public const ushort BodyWeightDip = 2; - public const ushort CableKickback = 3; - public const ushort CableLyingTricepsExtension = 4; - public const ushort CableOverheadTricepsExtension = 5; - public const ushort DumbbellKickback = 6; - public const ushort DumbbellLyingTricepsExtension = 7; - public const ushort EzBarOverheadTricepsExtension = 8; - public const ushort InclineDip = 9; - public const ushort WeightedInclineDip = 10; - public const ushort InclineEzBarLyingTricepsExtension = 11; - public const ushort LyingDumbbellPulloverToExtension = 12; - public const ushort LyingEzBarTricepsExtension = 13; - public const ushort LyingTricepsExtensionToCloseGripBenchPress = 14; - public const ushort OverheadDumbbellTricepsExtension = 15; - public const ushort RecliningTricepsPress = 16; - public const ushort ReverseGripPressdown = 17; - public const ushort ReverseGripTricepsPressdown = 18; - public const ushort RopePressdown = 19; - public const ushort SeatedBarbellOverheadTricepsExtension = 20; - public const ushort SeatedDumbbellOverheadTricepsExtension = 21; - public const ushort SeatedEzBarOverheadTricepsExtension = 22; - public const ushort SeatedSingleArmOverheadDumbbellExtension = 23; - public const ushort SingleArmDumbbellOverheadTricepsExtension = 24; - public const ushort SingleDumbbellSeatedOverheadTricepsExtension = 25; - public const ushort SingleLegBenchDipAndKick = 26; - public const ushort WeightedSingleLegBenchDipAndKick = 27; - public const ushort SingleLegDip = 28; - public const ushort WeightedSingleLegDip = 29; - public const ushort StaticLyingTricepsExtension = 30; - public const ushort SuspendedDip = 31; - public const ushort WeightedSuspendedDip = 32; - public const ushort SwissBallDumbbellLyingTricepsExtension = 33; - public const ushort SwissBallEzBarLyingTricepsExtension = 34; - public const ushort SwissBallEzBarOverheadTricepsExtension = 35; - public const ushort TabletopDip = 36; - public const ushort WeightedTabletopDip = 37; - public const ushort TricepsExtensionOnFloor = 38; - public const ushort TricepsPressdown = 39; - public const ushort WeightedDip = 40; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TurnType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TurnType.cs deleted file mode 100644 index a58e3dcc9..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/TurnType.cs +++ /dev/null @@ -1,65 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile TurnType type as an enum - /// - public enum TurnType : byte - { - ArrivingIdx = 0, - ArrivingLeftIdx = 1, - ArrivingRightIdx = 2, - ArrivingViaIdx = 3, - ArrivingViaLeftIdx = 4, - ArrivingViaRightIdx = 5, - BearKeepLeftIdx = 6, - BearKeepRightIdx = 7, - ContinueIdx = 8, - ExitLeftIdx = 9, - ExitRightIdx = 10, - FerryIdx = 11, - Roundabout45Idx = 12, - Roundabout90Idx = 13, - Roundabout135Idx = 14, - Roundabout180Idx = 15, - Roundabout225Idx = 16, - Roundabout270Idx = 17, - Roundabout315Idx = 18, - Roundabout360Idx = 19, - RoundaboutNeg45Idx = 20, - RoundaboutNeg90Idx = 21, - RoundaboutNeg135Idx = 22, - RoundaboutNeg180Idx = 23, - RoundaboutNeg225Idx = 24, - RoundaboutNeg270Idx = 25, - RoundaboutNeg315Idx = 26, - RoundaboutNeg360Idx = 27, - RoundaboutGenericIdx = 28, - RoundaboutNegGenericIdx = 29, - SharpTurnLeftIdx = 30, - SharpTurnRightIdx = 31, - TurnLeftIdx = 32, - TurnRightIdx = 33, - UturnLeftIdx = 34, - UturnRightIdx = 35, - IconInvIdx = 36, - IconIdxCnt = 37, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/UserLocalId.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/UserLocalId.cs deleted file mode 100644 index fcb7166f4..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/UserLocalId.cs +++ /dev/null @@ -1,33 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile UserLocalId type as a class - /// - public static class UserLocalId - { - public const ushort LocalMin = 0x0000; - public const ushort LocalMax = 0x000F; - public const ushort StationaryMin = 0x0010; - public const ushort StationaryMax = 0x00FF; - public const ushort PortableMin = 0x0100; - public const ushort PortableMax = 0xFFFE; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WarmUpExerciseName.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WarmUpExerciseName.cs deleted file mode 100644 index dcadd876f..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WarmUpExerciseName.cs +++ /dev/null @@ -1,58 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WarmUpExerciseName type as a class - /// - public static class WarmUpExerciseName - { - public const ushort QuadrupedRocking = 0; - public const ushort NeckTilts = 1; - public const ushort AnkleCircles = 2; - public const ushort AnkleDorsiflexionWithBand = 3; - public const ushort AnkleInternalRotation = 4; - public const ushort ArmCircles = 5; - public const ushort BentOverReachToSky = 6; - public const ushort CatCamel = 7; - public const ushort ElbowToFootLunge = 8; - public const ushort ForwardAndBackwardLegSwings = 9; - public const ushort Groiners = 10; - public const ushort InvertedHamstringStretch = 11; - public const ushort LateralDuckUnder = 12; - public const ushort NeckRotations = 13; - public const ushort OppositeArmAndLegBalance = 14; - public const ushort ReachRollAndLift = 15; - public const ushort Scorpion = 16; // Deprecated do not use - public const ushort ShoulderCircles = 17; - public const ushort SideToSideLegSwings = 18; - public const ushort SleeperStretch = 19; - public const ushort SlideOut = 20; - public const ushort SwissBallHipCrossover = 21; - public const ushort SwissBallReachRollAndLift = 22; - public const ushort SwissBallWindshieldWipers = 23; - public const ushort ThoracicRotation = 24; - public const ushort WalkingHighKicks = 25; - public const ushort WalkingHighKnees = 26; - public const ushort WalkingKneeHugs = 27; - public const ushort WalkingLegCradles = 28; - public const ushort Walkout = 29; - public const ushort WalkoutFromPushUpPosition = 30; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WatchfaceMode.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WatchfaceMode.cs deleted file mode 100644 index 8a192a2e4..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WatchfaceMode.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WatchfaceMode type as an enum - /// - public enum WatchfaceMode : byte - { - Digital = 0, - Analog = 1, - ConnectIq = 2, - Disabled = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WaterType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WaterType.cs deleted file mode 100644 index f1bcf2a70..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WaterType.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WaterType type as an enum - /// - public enum WaterType : byte - { - Fresh = 0, - Salt = 1, - En13319 = 2, - Custom = 3, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WeatherReport.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WeatherReport.cs deleted file mode 100644 index 465c01cdb..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WeatherReport.cs +++ /dev/null @@ -1,31 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WeatherReport type as an enum - /// - public enum WeatherReport : byte - { - Current = 0, - Forecast = 1, - HourlyForecast = 1, - DailyForecast = 2, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WeatherSevereType.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WeatherSevereType.cs deleted file mode 100644 index 7d96ae23e..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WeatherSevereType.cs +++ /dev/null @@ -1,112 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WeatherSevereType type as an enum - /// - public enum WeatherSevereType : byte - { - Unspecified = 0, - Tornado = 1, - Tsunami = 2, - Hurricane = 3, - ExtremeWind = 4, - Typhoon = 5, - InlandHurricane = 6, - HurricaneForceWind = 7, - Waterspout = 8, - SevereThunderstorm = 9, - WreckhouseWinds = 10, - LesSuetesWind = 11, - Avalanche = 12, - FlashFlood = 13, - TropicalStorm = 14, - InlandTropicalStorm = 15, - Blizzard = 16, - IceStorm = 17, - FreezingRain = 18, - DebrisFlow = 19, - FlashFreeze = 20, - DustStorm = 21, - HighWind = 22, - WinterStorm = 23, - HeavyFreezingSpray = 24, - ExtremeCold = 25, - WindChill = 26, - ColdWave = 27, - HeavySnowAlert = 28, - LakeEffectBlowingSnow = 29, - SnowSquall = 30, - LakeEffectSnow = 31, - WinterWeather = 32, - Sleet = 33, - Snowfall = 34, - SnowAndBlowingSnow = 35, - BlowingSnow = 36, - SnowAlert = 37, - ArcticOutflow = 38, - FreezingDrizzle = 39, - Storm = 40, - StormSurge = 41, - Rainfall = 42, - ArealFlood = 43, - CoastalFlood = 44, - LakeshoreFlood = 45, - ExcessiveHeat = 46, - Heat = 47, - Weather = 48, - HighHeatAndHumidity = 49, - HumidexAndHealth = 50, - Humidex = 51, - Gale = 52, - FreezingSpray = 53, - SpecialMarine = 54, - Squall = 55, - StrongWind = 56, - LakeWind = 57, - MarineWeather = 58, - Wind = 59, - SmallCraftHazardousSeas = 60, - HazardousSeas = 61, - SmallCraft = 62, - SmallCraftWinds = 63, - SmallCraftRoughBar = 64, - HighWaterLevel = 65, - Ashfall = 66, - FreezingFog = 67, - DenseFog = 68, - DenseSmoke = 69, - BlowingDust = 70, - HardFreeze = 71, - Freeze = 72, - Frost = 73, - FireWeather = 74, - Flood = 75, - RipTide = 76, - HighSurf = 77, - Smog = 78, - AirQuality = 79, - BriskWind = 80, - AirStagnation = 81, - LowWater = 82, - Hydrological = 83, - SpecialWeather = 84, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WeatherSeverity.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WeatherSeverity.cs deleted file mode 100644 index ae8f5f0d6..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WeatherSeverity.cs +++ /dev/null @@ -1,32 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WeatherSeverity type as an enum - /// - public enum WeatherSeverity : byte - { - Unknown = 0, - Warning = 1, - Watch = 2, - Advisory = 3, - Statement = 4, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WeatherStatus.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WeatherStatus.cs deleted file mode 100644 index 899f9e316..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WeatherStatus.cs +++ /dev/null @@ -1,48 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WeatherStatus type as an enum - /// - public enum WeatherStatus : byte - { - Clear = 0, - PartlyCloudy = 1, - MostlyCloudy = 2, - Rain = 3, - Snow = 4, - Windy = 5, - Thunderstorms = 6, - WintryMix = 7, - Fog = 8, - Hazy = 11, - Hail = 12, - ScatteredShowers = 13, - ScatteredThunderstorms = 14, - UnknownPrecipitation = 15, - LightRain = 16, - HeavyRain = 17, - LightSnow = 18, - HeavySnow = 19, - LightRainSnow = 20, - HeavyRainSnow = 21, - Cloudy = 22, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Weight.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Weight.cs deleted file mode 100644 index 5b60c6c0f..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/Weight.cs +++ /dev/null @@ -1,28 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile Weight type as a class - /// - public static class Weight - { - public const ushort Calculating = 0xFFFE; - public const ushort Invalid = (ushort)0xFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WktStepDuration.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WktStepDuration.cs deleted file mode 100644 index 2ce308adb..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WktStepDuration.cs +++ /dev/null @@ -1,58 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WktStepDuration type as an enum - /// - public enum WktStepDuration : byte - { - Time = 0, - Distance = 1, - HrLessThan = 2, - HrGreaterThan = 3, - Calories = 4, - Open = 5, - RepeatUntilStepsCmplt = 6, - RepeatUntilTime = 7, - RepeatUntilDistance = 8, - RepeatUntilCalories = 9, - RepeatUntilHrLessThan = 10, - RepeatUntilHrGreaterThan = 11, - RepeatUntilPowerLessThan = 12, - RepeatUntilPowerGreaterThan = 13, - PowerLessThan = 14, - PowerGreaterThan = 15, - TrainingPeaksTss = 16, - RepeatUntilPowerLastLapLessThan = 17, - RepeatUntilMaxPowerLastLapLessThan = 18, - Power3sLessThan = 19, - Power10sLessThan = 20, - Power30sLessThan = 21, - Power3sGreaterThan = 22, - Power10sGreaterThan = 23, - Power30sGreaterThan = 24, - PowerLapLessThan = 25, - PowerLapGreaterThan = 26, - RepeatUntilTrainingPeaksTss = 27, - RepetitionTime = 28, - Reps = 29, - TimeOnly = 31, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WktStepTarget.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WktStepTarget.cs deleted file mode 100644 index aaf3cb53a..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WktStepTarget.cs +++ /dev/null @@ -1,41 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WktStepTarget type as an enum - /// - public enum WktStepTarget : byte - { - Speed = 0, - HeartRate = 1, - Open = 2, - Cadence = 3, - Power = 4, - Grade = 5, - Resistance = 6, - Power3s = 7, - Power10s = 8, - Power30s = 9, - PowerLap = 10, - SwimStroke = 11, - SpeedLap = 12, - HeartRateLap = 13, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WorkoutCapabilities.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WorkoutCapabilities.cs deleted file mode 100644 index 2d56c6297..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WorkoutCapabilities.cs +++ /dev/null @@ -1,41 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WorkoutCapabilities type as a class - /// - public static class WorkoutCapabilities - { - public const uint Interval = 0x00000001; - public const uint Custom = 0x00000002; - public const uint FitnessEquipment = 0x00000004; - public const uint Firstbeat = 0x00000008; - public const uint NewLeaf = 0x00000010; - public const uint Tcx = 0x00000020; // For backwards compatibility. Watch should add missing id fields then clear flag. - public const uint Speed = 0x00000080; // Speed source required for workout step. - public const uint HeartRate = 0x00000100; // Heart rate source required for workout step. - public const uint Distance = 0x00000200; // Distance source required for workout step. - public const uint Cadence = 0x00000400; // Cadence source required for workout step. - public const uint Power = 0x00000800; // Power source required for workout step. - public const uint Grade = 0x00001000; // Grade source required for workout step. - public const uint Resistance = 0x00002000; // Resistance source required for workout step. - public const uint Protected = 0x00004000; - public const uint Invalid = (uint)0x00000000; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WorkoutEquipment.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WorkoutEquipment.cs deleted file mode 100644 index 3252fe72c..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WorkoutEquipment.cs +++ /dev/null @@ -1,33 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WorkoutEquipment type as an enum - /// - public enum WorkoutEquipment : byte - { - None = 0, - SwimFins = 1, - SwimKickboard = 2, - SwimPaddles = 3, - SwimPullBuoy = 4, - SwimSnorkel = 5, - Invalid = 0xFF - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WorkoutHr.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WorkoutHr.cs deleted file mode 100644 index 77c50c2b2..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WorkoutHr.cs +++ /dev/null @@ -1,28 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WorkoutHr type as a class - /// - public static class WorkoutHr - { - public const uint BpmOffset = 100; - public const uint Invalid = (uint)0xFFFFFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WorkoutPower.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WorkoutPower.cs deleted file mode 100644 index 5ed9d8f08..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Profile/Types/WorkoutPower.cs +++ /dev/null @@ -1,28 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -namespace Dynastream.Fit -{ - /// - /// Implements the profile WorkoutPower type as a class - /// - public static class WorkoutPower - { - public const uint WattsOffset = 1000; - public const uint Invalid = (uint)0xFFFFFFFF; - - - } -} - diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/ProtocolValidator.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/ProtocolValidator.cs deleted file mode 100644 index f517bd874..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/ProtocolValidator.cs +++ /dev/null @@ -1,138 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System.Linq; - -namespace Dynastream.Fit -{ - internal interface IValidator - { - /// - /// Validate if a Message is compatible with a protocol version - /// - /// Message to validate - /// true if message is compatible. false otherwise - bool ValidateMesg(Mesg mesg); - - /// - /// Validate if a MessageDefinition is compatible with a protocol version - /// - /// Definition to validate - /// true if definition is compatible. false otherwise - bool ValidateMesgDefn(MesgDefinition defn); - } - - /// - /// Validates Protocol Features for a given give version - /// - internal class ProtocolValidator - : IValidator - { - private readonly IValidator m_validator; - - public ProtocolValidator(ProtocolVersion version) - { - switch (version) - { - case ProtocolVersion.V10: - m_validator = new V1Validator(); - break; - - default: - m_validator = null; - break; - } - } - - /// - /// Validate if a Message is compatible with a protocol version - /// - /// Message to validate - /// true if message is compatible. false otherwise - public bool ValidateMesg(Mesg mesg) - { - if (m_validator == null) - return true; - - return m_validator.ValidateMesg(mesg); - } - - /// - /// Validate if a MessageDefinition is compatible with a protocol version - /// - /// Definition to validate - /// true if definition is compatible. false otherwise - public bool ValidateMesgDefn(MesgDefinition defn) - { - if (m_validator == null) - return true; - - return m_validator.ValidateMesgDefn(defn); - } - } // Class - - internal class V1Validator - : IValidator - { - /// - /// Validate if a Message is compatible with a protocol version - /// - /// Message to validate - /// true if message is compatible. false otherwise - public bool ValidateMesg(Mesg mesg) - { - if (mesg.DeveloperFields.Any()) - { - return false; - } - - foreach (var fld in mesg.Fields) - { - int typeNum = fld.Type & Fit.BaseTypeNumMask; - - if (typeNum > Fit.Byte) - { - return false; - } - } - - return true; - } - - /// - /// Validate if a MessageDefinition is compatible with a protocol version - /// - /// Definition to validate - /// true if definition is compatible. false otherwise - public bool ValidateMesgDefn(MesgDefinition defn) - { - if (defn.DeveloperFieldDefinitions.Any()) - { - return false; - } - - foreach (var fld in defn.GetFields()) - { - int typeNum = fld.Type & Fit.BaseTypeNumMask; - - if (typeNum > Fit.Byte) - { - return false; - } - } - - return true; - } - } -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Fit/Subfield.cs b/src/Garmin/FitSdk_prev/Dynastream/Fit/Subfield.cs deleted file mode 100644 index b7667557b..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Fit/Subfield.cs +++ /dev/null @@ -1,211 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - /// - /// The Subfield class represents an alternative field definition used - /// by dynamic fields. They can only be associated with a containing - /// field object. - /// - public class Subfield - { - #region Internal Classes - /// - /// The SubfieldMap class tracks the reference field/value pairs which indicate a field - /// should use the alternate subfield definition rather than the usual defn (allows Dynamic Fields) - /// - private class SubfieldMap - { - private byte refFieldNum; - private object refFieldValue; - - internal SubfieldMap(byte refFieldNum, object refFieldValue) - { - this.refFieldNum = refFieldNum; - this.refFieldValue = refFieldValue; - } - - internal SubfieldMap(SubfieldMap subfieldMap) - { - this.refFieldNum = subfieldMap.refFieldNum; - this.refFieldValue = subfieldMap.refFieldValue; - } - - /// - /// Checks if the reference fields in a given message indicate the subfield (alternate) - /// definition should be used - /// - /// message of interest - /// true if the subfield is active - internal bool CanMesgSupport(Mesg mesg) - { - Field field = mesg.GetField(refFieldNum); - - if (field != null) - { - object value = field.GetValue(0, Fit.SubfieldIndexMainField); - // Float refvalues are not supported - if (Convert.ToInt64(value) == Convert.ToInt64(refFieldValue)) - { - return true; - } - } - return false; - } - } - #endregion Internal Classes - - #region Fields - private string name; - private byte type; - private float scale; - private float offset; - private string units; - private List maps; - private List components; - #endregion // Fields - - #region Properties - internal string Name - { - get - { - return name; - } - } - - internal byte Type - { - get - { - return type; - } - } - - internal float Scale - { - get - { - return scale; - } - } - - internal float Offset - { - get - { - return offset; - } - } - - internal string Units - { - get - { - return units; - } - } - - internal List Components - { - get - { - return components; - } - } - #endregion // Properties - - #region Constructors - internal Subfield(Subfield subfield) - { - if (subfield == null) - { - this.name = "unknown"; - this.type = 0; - this.scale = 1f; - this.offset = 0f; - this.units = ""; - this.maps = new List(); - this.components = new List(); - return; - } - - this.name = subfield.name; - this.type = subfield.type; - this.scale = subfield.scale; - this.offset = subfield.offset; - this.units = subfield.units; - - this.maps = new List(); - foreach (SubfieldMap map in subfield.maps) - { - this.maps.Add(new SubfieldMap(map)); - } - this.components = new List(); - foreach (FieldComponent comp in subfield.components) - { - this.components.Add(new FieldComponent(comp)); - } - } - - internal Subfield(string name, byte type, float scale, float offset, string units) - { - this.name = name; - this.type = type; - this.scale = scale; - this.offset = offset; - this.units = units; - this.maps = new List(); - this.components = new List(); - } - #endregion // Constructors - - #region Methods - internal void AddMap(byte refFieldNum, object refFieldValue) - { - maps.Add(new SubfieldMap(refFieldNum, refFieldValue)); - } - - internal void AddComponent(FieldComponent newComponent) - { - components.Add(newComponent); - } - - /// - /// Checks if the reference fields in a given message indicate the subfield (alternate) - /// definition should be used - /// - /// message of interest - /// true if the subfield is active - public bool CanMesgSupport(Mesg mesg) - { - foreach (SubfieldMap map in maps) - { - if (map.CanMesgSupport(mesg)) - { - return true; - } - } - return false; - } - #endregion // Methods - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Utility/EndianBinaryReader.cs b/src/Garmin/FitSdk_prev/Dynastream/Utility/EndianBinaryReader.cs deleted file mode 100644 index adc554120..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Utility/EndianBinaryReader.cs +++ /dev/null @@ -1,160 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Utility -{ - /// - /// Extend framework BinaryReader to support BigEndian datasources. - /// When reading multibyte values, the bytes are reordered appropriately. - /// - public class EndianBinaryReader : BinaryReader - { - #region Fields - private bool isBigEndian = false; - #endregion - - #region Properties - public bool IsBigEndian - { - get { return isBigEndian; } - set { isBigEndian = value; } - } - #endregion - - #region Constructors - public EndianBinaryReader(Stream input, Encoding encoding, bool isBigEndian) - : base(input, encoding) - { - this.isBigEndian = isBigEndian; - } - - public EndianBinaryReader(Stream input, bool isBigEndian) - : this(input, Encoding.UTF8, isBigEndian) - { - } - #endregion - - #region Methods - public override short ReadInt16() - { - if (!IsBigEndian) - { - return base.ReadInt16(); - } - byte[] buffer = new byte[2]; - Read(buffer, 0, 2); - Array.Reverse(buffer); - - return BitConverter.ToInt16(buffer, 0); - } - - public override ushort ReadUInt16() - { - if (!IsBigEndian) - { - return base.ReadUInt16(); - } - byte[] buffer = new byte[2]; - Read(buffer, 0, 2); - Array.Reverse(buffer); - - return BitConverter.ToUInt16(buffer, 0); - } - - public override int ReadInt32() - { - if (!IsBigEndian) - { - return base.ReadInt32(); - } - byte[] buffer = new byte[4]; - Read(buffer, 0, 4); - Array.Reverse(buffer); - - return BitConverter.ToInt32(buffer, 0); - } - - public override uint ReadUInt32() - { - if (!IsBigEndian) - { - return base.ReadUInt32(); - } - byte[] buffer = new byte[4]; - Read(buffer, 0, 4); - Array.Reverse(buffer); - - return BitConverter.ToUInt32(buffer, 0); - } - - public override long ReadInt64() - { - if (!IsBigEndian) - { - return base.ReadInt64(); - } - byte[] buffer = new byte[8]; - Read(buffer, 0, 8); - Array.Reverse(buffer); - - return BitConverter.ToInt64(buffer, 0); - } - - public override ulong ReadUInt64() - { - if (!IsBigEndian) - { - return base.ReadUInt64(); - } - byte[] buffer = new byte[8]; - Read(buffer, 0, 8); - Array.Reverse(buffer); - - return BitConverter.ToUInt64(buffer, 0); - } - - public override float ReadSingle() - { - if (!IsBigEndian) - { - return base.ReadSingle(); - } - byte[] buffer = new byte[4]; - Read(buffer, 0, 4); - Array.Reverse(buffer); - - return BitConverter.ToSingle(buffer, 0); - } - - public override double ReadDouble() - { - if (!IsBigEndian) - { - return base.ReadDouble(); - } - byte[] buffer = new byte[8]; - Read(buffer, 0, 8); - Array.Reverse(buffer); - - return BitConverter.ToDouble(buffer, 0); - } - #endregion - } -} // namespace diff --git a/src/Garmin/FitSdk_prev/Dynastream/Utility/EndianBinaryWriter.cs b/src/Garmin/FitSdk_prev/Dynastream/Utility/EndianBinaryWriter.cs deleted file mode 100644 index 7a486139c..000000000 --- a/src/Garmin/FitSdk_prev/Dynastream/Utility/EndianBinaryWriter.cs +++ /dev/null @@ -1,152 +0,0 @@ -#region Copyright -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2023 Garmin International, Inc. -// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you -// may not use this file except in compliance with the Flexible and Interoperable Data -// Transfer (FIT) Protocol License. -///////////////////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.101Release -// Tag = production/release/21.101.00-0-gceb92d5 -///////////////////////////////////////////////////////////////////////////////////////////// - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Utility -{ - /// - /// Extend framework BinaryWriter to support BigEndian destinations. - /// When writing multibyte values, the bytes are reordered appropriately. - /// - public class EndianBinaryWriter : BinaryWriter - { - #region Fields - private bool isBigEndian = false; - #endregion - - #region Properties - public bool IsBigEndian - { - get { return isBigEndian; } - set { isBigEndian = value; } - } - #endregion - - #region Constructors - public EndianBinaryWriter(Stream output, Encoding encoding, bool isBigEndian) - : base(output, encoding) - { - this.isBigEndian = isBigEndian; - } - - public EndianBinaryWriter(Stream output, bool isBigEndian) - : this(output, Encoding.UTF8, isBigEndian) - { - } - #endregion - - #region Methods - public override void Write(short value) - { - if (!IsBigEndian) - { - base.Write(value); - return; - } - byte[] buffer = BitConverter.GetBytes(value); - Array.Reverse(buffer); - base.Write(buffer, 0, 2); - } - - public override void Write(ushort value) - { - if (!IsBigEndian) - { - base.Write(value); - return; - } - byte[] buffer = BitConverter.GetBytes(value); - Array.Reverse(buffer); - base.Write(buffer, 0, 2); - } - - public override void Write(int value) - { - if (!IsBigEndian) - { - base.Write(value); - return; - } - byte[] buffer = BitConverter.GetBytes(value); - Array.Reverse(buffer); - base.Write(buffer, 0, 4); - } - - public override void Write(uint value) - { - if (!IsBigEndian) - { - base.Write(value); - return; - } - byte[] buffer = BitConverter.GetBytes(value); - Array.Reverse(buffer); - base.Write(buffer, 0, 4); - } - - public override void Write(long value) - { - if (!IsBigEndian) - { - base.Write(value); - return; - } - byte[] buffer = BitConverter.GetBytes(value); - Array.Reverse(buffer); - base.Write(buffer, 0, 8); - } - - public override void Write(ulong value) - { - if (!IsBigEndian) - { - base.Write(value); - return; - } - byte[] buffer = BitConverter.GetBytes(value); - Array.Reverse(buffer); - base.Write(buffer, 0, 8); - } - - public override void Write(float value) - { - if (!IsBigEndian) - { - base.Write(value); - return; - } - byte[] buffer = BitConverter.GetBytes(value); - Array.Reverse(buffer); - base.Write(buffer, 0, 4); - } - - public override void Write(double value) - { - if (!IsBigEndian) - { - base.Write(value); - return; - } - byte[] buffer = BitConverter.GetBytes(value); - Array.Reverse(buffer); - base.Write(buffer, 0, 8); - } - #endregion - } -} // namespace diff --git a/src/Garmin/FitSdk_prev/Examples/ClassLib/ClassLib.csproj b/src/Garmin/FitSdk_prev/Examples/ClassLib/ClassLib.csproj deleted file mode 100644 index af0241e93..000000000 --- a/src/Garmin/FitSdk_prev/Examples/ClassLib/ClassLib.csproj +++ /dev/null @@ -1,103 +0,0 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {F9D616B2-8333-4556-8FBB-1F5C6907FB44} - Library - Properties - Fit - Fit - v4.5 - 512 - - - - - 3.5 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - - true - full - false - ..\..\ - DEBUG;TRACE - prompt - 4 - Fit.xml - 1591 - MinimumRecommendedRules.ruleset - false - true - - - pdbonly - true - ..\..\ - TRACE - prompt - 4 - Fit.xml - 1591 - false - true - - - - - 3.5 - - - 3.5 - - - 3.5 - - - - - - - %(FileName) - - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - - - diff --git a/src/Garmin/FitSdk_prev/Examples/ClassLib/Fit.xml b/src/Garmin/FitSdk_prev/Examples/ClassLib/Fit.xml deleted file mode 100644 index 0e3967cc5..000000000 --- a/src/Garmin/FitSdk_prev/Examples/ClassLib/Fit.xml +++ /dev/null @@ -1,18584 +0,0 @@ - - - - Fit - - - - - - BufferedMesgBroadcaster intercepts the incoming messages - from the given decode stream, buffers them, and offers - an opportunity to edit the messages before broadcasting - the messages to all registered listeners. - - - To edit the messages, an IMesgBroadcastPlugin must be - registered. All registered IMesgBroadcastPlugins are given - the opportunity to see each message as they are decoded, - as well as to see and edit the final list of - messages before broadcast to listeners - - - - - - Implements Dynastream CRC16 function - - - - - Event Args Class associated with the DeveloperFieldDescrtiption Event - - - - - This class will decode a .fit file reading the file header and any definition or data messages. - - - - - Reads the file header to check if the file is FIT. - Does not check CRC. - Returns true if file is FIT. - - Seekable (file)stream to parse - - - - Reads the FIT binary file header and crc to check compatibility and integrity. - Also checks data reords size. - Returns true if file is ok (not corrupt). - - Seekable (file)stream to parse. - - - - Reads a FIT binary file. - - Seekable (file)stream to parse. - - Returns true if reading finishes successfully. - - - - - Reads a FIT binary file. - - Seekable (file)stream to parse. - When true, skip file header. Also CRC will not be calculated. - - Returns true if reading finishes successfully. - - - - - Reads a FIT binary File - - Seekable (file)stream to parse. - Decode Mode to use for reading the file - - Returns true if reading finishes successfully. - - - - - - - - - - - - Mode used for Read Operations - - - - - Indicates that file contains valid Header and CRC data - - - - - Indicates that the Stream Contains a Header that is Corrupt - - - - - Indicates that the Stream does not contain a Header or CRC - - - - - Determines whether the specified is equal to the current . - - - true if the specified is equal to the current ; otherwise, false. - - The to compare with the current . - - - - Determines whether the specified is equal to the current . - - - true if the specified is equal to the current ; otherwise, false. - - - The to compare with the current . - - - - - Serves as a hash function for a particular type. - - - A hash code for the current . - - - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - - - A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: Value Meaning Less than zero This instance precedes in the sort order. Zero This instance occurs in the same position in the sort order as . Greater than zero This instance follows in the sort order. - - An object to compare with this instance. is not the same type as this instance. - - - - Retrieve the Native Field Number that this Developer Field Overrides - - - Native Field Number that is overridden if applicable, - otherwise - - - - - Represents a Developer Field Definition - - - - - Gets a boolean indicating if the Field Definition has associated meta - data - - - - - Gets the Field Number associated with the Developer Field - - - - - Gets the Number of bytes associated with the Developer Field - - - - - Gets the developer index of the Developer Field - - - - - Gets the current description message for the field - - - - - Gets the Associated Developer Id for the message - - - - - - - - - - - If description parameter is invalid - - - - - Gets the Value of the Application Version for the Field Description - - - - - Gets the Value of the Application Id for the Field Description - - - - - Gets the Value of the Field Definition Number for thbe Field Description - - - - - Supports generating binary .FIT files. Header, Message Definition and Message - data may be written. - - - - - If default ctor is used Header object may be manipulated if desired before Open is called. - - - - - Updates the data size and CRC in the file header - Updates file CRC - - - - - - - - - - - - - - - Extends System.Exception to provide application specific exceptions. - - - - - Implements .FIT header encode/decode. - - - - - Build a standard header with CRC. The CRC will be - precomputed and it is assumed no data is present yet. - - - - - Build a standard header with CRC. The CRC will be - precomputed and it is assumed no data is present yet. - - - - - Build header by decoding callers stream. - - - - - - Verify Header format is valid. - - - - - - Populate header object by decoding callers stream - - Readable stream - - - - Output header object to beginning of callers writeable stream. Crc should - be recalculated before calling. - - Writeable, Seekable stream. Position set to end of header - - - - Recompute the header CRC based on the current contents of the header object - - - - - - - - - - Replace an existing field, otherwise add a reference to fields list - - Caller allocated field - - - - Insert a field at the desired index. If the field already exists in the mesg it is first removed. - - Index to insert the field, if index is out of range, the field is added to the end of the list - Caller allocated field - - - - Removes the specified field from this message. - - The Field to be removed from this message. - - - - Removes all fields from this message that have been generated through - component expansion while decoding the source .FIT file. - - - - - The MesgBroadcaster manages Mesg and MesgDefinition events. Its - handlers should be connected to the source of Mesg and MesgDef events - (such as a file decoder). - Clients may subscribe to the Broadcasters events (Mesg, Mesg Def - or specofic Profile Mesg) - - - - - Architecture defaults to Little Endian (unless decoded from an binary defn as Big Endian) - This could be exposed in the future to programatically create BE streams. - - - - - Represents the Fit Profile including message, field and type definition. - - - - - Implements the AccelerometerData profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - - - returns number of elements in field SampleTimeOffset - - - - Retrieves the SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the accelerometer sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in accel_x and accel_y and accel_z - 0 based index of SampleTimeOffset element to retrieve - Returns nullable ushort representing the SampleTimeOffset field - - - - Set SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the accelerometer sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in accel_x and accel_y and accel_z - 0 based index of sample_time_offset - Nullable field value to be set - - - - - - returns number of elements in field AccelX - - - - Retrieves the AccelX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of AccelX element to retrieve - Returns nullable ushort representing the AccelX field - - - - Set AccelX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of accel_x - Nullable field value to be set - - - - - - returns number of elements in field AccelY - - - - Retrieves the AccelY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of AccelY element to retrieve - Returns nullable ushort representing the AccelY field - - - - Set AccelY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of accel_y - Nullable field value to be set - - - - - - returns number of elements in field AccelZ - - - - Retrieves the AccelZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of AccelZ element to retrieve - Returns nullable ushort representing the AccelZ field - - - - Set AccelZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of accel_z - Nullable field value to be set - - - - - - returns number of elements in field CalibratedAccelX - - - - Retrieves the CalibratedAccelX field - Units: g - Comment: Calibrated accel reading - 0 based index of CalibratedAccelX element to retrieve - Returns nullable float representing the CalibratedAccelX field - - - - Set CalibratedAccelX field - Units: g - Comment: Calibrated accel reading - 0 based index of calibrated_accel_x - Nullable field value to be set - - - - - - returns number of elements in field CalibratedAccelY - - - - Retrieves the CalibratedAccelY field - Units: g - Comment: Calibrated accel reading - 0 based index of CalibratedAccelY element to retrieve - Returns nullable float representing the CalibratedAccelY field - - - - Set CalibratedAccelY field - Units: g - Comment: Calibrated accel reading - 0 based index of calibrated_accel_y - Nullable field value to be set - - - - - - returns number of elements in field CalibratedAccelZ - - - - Retrieves the CalibratedAccelZ field - Units: g - Comment: Calibrated accel reading - 0 based index of CalibratedAccelZ element to retrieve - Returns nullable float representing the CalibratedAccelZ field - - - - Set CalibratedAccelZ field - Units: g - Comment: Calibrated accel reading - 0 based index of calibrated_accel_z - Nullable field value to be set - - - - - - returns number of elements in field CompressedCalibratedAccelX - - - - Retrieves the CompressedCalibratedAccelX field - Units: mG - Comment: Calibrated accel reading - 0 based index of CompressedCalibratedAccelX element to retrieve - Returns nullable short representing the CompressedCalibratedAccelX field - - - - Set CompressedCalibratedAccelX field - Units: mG - Comment: Calibrated accel reading - 0 based index of compressed_calibrated_accel_x - Nullable field value to be set - - - - - - returns number of elements in field CompressedCalibratedAccelY - - - - Retrieves the CompressedCalibratedAccelY field - Units: mG - Comment: Calibrated accel reading - 0 based index of CompressedCalibratedAccelY element to retrieve - Returns nullable short representing the CompressedCalibratedAccelY field - - - - Set CompressedCalibratedAccelY field - Units: mG - Comment: Calibrated accel reading - 0 based index of compressed_calibrated_accel_y - Nullable field value to be set - - - - - - returns number of elements in field CompressedCalibratedAccelZ - - - - Retrieves the CompressedCalibratedAccelZ field - Units: mG - Comment: Calibrated accel reading - 0 based index of CompressedCalibratedAccelZ element to retrieve - Returns nullable short representing the CompressedCalibratedAccelZ field - - - - Set CompressedCalibratedAccelZ field - Units: mG - Comment: Calibrated accel reading - 0 based index of compressed_calibrated_accel_z - Nullable field value to be set - - - - Implements the Activity profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Comment: Exclude pauses - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Comment: Exclude pauses - Nullable field value to be set - - - - Retrieves the NumSessions field - Returns nullable ushort representing the NumSessions field - - - - Set NumSessions field - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable Activity enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Event field - Returns nullable Event enum representing the Event field - - - - Set Event field - Nullable field value to be set - - - - Retrieves the EventType field - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Nullable field value to be set - - - - Retrieves the LocalTimestamp field - Comment: timestamp epoch expressed in local time, used to convert activity timestamps to local time - Returns nullable uint representing the LocalTimestamp field - - - - Set LocalTimestamp field - Comment: timestamp epoch expressed in local time, used to convert activity timestamps to local time - Nullable field value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Implements the AntChannelId profile message. - - - - - Field Numbers for - - - - - Retrieves the ChannelNumber field - Returns nullable byte representing the ChannelNumber field - - - - Set ChannelNumber field - Nullable field value to be set - - - - Retrieves the DeviceType field - Returns nullable byte representing the DeviceType field - - - - Set DeviceType field - Nullable field value to be set - - - - Retrieves the DeviceNumber field - Returns nullable ushort representing the DeviceNumber field - - - - Set DeviceNumber field - Nullable field value to be set - - - - Retrieves the TransmissionType field - Returns nullable byte representing the TransmissionType field - - - - Set TransmissionType field - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Nullable field value to be set - - - - Implements the AntRx profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the FractionalTimestamp field - Units: s - Returns nullable float representing the FractionalTimestamp field - - - - Set FractionalTimestamp field - Units: s - Nullable field value to be set - - - - Retrieves the MesgId field - Returns nullable byte representing the MesgId field - - - - Set MesgId field - Nullable field value to be set - - - - - - returns number of elements in field MesgData - - - - Retrieves the MesgData field - 0 based index of MesgData element to retrieve - Returns nullable byte representing the MesgData field - - - - Set MesgData field - 0 based index of mesg_data - Nullable field value to be set - - - - Retrieves the ChannelNumber field - Returns nullable byte representing the ChannelNumber field - - - - Set ChannelNumber field - Nullable field value to be set - - - - - - returns number of elements in field Data - - - - Retrieves the Data field - 0 based index of Data element to retrieve - Returns nullable byte representing the Data field - - - - Set Data field - 0 based index of data - Nullable field value to be set - - - - Implements the AntTx profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the FractionalTimestamp field - Units: s - Returns nullable float representing the FractionalTimestamp field - - - - Set FractionalTimestamp field - Units: s - Nullable field value to be set - - - - Retrieves the MesgId field - Returns nullable byte representing the MesgId field - - - - Set MesgId field - Nullable field value to be set - - - - - - returns number of elements in field MesgData - - - - Retrieves the MesgData field - 0 based index of MesgData element to retrieve - Returns nullable byte representing the MesgData field - - - - Set MesgData field - 0 based index of mesg_data - Nullable field value to be set - - - - Retrieves the ChannelNumber field - Returns nullable byte representing the ChannelNumber field - - - - Set ChannelNumber field - Nullable field value to be set - - - - - - returns number of elements in field Data - - - - Retrieves the Data field - 0 based index of Data element to retrieve - Returns nullable byte representing the Data field - - - - Set Data field - 0 based index of data - Nullable field value to be set - - - - Implements the AviationAttitude profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Timestamp message was output - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Timestamp message was output - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Nullable field value to be set - - - - - - returns number of elements in field SystemTime - - - - Retrieves the SystemTime field - Units: ms - Comment: System time associated with sample expressed in ms. - 0 based index of SystemTime element to retrieve - Returns nullable uint representing the SystemTime field - - - - Set SystemTime field - Units: ms - Comment: System time associated with sample expressed in ms. - 0 based index of system_time - Nullable field value to be set - - - - - - returns number of elements in field Pitch - - - - Retrieves the Pitch field - Units: radians - Comment: Range -PI/2 to +PI/2 - 0 based index of Pitch element to retrieve - Returns nullable float representing the Pitch field - - - - Set Pitch field - Units: radians - Comment: Range -PI/2 to +PI/2 - 0 based index of pitch - Nullable field value to be set - - - - - - returns number of elements in field Roll - - - - Retrieves the Roll field - Units: radians - Comment: Range -PI to +PI - 0 based index of Roll element to retrieve - Returns nullable float representing the Roll field - - - - Set Roll field - Units: radians - Comment: Range -PI to +PI - 0 based index of roll - Nullable field value to be set - - - - - - returns number of elements in field AccelLateral - - - - Retrieves the AccelLateral field - Units: m/s^2 - Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - 0 based index of AccelLateral element to retrieve - Returns nullable float representing the AccelLateral field - - - - Set AccelLateral field - Units: m/s^2 - Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - 0 based index of accel_lateral - Nullable field value to be set - - - - - - returns number of elements in field AccelNormal - - - - Retrieves the AccelNormal field - Units: m/s^2 - Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - 0 based index of AccelNormal element to retrieve - Returns nullable float representing the AccelNormal field - - - - Set AccelNormal field - Units: m/s^2 - Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - 0 based index of accel_normal - Nullable field value to be set - - - - - - returns number of elements in field TurnRate - - - - Retrieves the TurnRate field - Units: radians/second - Comment: Range -8.727 to +8.727 (-500 degs/sec to +500 degs/sec) - 0 based index of TurnRate element to retrieve - Returns nullable float representing the TurnRate field - - - - Set TurnRate field - Units: radians/second - Comment: Range -8.727 to +8.727 (-500 degs/sec to +500 degs/sec) - 0 based index of turn_rate - Nullable field value to be set - - - - - - returns number of elements in field Stage - - - - Retrieves the Stage field - 0 based index of Stage element to retrieve - Returns nullable AttitudeStage enum representing the Stage field - - - - Set Stage field - 0 based index of stage - Nullable field value to be set - - - - - - returns number of elements in field AttitudeStageComplete - - - - Retrieves the AttitudeStageComplete field - Units: % - Comment: The percent complete of the current attitude stage. Set to 0 for attitude stages 0, 1 and 2 and to 100 for attitude stage 3 by AHRS modules that do not support it. Range - 100 - 0 based index of AttitudeStageComplete element to retrieve - Returns nullable byte representing the AttitudeStageComplete field - - - - Set AttitudeStageComplete field - Units: % - Comment: The percent complete of the current attitude stage. Set to 0 for attitude stages 0, 1 and 2 and to 100 for attitude stage 3 by AHRS modules that do not support it. Range - 100 - 0 based index of attitude_stage_complete - Nullable field value to be set - - - - - - returns number of elements in field Track - - - - Retrieves the Track field - Units: radians - Comment: Track Angle/Heading Range 0 - 2pi - 0 based index of Track element to retrieve - Returns nullable float representing the Track field - - - - Set Track field - Units: radians - Comment: Track Angle/Heading Range 0 - 2pi - 0 based index of track - Nullable field value to be set - - - - - - returns number of elements in field Validity - - - - Retrieves the Validity field - 0 based index of Validity element to retrieve - Returns nullable ushort representing the Validity field - - - - Set Validity field - 0 based index of validity - Nullable field value to be set - - - - Implements the BarometerData profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - - - returns number of elements in field SampleTimeOffset - - - - Retrieves the SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the barometer sample with the corrosponding index was taken. The samples may span across seconds. Array size must match the number of samples in baro_cal - 0 based index of SampleTimeOffset element to retrieve - Returns nullable ushort representing the SampleTimeOffset field - - - - Set SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the barometer sample with the corrosponding index was taken. The samples may span across seconds. Array size must match the number of samples in baro_cal - 0 based index of sample_time_offset - Nullable field value to be set - - - - - - returns number of elements in field BaroPres - - - - Retrieves the BaroPres field - Units: Pa - Comment: These are the raw ADC reading. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of BaroPres element to retrieve - Returns nullable uint representing the BaroPres field - - - - Set BaroPres field - Units: Pa - Comment: These are the raw ADC reading. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of baro_pres - Nullable field value to be set - - - - Implements the BikeProfile profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the Odometer field - Units: m - Returns nullable float representing the Odometer field - - - - Set Odometer field - Units: m - Nullable field value to be set - - - - Retrieves the BikeSpdAntId field - Returns nullable ushort representing the BikeSpdAntId field - - - - Set BikeSpdAntId field - Nullable field value to be set - - - - Retrieves the BikeCadAntId field - Returns nullable ushort representing the BikeCadAntId field - - - - Set BikeCadAntId field - Nullable field value to be set - - - - Retrieves the BikeSpdcadAntId field - Returns nullable ushort representing the BikeSpdcadAntId field - - - - Set BikeSpdcadAntId field - Nullable field value to be set - - - - Retrieves the BikePowerAntId field - Returns nullable ushort representing the BikePowerAntId field - - - - Set BikePowerAntId field - Nullable field value to be set - - - - Retrieves the CustomWheelsize field - Units: m - Returns nullable float representing the CustomWheelsize field - - - - Set CustomWheelsize field - Units: m - Nullable field value to be set - - - - Retrieves the AutoWheelsize field - Units: m - Returns nullable float representing the AutoWheelsize field - - - - Set AutoWheelsize field - Units: m - Nullable field value to be set - - - - Retrieves the BikeWeight field - Units: kg - Returns nullable float representing the BikeWeight field - - - - Set BikeWeight field - Units: kg - Nullable field value to be set - - - - Retrieves the PowerCalFactor field - Units: % - Returns nullable float representing the PowerCalFactor field - - - - Set PowerCalFactor field - Units: % - Nullable field value to be set - - - - Retrieves the AutoWheelCal field - Returns nullable Bool enum representing the AutoWheelCal field - - - - Set AutoWheelCal field - Nullable field value to be set - - - - Retrieves the AutoPowerZero field - Returns nullable Bool enum representing the AutoPowerZero field - - - - Set AutoPowerZero field - Nullable field value to be set - - - - Retrieves the Id field - Returns nullable byte representing the Id field - - - - Set Id field - Nullable field value to be set - - - - Retrieves the SpdEnabled field - Returns nullable Bool enum representing the SpdEnabled field - - - - Set SpdEnabled field - Nullable field value to be set - - - - Retrieves the CadEnabled field - Returns nullable Bool enum representing the CadEnabled field - - - - Set CadEnabled field - Nullable field value to be set - - - - Retrieves the SpdcadEnabled field - Returns nullable Bool enum representing the SpdcadEnabled field - - - - Set SpdcadEnabled field - Nullable field value to be set - - - - Retrieves the PowerEnabled field - Returns nullable Bool enum representing the PowerEnabled field - - - - Set PowerEnabled field - Nullable field value to be set - - - - Retrieves the CrankLength field - Units: mm - Returns nullable float representing the CrankLength field - - - - Set CrankLength field - Units: mm - Nullable field value to be set - - - - Retrieves the Enabled field - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Nullable field value to be set - - - - Retrieves the BikeSpdAntIdTransType field - Returns nullable byte representing the BikeSpdAntIdTransType field - - - - Set BikeSpdAntIdTransType field - Nullable field value to be set - - - - Retrieves the BikeCadAntIdTransType field - Returns nullable byte representing the BikeCadAntIdTransType field - - - - Set BikeCadAntIdTransType field - Nullable field value to be set - - - - Retrieves the BikeSpdcadAntIdTransType field - Returns nullable byte representing the BikeSpdcadAntIdTransType field - - - - Set BikeSpdcadAntIdTransType field - Nullable field value to be set - - - - Retrieves the BikePowerAntIdTransType field - Returns nullable byte representing the BikePowerAntIdTransType field - - - - Set BikePowerAntIdTransType field - Nullable field value to be set - - - - Retrieves the OdometerRollover field - Comment: Rollover counter that can be used to extend the odometer - Returns nullable byte representing the OdometerRollover field - - - - Set OdometerRollover field - Comment: Rollover counter that can be used to extend the odometer - Nullable field value to be set - - - - Retrieves the FrontGearNum field - Comment: Number of front gears - Returns nullable byte representing the FrontGearNum field - - - - Set FrontGearNum field - Comment: Number of front gears - Nullable field value to be set - - - - - - returns number of elements in field FrontGear - - - - Retrieves the FrontGear field - Comment: Number of teeth on each gear 0 is innermost - 0 based index of FrontGear element to retrieve - Returns nullable byte representing the FrontGear field - - - - Set FrontGear field - Comment: Number of teeth on each gear 0 is innermost - 0 based index of front_gear - Nullable field value to be set - - - - Retrieves the RearGearNum field - Comment: Number of rear gears - Returns nullable byte representing the RearGearNum field - - - - Set RearGearNum field - Comment: Number of rear gears - Nullable field value to be set - - - - - - returns number of elements in field RearGear - - - - Retrieves the RearGear field - Comment: Number of teeth on each gear 0 is innermost - 0 based index of RearGear element to retrieve - Returns nullable byte representing the RearGear field - - - - Set RearGear field - Comment: Number of teeth on each gear 0 is innermost - 0 based index of rear_gear - Nullable field value to be set - - - - Retrieves the ShimanoDi2Enabled field - Returns nullable Bool enum representing the ShimanoDi2Enabled field - - - - Set ShimanoDi2Enabled field - Nullable field value to be set - - - - Implements the BloodPressure profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the SystolicPressure field - Units: mmHg - Returns nullable ushort representing the SystolicPressure field - - - - Set SystolicPressure field - Units: mmHg - Nullable field value to be set - - - - Retrieves the DiastolicPressure field - Units: mmHg - Returns nullable ushort representing the DiastolicPressure field - - - - Set DiastolicPressure field - Units: mmHg - Nullable field value to be set - - - - Retrieves the MeanArterialPressure field - Units: mmHg - Returns nullable ushort representing the MeanArterialPressure field - - - - Set MeanArterialPressure field - Units: mmHg - Nullable field value to be set - - - - Retrieves the Map3SampleMean field - Units: mmHg - Returns nullable ushort representing the Map3SampleMean field - - - - Set Map3SampleMean field - Units: mmHg - Nullable field value to be set - - - - Retrieves the MapMorningValues field - Units: mmHg - Returns nullable ushort representing the MapMorningValues field - - - - Set MapMorningValues field - Units: mmHg - Nullable field value to be set - - - - Retrieves the MapEveningValues field - Units: mmHg - Returns nullable ushort representing the MapEveningValues field - - - - Set MapEveningValues field - Units: mmHg - Nullable field value to be set - - - - Retrieves the HeartRate field - Units: bpm - Returns nullable byte representing the HeartRate field - - - - Set HeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the HeartRateType field - Returns nullable HrType enum representing the HeartRateType field - - - - Set HeartRateType field - Nullable field value to be set - - - - Retrieves the Status field - Returns nullable BpStatus enum representing the Status field - - - - Set Status field - Nullable field value to be set - - - - Retrieves the UserProfileIndex field - Comment: Associates this blood pressure message to a user. This corresponds to the index of the user profile message in the blood pressure file. - Returns nullable ushort representing the UserProfileIndex field - - - - Set UserProfileIndex field - Comment: Associates this blood pressure message to a user. This corresponds to the index of the user profile message in the blood pressure file. - Nullable field value to be set - - - - Implements the CadenceZone profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HighValue field - Units: rpm - Returns nullable byte representing the HighValue field - - - - Set HighValue field - Units: rpm - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Implements the CameraEvent profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp. - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - Retrieves the CameraEventType field - Returns nullable CameraEventType enum representing the CameraEventType field - - - - Set CameraEventType field - Nullable field value to be set - - - - Retrieves the CameraFileUuid field - Returns byte[] representing the CameraFileUuid field - - - - Retrieves the CameraFileUuid field - Returns String representing the CameraFileUuid field - - - - Set CameraFileUuid field - field value to be set - - - - Set CameraFileUuid field - field value to be set - - - - Retrieves the CameraOrientation field - Returns nullable CameraOrientationType enum representing the CameraOrientation field - - - - Set CameraOrientation field - Nullable field value to be set - - - - Implements the Capabilities profile message. - - - - - Field Numbers for - - - - - - - returns number of elements in field Languages - - - - Retrieves the Languages field - Comment: Use language_bits_x types where x is index of array. - 0 based index of Languages element to retrieve - Returns nullable byte representing the Languages field - - - - Set Languages field - Comment: Use language_bits_x types where x is index of array. - 0 based index of languages - Nullable field value to be set - - - - - - returns number of elements in field Sports - - - - Retrieves the Sports field - Comment: Use sport_bits_x types where x is index of array. - 0 based index of Sports element to retrieve - Returns nullable byte representing the Sports field - - - - Set Sports field - Comment: Use sport_bits_x types where x is index of array. - 0 based index of sports - Nullable field value to be set - - - - Retrieves the WorkoutsSupported field - Returns nullable uint representing the WorkoutsSupported field - - - - Set WorkoutsSupported field - Nullable field value to be set - - - - Retrieves the ConnectivitySupported field - Returns nullable uint representing the ConnectivitySupported field - - - - Set ConnectivitySupported field - Nullable field value to be set - - - - Implements the ClimbPro profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the ClimbProEvent field - Returns nullable ClimbProEvent enum representing the ClimbProEvent field - - - - Set ClimbProEvent field - Nullable field value to be set - - - - Retrieves the ClimbNumber field - Returns nullable ushort representing the ClimbNumber field - - - - Set ClimbNumber field - Nullable field value to be set - - - - Retrieves the ClimbCategory field - Returns nullable byte representing the ClimbCategory field - - - - Set ClimbCategory field - Nullable field value to be set - - - - Retrieves the CurrentDist field - Units: m - Returns nullable float representing the CurrentDist field - - - - Set CurrentDist field - Units: m - Nullable field value to be set - - - - Implements the Connectivity profile message. - - - - - Field Numbers for - - - - - Retrieves the BluetoothEnabled field - Comment: Use Bluetooth for connectivity features - Returns nullable Bool enum representing the BluetoothEnabled field - - - - Set BluetoothEnabled field - Comment: Use Bluetooth for connectivity features - Nullable field value to be set - - - - Retrieves the BluetoothLeEnabled field - Comment: Use Bluetooth Low Energy for connectivity features - Returns nullable Bool enum representing the BluetoothLeEnabled field - - - - Set BluetoothLeEnabled field - Comment: Use Bluetooth Low Energy for connectivity features - Nullable field value to be set - - - - Retrieves the AntEnabled field - Comment: Use ANT for connectivity features - Returns nullable Bool enum representing the AntEnabled field - - - - Set AntEnabled field - Comment: Use ANT for connectivity features - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the LiveTrackingEnabled field - Returns nullable Bool enum representing the LiveTrackingEnabled field - - - - Set LiveTrackingEnabled field - Nullable field value to be set - - - - Retrieves the WeatherConditionsEnabled field - Returns nullable Bool enum representing the WeatherConditionsEnabled field - - - - Set WeatherConditionsEnabled field - Nullable field value to be set - - - - Retrieves the WeatherAlertsEnabled field - Returns nullable Bool enum representing the WeatherAlertsEnabled field - - - - Set WeatherAlertsEnabled field - Nullable field value to be set - - - - Retrieves the AutoActivityUploadEnabled field - Returns nullable Bool enum representing the AutoActivityUploadEnabled field - - - - Set AutoActivityUploadEnabled field - Nullable field value to be set - - - - Retrieves the CourseDownloadEnabled field - Returns nullable Bool enum representing the CourseDownloadEnabled field - - - - Set CourseDownloadEnabled field - Nullable field value to be set - - - - Retrieves the WorkoutDownloadEnabled field - Returns nullable Bool enum representing the WorkoutDownloadEnabled field - - - - Set WorkoutDownloadEnabled field - Nullable field value to be set - - - - Retrieves the GpsEphemerisDownloadEnabled field - Returns nullable Bool enum representing the GpsEphemerisDownloadEnabled field - - - - Set GpsEphemerisDownloadEnabled field - Nullable field value to be set - - - - Retrieves the IncidentDetectionEnabled field - Returns nullable Bool enum representing the IncidentDetectionEnabled field - - - - Set IncidentDetectionEnabled field - Nullable field value to be set - - - - Retrieves the GrouptrackEnabled field - Returns nullable Bool enum representing the GrouptrackEnabled field - - - - Set GrouptrackEnabled field - Nullable field value to be set - - - - Implements the Course profile message. - - - - - Field Numbers for - - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the Capabilities field - Returns nullable uint representing the Capabilities field - - - - Set Capabilities field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Implements the CoursePoint profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Returns nullable float representing the Distance field - - - - Set Distance field - Units: m - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable CoursePoint enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the Favorite field - Returns nullable Bool enum representing the Favorite field - - - - Set Favorite field - Nullable field value to be set - - - - Implements the DeveloperDataId profile message. - - - - - Field Numbers for - - - - - - - returns number of elements in field DeveloperId - - - - Retrieves the DeveloperId field - 0 based index of DeveloperId element to retrieve - Returns nullable byte representing the DeveloperId field - - - - Set DeveloperId field - 0 based index of developer_id - Nullable field value to be set - - - - - - returns number of elements in field ApplicationId - - - - Retrieves the ApplicationId field - 0 based index of ApplicationId element to retrieve - Returns nullable byte representing the ApplicationId field - - - - Set ApplicationId field - 0 based index of application_id - Nullable field value to be set - - - - Retrieves the ManufacturerId field - Returns nullable ushort representing the ManufacturerId field - - - - Set ManufacturerId field - Nullable field value to be set - - - - Retrieves the DeveloperDataIndex field - Returns nullable byte representing the DeveloperDataIndex field - - - - Set DeveloperDataIndex field - Nullable field value to be set - - - - Retrieves the ApplicationVersion field - Returns nullable uint representing the ApplicationVersion field - - - - Set ApplicationVersion field - Nullable field value to be set - - - - Implements the DeviceAuxBatteryInfo profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Nullable field value to be set - - - - Retrieves the BatteryVoltage field - Units: V - Returns nullable float representing the BatteryVoltage field - - - - Set BatteryVoltage field - Units: V - Nullable field value to be set - - - - Retrieves the BatteryStatus field - Returns nullable byte representing the BatteryStatus field - - - - Set BatteryStatus field - Nullable field value to be set - - - - Retrieves the BatteryIdentifier field - Returns nullable byte representing the BatteryIdentifier field - - - - Set BatteryIdentifier field - Nullable field value to be set - - - - Implements the DeviceInfo profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Nullable field value to be set - - - - Retrieves the DeviceType field - Returns nullable byte representing the DeviceType field - - - - Set DeviceType field - Nullable field value to be set - - - - Retrieves the BleDeviceType subfield - Nullable byte representing the BleDeviceType subfield - - - - - Set BleDeviceType subfield - Subfield value to be set - - - - Retrieves the AntplusDeviceType subfield - Nullable byte representing the AntplusDeviceType subfield - - - - - Set AntplusDeviceType subfield - Subfield value to be set - - - - Retrieves the AntDeviceType subfield - Nullable byte representing the AntDeviceType subfield - - - - - Set AntDeviceType subfield - Subfield value to be set - - - - Retrieves the LocalDeviceType subfield - Nullable byte representing the LocalDeviceType subfield - - - - - Set LocalDeviceType subfield - Subfield value to be set - - - - Retrieves the Manufacturer field - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Nullable field value to be set - - - - Retrieves the SerialNumber field - Returns nullable uint representing the SerialNumber field - - - - Set SerialNumber field - Nullable field value to be set - - - - Retrieves the Product field - Returns nullable ushort representing the Product field - - - - Set Product field - Nullable field value to be set - - - - Retrieves the FaveroProduct subfield - Nullable ushort representing the FaveroProduct subfield - - - - - Set FaveroProduct subfield - Subfield value to be set - - - - Retrieves the GarminProduct subfield - Nullable ushort representing the GarminProduct subfield - - - - - Set GarminProduct subfield - Subfield value to be set - - - - Retrieves the SoftwareVersion field - Returns nullable float representing the SoftwareVersion field - - - - Set SoftwareVersion field - Nullable field value to be set - - - - Retrieves the HardwareVersion field - Returns nullable byte representing the HardwareVersion field - - - - Set HardwareVersion field - Nullable field value to be set - - - - Retrieves the CumOperatingTime field - Units: s - Comment: Reset by new battery or charge. - Returns nullable uint representing the CumOperatingTime field - - - - Set CumOperatingTime field - Units: s - Comment: Reset by new battery or charge. - Nullable field value to be set - - - - Retrieves the BatteryVoltage field - Units: V - Returns nullable float representing the BatteryVoltage field - - - - Set BatteryVoltage field - Units: V - Nullable field value to be set - - - - Retrieves the BatteryStatus field - Returns nullable byte representing the BatteryStatus field - - - - Set BatteryStatus field - Nullable field value to be set - - - - Retrieves the SensorPosition field - Comment: Indicates the location of the sensor - Returns nullable BodyLocation enum representing the SensorPosition field - - - - Set SensorPosition field - Comment: Indicates the location of the sensor - Nullable field value to be set - - - - Retrieves the Descriptor field - Comment: Used to describe the sensor or location - Returns byte[] representing the Descriptor field - - - - Retrieves the Descriptor field - Comment: Used to describe the sensor or location - Returns String representing the Descriptor field - - - - Set Descriptor field - Comment: Used to describe the sensor or location - field value to be set - - - - Set Descriptor field - Comment: Used to describe the sensor or location - field value to be set - - - - Retrieves the AntTransmissionType field - Returns nullable byte representing the AntTransmissionType field - - - - Set AntTransmissionType field - Nullable field value to be set - - - - Retrieves the AntDeviceNumber field - Returns nullable ushort representing the AntDeviceNumber field - - - - Set AntDeviceNumber field - Nullable field value to be set - - - - Retrieves the AntNetwork field - Returns nullable AntNetwork enum representing the AntNetwork field - - - - Set AntNetwork field - Nullable field value to be set - - - - Retrieves the SourceType field - Returns nullable SourceType enum representing the SourceType field - - - - Set SourceType field - Nullable field value to be set - - - - Retrieves the ProductName field - Comment: Optional free form string to indicate the devices name or model - Returns byte[] representing the ProductName field - - - - Retrieves the ProductName field - Comment: Optional free form string to indicate the devices name or model - Returns String representing the ProductName field - - - - Set ProductName field - Comment: Optional free form string to indicate the devices name or model - field value to be set - - - - Set ProductName field - Comment: Optional free form string to indicate the devices name or model - field value to be set - - - - Retrieves the BatteryLevel field - Units: % - Returns nullable byte representing the BatteryLevel field - - - - Set BatteryLevel field - Units: % - Nullable field value to be set - - - - Implements the DeviceSettings profile message. - - - - - Field Numbers for - - - - - Retrieves the ActiveTimeZone field - Comment: Index into time zone arrays. - Returns nullable byte representing the ActiveTimeZone field - - - - Set ActiveTimeZone field - Comment: Index into time zone arrays. - Nullable field value to be set - - - - Retrieves the UtcOffset field - Comment: Offset from system time. Required to convert timestamp from system time to UTC. - Returns nullable uint representing the UtcOffset field - - - - Set UtcOffset field - Comment: Offset from system time. Required to convert timestamp from system time to UTC. - Nullable field value to be set - - - - - - returns number of elements in field TimeOffset - - - - Retrieves the TimeOffset field - Units: s - Comment: Offset from system time. - 0 based index of TimeOffset element to retrieve - Returns nullable uint representing the TimeOffset field - - - - Set TimeOffset field - Units: s - Comment: Offset from system time. - 0 based index of time_offset - Nullable field value to be set - - - - - - returns number of elements in field TimeMode - - - - Retrieves the TimeMode field - Comment: Display mode for the time - 0 based index of TimeMode element to retrieve - Returns nullable TimeMode enum representing the TimeMode field - - - - Set TimeMode field - Comment: Display mode for the time - 0 based index of time_mode - Nullable field value to be set - - - - - - returns number of elements in field TimeZoneOffset - - - - Retrieves the TimeZoneOffset field - Units: hr - Comment: timezone offset in 1/4 hour increments - 0 based index of TimeZoneOffset element to retrieve - Returns nullable float representing the TimeZoneOffset field - - - - Set TimeZoneOffset field - Units: hr - Comment: timezone offset in 1/4 hour increments - 0 based index of time_zone_offset - Nullable field value to be set - - - - Retrieves the BacklightMode field - Comment: Mode for backlight - Returns nullable BacklightMode enum representing the BacklightMode field - - - - Set BacklightMode field - Comment: Mode for backlight - Nullable field value to be set - - - - Retrieves the ActivityTrackerEnabled field - Comment: Enabled state of the activity tracker functionality - Returns nullable Bool enum representing the ActivityTrackerEnabled field - - - - Set ActivityTrackerEnabled field - Comment: Enabled state of the activity tracker functionality - Nullable field value to be set - - - - Retrieves the ClockTime field - Comment: UTC timestamp used to set the devices clock and date - Returns DateTime representing the ClockTime field - - - - Set ClockTime field - Comment: UTC timestamp used to set the devices clock and date - Nullable field value to be set - - - - - - returns number of elements in field PagesEnabled - - - - Retrieves the PagesEnabled field - Comment: Bitfield to configure enabled screens for each supported loop - 0 based index of PagesEnabled element to retrieve - Returns nullable ushort representing the PagesEnabled field - - - - Set PagesEnabled field - Comment: Bitfield to configure enabled screens for each supported loop - 0 based index of pages_enabled - Nullable field value to be set - - - - Retrieves the MoveAlertEnabled field - Comment: Enabled state of the move alert - Returns nullable Bool enum representing the MoveAlertEnabled field - - - - Set MoveAlertEnabled field - Comment: Enabled state of the move alert - Nullable field value to be set - - - - Retrieves the DateMode field - Comment: Display mode for the date - Returns nullable DateMode enum representing the DateMode field - - - - Set DateMode field - Comment: Display mode for the date - Nullable field value to be set - - - - Retrieves the DisplayOrientation field - Returns nullable DisplayOrientation enum representing the DisplayOrientation field - - - - Set DisplayOrientation field - Nullable field value to be set - - - - Retrieves the MountingSide field - Returns nullable Side enum representing the MountingSide field - - - - Set MountingSide field - Nullable field value to be set - - - - - - returns number of elements in field DefaultPage - - - - Retrieves the DefaultPage field - Comment: Bitfield to indicate one page as default for each supported loop - 0 based index of DefaultPage element to retrieve - Returns nullable ushort representing the DefaultPage field - - - - Set DefaultPage field - Comment: Bitfield to indicate one page as default for each supported loop - 0 based index of default_page - Nullable field value to be set - - - - Retrieves the AutosyncMinSteps field - Units: steps - Comment: Minimum steps before an autosync can occur - Returns nullable ushort representing the AutosyncMinSteps field - - - - Set AutosyncMinSteps field - Units: steps - Comment: Minimum steps before an autosync can occur - Nullable field value to be set - - - - Retrieves the AutosyncMinTime field - Units: minutes - Comment: Minimum minutes before an autosync can occur - Returns nullable ushort representing the AutosyncMinTime field - - - - Set AutosyncMinTime field - Units: minutes - Comment: Minimum minutes before an autosync can occur - Nullable field value to be set - - - - Retrieves the LactateThresholdAutodetectEnabled field - Comment: Enable auto-detect setting for the lactate threshold feature. - Returns nullable Bool enum representing the LactateThresholdAutodetectEnabled field - - - - Set LactateThresholdAutodetectEnabled field - Comment: Enable auto-detect setting for the lactate threshold feature. - Nullable field value to be set - - - - Retrieves the BleAutoUploadEnabled field - Comment: Automatically upload using BLE - Returns nullable Bool enum representing the BleAutoUploadEnabled field - - - - Set BleAutoUploadEnabled field - Comment: Automatically upload using BLE - Nullable field value to be set - - - - Retrieves the AutoSyncFrequency field - Comment: Helps to conserve battery by changing modes - Returns nullable AutoSyncFrequency enum representing the AutoSyncFrequency field - - - - Set AutoSyncFrequency field - Comment: Helps to conserve battery by changing modes - Nullable field value to be set - - - - Retrieves the AutoActivityDetect field - Comment: Allows setting specific activities auto-activity detect enabled/disabled settings - Returns nullable uint representing the AutoActivityDetect field - - - - Set AutoActivityDetect field - Comment: Allows setting specific activities auto-activity detect enabled/disabled settings - Nullable field value to be set - - - - Retrieves the NumberOfScreens field - Comment: Number of screens configured to display - Returns nullable byte representing the NumberOfScreens field - - - - Set NumberOfScreens field - Comment: Number of screens configured to display - Nullable field value to be set - - - - Retrieves the SmartNotificationDisplayOrientation field - Comment: Smart Notification display orientation - Returns nullable DisplayOrientation enum representing the SmartNotificationDisplayOrientation field - - - - Set SmartNotificationDisplayOrientation field - Comment: Smart Notification display orientation - Nullable field value to be set - - - - Retrieves the TapInterface field - Returns nullable Switch enum representing the TapInterface field - - - - Set TapInterface field - Nullable field value to be set - - - - Retrieves the TapSensitivity field - Comment: Used to hold the tap threshold setting - Returns nullable TapSensitivity enum representing the TapSensitivity field - - - - Set TapSensitivity field - Comment: Used to hold the tap threshold setting - Nullable field value to be set - - - - Implements the DiveAlarm profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Comment: Index of the alarm - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Comment: Index of the alarm - Nullable field value to be set - - - - Retrieves the Depth field - Units: m - Comment: Depth setting (m) for depth type alarms - Returns nullable float representing the Depth field - - - - Set Depth field - Units: m - Comment: Depth setting (m) for depth type alarms - Nullable field value to be set - - - - Retrieves the Time field - Units: s - Comment: Time setting (s) for time type alarms - Returns nullable int representing the Time field - - - - Set Time field - Units: s - Comment: Time setting (s) for time type alarms - Nullable field value to be set - - - - Retrieves the Enabled field - Comment: Enablement flag - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Comment: Enablement flag - Nullable field value to be set - - - - Retrieves the AlarmType field - Comment: Alarm type setting - Returns nullable DiveAlarmType enum representing the AlarmType field - - - - Set AlarmType field - Comment: Alarm type setting - Nullable field value to be set - - - - Retrieves the Sound field - Comment: Tone and Vibe setting for the alarm - Returns nullable Tone enum representing the Sound field - - - - Set Sound field - Comment: Tone and Vibe setting for the alarm - Nullable field value to be set - - - - - - returns number of elements in field DiveTypes - - - - Retrieves the DiveTypes field - Comment: Dive types the alarm will trigger on - 0 based index of DiveTypes element to retrieve - Returns nullable SubSport enum representing the DiveTypes field - - - - Set DiveTypes field - Comment: Dive types the alarm will trigger on - 0 based index of dive_types - Nullable field value to be set - - - - Implements the DiveGas profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HeliumContent field - Units: percent - Returns nullable byte representing the HeliumContent field - - - - Set HeliumContent field - Units: percent - Nullable field value to be set - - - - Retrieves the OxygenContent field - Units: percent - Returns nullable byte representing the OxygenContent field - - - - Set OxygenContent field - Units: percent - Nullable field value to be set - - - - Retrieves the Status field - Returns nullable DiveGasStatus enum representing the Status field - - - - Set Status field - Nullable field value to be set - - - - Implements the DiveSettings profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the Model field - Returns nullable TissueModelType enum representing the Model field - - - - Set Model field - Nullable field value to be set - - - - Retrieves the GfLow field - Units: percent - Returns nullable byte representing the GfLow field - - - - Set GfLow field - Units: percent - Nullable field value to be set - - - - Retrieves the GfHigh field - Units: percent - Returns nullable byte representing the GfHigh field - - - - Set GfHigh field - Units: percent - Nullable field value to be set - - - - Retrieves the WaterType field - Returns nullable WaterType enum representing the WaterType field - - - - Set WaterType field - Nullable field value to be set - - - - Retrieves the WaterDensity field - Units: kg/m^3 - Comment: Fresh water is usually 1000; salt water is usually 1025 - Returns nullable float representing the WaterDensity field - - - - Set WaterDensity field - Units: kg/m^3 - Comment: Fresh water is usually 1000; salt water is usually 1025 - Nullable field value to be set - - - - Retrieves the Po2Warn field - Units: percent - Comment: Typically 1.40 - Returns nullable float representing the Po2Warn field - - - - Set Po2Warn field - Units: percent - Comment: Typically 1.40 - Nullable field value to be set - - - - Retrieves the Po2Critical field - Units: percent - Comment: Typically 1.60 - Returns nullable float representing the Po2Critical field - - - - Set Po2Critical field - Units: percent - Comment: Typically 1.60 - Nullable field value to be set - - - - Retrieves the Po2Deco field - Units: percent - Returns nullable float representing the Po2Deco field - - - - Set Po2Deco field - Units: percent - Nullable field value to be set - - - - Retrieves the SafetyStopEnabled field - Returns nullable Bool enum representing the SafetyStopEnabled field - - - - Set SafetyStopEnabled field - Nullable field value to be set - - - - Retrieves the BottomDepth field - Returns nullable float representing the BottomDepth field - - - - Set BottomDepth field - Nullable field value to be set - - - - Retrieves the BottomTime field - Returns nullable uint representing the BottomTime field - - - - Set BottomTime field - Nullable field value to be set - - - - Retrieves the ApneaCountdownEnabled field - Returns nullable Bool enum representing the ApneaCountdownEnabled field - - - - Set ApneaCountdownEnabled field - Nullable field value to be set - - - - Retrieves the ApneaCountdownTime field - Returns nullable uint representing the ApneaCountdownTime field - - - - Set ApneaCountdownTime field - Nullable field value to be set - - - - Retrieves the BacklightMode field - Returns nullable DiveBacklightMode enum representing the BacklightMode field - - - - Set BacklightMode field - Nullable field value to be set - - - - Retrieves the BacklightBrightness field - Returns nullable byte representing the BacklightBrightness field - - - - Set BacklightBrightness field - Nullable field value to be set - - - - Retrieves the BacklightTimeout field - Returns nullable byte representing the BacklightTimeout field - - - - Set BacklightTimeout field - Nullable field value to be set - - - - Retrieves the RepeatDiveInterval field - Units: s - Comment: Time between surfacing and ending the activity - Returns nullable ushort representing the RepeatDiveInterval field - - - - Set RepeatDiveInterval field - Units: s - Comment: Time between surfacing and ending the activity - Nullable field value to be set - - - - Retrieves the SafetyStopTime field - Units: s - Comment: Time at safety stop (if enabled) - Returns nullable ushort representing the SafetyStopTime field - - - - Set SafetyStopTime field - Units: s - Comment: Time at safety stop (if enabled) - Nullable field value to be set - - - - Retrieves the HeartRateSourceType field - Returns nullable SourceType enum representing the HeartRateSourceType field - - - - Set HeartRateSourceType field - Nullable field value to be set - - - - Retrieves the HeartRateSource field - Returns nullable byte representing the HeartRateSource field - - - - Set HeartRateSource field - Nullable field value to be set - - - - Retrieves the HeartRateAntplusDeviceType subfield - Nullable byte representing the HeartRateAntplusDeviceType subfield - - - - - Set HeartRateAntplusDeviceType subfield - Subfield value to be set - - - - Retrieves the HeartRateLocalDeviceType subfield - Nullable byte representing the HeartRateLocalDeviceType subfield - - - - - Set HeartRateLocalDeviceType subfield - Subfield value to be set - - - - Implements the DiveSummary profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the ReferenceMesg field - Returns nullable ushort representing the ReferenceMesg field - - - - Set ReferenceMesg field - Nullable field value to be set - - - - Retrieves the ReferenceIndex field - Returns nullable ushort representing the ReferenceIndex field - - - - Set ReferenceIndex field - Nullable field value to be set - - - - Retrieves the AvgDepth field - Units: m - Comment: 0 if above water - Returns nullable float representing the AvgDepth field - - - - Set AvgDepth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the MaxDepth field - Units: m - Comment: 0 if above water - Returns nullable float representing the MaxDepth field - - - - Set MaxDepth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the SurfaceInterval field - Units: s - Comment: Time since end of last dive - Returns nullable uint representing the SurfaceInterval field - - - - Set SurfaceInterval field - Units: s - Comment: Time since end of last dive - Nullable field value to be set - - - - Retrieves the StartCns field - Units: percent - Returns nullable byte representing the StartCns field - - - - Set StartCns field - Units: percent - Nullable field value to be set - - - - Retrieves the EndCns field - Units: percent - Returns nullable byte representing the EndCns field - - - - Set EndCns field - Units: percent - Nullable field value to be set - - - - Retrieves the StartN2 field - Units: percent - Returns nullable ushort representing the StartN2 field - - - - Set StartN2 field - Units: percent - Nullable field value to be set - - - - Retrieves the EndN2 field - Units: percent - Returns nullable ushort representing the EndN2 field - - - - Set EndN2 field - Units: percent - Nullable field value to be set - - - - Retrieves the O2Toxicity field - Units: OTUs - Returns nullable ushort representing the O2Toxicity field - - - - Set O2Toxicity field - Units: OTUs - Nullable field value to be set - - - - Retrieves the DiveNumber field - Returns nullable uint representing the DiveNumber field - - - - Set DiveNumber field - Nullable field value to be set - - - - Retrieves the BottomTime field - Units: s - Returns nullable float representing the BottomTime field - - - - Set BottomTime field - Units: s - Nullable field value to be set - - - - Retrieves the AvgAscentRate field - Units: m/s - Comment: Average ascent rate, not including descents or stops - Returns nullable float representing the AvgAscentRate field - - - - Set AvgAscentRate field - Units: m/s - Comment: Average ascent rate, not including descents or stops - Nullable field value to be set - - - - Retrieves the AvgDescentRate field - Units: m/s - Comment: Average descent rate, not including ascents or stops - Returns nullable float representing the AvgDescentRate field - - - - Set AvgDescentRate field - Units: m/s - Comment: Average descent rate, not including ascents or stops - Nullable field value to be set - - - - Retrieves the MaxAscentRate field - Units: m/s - Comment: Maximum ascent rate - Returns nullable float representing the MaxAscentRate field - - - - Set MaxAscentRate field - Units: m/s - Comment: Maximum ascent rate - Nullable field value to be set - - - - Retrieves the MaxDescentRate field - Units: m/s - Comment: Maximum descent rate - Returns nullable float representing the MaxDescentRate field - - - - Set MaxDescentRate field - Units: m/s - Comment: Maximum descent rate - Nullable field value to be set - - - - Retrieves the HangTime field - Units: s - Comment: Time spent neither ascending nor descending - Returns nullable float representing the HangTime field - - - - Set HangTime field - Units: s - Comment: Time spent neither ascending nor descending - Nullable field value to be set - - - - Implements the Event profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Event field - Returns nullable Event enum representing the Event field - - - - Set Event field - Nullable field value to be set - - - - Retrieves the EventType field - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Nullable field value to be set - - - - Retrieves the Data16 field - Returns nullable ushort representing the Data16 field - - - - Set Data16 field - Nullable field value to be set - - - - Retrieves the Data field - Returns nullable uint representing the Data field - - - - Set Data field - Nullable field value to be set - - - - Retrieves the TimerTrigger subfield - Nullable TimerTrigger enum representing the TimerTrigger subfield - - - - - Set TimerTrigger subfield - Subfield value to be set - - - - Retrieves the CoursePointIndex subfield - Nullable ushort representing the CoursePointIndex subfield - - - - - Set CoursePointIndex subfield - Subfield value to be set - - - - Retrieves the BatteryLevel subfield - Units: V - Nullable float representing the BatteryLevel subfield - - - - - Set BatteryLevel subfield - Units: V - Subfield value to be set - - - - Retrieves the VirtualPartnerSpeed subfield - Units: m/s - Nullable float representing the VirtualPartnerSpeed subfield - - - - - Set VirtualPartnerSpeed subfield - Units: m/s - Subfield value to be set - - - - Retrieves the HrHighAlert subfield - Units: bpm - Nullable byte representing the HrHighAlert subfield - - - - - Set HrHighAlert subfield - Units: bpm - Subfield value to be set - - - - Retrieves the HrLowAlert subfield - Units: bpm - Nullable byte representing the HrLowAlert subfield - - - - - Set HrLowAlert subfield - Units: bpm - Subfield value to be set - - - - Retrieves the SpeedHighAlert subfield - Units: m/s - Nullable float representing the SpeedHighAlert subfield - - - - - Set SpeedHighAlert subfield - Units: m/s - Subfield value to be set - - - - Retrieves the SpeedLowAlert subfield - Units: m/s - Nullable float representing the SpeedLowAlert subfield - - - - - Set SpeedLowAlert subfield - Units: m/s - Subfield value to be set - - - - Retrieves the CadHighAlert subfield - Units: rpm - Nullable ushort representing the CadHighAlert subfield - - - - - Set CadHighAlert subfield - Units: rpm - Subfield value to be set - - - - Retrieves the CadLowAlert subfield - Units: rpm - Nullable ushort representing the CadLowAlert subfield - - - - - Set CadLowAlert subfield - Units: rpm - Subfield value to be set - - - - Retrieves the PowerHighAlert subfield - Units: watts - Nullable ushort representing the PowerHighAlert subfield - - - - - Set PowerHighAlert subfield - Units: watts - Subfield value to be set - - - - Retrieves the PowerLowAlert subfield - Units: watts - Nullable ushort representing the PowerLowAlert subfield - - - - - Set PowerLowAlert subfield - Units: watts - Subfield value to be set - - - - Retrieves the TimeDurationAlert subfield - Units: s - Nullable float representing the TimeDurationAlert subfield - - - - - Set TimeDurationAlert subfield - Units: s - Subfield value to be set - - - - Retrieves the DistanceDurationAlert subfield - Units: m - Nullable float representing the DistanceDurationAlert subfield - - - - - Set DistanceDurationAlert subfield - Units: m - Subfield value to be set - - - - Retrieves the CalorieDurationAlert subfield - Units: calories - Nullable uint representing the CalorieDurationAlert subfield - - - - - Set CalorieDurationAlert subfield - Units: calories - Subfield value to be set - - - - Retrieves the FitnessEquipmentState subfield - Nullable FitnessEquipmentState enum representing the FitnessEquipmentState subfield - - - - - Set FitnessEquipmentState subfield - Subfield value to be set - - - - Retrieves the SportPoint subfield - Nullable uint representing the SportPoint subfield - - - - - Set SportPoint subfield - Subfield value to be set - - - - Retrieves the GearChangeData subfield - Nullable uint representing the GearChangeData subfield - - - - - Set GearChangeData subfield - Subfield value to be set - - - - Retrieves the RiderPosition subfield - Comment: Indicates the rider position value. - Nullable RiderPositionType enum representing the RiderPosition subfield - - - - - Set RiderPosition subfield - Comment: Indicates the rider position value. - Subfield value to be set - - - - Retrieves the CommTimeout subfield - Nullable ushort representing the CommTimeout subfield - - - - - Set CommTimeout subfield - Subfield value to be set - - - - Retrieves the RadarThreatAlert subfield - Comment: The first byte is the radar_threat_level_max, the second byte is the radar_threat_count, third bytes is the average approach speed, and the 4th byte is the max approach speed - Nullable uint representing the RadarThreatAlert subfield - - - - - Set RadarThreatAlert subfield - Comment: The first byte is the radar_threat_level_max, the second byte is the radar_threat_count, third bytes is the average approach speed, and the 4th byte is the max approach speed - Subfield value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Retrieves the Score field - Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - Returns nullable ushort representing the Score field - - - - Set Score field - Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - Nullable field value to be set - - - - Retrieves the OpponentScore field - Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - Returns nullable ushort representing the OpponentScore field - - - - Set OpponentScore field - Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - Nullable field value to be set - - - - Retrieves the FrontGearNum field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Front gear number. 1 is innermost. - Returns nullable byte representing the FrontGearNum field - - - - Set FrontGearNum field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Front gear number. 1 is innermost. - Nullable field value to be set - - - - Retrieves the FrontGear field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of front teeth. - Returns nullable byte representing the FrontGear field - - - - Set FrontGear field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of front teeth. - Nullable field value to be set - - - - Retrieves the RearGearNum field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Rear gear number. 1 is innermost. - Returns nullable byte representing the RearGearNum field - - - - Set RearGearNum field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Rear gear number. 1 is innermost. - Nullable field value to be set - - - - Retrieves the RearGear field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of rear teeth. - Returns nullable byte representing the RearGear field - - - - Set RearGear field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of rear teeth. - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Nullable field value to be set - - - - Retrieves the RadarThreatLevelMax field - Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - Returns nullable RadarThreatLevelType enum representing the RadarThreatLevelMax field - - - - Set RadarThreatLevelMax field - Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - Nullable field value to be set - - - - Retrieves the RadarThreatCount field - Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - Returns nullable byte representing the RadarThreatCount field - - - - Set RadarThreatCount field - Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - Nullable field value to be set - - - - Retrieves the RadarThreatAvgApproachSpeed field - Units: m/s - Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - Returns nullable float representing the RadarThreatAvgApproachSpeed field - - - - Set RadarThreatAvgApproachSpeed field - Units: m/s - Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - Nullable field value to be set - - - - Retrieves the RadarThreatMaxApproachSpeed field - Units: m/s - Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - Returns nullable float representing the RadarThreatMaxApproachSpeed field - - - - Set RadarThreatMaxApproachSpeed field - Units: m/s - Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - Nullable field value to be set - - - - Implements the ExdDataConceptConfiguration profile message. - - - - - Field Numbers for - - - - - Retrieves the ScreenIndex field - Returns nullable byte representing the ScreenIndex field - - - - Set ScreenIndex field - Nullable field value to be set - - - - Retrieves the ConceptField field - Returns nullable byte representing the ConceptField field - - - - Set ConceptField field - Nullable field value to be set - - - - Retrieves the FieldId field - Returns nullable byte representing the FieldId field - - - - Set FieldId field - Nullable field value to be set - - - - Retrieves the ConceptIndex field - Returns nullable byte representing the ConceptIndex field - - - - Set ConceptIndex field - Nullable field value to be set - - - - Retrieves the DataPage field - Returns nullable byte representing the DataPage field - - - - Set DataPage field - Nullable field value to be set - - - - Retrieves the ConceptKey field - Returns nullable byte representing the ConceptKey field - - - - Set ConceptKey field - Nullable field value to be set - - - - Retrieves the Scaling field - Returns nullable byte representing the Scaling field - - - - Set Scaling field - Nullable field value to be set - - - - Retrieves the DataUnits field - Returns nullable ExdDataUnits enum representing the DataUnits field - - - - Set DataUnits field - Nullable field value to be set - - - - Retrieves the Qualifier field - Returns nullable ExdQualifiers enum representing the Qualifier field - - - - Set Qualifier field - Nullable field value to be set - - - - Retrieves the Descriptor field - Returns nullable ExdDescriptors enum representing the Descriptor field - - - - Set Descriptor field - Nullable field value to be set - - - - Retrieves the IsSigned field - Returns nullable Bool enum representing the IsSigned field - - - - Set IsSigned field - Nullable field value to be set - - - - Implements the ExdDataFieldConfiguration profile message. - - - - - Field Numbers for - - - - - Retrieves the ScreenIndex field - Returns nullable byte representing the ScreenIndex field - - - - Set ScreenIndex field - Nullable field value to be set - - - - Retrieves the ConceptField field - Returns nullable byte representing the ConceptField field - - - - Set ConceptField field - Nullable field value to be set - - - - Retrieves the FieldId field - Returns nullable byte representing the FieldId field - - - - Set FieldId field - Nullable field value to be set - - - - Retrieves the ConceptCount field - Returns nullable byte representing the ConceptCount field - - - - Set ConceptCount field - Nullable field value to be set - - - - Retrieves the DisplayType field - Returns nullable ExdDisplayType enum representing the DisplayType field - - - - Set DisplayType field - Nullable field value to be set - - - - - - returns number of elements in field Title - - - - Retrieves the Title field - 0 based index of Title element to retrieve - Returns byte[] representing the Title field - - - - Retrieves the Title field - 0 based index of Title element to retrieve - Returns String representing the Title field - - - - Set Title field - 0 based index of Title element to retrieve - field value to be set - - - - Set Title field - 0 based index of title - field value to be set - - - - Implements the ExdScreenConfiguration profile message. - - - - - Field Numbers for - - - - - Retrieves the ScreenIndex field - Returns nullable byte representing the ScreenIndex field - - - - Set ScreenIndex field - Nullable field value to be set - - - - Retrieves the FieldCount field - Comment: number of fields in screen - Returns nullable byte representing the FieldCount field - - - - Set FieldCount field - Comment: number of fields in screen - Nullable field value to be set - - - - Retrieves the Layout field - Returns nullable ExdLayout enum representing the Layout field - - - - Set Layout field - Nullable field value to be set - - - - Retrieves the ScreenEnabled field - Returns nullable Bool enum representing the ScreenEnabled field - - - - Set ScreenEnabled field - Nullable field value to be set - - - - Implements the ExerciseTitle profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the ExerciseCategory field - Returns nullable ushort representing the ExerciseCategory field - - - - Set ExerciseCategory field - Nullable field value to be set - - - - Retrieves the ExerciseName field - Returns nullable ushort representing the ExerciseName field - - - - Set ExerciseName field - Nullable field value to be set - - - - - - returns number of elements in field WktStepName - - - - Retrieves the WktStepName field - 0 based index of WktStepName element to retrieve - Returns byte[] representing the WktStepName field - - - - Retrieves the WktStepName field - 0 based index of WktStepName element to retrieve - Returns String representing the WktStepName field - - - - Set WktStepName field - 0 based index of WktStepName element to retrieve - field value to be set - - - - Set WktStepName field - 0 based index of wkt_step_name - field value to be set - - - - Implements the FieldCapabilities profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the File field - Returns nullable File enum representing the File field - - - - Set File field - Nullable field value to be set - - - - Retrieves the MesgNum field - Returns nullable ushort representing the MesgNum field - - - - Set MesgNum field - Nullable field value to be set - - - - Retrieves the FieldNum field - Returns nullable byte representing the FieldNum field - - - - Set FieldNum field - Nullable field value to be set - - - - Retrieves the Count field - Returns nullable ushort representing the Count field - - - - Set Count field - Nullable field value to be set - - - - Implements the FieldDescription profile message. - - - - - Field Numbers for - - - - - Retrieves the DeveloperDataIndex field - Returns nullable byte representing the DeveloperDataIndex field - - - - Set DeveloperDataIndex field - Nullable field value to be set - - - - Retrieves the FieldDefinitionNumber field - Returns nullable byte representing the FieldDefinitionNumber field - - - - Set FieldDefinitionNumber field - Nullable field value to be set - - - - Retrieves the FitBaseTypeId field - Returns nullable byte representing the FitBaseTypeId field - - - - Set FitBaseTypeId field - Nullable field value to be set - - - - - - returns number of elements in field FieldName - - - - Retrieves the FieldName field - 0 based index of FieldName element to retrieve - Returns byte[] representing the FieldName field - - - - Retrieves the FieldName field - 0 based index of FieldName element to retrieve - Returns String representing the FieldName field - - - - Set FieldName field - 0 based index of FieldName element to retrieve - field value to be set - - - - Set FieldName field - 0 based index of field_name - field value to be set - - - - Retrieves the Array field - Returns nullable byte representing the Array field - - - - Set Array field - Nullable field value to be set - - - - Retrieves the Components field - Returns byte[] representing the Components field - - - - Retrieves the Components field - Returns String representing the Components field - - - - Set Components field - field value to be set - - - - Set Components field - field value to be set - - - - Retrieves the Scale field - Returns nullable byte representing the Scale field - - - - Set Scale field - Nullable field value to be set - - - - Retrieves the Offset field - Returns nullable sbyte representing the Offset field - - - - Set Offset field - Nullable field value to be set - - - - - - returns number of elements in field Units - - - - Retrieves the Units field - 0 based index of Units element to retrieve - Returns byte[] representing the Units field - - - - Retrieves the Units field - 0 based index of Units element to retrieve - Returns String representing the Units field - - - - Set Units field - 0 based index of Units element to retrieve - field value to be set - - - - Set Units field - 0 based index of units - field value to be set - - - - Retrieves the Bits field - Returns byte[] representing the Bits field - - - - Retrieves the Bits field - Returns String representing the Bits field - - - - Set Bits field - field value to be set - - - - Set Bits field - field value to be set - - - - Retrieves the Accumulate field - Returns byte[] representing the Accumulate field - - - - Retrieves the Accumulate field - Returns String representing the Accumulate field - - - - Set Accumulate field - field value to be set - - - - Set Accumulate field - field value to be set - - - - Retrieves the FitBaseUnitId field - Returns nullable ushort representing the FitBaseUnitId field - - - - Set FitBaseUnitId field - Nullable field value to be set - - - - Retrieves the NativeMesgNum field - Returns nullable ushort representing the NativeMesgNum field - - - - Set NativeMesgNum field - Nullable field value to be set - - - - Retrieves the NativeFieldNum field - Returns nullable byte representing the NativeFieldNum field - - - - Set NativeFieldNum field - Nullable field value to be set - - - - Implements the FileCapabilities profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable File enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Flags field - Returns nullable byte representing the Flags field - - - - Set Flags field - Nullable field value to be set - - - - Retrieves the Directory field - Returns byte[] representing the Directory field - - - - Retrieves the Directory field - Returns String representing the Directory field - - - - Set Directory field - field value to be set - - - - Set Directory field - field value to be set - - - - Retrieves the MaxCount field - Returns nullable ushort representing the MaxCount field - - - - Set MaxCount field - Nullable field value to be set - - - - Retrieves the MaxSize field - Units: bytes - Returns nullable uint representing the MaxSize field - - - - Set MaxSize field - Units: bytes - Nullable field value to be set - - - - Implements the FileCreator profile message. - - - - - Field Numbers for - - - - - Retrieves the SoftwareVersion field - Returns nullable ushort representing the SoftwareVersion field - - - - Set SoftwareVersion field - Nullable field value to be set - - - - Retrieves the HardwareVersion field - Returns nullable byte representing the HardwareVersion field - - - - Set HardwareVersion field - Nullable field value to be set - - - - Implements the FileId profile message. - - - - - Field Numbers for - - - - - Retrieves the Type field - Returns nullable File enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Manufacturer field - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Nullable field value to be set - - - - Retrieves the Product field - Returns nullable ushort representing the Product field - - - - Set Product field - Nullable field value to be set - - - - Retrieves the FaveroProduct subfield - Nullable ushort representing the FaveroProduct subfield - - - - - Set FaveroProduct subfield - Subfield value to be set - - - - Retrieves the GarminProduct subfield - Nullable ushort representing the GarminProduct subfield - - - - - Set GarminProduct subfield - Subfield value to be set - - - - Retrieves the SerialNumber field - Returns nullable uint representing the SerialNumber field - - - - Set SerialNumber field - Nullable field value to be set - - - - Retrieves the TimeCreated field - Comment: Only set for files that are can be created/erased. - Returns DateTime representing the TimeCreated field - - - - Set TimeCreated field - Comment: Only set for files that are can be created/erased. - Nullable field value to be set - - - - Retrieves the Number field - Comment: Only set for files that are not created/erased. - Returns nullable ushort representing the Number field - - - - Set Number field - Comment: Only set for files that are not created/erased. - Nullable field value to be set - - - - Retrieves the ProductName field - Comment: Optional free form string to indicate the devices name or model - Returns byte[] representing the ProductName field - - - - Retrieves the ProductName field - Comment: Optional free form string to indicate the devices name or model - Returns String representing the ProductName field - - - - Set ProductName field - Comment: Optional free form string to indicate the devices name or model - field value to be set - - - - Set ProductName field - Comment: Optional free form string to indicate the devices name or model - field value to be set - - - - Implements the Goal profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the StartDate field - Returns DateTime representing the StartDate field - - - - Set StartDate field - Nullable field value to be set - - - - Retrieves the EndDate field - Returns DateTime representing the EndDate field - - - - Set EndDate field - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable Goal enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Value field - Returns nullable uint representing the Value field - - - - Set Value field - Nullable field value to be set - - - - Retrieves the Repeat field - Returns nullable Bool enum representing the Repeat field - - - - Set Repeat field - Nullable field value to be set - - - - Retrieves the TargetValue field - Returns nullable uint representing the TargetValue field - - - - Set TargetValue field - Nullable field value to be set - - - - Retrieves the Recurrence field - Returns nullable GoalRecurrence enum representing the Recurrence field - - - - Set Recurrence field - Nullable field value to be set - - - - Retrieves the RecurrenceValue field - Returns nullable ushort representing the RecurrenceValue field - - - - Set RecurrenceValue field - Nullable field value to be set - - - - Retrieves the Enabled field - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Nullable field value to be set - - - - Retrieves the Source field - Returns nullable GoalSource enum representing the Source field - - - - Set Source field - Nullable field value to be set - - - - Implements the GpsMetadata profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp. - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the EnhancedAltitude field - Units: m - Returns nullable float representing the EnhancedAltitude field - - - - Set EnhancedAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedSpeed field - Units: m/s - Returns nullable float representing the EnhancedSpeed field - - - - Set EnhancedSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the Heading field - Units: degrees - Returns nullable float representing the Heading field - - - - Set Heading field - Units: degrees - Nullable field value to be set - - - - Retrieves the UtcTimestamp field - Units: s - Comment: Used to correlate UTC to system time if the timestamp of the message is in system time. This UTC time is derived from the GPS data. - Returns DateTime representing the UtcTimestamp field - - - - Set UtcTimestamp field - Units: s - Comment: Used to correlate UTC to system time if the timestamp of the message is in system time. This UTC time is derived from the GPS data. - Nullable field value to be set - - - - - - returns number of elements in field Velocity - - - - Retrieves the Velocity field - Units: m/s - Comment: velocity[0] is lon velocity. Velocity[1] is lat velocity. Velocity[2] is altitude velocity. - 0 based index of Velocity element to retrieve - Returns nullable float representing the Velocity field - - - - Set Velocity field - Units: m/s - Comment: velocity[0] is lon velocity. Velocity[1] is lat velocity. Velocity[2] is altitude velocity. - 0 based index of velocity - Nullable field value to be set - - - - Implements the GyroscopeData profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - - - returns number of elements in field SampleTimeOffset - - - - Retrieves the SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the gyro sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in gyro_x and gyro_y and gyro_z - 0 based index of SampleTimeOffset element to retrieve - Returns nullable ushort representing the SampleTimeOffset field - - - - Set SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the gyro sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in gyro_x and gyro_y and gyro_z - 0 based index of sample_time_offset - Nullable field value to be set - - - - - - returns number of elements in field GyroX - - - - Retrieves the GyroX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of GyroX element to retrieve - Returns nullable ushort representing the GyroX field - - - - Set GyroX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of gyro_x - Nullable field value to be set - - - - - - returns number of elements in field GyroY - - - - Retrieves the GyroY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of GyroY element to retrieve - Returns nullable ushort representing the GyroY field - - - - Set GyroY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of gyro_y - Nullable field value to be set - - - - - - returns number of elements in field GyroZ - - - - Retrieves the GyroZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of GyroZ element to retrieve - Returns nullable ushort representing the GyroZ field - - - - Set GyroZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of gyro_z - Nullable field value to be set - - - - - - returns number of elements in field CalibratedGyroX - - - - Retrieves the CalibratedGyroX field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of CalibratedGyroX element to retrieve - Returns nullable float representing the CalibratedGyroX field - - - - Set CalibratedGyroX field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of calibrated_gyro_x - Nullable field value to be set - - - - - - returns number of elements in field CalibratedGyroY - - - - Retrieves the CalibratedGyroY field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of CalibratedGyroY element to retrieve - Returns nullable float representing the CalibratedGyroY field - - - - Set CalibratedGyroY field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of calibrated_gyro_y - Nullable field value to be set - - - - - - returns number of elements in field CalibratedGyroZ - - - - Retrieves the CalibratedGyroZ field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of CalibratedGyroZ element to retrieve - Returns nullable float representing the CalibratedGyroZ field - - - - Set CalibratedGyroZ field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of calibrated_gyro_z - Nullable field value to be set - - - - Implements the Hr profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the FractionalTimestamp field - Units: s - Returns nullable float representing the FractionalTimestamp field - - - - Set FractionalTimestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Time256 field - Units: s - Returns nullable float representing the Time256 field - - - - Set Time256 field - Units: s - Nullable field value to be set - - - - - - returns number of elements in field FilteredBpm - - - - Retrieves the FilteredBpm field - Units: bpm - 0 based index of FilteredBpm element to retrieve - Returns nullable byte representing the FilteredBpm field - - - - Set FilteredBpm field - Units: bpm - 0 based index of filtered_bpm - Nullable field value to be set - - - - - - returns number of elements in field EventTimestamp - - - - Retrieves the EventTimestamp field - Units: s - 0 based index of EventTimestamp element to retrieve - Returns nullable float representing the EventTimestamp field - - - - Set EventTimestamp field - Units: s - 0 based index of event_timestamp - Nullable field value to be set - - - - - - returns number of elements in field EventTimestamp12 - - - - Retrieves the EventTimestamp12 field - 0 based index of EventTimestamp12 element to retrieve - Returns nullable byte representing the EventTimestamp12 field - - - - Set EventTimestamp12 field - 0 based index of event_timestamp_12 - Nullable field value to be set - - - - Implements the HrmProfile profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Enabled field - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Nullable field value to be set - - - - Retrieves the HrmAntId field - Returns nullable ushort representing the HrmAntId field - - - - Set HrmAntId field - Nullable field value to be set - - - - Retrieves the LogHrv field - Returns nullable Bool enum representing the LogHrv field - - - - Set LogHrv field - Nullable field value to be set - - - - Retrieves the HrmAntIdTransType field - Returns nullable byte representing the HrmAntIdTransType field - - - - Set HrmAntIdTransType field - Nullable field value to be set - - - - Implements the Hrv profile message. - - - - - Field Numbers for - - - - - - - returns number of elements in field Time - - - - Retrieves the Time field - Units: s - Comment: Time between beats - 0 based index of Time element to retrieve - Returns nullable float representing the Time field - - - - Set Time field - Units: s - Comment: Time between beats - 0 based index of time - Nullable field value to be set - - - - Implements the HrZone profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HighBpm field - Units: bpm - Returns nullable byte representing the HighBpm field - - - - Set HighBpm field - Units: bpm - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Implements the Jump profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Returns nullable float representing the Distance field - - - - Set Distance field - Units: m - Nullable field value to be set - - - - Retrieves the Height field - Units: m - Returns nullable float representing the Height field - - - - Set Height field - Units: m - Nullable field value to be set - - - - Retrieves the Rotations field - Returns nullable byte representing the Rotations field - - - - Set Rotations field - Nullable field value to be set - - - - Retrieves the HangTime field - Units: s - Returns nullable float representing the HangTime field - - - - Set HangTime field - Units: s - Nullable field value to be set - - - - Retrieves the Score field - Comment: A score for a jump calculated based on hang time, rotations, and distance. - Returns nullable float representing the Score field - - - - Set Score field - Comment: A score for a jump calculated based on hang time, rotations, and distance. - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the Speed field - Units: m/s - Returns nullable float representing the Speed field - - - - Set Speed field - Units: m/s - Nullable field value to be set - - - - Retrieves the EnhancedSpeed field - Units: m/s - Returns nullable float representing the EnhancedSpeed field - - - - Set EnhancedSpeed field - Units: m/s - Nullable field value to be set - - - - Implements the Lap profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Timestamp field - Units: s - Comment: Lap end time. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Lap end time. - Nullable field value to be set - - - - Retrieves the Event field - Returns nullable Event enum representing the Event field - - - - Set Event field - Nullable field value to be set - - - - Retrieves the EventType field - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Nullable field value to be set - - - - Retrieves the StartTime field - Returns DateTime representing the StartTime field - - - - Set StartTime field - Nullable field value to be set - - - - Retrieves the StartPositionLat field - Units: semicircles - Returns nullable int representing the StartPositionLat field - - - - Set StartPositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the StartPositionLong field - Units: semicircles - Returns nullable int representing the StartPositionLong field - - - - Set StartPositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the EndPositionLat field - Units: semicircles - Returns nullable int representing the EndPositionLat field - - - - Set EndPositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the EndPositionLong field - Units: semicircles - Returns nullable int representing the EndPositionLong field - - - - Set EndPositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Returns nullable float representing the TotalElapsedTime field - - - - Set TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Nullable field value to be set - - - - Retrieves the TotalDistance field - Units: m - Returns nullable float representing the TotalDistance field - - - - Set TotalDistance field - Units: m - Nullable field value to be set - - - - Retrieves the TotalCycles field - Units: cycles - Returns nullable uint representing the TotalCycles field - - - - Set TotalCycles field - Units: cycles - Nullable field value to be set - - - - Retrieves the TotalStrides subfield - Units: strides - Nullable uint representing the TotalStrides subfield - - - - - Set TotalStrides subfield - Units: strides - Subfield value to be set - - - - Retrieves the TotalStrokes subfield - Units: strokes - Nullable uint representing the TotalStrokes subfield - - - - - Set TotalStrokes subfield - Units: strokes - Subfield value to be set - - - - Retrieves the TotalCalories field - Units: kcal - Returns nullable ushort representing the TotalCalories field - - - - Set TotalCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the TotalFatCalories field - Units: kcal - Comment: If New Leaf - Returns nullable ushort representing the TotalFatCalories field - - - - Set TotalFatCalories field - Units: kcal - Comment: If New Leaf - Nullable field value to be set - - - - Retrieves the AvgSpeed field - Units: m/s - Returns nullable float representing the AvgSpeed field - - - - Set AvgSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxSpeed field - Units: m/s - Returns nullable float representing the MaxSpeed field - - - - Set MaxSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgHeartRate field - Units: bpm - Returns nullable byte representing the AvgHeartRate field - - - - Set AvgHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the MaxHeartRate field - Units: bpm - Returns nullable byte representing the MaxHeartRate field - - - - Set MaxHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Returns nullable byte representing the AvgCadence field - - - - Set AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Nullable field value to be set - - - - Retrieves the AvgRunningCadence subfield - Units: strides/min - Nullable byte representing the AvgRunningCadence subfield - - - - - Set AvgRunningCadence subfield - Units: strides/min - Subfield value to be set - - - - Retrieves the MaxCadence field - Units: rpm - Returns nullable byte representing the MaxCadence field - - - - Set MaxCadence field - Units: rpm - Nullable field value to be set - - - - Retrieves the MaxRunningCadence subfield - Units: strides/min - Nullable byte representing the MaxRunningCadence subfield - - - - - Set MaxRunningCadence subfield - Units: strides/min - Subfield value to be set - - - - Retrieves the AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Returns nullable ushort representing the AvgPower field - - - - Set AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Nullable field value to be set - - - - Retrieves the MaxPower field - Units: watts - Returns nullable ushort representing the MaxPower field - - - - Set MaxPower field - Units: watts - Nullable field value to be set - - - - Retrieves the TotalAscent field - Units: m - Returns nullable ushort representing the TotalAscent field - - - - Set TotalAscent field - Units: m - Nullable field value to be set - - - - Retrieves the TotalDescent field - Units: m - Returns nullable ushort representing the TotalDescent field - - - - Set TotalDescent field - Units: m - Nullable field value to be set - - - - Retrieves the Intensity field - Returns nullable Intensity enum representing the Intensity field - - - - Set Intensity field - Nullable field value to be set - - - - Retrieves the LapTrigger field - Returns nullable LapTrigger enum representing the LapTrigger field - - - - Set LapTrigger field - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Retrieves the NumLengths field - Units: lengths - Comment: # of lengths of swim pool - Returns nullable ushort representing the NumLengths field - - - - Set NumLengths field - Units: lengths - Comment: # of lengths of swim pool - Nullable field value to be set - - - - Retrieves the NormalizedPower field - Units: watts - Returns nullable ushort representing the NormalizedPower field - - - - Set NormalizedPower field - Units: watts - Nullable field value to be set - - - - Retrieves the LeftRightBalance field - Returns nullable ushort representing the LeftRightBalance field - - - - Set LeftRightBalance field - Nullable field value to be set - - - - Retrieves the FirstLengthIndex field - Returns nullable ushort representing the FirstLengthIndex field - - - - Set FirstLengthIndex field - Nullable field value to be set - - - - Retrieves the AvgStrokeDistance field - Units: m - Returns nullable float representing the AvgStrokeDistance field - - - - Set AvgStrokeDistance field - Units: m - Nullable field value to be set - - - - Retrieves the SwimStroke field - Returns nullable SwimStroke enum representing the SwimStroke field - - - - Set SwimStroke field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the NumActiveLengths field - Units: lengths - Comment: # of active lengths of swim pool - Returns nullable ushort representing the NumActiveLengths field - - - - Set NumActiveLengths field - Units: lengths - Comment: # of active lengths of swim pool - Nullable field value to be set - - - - Retrieves the TotalWork field - Units: J - Returns nullable uint representing the TotalWork field - - - - Set TotalWork field - Units: J - Nullable field value to be set - - - - Retrieves the AvgAltitude field - Units: m - Returns nullable float representing the AvgAltitude field - - - - Set AvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the MaxAltitude field - Units: m - Returns nullable float representing the MaxAltitude field - - - - Set MaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the GpsAccuracy field - Units: m - Returns nullable byte representing the GpsAccuracy field - - - - Set GpsAccuracy field - Units: m - Nullable field value to be set - - - - Retrieves the AvgGrade field - Units: % - Returns nullable float representing the AvgGrade field - - - - Set AvgGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgPosGrade field - Units: % - Returns nullable float representing the AvgPosGrade field - - - - Set AvgPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgNegGrade field - Units: % - Returns nullable float representing the AvgNegGrade field - - - - Set AvgNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxPosGrade field - Units: % - Returns nullable float representing the MaxPosGrade field - - - - Set MaxPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxNegGrade field - Units: % - Returns nullable float representing the MaxNegGrade field - - - - Set MaxNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgTemperature field - Units: C - Returns nullable sbyte representing the AvgTemperature field - - - - Set AvgTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MaxTemperature field - Units: C - Returns nullable sbyte representing the MaxTemperature field - - - - Set MaxTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the TotalMovingTime field - Units: s - Returns nullable float representing the TotalMovingTime field - - - - Set TotalMovingTime field - Units: s - Nullable field value to be set - - - - Retrieves the AvgPosVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgPosVerticalSpeed field - - - - Set AvgPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgNegVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgNegVerticalSpeed field - - - - Set AvgNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxPosVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxPosVerticalSpeed field - - - - Set MaxPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxNegVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxNegVerticalSpeed field - - - - Set MaxNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - - - returns number of elements in field TimeInHrZone - - - - Retrieves the TimeInHrZone field - Units: s - 0 based index of TimeInHrZone element to retrieve - Returns nullable float representing the TimeInHrZone field - - - - Set TimeInHrZone field - Units: s - 0 based index of time_in_hr_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInSpeedZone - - - - Retrieves the TimeInSpeedZone field - Units: s - 0 based index of TimeInSpeedZone element to retrieve - Returns nullable float representing the TimeInSpeedZone field - - - - Set TimeInSpeedZone field - Units: s - 0 based index of time_in_speed_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInCadenceZone - - - - Retrieves the TimeInCadenceZone field - Units: s - 0 based index of TimeInCadenceZone element to retrieve - Returns nullable float representing the TimeInCadenceZone field - - - - Set TimeInCadenceZone field - Units: s - 0 based index of time_in_cadence_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInPowerZone - - - - Retrieves the TimeInPowerZone field - Units: s - 0 based index of TimeInPowerZone element to retrieve - Returns nullable float representing the TimeInPowerZone field - - - - Set TimeInPowerZone field - Units: s - 0 based index of time_in_power_zone - Nullable field value to be set - - - - Retrieves the RepetitionNum field - Returns nullable ushort representing the RepetitionNum field - - - - Set RepetitionNum field - Nullable field value to be set - - - - Retrieves the MinAltitude field - Units: m - Returns nullable float representing the MinAltitude field - - - - Set MinAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the MinHeartRate field - Units: bpm - Returns nullable byte representing the MinHeartRate field - - - - Set MinHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the WktStepIndex field - Returns nullable ushort representing the WktStepIndex field - - - - Set WktStepIndex field - Nullable field value to be set - - - - Retrieves the OpponentScore field - Returns nullable ushort representing the OpponentScore field - - - - Set OpponentScore field - Nullable field value to be set - - - - - - returns number of elements in field StrokeCount - - - - Retrieves the StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of StrokeCount element to retrieve - Returns nullable ushort representing the StrokeCount field - - - - Set StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of stroke_count - Nullable field value to be set - - - - - - returns number of elements in field ZoneCount - - - - Retrieves the ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of ZoneCount element to retrieve - Returns nullable ushort representing the ZoneCount field - - - - Set ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of zone_count - Nullable field value to be set - - - - Retrieves the AvgVerticalOscillation field - Units: mm - Returns nullable float representing the AvgVerticalOscillation field - - - - Set AvgVerticalOscillation field - Units: mm - Nullable field value to be set - - - - Retrieves the AvgStanceTimePercent field - Units: percent - Returns nullable float representing the AvgStanceTimePercent field - - - - Set AvgStanceTimePercent field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStanceTime field - Units: ms - Returns nullable float representing the AvgStanceTime field - - - - Set AvgStanceTime field - Units: ms - Nullable field value to be set - - - - Retrieves the AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Returns nullable float representing the AvgFractionalCadence field - - - - Set AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Nullable field value to be set - - - - Retrieves the MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Returns nullable float representing the MaxFractionalCadence field - - - - Set MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Nullable field value to be set - - - - Retrieves the TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Returns nullable float representing the TotalFractionalCycles field - - - - Set TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Nullable field value to be set - - - - Retrieves the PlayerScore field - Returns nullable ushort representing the PlayerScore field - - - - Set PlayerScore field - Nullable field value to be set - - - - - - returns number of elements in field AvgTotalHemoglobinConc - - - - Retrieves the AvgTotalHemoglobinConc field - Units: g/dL - Comment: Avg saturated and unsaturated hemoglobin - 0 based index of AvgTotalHemoglobinConc element to retrieve - Returns nullable float representing the AvgTotalHemoglobinConc field - - - - Set AvgTotalHemoglobinConc field - Units: g/dL - Comment: Avg saturated and unsaturated hemoglobin - 0 based index of avg_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field MinTotalHemoglobinConc - - - - Retrieves the MinTotalHemoglobinConc field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - 0 based index of MinTotalHemoglobinConc element to retrieve - Returns nullable float representing the MinTotalHemoglobinConc field - - - - Set MinTotalHemoglobinConc field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - 0 based index of min_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field MaxTotalHemoglobinConc - - - - Retrieves the MaxTotalHemoglobinConc field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - 0 based index of MaxTotalHemoglobinConc element to retrieve - Returns nullable float representing the MaxTotalHemoglobinConc field - - - - Set MaxTotalHemoglobinConc field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - 0 based index of max_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field AvgSaturatedHemoglobinPercent - - - - Retrieves the AvgSaturatedHemoglobinPercent field - Units: % - Comment: Avg percentage of hemoglobin saturated with oxygen - 0 based index of AvgSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the AvgSaturatedHemoglobinPercent field - - - - Set AvgSaturatedHemoglobinPercent field - Units: % - Comment: Avg percentage of hemoglobin saturated with oxygen - 0 based index of avg_saturated_hemoglobin_percent - Nullable field value to be set - - - - - - returns number of elements in field MinSaturatedHemoglobinPercent - - - - Retrieves the MinSaturatedHemoglobinPercent field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - 0 based index of MinSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the MinSaturatedHemoglobinPercent field - - - - Set MinSaturatedHemoglobinPercent field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - 0 based index of min_saturated_hemoglobin_percent - Nullable field value to be set - - - - - - returns number of elements in field MaxSaturatedHemoglobinPercent - - - - Retrieves the MaxSaturatedHemoglobinPercent field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - 0 based index of MaxSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the MaxSaturatedHemoglobinPercent field - - - - Set MaxSaturatedHemoglobinPercent field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - 0 based index of max_saturated_hemoglobin_percent - Nullable field value to be set - - - - Retrieves the AvgLeftTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgLeftTorqueEffectiveness field - - - - Set AvgLeftTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgRightTorqueEffectiveness field - - - - Set AvgRightTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgLeftPedalSmoothness field - Units: percent - Returns nullable float representing the AvgLeftPedalSmoothness field - - - - Set AvgLeftPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightPedalSmoothness field - Units: percent - Returns nullable float representing the AvgRightPedalSmoothness field - - - - Set AvgRightPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgCombinedPedalSmoothness field - Units: percent - Returns nullable float representing the AvgCombinedPedalSmoothness field - - - - Set AvgCombinedPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the TimeStanding field - Units: s - Comment: Total time spent in the standing position - Returns nullable float representing the TimeStanding field - - - - Set TimeStanding field - Units: s - Comment: Total time spent in the standing position - Nullable field value to be set - - - - Retrieves the StandCount field - Comment: Number of transitions to the standing state - Returns nullable ushort representing the StandCount field - - - - Set StandCount field - Comment: Number of transitions to the standing state - Nullable field value to be set - - - - Retrieves the AvgLeftPco field - Units: mm - Comment: Average left platform center offset - Returns nullable sbyte representing the AvgLeftPco field - - - - Set AvgLeftPco field - Units: mm - Comment: Average left platform center offset - Nullable field value to be set - - - - Retrieves the AvgRightPco field - Units: mm - Comment: Average right platform center offset - Returns nullable sbyte representing the AvgRightPco field - - - - Set AvgRightPco field - Units: mm - Comment: Average right platform center offset - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhase - - - - Retrieves the AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhase element to retrieve - Returns nullable float representing the AvgLeftPowerPhase field - - - - Set AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of avg_left_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhasePeak - - - - Retrieves the AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhasePeak element to retrieve - Returns nullable float representing the AvgLeftPowerPhasePeak field - - - - Set AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of avg_left_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhase - - - - Retrieves the AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhase element to retrieve - Returns nullable float representing the AvgRightPowerPhase field - - - - Set AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhasePeak - - - - Retrieves the AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhasePeak element to retrieve - Returns nullable float representing the AvgRightPowerPhasePeak field - - - - Set AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgPowerPosition - - - - Retrieves the AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of AvgPowerPosition element to retrieve - Returns nullable ushort representing the AvgPowerPosition field - - - - Set AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of avg_power_position - Nullable field value to be set - - - - - - returns number of elements in field MaxPowerPosition - - - - Retrieves the MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of MaxPowerPosition element to retrieve - Returns nullable ushort representing the MaxPowerPosition field - - - - Set MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of max_power_position - Nullable field value to be set - - - - - - returns number of elements in field AvgCadencePosition - - - - Retrieves the AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of AvgCadencePosition element to retrieve - Returns nullable byte representing the AvgCadencePosition field - - - - Set AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of avg_cadence_position - Nullable field value to be set - - - - - - returns number of elements in field MaxCadencePosition - - - - Retrieves the MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of MaxCadencePosition element to retrieve - Returns nullable byte representing the MaxCadencePosition field - - - - Set MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of max_cadence_position - Nullable field value to be set - - - - Retrieves the EnhancedAvgSpeed field - Units: m/s - Returns nullable float representing the EnhancedAvgSpeed field - - - - Set EnhancedAvgSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the EnhancedMaxSpeed field - Units: m/s - Returns nullable float representing the EnhancedMaxSpeed field - - - - Set EnhancedMaxSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the EnhancedAvgAltitude field - Units: m - Returns nullable float representing the EnhancedAvgAltitude field - - - - Set EnhancedAvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMinAltitude field - Units: m - Returns nullable float representing the EnhancedMinAltitude field - - - - Set EnhancedMinAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMaxAltitude field - Units: m - Returns nullable float representing the EnhancedMaxAltitude field - - - - Set EnhancedMaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the AvgLevMotorPower field - Units: watts - Comment: lev average motor power during lap - Returns nullable ushort representing the AvgLevMotorPower field - - - - Set AvgLevMotorPower field - Units: watts - Comment: lev average motor power during lap - Nullable field value to be set - - - - Retrieves the MaxLevMotorPower field - Units: watts - Comment: lev maximum motor power during lap - Returns nullable ushort representing the MaxLevMotorPower field - - - - Set MaxLevMotorPower field - Units: watts - Comment: lev maximum motor power during lap - Nullable field value to be set - - - - Retrieves the LevBatteryConsumption field - Units: percent - Comment: lev battery consumption during lap - Returns nullable float representing the LevBatteryConsumption field - - - - Set LevBatteryConsumption field - Units: percent - Comment: lev battery consumption during lap - Nullable field value to be set - - - - Retrieves the AvgVerticalRatio field - Units: percent - Returns nullable float representing the AvgVerticalRatio field - - - - Set AvgVerticalRatio field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStanceTimeBalance field - Units: percent - Returns nullable float representing the AvgStanceTimeBalance field - - - - Set AvgStanceTimeBalance field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStepLength field - Units: mm - Returns nullable float representing the AvgStepLength field - - - - Set AvgStepLength field - Units: mm - Nullable field value to be set - - - - Retrieves the AvgVam field - Units: m/s - Returns nullable float representing the AvgVam field - - - - Set AvgVam field - Units: m/s - Nullable field value to be set - - - - Retrieves the EnhancedAvgRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedAvgRespirationRate field - - - - Set EnhancedAvgRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the EnhancedMaxRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedMaxRespirationRate field - - - - Set EnhancedMaxRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the AvgRespirationRate field - Returns nullable byte representing the AvgRespirationRate field - - - - Set AvgRespirationRate field - Nullable field value to be set - - - - Retrieves the MaxRespirationRate field - Returns nullable byte representing the MaxRespirationRate field - - - - Set MaxRespirationRate field - Nullable field value to be set - - - - Retrieves the TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the TotalGrit field - - - - Set TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the TotalFlow field - - - - Set TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the JumpCount field - Returns nullable ushort representing the JumpCount field - - - - Set JumpCount field - Nullable field value to be set - - - - Retrieves the AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the AvgGrit field - - - - Set AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the AvgFlow field - - - - Set AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Returns nullable float representing the TotalFractionalAscent field - - - - Set TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Nullable field value to be set - - - - Retrieves the TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Returns nullable float representing the TotalFractionalDescent field - - - - Set TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Nullable field value to be set - - - - Retrieves the AvgCoreTemperature field - Units: C - Returns nullable float representing the AvgCoreTemperature field - - - - Set AvgCoreTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MinCoreTemperature field - Units: C - Returns nullable float representing the MinCoreTemperature field - - - - Set MinCoreTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MaxCoreTemperature field - Units: C - Returns nullable float representing the MaxCoreTemperature field - - - - Set MaxCoreTemperature field - Units: C - Nullable field value to be set - - - - Implements the Length profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the Event field - Returns nullable Event enum representing the Event field - - - - Set Event field - Nullable field value to be set - - - - Retrieves the EventType field - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Nullable field value to be set - - - - Retrieves the StartTime field - Returns DateTime representing the StartTime field - - - - Set StartTime field - Nullable field value to be set - - - - Retrieves the TotalElapsedTime field - Units: s - Returns nullable float representing the TotalElapsedTime field - - - - Set TotalElapsedTime field - Units: s - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Nullable field value to be set - - - - Retrieves the TotalStrokes field - Units: strokes - Returns nullable ushort representing the TotalStrokes field - - - - Set TotalStrokes field - Units: strokes - Nullable field value to be set - - - - Retrieves the AvgSpeed field - Units: m/s - Returns nullable float representing the AvgSpeed field - - - - Set AvgSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the SwimStroke field - Units: swim_stroke - Returns nullable SwimStroke enum representing the SwimStroke field - - - - Set SwimStroke field - Units: swim_stroke - Nullable field value to be set - - - - Retrieves the AvgSwimmingCadence field - Units: strokes/min - Returns nullable byte representing the AvgSwimmingCadence field - - - - Set AvgSwimmingCadence field - Units: strokes/min - Nullable field value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Retrieves the TotalCalories field - Units: kcal - Returns nullable ushort representing the TotalCalories field - - - - Set TotalCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the LengthType field - Returns nullable LengthType enum representing the LengthType field - - - - Set LengthType field - Nullable field value to be set - - - - Retrieves the PlayerScore field - Returns nullable ushort representing the PlayerScore field - - - - Set PlayerScore field - Nullable field value to be set - - - - Retrieves the OpponentScore field - Returns nullable ushort representing the OpponentScore field - - - - Set OpponentScore field - Nullable field value to be set - - - - - - returns number of elements in field StrokeCount - - - - Retrieves the StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of StrokeCount element to retrieve - Returns nullable ushort representing the StrokeCount field - - - - Set StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of stroke_count - Nullable field value to be set - - - - - - returns number of elements in field ZoneCount - - - - Retrieves the ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of ZoneCount element to retrieve - Returns nullable ushort representing the ZoneCount field - - - - Set ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of zone_count - Nullable field value to be set - - - - Retrieves the EnhancedAvgRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedAvgRespirationRate field - - - - Set EnhancedAvgRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the EnhancedMaxRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedMaxRespirationRate field - - - - Set EnhancedMaxRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the AvgRespirationRate field - Returns nullable byte representing the AvgRespirationRate field - - - - Set AvgRespirationRate field - Nullable field value to be set - - - - Retrieves the MaxRespirationRate field - Returns nullable byte representing the MaxRespirationRate field - - - - Set MaxRespirationRate field - Nullable field value to be set - - - - Implements the MagnetometerData profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - - - returns number of elements in field SampleTimeOffset - - - - Retrieves the SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the compass sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in cmps_x and cmps_y and cmps_z - 0 based index of SampleTimeOffset element to retrieve - Returns nullable ushort representing the SampleTimeOffset field - - - - Set SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the compass sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in cmps_x and cmps_y and cmps_z - 0 based index of sample_time_offset - Nullable field value to be set - - - - - - returns number of elements in field MagX - - - - Retrieves the MagX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of MagX element to retrieve - Returns nullable ushort representing the MagX field - - - - Set MagX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of mag_x - Nullable field value to be set - - - - - - returns number of elements in field MagY - - - - Retrieves the MagY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of MagY element to retrieve - Returns nullable ushort representing the MagY field - - - - Set MagY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of mag_y - Nullable field value to be set - - - - - - returns number of elements in field MagZ - - - - Retrieves the MagZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of MagZ element to retrieve - Returns nullable ushort representing the MagZ field - - - - Set MagZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of mag_z - Nullable field value to be set - - - - - - returns number of elements in field CalibratedMagX - - - - Retrieves the CalibratedMagX field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of CalibratedMagX element to retrieve - Returns nullable float representing the CalibratedMagX field - - - - Set CalibratedMagX field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of calibrated_mag_x - Nullable field value to be set - - - - - - returns number of elements in field CalibratedMagY - - - - Retrieves the CalibratedMagY field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of CalibratedMagY element to retrieve - Returns nullable float representing the CalibratedMagY field - - - - Set CalibratedMagY field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of calibrated_mag_y - Nullable field value to be set - - - - - - returns number of elements in field CalibratedMagZ - - - - Retrieves the CalibratedMagZ field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of CalibratedMagZ element to retrieve - Returns nullable float representing the CalibratedMagZ field - - - - Set CalibratedMagZ field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of calibrated_mag_z - Nullable field value to be set - - - - Implements the MemoGlob profile message. - - - - - Field Numbers for - - - - - Retrieves the PartIndex field - Comment: Sequence number of memo blocks - Returns nullable uint representing the PartIndex field - - - - Set PartIndex field - Comment: Sequence number of memo blocks - Nullable field value to be set - - - - - - returns number of elements in field Memo - - - - Retrieves the Memo field - Comment: Deprecated. Use data field. - 0 based index of Memo element to retrieve - Returns nullable byte representing the Memo field - - - - Set Memo field - Comment: Deprecated. Use data field. - 0 based index of memo - Nullable field value to be set - - - - Retrieves the MesgNum field - Comment: Message Number of the parent message - Returns nullable ushort representing the MesgNum field - - - - Set MesgNum field - Comment: Message Number of the parent message - Nullable field value to be set - - - - Retrieves the ParentIndex field - Comment: Index of mesg that this glob is associated with. - Returns nullable ushort representing the ParentIndex field - - - - Set ParentIndex field - Comment: Index of mesg that this glob is associated with. - Nullable field value to be set - - - - Retrieves the FieldNum field - Comment: Field within the parent that this glob is associated with - Returns nullable byte representing the FieldNum field - - - - Set FieldNum field - Comment: Field within the parent that this glob is associated with - Nullable field value to be set - - - - - - returns number of elements in field Data - - - - Retrieves the Data field - Comment: Block of utf8 bytes. Note, mutltibyte characters may be split across adjoining memo_glob messages. - 0 based index of Data element to retrieve - Returns nullable byte representing the Data field - - - - Set Data field - Comment: Block of utf8 bytes. Note, mutltibyte characters may be split across adjoining memo_glob messages. - 0 based index of data - Nullable field value to be set - - - - Implements the MesgCapabilities profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the File field - Returns nullable File enum representing the File field - - - - Set File field - Nullable field value to be set - - - - Retrieves the MesgNum field - Returns nullable ushort representing the MesgNum field - - - - Set MesgNum field - Nullable field value to be set - - - - Retrieves the CountType field - Returns nullable MesgCount enum representing the CountType field - - - - Set CountType field - Nullable field value to be set - - - - Retrieves the Count field - Returns nullable ushort representing the Count field - - - - Set Count field - Nullable field value to be set - - - - Retrieves the NumPerFile subfield - Nullable ushort representing the NumPerFile subfield - - - - - Set NumPerFile subfield - Subfield value to be set - - - - Retrieves the MaxPerFile subfield - Nullable ushort representing the MaxPerFile subfield - - - - - Set MaxPerFile subfield - Subfield value to be set - - - - Retrieves the MaxPerFileType subfield - Nullable ushort representing the MaxPerFileType subfield - - - - - Set MaxPerFileType subfield - Subfield value to be set - - - - Implements the MetZone profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HighBpm field - Returns nullable byte representing the HighBpm field - - - - Set HighBpm field - Nullable field value to be set - - - - Retrieves the Calories field - Units: kcal / min - Returns nullable float representing the Calories field - - - - Set Calories field - Units: kcal / min - Nullable field value to be set - - - - Retrieves the FatCalories field - Units: kcal / min - Returns nullable float representing the FatCalories field - - - - Set FatCalories field - Units: kcal / min - Nullable field value to be set - - - - Implements the MonitoringInfo profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the LocalTimestamp field - Units: s - Comment: Use to convert activity timestamps to local time if device does not support time zone and daylight savings time correction. - Returns nullable uint representing the LocalTimestamp field - - - - Set LocalTimestamp field - Units: s - Comment: Use to convert activity timestamps to local time if device does not support time zone and daylight savings time correction. - Nullable field value to be set - - - - - - returns number of elements in field ActivityType - - - - Retrieves the ActivityType field - 0 based index of ActivityType element to retrieve - Returns nullable ActivityType enum representing the ActivityType field - - - - Set ActivityType field - 0 based index of activity_type - Nullable field value to be set - - - - - - returns number of elements in field CyclesToDistance - - - - Retrieves the CyclesToDistance field - Units: m/cycle - Comment: Indexed by activity_type - 0 based index of CyclesToDistance element to retrieve - Returns nullable float representing the CyclesToDistance field - - - - Set CyclesToDistance field - Units: m/cycle - Comment: Indexed by activity_type - 0 based index of cycles_to_distance - Nullable field value to be set - - - - - - returns number of elements in field CyclesToCalories - - - - Retrieves the CyclesToCalories field - Units: kcal/cycle - Comment: Indexed by activity_type - 0 based index of CyclesToCalories element to retrieve - Returns nullable float representing the CyclesToCalories field - - - - Set CyclesToCalories field - Units: kcal/cycle - Comment: Indexed by activity_type - 0 based index of cycles_to_calories - Nullable field value to be set - - - - Retrieves the RestingMetabolicRate field - Units: kcal / day - Returns nullable ushort representing the RestingMetabolicRate field - - - - Set RestingMetabolicRate field - Units: kcal / day - Nullable field value to be set - - - - Implements the Monitoring profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Comment: Associates this data to device_info message. Not required for file with single device (sensor). - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Comment: Associates this data to device_info message. Not required for file with single device (sensor). - Nullable field value to be set - - - - Retrieves the Calories field - Units: kcal - Comment: Accumulated total calories. Maintained by MonitoringReader for each activity_type. See SDK documentation - Returns nullable ushort representing the Calories field - - - - Set Calories field - Units: kcal - Comment: Accumulated total calories. Maintained by MonitoringReader for each activity_type. See SDK documentation - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Comment: Accumulated distance. Maintained by MonitoringReader for each activity_type. See SDK documentation. - Returns nullable float representing the Distance field - - - - Set Distance field - Units: m - Comment: Accumulated distance. Maintained by MonitoringReader for each activity_type. See SDK documentation. - Nullable field value to be set - - - - Retrieves the Cycles field - Units: cycles - Comment: Accumulated cycles. Maintained by MonitoringReader for each activity_type. See SDK documentation. - Returns nullable float representing the Cycles field - - - - Set Cycles field - Units: cycles - Comment: Accumulated cycles. Maintained by MonitoringReader for each activity_type. See SDK documentation. - Nullable field value to be set - - - - Retrieves the Steps subfield - Units: steps - Nullable uint representing the Steps subfield - - - - - Set Steps subfield - Units: steps - Subfield value to be set - - - - Retrieves the Strokes subfield - Units: strokes - Nullable float representing the Strokes subfield - - - - - Set Strokes subfield - Units: strokes - Subfield value to be set - - - - Retrieves the ActiveTime field - Units: s - Returns nullable float representing the ActiveTime field - - - - Set ActiveTime field - Units: s - Nullable field value to be set - - - - Retrieves the ActivityType field - Returns nullable ActivityType enum representing the ActivityType field - - - - Set ActivityType field - Nullable field value to be set - - - - Retrieves the ActivitySubtype field - Returns nullable ActivitySubtype enum representing the ActivitySubtype field - - - - Set ActivitySubtype field - Nullable field value to be set - - - - Retrieves the ActivityLevel field - Returns nullable ActivityLevel enum representing the ActivityLevel field - - - - Set ActivityLevel field - Nullable field value to be set - - - - Retrieves the Distance16 field - Units: 100 * m - Returns nullable ushort representing the Distance16 field - - - - Set Distance16 field - Units: 100 * m - Nullable field value to be set - - - - Retrieves the Cycles16 field - Units: 2 * cycles (steps) - Returns nullable ushort representing the Cycles16 field - - - - Set Cycles16 field - Units: 2 * cycles (steps) - Nullable field value to be set - - - - Retrieves the ActiveTime16 field - Units: s - Returns nullable ushort representing the ActiveTime16 field - - - - Set ActiveTime16 field - Units: s - Nullable field value to be set - - - - Retrieves the LocalTimestamp field - Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - Returns nullable uint representing the LocalTimestamp field - - - - Set LocalTimestamp field - Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - Nullable field value to be set - - - - Retrieves the Temperature field - Units: C - Comment: Avg temperature during the logging interval ended at timestamp - Returns nullable float representing the Temperature field - - - - Set Temperature field - Units: C - Comment: Avg temperature during the logging interval ended at timestamp - Nullable field value to be set - - - - Retrieves the TemperatureMin field - Units: C - Comment: Min temperature during the logging interval ended at timestamp - Returns nullable float representing the TemperatureMin field - - - - Set TemperatureMin field - Units: C - Comment: Min temperature during the logging interval ended at timestamp - Nullable field value to be set - - - - Retrieves the TemperatureMax field - Units: C - Comment: Max temperature during the logging interval ended at timestamp - Returns nullable float representing the TemperatureMax field - - - - Set TemperatureMax field - Units: C - Comment: Max temperature during the logging interval ended at timestamp - Nullable field value to be set - - - - - - returns number of elements in field ActivityTime - - - - Retrieves the ActivityTime field - Units: minutes - Comment: Indexed using minute_activity_level enum - 0 based index of ActivityTime element to retrieve - Returns nullable ushort representing the ActivityTime field - - - - Set ActivityTime field - Units: minutes - Comment: Indexed using minute_activity_level enum - 0 based index of activity_time - Nullable field value to be set - - - - Retrieves the ActiveCalories field - Units: kcal - Returns nullable ushort representing the ActiveCalories field - - - - Set ActiveCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the CurrentActivityTypeIntensity field - Comment: Indicates single type / intensity for duration since last monitoring message. - Returns nullable byte representing the CurrentActivityTypeIntensity field - - - - Set CurrentActivityTypeIntensity field - Comment: Indicates single type / intensity for duration since last monitoring message. - Nullable field value to be set - - - - Retrieves the TimestampMin8 field - Units: min - Returns nullable byte representing the TimestampMin8 field - - - - Set TimestampMin8 field - Units: min - Nullable field value to be set - - - - Retrieves the Timestamp16 field - Units: s - Returns nullable ushort representing the Timestamp16 field - - - - Set Timestamp16 field - Units: s - Nullable field value to be set - - - - Retrieves the HeartRate field - Units: bpm - Returns nullable byte representing the HeartRate field - - - - Set HeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the Intensity field - Returns nullable float representing the Intensity field - - - - Set Intensity field - Nullable field value to be set - - - - Retrieves the DurationMin field - Units: min - Returns nullable ushort representing the DurationMin field - - - - Set DurationMin field - Units: min - Nullable field value to be set - - - - Retrieves the Duration field - Units: s - Returns nullable uint representing the Duration field - - - - Set Duration field - Units: s - Nullable field value to be set - - - - Retrieves the Ascent field - Units: m - Returns nullable float representing the Ascent field - - - - Set Ascent field - Units: m - Nullable field value to be set - - - - Retrieves the Descent field - Units: m - Returns nullable float representing the Descent field - - - - Set Descent field - Units: m - Nullable field value to be set - - - - Retrieves the ModerateActivityMinutes field - Units: minutes - Returns nullable ushort representing the ModerateActivityMinutes field - - - - Set ModerateActivityMinutes field - Units: minutes - Nullable field value to be set - - - - Retrieves the VigorousActivityMinutes field - Units: minutes - Returns nullable ushort representing the VigorousActivityMinutes field - - - - Set VigorousActivityMinutes field - Units: minutes - Nullable field value to be set - - - - Implements the NmeaSentence profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Timestamp message was output - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Timestamp message was output - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Nullable field value to be set - - - - Retrieves the Sentence field - Comment: NMEA sentence - Returns byte[] representing the Sentence field - - - - Retrieves the Sentence field - Comment: NMEA sentence - Returns String representing the Sentence field - - - - Set Sentence field - Comment: NMEA sentence - field value to be set - - - - Set Sentence field - Comment: NMEA sentence - field value to be set - - - - Implements the ObdiiData profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Timestamp message was output - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Timestamp message was output - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Nullable field value to be set - - - - - - returns number of elements in field TimeOffset - - - - Retrieves the TimeOffset field - Units: ms - Comment: Offset of PID reading [i] from start_timestamp+start_timestamp_ms. Readings may span accross seconds. - 0 based index of TimeOffset element to retrieve - Returns nullable ushort representing the TimeOffset field - - - - Set TimeOffset field - Units: ms - Comment: Offset of PID reading [i] from start_timestamp+start_timestamp_ms. Readings may span accross seconds. - 0 based index of time_offset - Nullable field value to be set - - - - Retrieves the Pid field - Comment: Parameter ID - Returns nullable byte representing the Pid field - - - - Set Pid field - Comment: Parameter ID - Nullable field value to be set - - - - - - returns number of elements in field RawData - - - - Retrieves the RawData field - Comment: Raw parameter data - 0 based index of RawData element to retrieve - Returns nullable byte representing the RawData field - - - - Set RawData field - Comment: Raw parameter data - 0 based index of raw_data - Nullable field value to be set - - - - - - returns number of elements in field PidDataSize - - - - Retrieves the PidDataSize field - Comment: Optional, data size of PID[i]. If not specified refer to SAE J1979. - 0 based index of PidDataSize element to retrieve - Returns nullable byte representing the PidDataSize field - - - - Set PidDataSize field - Comment: Optional, data size of PID[i]. If not specified refer to SAE J1979. - 0 based index of pid_data_size - Nullable field value to be set - - - - - - returns number of elements in field SystemTime - - - - Retrieves the SystemTime field - Comment: System time associated with sample expressed in ms, can be used instead of time_offset. There will be a system_time value for each raw_data element. For multibyte pids the system_time is repeated. - 0 based index of SystemTime element to retrieve - Returns nullable uint representing the SystemTime field - - - - Set SystemTime field - Comment: System time associated with sample expressed in ms, can be used instead of time_offset. There will be a system_time value for each raw_data element. For multibyte pids the system_time is repeated. - 0 based index of system_time - Nullable field value to be set - - - - Retrieves the StartTimestamp field - Comment: Timestamp of first sample recorded in the message. Used with time_offset to generate time of each sample - Returns DateTime representing the StartTimestamp field - - - - Set StartTimestamp field - Comment: Timestamp of first sample recorded in the message. Used with time_offset to generate time of each sample - Nullable field value to be set - - - - Retrieves the StartTimestampMs field - Units: ms - Comment: Fractional part of start_timestamp - Returns nullable ushort representing the StartTimestampMs field - - - - Set StartTimestampMs field - Units: ms - Comment: Fractional part of start_timestamp - Nullable field value to be set - - - - Implements the OhrSettings profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Enabled field - Returns nullable Switch enum representing the Enabled field - - - - Set Enabled field - Nullable field value to be set - - - - Implements the OneDSensorCalibration profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the SensorType field - Comment: Indicates which sensor the calibration is for - Returns nullable SensorType enum representing the SensorType field - - - - Set SensorType field - Comment: Indicates which sensor the calibration is for - Nullable field value to be set - - - - Retrieves the CalibrationFactor field - Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - Returns nullable uint representing the CalibrationFactor field - - - - Set CalibrationFactor field - Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - Nullable field value to be set - - - - Retrieves the BaroCalFactor subfield - Units: Pa - Comment: Barometer calibration factor - Nullable uint representing the BaroCalFactor subfield - - - - - Set BaroCalFactor subfield - Units: Pa - Comment: Barometer calibration factor - Subfield value to be set - - - - Retrieves the CalibrationDivisor field - Units: counts - Comment: Calibration factor divisor - Returns nullable uint representing the CalibrationDivisor field - - - - Set CalibrationDivisor field - Units: counts - Comment: Calibration factor divisor - Nullable field value to be set - - - - Retrieves the LevelShift field - Comment: Level shift value used to shift the ADC value back into range - Returns nullable uint representing the LevelShift field - - - - Set LevelShift field - Comment: Level shift value used to shift the ADC value back into range - Nullable field value to be set - - - - Retrieves the OffsetCal field - Comment: Internal Calibration factor - Returns nullable int representing the OffsetCal field - - - - Set OffsetCal field - Comment: Internal Calibration factor - Nullable field value to be set - - - - Implements the Pad profile message. - - - - - Field Numbers for - - - - - Implements the PowerZone profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HighValue field - Units: watts - Returns nullable ushort representing the HighValue field - - - - Set HighValue field - Units: watts - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Implements the Record profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the Altitude field - Units: m - Returns nullable float representing the Altitude field - - - - Set Altitude field - Units: m - Nullable field value to be set - - - - Retrieves the HeartRate field - Units: bpm - Returns nullable byte representing the HeartRate field - - - - Set HeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the Cadence field - Units: rpm - Returns nullable byte representing the Cadence field - - - - Set Cadence field - Units: rpm - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Returns nullable float representing the Distance field - - - - Set Distance field - Units: m - Nullable field value to be set - - - - Retrieves the Speed field - Units: m/s - Returns nullable float representing the Speed field - - - - Set Speed field - Units: m/s - Nullable field value to be set - - - - Retrieves the Power field - Units: watts - Returns nullable ushort representing the Power field - - - - Set Power field - Units: watts - Nullable field value to be set - - - - - - returns number of elements in field CompressedSpeedDistance - - - - Retrieves the CompressedSpeedDistance field - 0 based index of CompressedSpeedDistance element to retrieve - Returns nullable byte representing the CompressedSpeedDistance field - - - - Set CompressedSpeedDistance field - 0 based index of compressed_speed_distance - Nullable field value to be set - - - - Retrieves the Grade field - Units: % - Returns nullable float representing the Grade field - - - - Set Grade field - Units: % - Nullable field value to be set - - - - Retrieves the Resistance field - Comment: Relative. 0 is none 254 is Max. - Returns nullable byte representing the Resistance field - - - - Set Resistance field - Comment: Relative. 0 is none 254 is Max. - Nullable field value to be set - - - - Retrieves the TimeFromCourse field - Units: s - Returns nullable float representing the TimeFromCourse field - - - - Set TimeFromCourse field - Units: s - Nullable field value to be set - - - - Retrieves the CycleLength field - Units: m - Returns nullable float representing the CycleLength field - - - - Set CycleLength field - Units: m - Nullable field value to be set - - - - Retrieves the Temperature field - Units: C - Returns nullable sbyte representing the Temperature field - - - - Set Temperature field - Units: C - Nullable field value to be set - - - - - - returns number of elements in field Speed1s - - - - Retrieves the Speed1s field - Units: m/s - Comment: Speed at 1s intervals. Timestamp field indicates time of last array element. - 0 based index of Speed1s element to retrieve - Returns nullable float representing the Speed1s field - - - - Set Speed1s field - Units: m/s - Comment: Speed at 1s intervals. Timestamp field indicates time of last array element. - 0 based index of speed_1s - Nullable field value to be set - - - - Retrieves the Cycles field - Units: cycles - Returns nullable byte representing the Cycles field - - - - Set Cycles field - Units: cycles - Nullable field value to be set - - - - Retrieves the TotalCycles field - Units: cycles - Returns nullable uint representing the TotalCycles field - - - - Set TotalCycles field - Units: cycles - Nullable field value to be set - - - - Retrieves the CompressedAccumulatedPower field - Units: watts - Returns nullable ushort representing the CompressedAccumulatedPower field - - - - Set CompressedAccumulatedPower field - Units: watts - Nullable field value to be set - - - - Retrieves the AccumulatedPower field - Units: watts - Returns nullable uint representing the AccumulatedPower field - - - - Set AccumulatedPower field - Units: watts - Nullable field value to be set - - - - Retrieves the LeftRightBalance field - Returns nullable byte representing the LeftRightBalance field - - - - Set LeftRightBalance field - Nullable field value to be set - - - - Retrieves the GpsAccuracy field - Units: m - Returns nullable byte representing the GpsAccuracy field - - - - Set GpsAccuracy field - Units: m - Nullable field value to be set - - - - Retrieves the VerticalSpeed field - Units: m/s - Returns nullable float representing the VerticalSpeed field - - - - Set VerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the Calories field - Units: kcal - Returns nullable ushort representing the Calories field - - - - Set Calories field - Units: kcal - Nullable field value to be set - - - - Retrieves the VerticalOscillation field - Units: mm - Returns nullable float representing the VerticalOscillation field - - - - Set VerticalOscillation field - Units: mm - Nullable field value to be set - - - - Retrieves the StanceTimePercent field - Units: percent - Returns nullable float representing the StanceTimePercent field - - - - Set StanceTimePercent field - Units: percent - Nullable field value to be set - - - - Retrieves the StanceTime field - Units: ms - Returns nullable float representing the StanceTime field - - - - Set StanceTime field - Units: ms - Nullable field value to be set - - - - Retrieves the ActivityType field - Returns nullable ActivityType enum representing the ActivityType field - - - - Set ActivityType field - Nullable field value to be set - - - - Retrieves the LeftTorqueEffectiveness field - Units: percent - Returns nullable float representing the LeftTorqueEffectiveness field - - - - Set LeftTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the RightTorqueEffectiveness field - Units: percent - Returns nullable float representing the RightTorqueEffectiveness field - - - - Set RightTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the LeftPedalSmoothness field - Units: percent - Returns nullable float representing the LeftPedalSmoothness field - - - - Set LeftPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the RightPedalSmoothness field - Units: percent - Returns nullable float representing the RightPedalSmoothness field - - - - Set RightPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the CombinedPedalSmoothness field - Units: percent - Returns nullable float representing the CombinedPedalSmoothness field - - - - Set CombinedPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the Time128 field - Units: s - Returns nullable float representing the Time128 field - - - - Set Time128 field - Units: s - Nullable field value to be set - - - - Retrieves the StrokeType field - Returns nullable StrokeType enum representing the StrokeType field - - - - Set StrokeType field - Nullable field value to be set - - - - Retrieves the Zone field - Returns nullable byte representing the Zone field - - - - Set Zone field - Nullable field value to be set - - - - Retrieves the BallSpeed field - Units: m/s - Returns nullable float representing the BallSpeed field - - - - Set BallSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the Cadence256 field - Units: rpm - Comment: Log cadence and fractional cadence for backwards compatability - Returns nullable float representing the Cadence256 field - - - - Set Cadence256 field - Units: rpm - Comment: Log cadence and fractional cadence for backwards compatability - Nullable field value to be set - - - - Retrieves the FractionalCadence field - Units: rpm - Returns nullable float representing the FractionalCadence field - - - - Set FractionalCadence field - Units: rpm - Nullable field value to be set - - - - Retrieves the TotalHemoglobinConc field - Units: g/dL - Comment: Total saturated and unsaturated hemoglobin - Returns nullable float representing the TotalHemoglobinConc field - - - - Set TotalHemoglobinConc field - Units: g/dL - Comment: Total saturated and unsaturated hemoglobin - Nullable field value to be set - - - - Retrieves the TotalHemoglobinConcMin field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - Returns nullable float representing the TotalHemoglobinConcMin field - - - - Set TotalHemoglobinConcMin field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - Nullable field value to be set - - - - Retrieves the TotalHemoglobinConcMax field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - Returns nullable float representing the TotalHemoglobinConcMax field - - - - Set TotalHemoglobinConcMax field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - Nullable field value to be set - - - - Retrieves the SaturatedHemoglobinPercent field - Units: % - Comment: Percentage of hemoglobin saturated with oxygen - Returns nullable float representing the SaturatedHemoglobinPercent field - - - - Set SaturatedHemoglobinPercent field - Units: % - Comment: Percentage of hemoglobin saturated with oxygen - Nullable field value to be set - - - - Retrieves the SaturatedHemoglobinPercentMin field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - Returns nullable float representing the SaturatedHemoglobinPercentMin field - - - - Set SaturatedHemoglobinPercentMin field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - Nullable field value to be set - - - - Retrieves the SaturatedHemoglobinPercentMax field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - Returns nullable float representing the SaturatedHemoglobinPercentMax field - - - - Set SaturatedHemoglobinPercentMax field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Nullable field value to be set - - - - Retrieves the LeftPco field - Units: mm - Comment: Left platform center offset - Returns nullable sbyte representing the LeftPco field - - - - Set LeftPco field - Units: mm - Comment: Left platform center offset - Nullable field value to be set - - - - Retrieves the RightPco field - Units: mm - Comment: Right platform center offset - Returns nullable sbyte representing the RightPco field - - - - Set RightPco field - Units: mm - Comment: Right platform center offset - Nullable field value to be set - - - - - - returns number of elements in field LeftPowerPhase - - - - Retrieves the LeftPowerPhase field - Units: degrees - Comment: Left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of LeftPowerPhase element to retrieve - Returns nullable float representing the LeftPowerPhase field - - - - Set LeftPowerPhase field - Units: degrees - Comment: Left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of left_power_phase - Nullable field value to be set - - - - - - returns number of elements in field LeftPowerPhasePeak - - - - Retrieves the LeftPowerPhasePeak field - Units: degrees - Comment: Left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of LeftPowerPhasePeak element to retrieve - Returns nullable float representing the LeftPowerPhasePeak field - - - - Set LeftPowerPhasePeak field - Units: degrees - Comment: Left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of left_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field RightPowerPhase - - - - Retrieves the RightPowerPhase field - Units: degrees - Comment: Right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of RightPowerPhase element to retrieve - Returns nullable float representing the RightPowerPhase field - - - - Set RightPowerPhase field - Units: degrees - Comment: Right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of right_power_phase - Nullable field value to be set - - - - - - returns number of elements in field RightPowerPhasePeak - - - - Retrieves the RightPowerPhasePeak field - Units: degrees - Comment: Right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of RightPowerPhasePeak element to retrieve - Returns nullable float representing the RightPowerPhasePeak field - - - - Set RightPowerPhasePeak field - Units: degrees - Comment: Right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of right_power_phase_peak - Nullable field value to be set - - - - Retrieves the EnhancedSpeed field - Units: m/s - Returns nullable float representing the EnhancedSpeed field - - - - Set EnhancedSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the EnhancedAltitude field - Units: m - Returns nullable float representing the EnhancedAltitude field - - - - Set EnhancedAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the BatterySoc field - Units: percent - Comment: lev battery state of charge - Returns nullable float representing the BatterySoc field - - - - Set BatterySoc field - Units: percent - Comment: lev battery state of charge - Nullable field value to be set - - - - Retrieves the MotorPower field - Units: watts - Comment: lev motor power - Returns nullable ushort representing the MotorPower field - - - - Set MotorPower field - Units: watts - Comment: lev motor power - Nullable field value to be set - - - - Retrieves the VerticalRatio field - Units: percent - Returns nullable float representing the VerticalRatio field - - - - Set VerticalRatio field - Units: percent - Nullable field value to be set - - - - Retrieves the StanceTimeBalance field - Units: percent - Returns nullable float representing the StanceTimeBalance field - - - - Set StanceTimeBalance field - Units: percent - Nullable field value to be set - - - - Retrieves the StepLength field - Units: mm - Returns nullable float representing the StepLength field - - - - Set StepLength field - Units: mm - Nullable field value to be set - - - - Retrieves the AbsolutePressure field - Units: Pa - Comment: Includes atmospheric pressure - Returns nullable uint representing the AbsolutePressure field - - - - Set AbsolutePressure field - Units: Pa - Comment: Includes atmospheric pressure - Nullable field value to be set - - - - Retrieves the Depth field - Units: m - Comment: 0 if above water - Returns nullable float representing the Depth field - - - - Set Depth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the NextStopDepth field - Units: m - Comment: 0 if above water - Returns nullable float representing the NextStopDepth field - - - - Set NextStopDepth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the NextStopTime field - Units: s - Returns nullable uint representing the NextStopTime field - - - - Set NextStopTime field - Units: s - Nullable field value to be set - - - - Retrieves the TimeToSurface field - Units: s - Returns nullable uint representing the TimeToSurface field - - - - Set TimeToSurface field - Units: s - Nullable field value to be set - - - - Retrieves the NdlTime field - Units: s - Returns nullable uint representing the NdlTime field - - - - Set NdlTime field - Units: s - Nullable field value to be set - - - - Retrieves the CnsLoad field - Units: percent - Returns nullable byte representing the CnsLoad field - - - - Set CnsLoad field - Units: percent - Nullable field value to be set - - - - Retrieves the N2Load field - Units: percent - Returns nullable ushort representing the N2Load field - - - - Set N2Load field - Units: percent - Nullable field value to be set - - - - Retrieves the RespirationRate field - Units: s - Returns nullable byte representing the RespirationRate field - - - - Set RespirationRate field - Units: s - Nullable field value to be set - - - - Retrieves the EnhancedRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedRespirationRate field - - - - Set EnhancedRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the Grit field - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the Grit field - - - - Set Grit field - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the Flow field - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the Flow field - - - - Set Flow field - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the EbikeTravelRange field - Units: km - Returns nullable ushort representing the EbikeTravelRange field - - - - Set EbikeTravelRange field - Units: km - Nullable field value to be set - - - - Retrieves the EbikeBatteryLevel field - Units: percent - Returns nullable byte representing the EbikeBatteryLevel field - - - - Set EbikeBatteryLevel field - Units: percent - Nullable field value to be set - - - - Retrieves the EbikeAssistMode field - Units: depends on sensor - Returns nullable byte representing the EbikeAssistMode field - - - - Set EbikeAssistMode field - Units: depends on sensor - Nullable field value to be set - - - - Retrieves the EbikeAssistLevelPercent field - Units: percent - Returns nullable byte representing the EbikeAssistLevelPercent field - - - - Set EbikeAssistLevelPercent field - Units: percent - Nullable field value to be set - - - - Retrieves the CoreTemperature field - Units: C - Returns nullable float representing the CoreTemperature field - - - - Set CoreTemperature field - Units: C - Nullable field value to be set - - - - Implements the Schedule profile message. - - - - - Field Numbers for - - - - - Retrieves the Manufacturer field - Comment: Corresponds to file_id of scheduled workout / course. - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Comment: Corresponds to file_id of scheduled workout / course. - Nullable field value to be set - - - - Retrieves the Product field - Comment: Corresponds to file_id of scheduled workout / course. - Returns nullable ushort representing the Product field - - - - Set Product field - Comment: Corresponds to file_id of scheduled workout / course. - Nullable field value to be set - - - - Retrieves the FaveroProduct subfield - Nullable ushort representing the FaveroProduct subfield - - - - - Set FaveroProduct subfield - Subfield value to be set - - - - Retrieves the GarminProduct subfield - Nullable ushort representing the GarminProduct subfield - - - - - Set GarminProduct subfield - Subfield value to be set - - - - Retrieves the SerialNumber field - Comment: Corresponds to file_id of scheduled workout / course. - Returns nullable uint representing the SerialNumber field - - - - Set SerialNumber field - Comment: Corresponds to file_id of scheduled workout / course. - Nullable field value to be set - - - - Retrieves the TimeCreated field - Comment: Corresponds to file_id of scheduled workout / course. - Returns DateTime representing the TimeCreated field - - - - Set TimeCreated field - Comment: Corresponds to file_id of scheduled workout / course. - Nullable field value to be set - - - - Retrieves the Completed field - Comment: TRUE if this activity has been started - Returns nullable Bool enum representing the Completed field - - - - Set Completed field - Comment: TRUE if this activity has been started - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable Schedule enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the ScheduledTime field - Returns nullable uint representing the ScheduledTime field - - - - Set ScheduledTime field - Nullable field value to be set - - - - Implements the SdmProfile profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Enabled field - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Nullable field value to be set - - - - Retrieves the SdmAntId field - Returns nullable ushort representing the SdmAntId field - - - - Set SdmAntId field - Nullable field value to be set - - - - Retrieves the SdmCalFactor field - Units: % - Returns nullable float representing the SdmCalFactor field - - - - Set SdmCalFactor field - Units: % - Nullable field value to be set - - - - Retrieves the Odometer field - Units: m - Returns nullable float representing the Odometer field - - - - Set Odometer field - Units: m - Nullable field value to be set - - - - Retrieves the SpeedSource field - Comment: Use footpod for speed source instead of GPS - Returns nullable Bool enum representing the SpeedSource field - - - - Set SpeedSource field - Comment: Use footpod for speed source instead of GPS - Nullable field value to be set - - - - Retrieves the SdmAntIdTransType field - Returns nullable byte representing the SdmAntIdTransType field - - - - Set SdmAntIdTransType field - Nullable field value to be set - - - - Retrieves the OdometerRollover field - Comment: Rollover counter that can be used to extend the odometer - Returns nullable byte representing the OdometerRollover field - - - - Set OdometerRollover field - Comment: Rollover counter that can be used to extend the odometer - Nullable field value to be set - - - - Implements the SegmentFile profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the FileUuid field - Comment: UUID of the segment file - Returns byte[] representing the FileUuid field - - - - Retrieves the FileUuid field - Comment: UUID of the segment file - Returns String representing the FileUuid field - - - - Set FileUuid field - Comment: UUID of the segment file - field value to be set - - - - Set FileUuid field - Comment: UUID of the segment file - field value to be set - - - - Retrieves the Enabled field - Comment: Enabled state of the segment file - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Comment: Enabled state of the segment file - Nullable field value to be set - - - - Retrieves the UserProfilePrimaryKey field - Comment: Primary key of the user that created the segment file - Returns nullable uint representing the UserProfilePrimaryKey field - - - - Set UserProfilePrimaryKey field - Comment: Primary key of the user that created the segment file - Nullable field value to be set - - - - - - returns number of elements in field LeaderType - - - - Retrieves the LeaderType field - Comment: Leader type of each leader in the segment file - 0 based index of LeaderType element to retrieve - Returns nullable SegmentLeaderboardType enum representing the LeaderType field - - - - Set LeaderType field - Comment: Leader type of each leader in the segment file - 0 based index of leader_type - Nullable field value to be set - - - - - - returns number of elements in field LeaderGroupPrimaryKey - - - - Retrieves the LeaderGroupPrimaryKey field - Comment: Group primary key of each leader in the segment file - 0 based index of LeaderGroupPrimaryKey element to retrieve - Returns nullable uint representing the LeaderGroupPrimaryKey field - - - - Set LeaderGroupPrimaryKey field - Comment: Group primary key of each leader in the segment file - 0 based index of leader_group_primary_key - Nullable field value to be set - - - - - - returns number of elements in field LeaderActivityId - - - - Retrieves the LeaderActivityId field - Comment: Activity ID of each leader in the segment file - 0 based index of LeaderActivityId element to retrieve - Returns nullable uint representing the LeaderActivityId field - - - - Set LeaderActivityId field - Comment: Activity ID of each leader in the segment file - 0 based index of leader_activity_id - Nullable field value to be set - - - - - - returns number of elements in field LeaderActivityIdString - - - - Retrieves the LeaderActivityIdString field - Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - 0 based index of LeaderActivityIdString element to retrieve - Returns byte[] representing the LeaderActivityIdString field - - - - Retrieves the LeaderActivityIdString field - Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - 0 based index of LeaderActivityIdString element to retrieve - Returns String representing the LeaderActivityIdString field - - - - Set LeaderActivityIdString field - Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - 0 based index of LeaderActivityIdString element to retrieve - field value to be set - - - - Set LeaderActivityIdString field - Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - 0 based index of leader_activity_id_string - field value to be set - - - - Retrieves the DefaultRaceLeader field - Comment: Index for the Leader Board entry selected as the default race participant - Returns nullable byte representing the DefaultRaceLeader field - - - - Set DefaultRaceLeader field - Comment: Index for the Leader Board entry selected as the default race participant - Nullable field value to be set - - - - Implements the SegmentId profile message. - - - - - Field Numbers for - - - - - Retrieves the Name field - Comment: Friendly name assigned to segment - Returns byte[] representing the Name field - - - - Retrieves the Name field - Comment: Friendly name assigned to segment - Returns String representing the Name field - - - - Set Name field - Comment: Friendly name assigned to segment - field value to be set - - - - Set Name field - Comment: Friendly name assigned to segment - field value to be set - - - - Retrieves the Uuid field - Comment: UUID of the segment - Returns byte[] representing the Uuid field - - - - Retrieves the Uuid field - Comment: UUID of the segment - Returns String representing the Uuid field - - - - Set Uuid field - Comment: UUID of the segment - field value to be set - - - - Set Uuid field - Comment: UUID of the segment - field value to be set - - - - Retrieves the Sport field - Comment: Sport associated with the segment - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Comment: Sport associated with the segment - Nullable field value to be set - - - - Retrieves the Enabled field - Comment: Segment enabled for evaluation - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Comment: Segment enabled for evaluation - Nullable field value to be set - - - - Retrieves the UserProfilePrimaryKey field - Comment: Primary key of the user that created the segment - Returns nullable uint representing the UserProfilePrimaryKey field - - - - Set UserProfilePrimaryKey field - Comment: Primary key of the user that created the segment - Nullable field value to be set - - - - Retrieves the DeviceId field - Comment: ID of the device that created the segment - Returns nullable uint representing the DeviceId field - - - - Set DeviceId field - Comment: ID of the device that created the segment - Nullable field value to be set - - - - Retrieves the DefaultRaceLeader field - Comment: Index for the Leader Board entry selected as the default race participant - Returns nullable byte representing the DefaultRaceLeader field - - - - Set DefaultRaceLeader field - Comment: Index for the Leader Board entry selected as the default race participant - Nullable field value to be set - - - - Retrieves the DeleteStatus field - Comment: Indicates if any segments should be deleted - Returns nullable SegmentDeleteStatus enum representing the DeleteStatus field - - - - Set DeleteStatus field - Comment: Indicates if any segments should be deleted - Nullable field value to be set - - - - Retrieves the SelectionType field - Comment: Indicates how the segment was selected to be sent to the device - Returns nullable SegmentSelectionType enum representing the SelectionType field - - - - Set SelectionType field - Comment: Indicates how the segment was selected to be sent to the device - Nullable field value to be set - - - - Implements the SegmentLap profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Timestamp field - Units: s - Comment: Lap end time. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Lap end time. - Nullable field value to be set - - - - Retrieves the Event field - Returns nullable Event enum representing the Event field - - - - Set Event field - Nullable field value to be set - - - - Retrieves the EventType field - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Nullable field value to be set - - - - Retrieves the StartTime field - Returns DateTime representing the StartTime field - - - - Set StartTime field - Nullable field value to be set - - - - Retrieves the StartPositionLat field - Units: semicircles - Returns nullable int representing the StartPositionLat field - - - - Set StartPositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the StartPositionLong field - Units: semicircles - Returns nullable int representing the StartPositionLong field - - - - Set StartPositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the EndPositionLat field - Units: semicircles - Returns nullable int representing the EndPositionLat field - - - - Set EndPositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the EndPositionLong field - Units: semicircles - Returns nullable int representing the EndPositionLong field - - - - Set EndPositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Returns nullable float representing the TotalElapsedTime field - - - - Set TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Nullable field value to be set - - - - Retrieves the TotalDistance field - Units: m - Returns nullable float representing the TotalDistance field - - - - Set TotalDistance field - Units: m - Nullable field value to be set - - - - Retrieves the TotalCycles field - Units: cycles - Returns nullable uint representing the TotalCycles field - - - - Set TotalCycles field - Units: cycles - Nullable field value to be set - - - - Retrieves the TotalStrokes subfield - Units: strokes - Nullable uint representing the TotalStrokes subfield - - - - - Set TotalStrokes subfield - Units: strokes - Subfield value to be set - - - - Retrieves the TotalCalories field - Units: kcal - Returns nullable ushort representing the TotalCalories field - - - - Set TotalCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the TotalFatCalories field - Units: kcal - Comment: If New Leaf - Returns nullable ushort representing the TotalFatCalories field - - - - Set TotalFatCalories field - Units: kcal - Comment: If New Leaf - Nullable field value to be set - - - - Retrieves the AvgSpeed field - Units: m/s - Returns nullable float representing the AvgSpeed field - - - - Set AvgSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxSpeed field - Units: m/s - Returns nullable float representing the MaxSpeed field - - - - Set MaxSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgHeartRate field - Units: bpm - Returns nullable byte representing the AvgHeartRate field - - - - Set AvgHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the MaxHeartRate field - Units: bpm - Returns nullable byte representing the MaxHeartRate field - - - - Set MaxHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Returns nullable byte representing the AvgCadence field - - - - Set AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Nullable field value to be set - - - - Retrieves the MaxCadence field - Units: rpm - Returns nullable byte representing the MaxCadence field - - - - Set MaxCadence field - Units: rpm - Nullable field value to be set - - - - Retrieves the AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Returns nullable ushort representing the AvgPower field - - - - Set AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Nullable field value to be set - - - - Retrieves the MaxPower field - Units: watts - Returns nullable ushort representing the MaxPower field - - - - Set MaxPower field - Units: watts - Nullable field value to be set - - - - Retrieves the TotalAscent field - Units: m - Returns nullable ushort representing the TotalAscent field - - - - Set TotalAscent field - Units: m - Nullable field value to be set - - - - Retrieves the TotalDescent field - Units: m - Returns nullable ushort representing the TotalDescent field - - - - Set TotalDescent field - Units: m - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Retrieves the NecLat field - Units: semicircles - Comment: North east corner latitude. - Returns nullable int representing the NecLat field - - - - Set NecLat field - Units: semicircles - Comment: North east corner latitude. - Nullable field value to be set - - - - Retrieves the NecLong field - Units: semicircles - Comment: North east corner longitude. - Returns nullable int representing the NecLong field - - - - Set NecLong field - Units: semicircles - Comment: North east corner longitude. - Nullable field value to be set - - - - Retrieves the SwcLat field - Units: semicircles - Comment: South west corner latitude. - Returns nullable int representing the SwcLat field - - - - Set SwcLat field - Units: semicircles - Comment: South west corner latitude. - Nullable field value to be set - - - - Retrieves the SwcLong field - Units: semicircles - Comment: South west corner latitude. - Returns nullable int representing the SwcLong field - - - - Set SwcLong field - Units: semicircles - Comment: South west corner latitude. - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the NormalizedPower field - Units: watts - Returns nullable ushort representing the NormalizedPower field - - - - Set NormalizedPower field - Units: watts - Nullable field value to be set - - - - Retrieves the LeftRightBalance field - Returns nullable ushort representing the LeftRightBalance field - - - - Set LeftRightBalance field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the TotalWork field - Units: J - Returns nullable uint representing the TotalWork field - - - - Set TotalWork field - Units: J - Nullable field value to be set - - - - Retrieves the AvgAltitude field - Units: m - Returns nullable float representing the AvgAltitude field - - - - Set AvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the MaxAltitude field - Units: m - Returns nullable float representing the MaxAltitude field - - - - Set MaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the GpsAccuracy field - Units: m - Returns nullable byte representing the GpsAccuracy field - - - - Set GpsAccuracy field - Units: m - Nullable field value to be set - - - - Retrieves the AvgGrade field - Units: % - Returns nullable float representing the AvgGrade field - - - - Set AvgGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgPosGrade field - Units: % - Returns nullable float representing the AvgPosGrade field - - - - Set AvgPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgNegGrade field - Units: % - Returns nullable float representing the AvgNegGrade field - - - - Set AvgNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxPosGrade field - Units: % - Returns nullable float representing the MaxPosGrade field - - - - Set MaxPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxNegGrade field - Units: % - Returns nullable float representing the MaxNegGrade field - - - - Set MaxNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgTemperature field - Units: C - Returns nullable sbyte representing the AvgTemperature field - - - - Set AvgTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MaxTemperature field - Units: C - Returns nullable sbyte representing the MaxTemperature field - - - - Set MaxTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the TotalMovingTime field - Units: s - Returns nullable float representing the TotalMovingTime field - - - - Set TotalMovingTime field - Units: s - Nullable field value to be set - - - - Retrieves the AvgPosVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgPosVerticalSpeed field - - - - Set AvgPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgNegVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgNegVerticalSpeed field - - - - Set AvgNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxPosVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxPosVerticalSpeed field - - - - Set MaxPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxNegVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxNegVerticalSpeed field - - - - Set MaxNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - - - returns number of elements in field TimeInHrZone - - - - Retrieves the TimeInHrZone field - Units: s - 0 based index of TimeInHrZone element to retrieve - Returns nullable float representing the TimeInHrZone field - - - - Set TimeInHrZone field - Units: s - 0 based index of time_in_hr_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInSpeedZone - - - - Retrieves the TimeInSpeedZone field - Units: s - 0 based index of TimeInSpeedZone element to retrieve - Returns nullable float representing the TimeInSpeedZone field - - - - Set TimeInSpeedZone field - Units: s - 0 based index of time_in_speed_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInCadenceZone - - - - Retrieves the TimeInCadenceZone field - Units: s - 0 based index of TimeInCadenceZone element to retrieve - Returns nullable float representing the TimeInCadenceZone field - - - - Set TimeInCadenceZone field - Units: s - 0 based index of time_in_cadence_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInPowerZone - - - - Retrieves the TimeInPowerZone field - Units: s - 0 based index of TimeInPowerZone element to retrieve - Returns nullable float representing the TimeInPowerZone field - - - - Set TimeInPowerZone field - Units: s - 0 based index of time_in_power_zone - Nullable field value to be set - - - - Retrieves the RepetitionNum field - Returns nullable ushort representing the RepetitionNum field - - - - Set RepetitionNum field - Nullable field value to be set - - - - Retrieves the MinAltitude field - Units: m - Returns nullable float representing the MinAltitude field - - - - Set MinAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the MinHeartRate field - Units: bpm - Returns nullable byte representing the MinHeartRate field - - - - Set MinHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the ActiveTime field - Units: s - Returns nullable float representing the ActiveTime field - - - - Set ActiveTime field - Units: s - Nullable field value to be set - - - - Retrieves the WktStepIndex field - Returns nullable ushort representing the WktStepIndex field - - - - Set WktStepIndex field - Nullable field value to be set - - - - Retrieves the SportEvent field - Returns nullable SportEvent enum representing the SportEvent field - - - - Set SportEvent field - Nullable field value to be set - - - - Retrieves the AvgLeftTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgLeftTorqueEffectiveness field - - - - Set AvgLeftTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgRightTorqueEffectiveness field - - - - Set AvgRightTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgLeftPedalSmoothness field - Units: percent - Returns nullable float representing the AvgLeftPedalSmoothness field - - - - Set AvgLeftPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightPedalSmoothness field - Units: percent - Returns nullable float representing the AvgRightPedalSmoothness field - - - - Set AvgRightPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgCombinedPedalSmoothness field - Units: percent - Returns nullable float representing the AvgCombinedPedalSmoothness field - - - - Set AvgCombinedPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the Status field - Returns nullable SegmentLapStatus enum representing the Status field - - - - Set Status field - Nullable field value to be set - - - - Retrieves the Uuid field - Returns byte[] representing the Uuid field - - - - Retrieves the Uuid field - Returns String representing the Uuid field - - - - Set Uuid field - field value to be set - - - - Set Uuid field - field value to be set - - - - Retrieves the AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Returns nullable float representing the AvgFractionalCadence field - - - - Set AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Nullable field value to be set - - - - Retrieves the MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Returns nullable float representing the MaxFractionalCadence field - - - - Set MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Nullable field value to be set - - - - Retrieves the TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Returns nullable float representing the TotalFractionalCycles field - - - - Set TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Nullable field value to be set - - - - Retrieves the FrontGearShiftCount field - Returns nullable ushort representing the FrontGearShiftCount field - - - - Set FrontGearShiftCount field - Nullable field value to be set - - - - Retrieves the RearGearShiftCount field - Returns nullable ushort representing the RearGearShiftCount field - - - - Set RearGearShiftCount field - Nullable field value to be set - - - - Retrieves the TimeStanding field - Units: s - Comment: Total time spent in the standing position - Returns nullable float representing the TimeStanding field - - - - Set TimeStanding field - Units: s - Comment: Total time spent in the standing position - Nullable field value to be set - - - - Retrieves the StandCount field - Comment: Number of transitions to the standing state - Returns nullable ushort representing the StandCount field - - - - Set StandCount field - Comment: Number of transitions to the standing state - Nullable field value to be set - - - - Retrieves the AvgLeftPco field - Units: mm - Comment: Average left platform center offset - Returns nullable sbyte representing the AvgLeftPco field - - - - Set AvgLeftPco field - Units: mm - Comment: Average left platform center offset - Nullable field value to be set - - - - Retrieves the AvgRightPco field - Units: mm - Comment: Average right platform center offset - Returns nullable sbyte representing the AvgRightPco field - - - - Set AvgRightPco field - Units: mm - Comment: Average right platform center offset - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhase - - - - Retrieves the AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhase element to retrieve - Returns nullable float representing the AvgLeftPowerPhase field - - - - Set AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of avg_left_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhasePeak - - - - Retrieves the AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhasePeak element to retrieve - Returns nullable float representing the AvgLeftPowerPhasePeak field - - - - Set AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of avg_left_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhase - - - - Retrieves the AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhase element to retrieve - Returns nullable float representing the AvgRightPowerPhase field - - - - Set AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhasePeak - - - - Retrieves the AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhasePeak element to retrieve - Returns nullable float representing the AvgRightPowerPhasePeak field - - - - Set AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgPowerPosition - - - - Retrieves the AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of AvgPowerPosition element to retrieve - Returns nullable ushort representing the AvgPowerPosition field - - - - Set AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of avg_power_position - Nullable field value to be set - - - - - - returns number of elements in field MaxPowerPosition - - - - Retrieves the MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of MaxPowerPosition element to retrieve - Returns nullable ushort representing the MaxPowerPosition field - - - - Set MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of max_power_position - Nullable field value to be set - - - - - - returns number of elements in field AvgCadencePosition - - - - Retrieves the AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of AvgCadencePosition element to retrieve - Returns nullable byte representing the AvgCadencePosition field - - - - Set AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of avg_cadence_position - Nullable field value to be set - - - - - - returns number of elements in field MaxCadencePosition - - - - Retrieves the MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of MaxCadencePosition element to retrieve - Returns nullable byte representing the MaxCadencePosition field - - - - Set MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of max_cadence_position - Nullable field value to be set - - - - Retrieves the Manufacturer field - Comment: Manufacturer that produced the segment - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Comment: Manufacturer that produced the segment - Nullable field value to be set - - - - Retrieves the TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the TotalGrit field - - - - Set TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the TotalFlow field - - - - Set TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the AvgGrit field - - - - Set AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the AvgFlow field - - - - Set AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Returns nullable float representing the TotalFractionalAscent field - - - - Set TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Nullable field value to be set - - - - Retrieves the TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Returns nullable float representing the TotalFractionalDescent field - - - - Set TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Nullable field value to be set - - - - Retrieves the EnhancedAvgAltitude field - Units: m - Returns nullable float representing the EnhancedAvgAltitude field - - - - Set EnhancedAvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMaxAltitude field - Units: m - Returns nullable float representing the EnhancedMaxAltitude field - - - - Set EnhancedMaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMinAltitude field - Units: m - Returns nullable float representing the EnhancedMinAltitude field - - - - Set EnhancedMinAltitude field - Units: m - Nullable field value to be set - - - - Implements the SegmentLeaderboardEntry profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Name field - Comment: Friendly name assigned to leader - Returns byte[] representing the Name field - - - - Retrieves the Name field - Comment: Friendly name assigned to leader - Returns String representing the Name field - - - - Set Name field - Comment: Friendly name assigned to leader - field value to be set - - - - Set Name field - Comment: Friendly name assigned to leader - field value to be set - - - - Retrieves the Type field - Comment: Leader classification - Returns nullable SegmentLeaderboardType enum representing the Type field - - - - Set Type field - Comment: Leader classification - Nullable field value to be set - - - - Retrieves the GroupPrimaryKey field - Comment: Primary user ID of this leader - Returns nullable uint representing the GroupPrimaryKey field - - - - Set GroupPrimaryKey field - Comment: Primary user ID of this leader - Nullable field value to be set - - - - Retrieves the ActivityId field - Comment: ID of the activity associated with this leader time - Returns nullable uint representing the ActivityId field - - - - Set ActivityId field - Comment: ID of the activity associated with this leader time - Nullable field value to be set - - - - Retrieves the SegmentTime field - Units: s - Comment: Segment Time (includes pauses) - Returns nullable float representing the SegmentTime field - - - - Set SegmentTime field - Units: s - Comment: Segment Time (includes pauses) - Nullable field value to be set - - - - Retrieves the ActivityIdString field - Comment: String version of the activity_id. 21 characters long, express in decimal - Returns byte[] representing the ActivityIdString field - - - - Retrieves the ActivityIdString field - Comment: String version of the activity_id. 21 characters long, express in decimal - Returns String representing the ActivityIdString field - - - - Set ActivityIdString field - Comment: String version of the activity_id. 21 characters long, express in decimal - field value to be set - - - - Set ActivityIdString field - Comment: String version of the activity_id. 21 characters long, express in decimal - field value to be set - - - - Implements the SegmentPoint profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Comment: Accumulated distance along the segment at the described point - Returns nullable float representing the Distance field - - - - Set Distance field - Units: m - Comment: Accumulated distance along the segment at the described point - Nullable field value to be set - - - - Retrieves the Altitude field - Units: m - Comment: Accumulated altitude along the segment at the described point - Returns nullable float representing the Altitude field - - - - Set Altitude field - Units: m - Comment: Accumulated altitude along the segment at the described point - Nullable field value to be set - - - - - - returns number of elements in field LeaderTime - - - - Retrieves the LeaderTime field - Units: s - Comment: Accumualted time each leader board member required to reach the described point. This value is zero for all leader board members at the starting point of the segment. - 0 based index of LeaderTime element to retrieve - Returns nullable float representing the LeaderTime field - - - - Set LeaderTime field - Units: s - Comment: Accumualted time each leader board member required to reach the described point. This value is zero for all leader board members at the starting point of the segment. - 0 based index of leader_time - Nullable field value to be set - - - - Retrieves the EnhancedAltitude field - Units: m - Comment: Accumulated altitude along the segment at the described point - Returns nullable float representing the EnhancedAltitude field - - - - Set EnhancedAltitude field - Units: m - Comment: Accumulated altitude along the segment at the described point - Nullable field value to be set - - - - Implements the Session profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Comment: Selected bit is set for the current session. - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Comment: Selected bit is set for the current session. - Nullable field value to be set - - - - Retrieves the Timestamp field - Units: s - Comment: Sesson end time. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Sesson end time. - Nullable field value to be set - - - - Retrieves the Event field - Comment: session - Returns nullable Event enum representing the Event field - - - - Set Event field - Comment: session - Nullable field value to be set - - - - Retrieves the EventType field - Comment: stop - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Comment: stop - Nullable field value to be set - - - - Retrieves the StartTime field - Returns DateTime representing the StartTime field - - - - Set StartTime field - Nullable field value to be set - - - - Retrieves the StartPositionLat field - Units: semicircles - Returns nullable int representing the StartPositionLat field - - - - Set StartPositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the StartPositionLong field - Units: semicircles - Returns nullable int representing the StartPositionLong field - - - - Set StartPositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Returns nullable float representing the TotalElapsedTime field - - - - Set TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Nullable field value to be set - - - - Retrieves the TotalDistance field - Units: m - Returns nullable float representing the TotalDistance field - - - - Set TotalDistance field - Units: m - Nullable field value to be set - - - - Retrieves the TotalCycles field - Units: cycles - Returns nullable uint representing the TotalCycles field - - - - Set TotalCycles field - Units: cycles - Nullable field value to be set - - - - Retrieves the TotalStrides subfield - Units: strides - Nullable uint representing the TotalStrides subfield - - - - - Set TotalStrides subfield - Units: strides - Subfield value to be set - - - - Retrieves the TotalStrokes subfield - Units: strokes - Nullable uint representing the TotalStrokes subfield - - - - - Set TotalStrokes subfield - Units: strokes - Subfield value to be set - - - - Retrieves the TotalCalories field - Units: kcal - Returns nullable ushort representing the TotalCalories field - - - - Set TotalCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the TotalFatCalories field - Units: kcal - Returns nullable ushort representing the TotalFatCalories field - - - - Set TotalFatCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the AvgSpeed field - Units: m/s - Comment: total_distance / total_timer_time - Returns nullable float representing the AvgSpeed field - - - - Set AvgSpeed field - Units: m/s - Comment: total_distance / total_timer_time - Nullable field value to be set - - - - Retrieves the MaxSpeed field - Units: m/s - Returns nullable float representing the MaxSpeed field - - - - Set MaxSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgHeartRate field - Units: bpm - Comment: average heart rate (excludes pause time) - Returns nullable byte representing the AvgHeartRate field - - - - Set AvgHeartRate field - Units: bpm - Comment: average heart rate (excludes pause time) - Nullable field value to be set - - - - Retrieves the MaxHeartRate field - Units: bpm - Returns nullable byte representing the MaxHeartRate field - - - - Set MaxHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Returns nullable byte representing the AvgCadence field - - - - Set AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Nullable field value to be set - - - - Retrieves the AvgRunningCadence subfield - Units: strides/min - Nullable byte representing the AvgRunningCadence subfield - - - - - Set AvgRunningCadence subfield - Units: strides/min - Subfield value to be set - - - - Retrieves the MaxCadence field - Units: rpm - Returns nullable byte representing the MaxCadence field - - - - Set MaxCadence field - Units: rpm - Nullable field value to be set - - - - Retrieves the MaxRunningCadence subfield - Units: strides/min - Nullable byte representing the MaxRunningCadence subfield - - - - - Set MaxRunningCadence subfield - Units: strides/min - Subfield value to be set - - - - Retrieves the AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Returns nullable ushort representing the AvgPower field - - - - Set AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Nullable field value to be set - - - - Retrieves the MaxPower field - Units: watts - Returns nullable ushort representing the MaxPower field - - - - Set MaxPower field - Units: watts - Nullable field value to be set - - - - Retrieves the TotalAscent field - Units: m - Returns nullable ushort representing the TotalAscent field - - - - Set TotalAscent field - Units: m - Nullable field value to be set - - - - Retrieves the TotalDescent field - Units: m - Returns nullable ushort representing the TotalDescent field - - - - Set TotalDescent field - Units: m - Nullable field value to be set - - - - Retrieves the TotalTrainingEffect field - Returns nullable float representing the TotalTrainingEffect field - - - - Set TotalTrainingEffect field - Nullable field value to be set - - - - Retrieves the FirstLapIndex field - Returns nullable ushort representing the FirstLapIndex field - - - - Set FirstLapIndex field - Nullable field value to be set - - - - Retrieves the NumLaps field - Returns nullable ushort representing the NumLaps field - - - - Set NumLaps field - Nullable field value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Retrieves the Trigger field - Returns nullable SessionTrigger enum representing the Trigger field - - - - Set Trigger field - Nullable field value to be set - - - - Retrieves the NecLat field - Units: semicircles - Comment: North east corner latitude - Returns nullable int representing the NecLat field - - - - Set NecLat field - Units: semicircles - Comment: North east corner latitude - Nullable field value to be set - - - - Retrieves the NecLong field - Units: semicircles - Comment: North east corner longitude - Returns nullable int representing the NecLong field - - - - Set NecLong field - Units: semicircles - Comment: North east corner longitude - Nullable field value to be set - - - - Retrieves the SwcLat field - Units: semicircles - Comment: South west corner latitude - Returns nullable int representing the SwcLat field - - - - Set SwcLat field - Units: semicircles - Comment: South west corner latitude - Nullable field value to be set - - - - Retrieves the SwcLong field - Units: semicircles - Comment: South west corner longitude - Returns nullable int representing the SwcLong field - - - - Set SwcLong field - Units: semicircles - Comment: South west corner longitude - Nullable field value to be set - - - - Retrieves the NumLengths field - Units: lengths - Comment: # of lengths of swim pool - Returns nullable ushort representing the NumLengths field - - - - Set NumLengths field - Units: lengths - Comment: # of lengths of swim pool - Nullable field value to be set - - - - Retrieves the NormalizedPower field - Units: watts - Returns nullable ushort representing the NormalizedPower field - - - - Set NormalizedPower field - Units: watts - Nullable field value to be set - - - - Retrieves the TrainingStressScore field - Units: tss - Returns nullable float representing the TrainingStressScore field - - - - Set TrainingStressScore field - Units: tss - Nullable field value to be set - - - - Retrieves the IntensityFactor field - Units: if - Returns nullable float representing the IntensityFactor field - - - - Set IntensityFactor field - Units: if - Nullable field value to be set - - - - Retrieves the LeftRightBalance field - Returns nullable ushort representing the LeftRightBalance field - - - - Set LeftRightBalance field - Nullable field value to be set - - - - Retrieves the AvgStrokeCount field - Units: strokes/lap - Returns nullable float representing the AvgStrokeCount field - - - - Set AvgStrokeCount field - Units: strokes/lap - Nullable field value to be set - - - - Retrieves the AvgStrokeDistance field - Units: m - Returns nullable float representing the AvgStrokeDistance field - - - - Set AvgStrokeDistance field - Units: m - Nullable field value to be set - - - - Retrieves the SwimStroke field - Units: swim_stroke - Returns nullable SwimStroke enum representing the SwimStroke field - - - - Set SwimStroke field - Units: swim_stroke - Nullable field value to be set - - - - Retrieves the PoolLength field - Units: m - Returns nullable float representing the PoolLength field - - - - Set PoolLength field - Units: m - Nullable field value to be set - - - - Retrieves the ThresholdPower field - Units: watts - Returns nullable ushort representing the ThresholdPower field - - - - Set ThresholdPower field - Units: watts - Nullable field value to be set - - - - Retrieves the PoolLengthUnit field - Returns nullable DisplayMeasure enum representing the PoolLengthUnit field - - - - Set PoolLengthUnit field - Nullable field value to be set - - - - Retrieves the NumActiveLengths field - Units: lengths - Comment: # of active lengths of swim pool - Returns nullable ushort representing the NumActiveLengths field - - - - Set NumActiveLengths field - Units: lengths - Comment: # of active lengths of swim pool - Nullable field value to be set - - - - Retrieves the TotalWork field - Units: J - Returns nullable uint representing the TotalWork field - - - - Set TotalWork field - Units: J - Nullable field value to be set - - - - Retrieves the AvgAltitude field - Units: m - Returns nullable float representing the AvgAltitude field - - - - Set AvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the MaxAltitude field - Units: m - Returns nullable float representing the MaxAltitude field - - - - Set MaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the GpsAccuracy field - Units: m - Returns nullable byte representing the GpsAccuracy field - - - - Set GpsAccuracy field - Units: m - Nullable field value to be set - - - - Retrieves the AvgGrade field - Units: % - Returns nullable float representing the AvgGrade field - - - - Set AvgGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgPosGrade field - Units: % - Returns nullable float representing the AvgPosGrade field - - - - Set AvgPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgNegGrade field - Units: % - Returns nullable float representing the AvgNegGrade field - - - - Set AvgNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxPosGrade field - Units: % - Returns nullable float representing the MaxPosGrade field - - - - Set MaxPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxNegGrade field - Units: % - Returns nullable float representing the MaxNegGrade field - - - - Set MaxNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgTemperature field - Units: C - Returns nullable sbyte representing the AvgTemperature field - - - - Set AvgTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MaxTemperature field - Units: C - Returns nullable sbyte representing the MaxTemperature field - - - - Set MaxTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the TotalMovingTime field - Units: s - Returns nullable float representing the TotalMovingTime field - - - - Set TotalMovingTime field - Units: s - Nullable field value to be set - - - - Retrieves the AvgPosVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgPosVerticalSpeed field - - - - Set AvgPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgNegVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgNegVerticalSpeed field - - - - Set AvgNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxPosVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxPosVerticalSpeed field - - - - Set MaxPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxNegVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxNegVerticalSpeed field - - - - Set MaxNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MinHeartRate field - Units: bpm - Returns nullable byte representing the MinHeartRate field - - - - Set MinHeartRate field - Units: bpm - Nullable field value to be set - - - - - - returns number of elements in field TimeInHrZone - - - - Retrieves the TimeInHrZone field - Units: s - 0 based index of TimeInHrZone element to retrieve - Returns nullable float representing the TimeInHrZone field - - - - Set TimeInHrZone field - Units: s - 0 based index of time_in_hr_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInSpeedZone - - - - Retrieves the TimeInSpeedZone field - Units: s - 0 based index of TimeInSpeedZone element to retrieve - Returns nullable float representing the TimeInSpeedZone field - - - - Set TimeInSpeedZone field - Units: s - 0 based index of time_in_speed_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInCadenceZone - - - - Retrieves the TimeInCadenceZone field - Units: s - 0 based index of TimeInCadenceZone element to retrieve - Returns nullable float representing the TimeInCadenceZone field - - - - Set TimeInCadenceZone field - Units: s - 0 based index of time_in_cadence_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInPowerZone - - - - Retrieves the TimeInPowerZone field - Units: s - 0 based index of TimeInPowerZone element to retrieve - Returns nullable float representing the TimeInPowerZone field - - - - Set TimeInPowerZone field - Units: s - 0 based index of time_in_power_zone - Nullable field value to be set - - - - Retrieves the AvgLapTime field - Units: s - Returns nullable float representing the AvgLapTime field - - - - Set AvgLapTime field - Units: s - Nullable field value to be set - - - - Retrieves the BestLapIndex field - Returns nullable ushort representing the BestLapIndex field - - - - Set BestLapIndex field - Nullable field value to be set - - - - Retrieves the MinAltitude field - Units: m - Returns nullable float representing the MinAltitude field - - - - Set MinAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the PlayerScore field - Returns nullable ushort representing the PlayerScore field - - - - Set PlayerScore field - Nullable field value to be set - - - - Retrieves the OpponentScore field - Returns nullable ushort representing the OpponentScore field - - - - Set OpponentScore field - Nullable field value to be set - - - - Retrieves the OpponentName field - Returns byte[] representing the OpponentName field - - - - Retrieves the OpponentName field - Returns String representing the OpponentName field - - - - Set OpponentName field - field value to be set - - - - Set OpponentName field - field value to be set - - - - - - returns number of elements in field StrokeCount - - - - Retrieves the StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of StrokeCount element to retrieve - Returns nullable ushort representing the StrokeCount field - - - - Set StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of stroke_count - Nullable field value to be set - - - - - - returns number of elements in field ZoneCount - - - - Retrieves the ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of ZoneCount element to retrieve - Returns nullable ushort representing the ZoneCount field - - - - Set ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of zone_count - Nullable field value to be set - - - - Retrieves the MaxBallSpeed field - Units: m/s - Returns nullable float representing the MaxBallSpeed field - - - - Set MaxBallSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgBallSpeed field - Units: m/s - Returns nullable float representing the AvgBallSpeed field - - - - Set AvgBallSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgVerticalOscillation field - Units: mm - Returns nullable float representing the AvgVerticalOscillation field - - - - Set AvgVerticalOscillation field - Units: mm - Nullable field value to be set - - - - Retrieves the AvgStanceTimePercent field - Units: percent - Returns nullable float representing the AvgStanceTimePercent field - - - - Set AvgStanceTimePercent field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStanceTime field - Units: ms - Returns nullable float representing the AvgStanceTime field - - - - Set AvgStanceTime field - Units: ms - Nullable field value to be set - - - - Retrieves the AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Returns nullable float representing the AvgFractionalCadence field - - - - Set AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Nullable field value to be set - - - - Retrieves the MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Returns nullable float representing the MaxFractionalCadence field - - - - Set MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Nullable field value to be set - - - - Retrieves the TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Returns nullable float representing the TotalFractionalCycles field - - - - Set TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Nullable field value to be set - - - - - - returns number of elements in field AvgTotalHemoglobinConc - - - - Retrieves the AvgTotalHemoglobinConc field - Units: g/dL - Comment: Avg saturated and unsaturated hemoglobin - 0 based index of AvgTotalHemoglobinConc element to retrieve - Returns nullable float representing the AvgTotalHemoglobinConc field - - - - Set AvgTotalHemoglobinConc field - Units: g/dL - Comment: Avg saturated and unsaturated hemoglobin - 0 based index of avg_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field MinTotalHemoglobinConc - - - - Retrieves the MinTotalHemoglobinConc field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - 0 based index of MinTotalHemoglobinConc element to retrieve - Returns nullable float representing the MinTotalHemoglobinConc field - - - - Set MinTotalHemoglobinConc field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - 0 based index of min_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field MaxTotalHemoglobinConc - - - - Retrieves the MaxTotalHemoglobinConc field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - 0 based index of MaxTotalHemoglobinConc element to retrieve - Returns nullable float representing the MaxTotalHemoglobinConc field - - - - Set MaxTotalHemoglobinConc field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - 0 based index of max_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field AvgSaturatedHemoglobinPercent - - - - Retrieves the AvgSaturatedHemoglobinPercent field - Units: % - Comment: Avg percentage of hemoglobin saturated with oxygen - 0 based index of AvgSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the AvgSaturatedHemoglobinPercent field - - - - Set AvgSaturatedHemoglobinPercent field - Units: % - Comment: Avg percentage of hemoglobin saturated with oxygen - 0 based index of avg_saturated_hemoglobin_percent - Nullable field value to be set - - - - - - returns number of elements in field MinSaturatedHemoglobinPercent - - - - Retrieves the MinSaturatedHemoglobinPercent field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - 0 based index of MinSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the MinSaturatedHemoglobinPercent field - - - - Set MinSaturatedHemoglobinPercent field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - 0 based index of min_saturated_hemoglobin_percent - Nullable field value to be set - - - - - - returns number of elements in field MaxSaturatedHemoglobinPercent - - - - Retrieves the MaxSaturatedHemoglobinPercent field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - 0 based index of MaxSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the MaxSaturatedHemoglobinPercent field - - - - Set MaxSaturatedHemoglobinPercent field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - 0 based index of max_saturated_hemoglobin_percent - Nullable field value to be set - - - - Retrieves the AvgLeftTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgLeftTorqueEffectiveness field - - - - Set AvgLeftTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgRightTorqueEffectiveness field - - - - Set AvgRightTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgLeftPedalSmoothness field - Units: percent - Returns nullable float representing the AvgLeftPedalSmoothness field - - - - Set AvgLeftPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightPedalSmoothness field - Units: percent - Returns nullable float representing the AvgRightPedalSmoothness field - - - - Set AvgRightPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgCombinedPedalSmoothness field - Units: percent - Returns nullable float representing the AvgCombinedPedalSmoothness field - - - - Set AvgCombinedPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the SportIndex field - Returns nullable byte representing the SportIndex field - - - - Set SportIndex field - Nullable field value to be set - - - - Retrieves the TimeStanding field - Units: s - Comment: Total time spend in the standing position - Returns nullable float representing the TimeStanding field - - - - Set TimeStanding field - Units: s - Comment: Total time spend in the standing position - Nullable field value to be set - - - - Retrieves the StandCount field - Comment: Number of transitions to the standing state - Returns nullable ushort representing the StandCount field - - - - Set StandCount field - Comment: Number of transitions to the standing state - Nullable field value to be set - - - - Retrieves the AvgLeftPco field - Units: mm - Comment: Average platform center offset Left - Returns nullable sbyte representing the AvgLeftPco field - - - - Set AvgLeftPco field - Units: mm - Comment: Average platform center offset Left - Nullable field value to be set - - - - Retrieves the AvgRightPco field - Units: mm - Comment: Average platform center offset Right - Returns nullable sbyte representing the AvgRightPco field - - - - Set AvgRightPco field - Units: mm - Comment: Average platform center offset Right - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhase - - - - Retrieves the AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhase element to retrieve - Returns nullable float representing the AvgLeftPowerPhase field - - - - Set AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Indexes defined by power_phase_type. - 0 based index of avg_left_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhasePeak - - - - Retrieves the AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhasePeak element to retrieve - Returns nullable float representing the AvgLeftPowerPhasePeak field - - - - Set AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of avg_left_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhase - - - - Retrieves the AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhase element to retrieve - Returns nullable float representing the AvgRightPowerPhase field - - - - Set AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhasePeak - - - - Retrieves the AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhasePeak element to retrieve - Returns nullable float representing the AvgRightPowerPhasePeak field - - - - Set AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgPowerPosition - - - - Retrieves the AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of AvgPowerPosition element to retrieve - Returns nullable ushort representing the AvgPowerPosition field - - - - Set AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of avg_power_position - Nullable field value to be set - - - - - - returns number of elements in field MaxPowerPosition - - - - Retrieves the MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of MaxPowerPosition element to retrieve - Returns nullable ushort representing the MaxPowerPosition field - - - - Set MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of max_power_position - Nullable field value to be set - - - - - - returns number of elements in field AvgCadencePosition - - - - Retrieves the AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of AvgCadencePosition element to retrieve - Returns nullable byte representing the AvgCadencePosition field - - - - Set AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of avg_cadence_position - Nullable field value to be set - - - - - - returns number of elements in field MaxCadencePosition - - - - Retrieves the MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of MaxCadencePosition element to retrieve - Returns nullable byte representing the MaxCadencePosition field - - - - Set MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of max_cadence_position - Nullable field value to be set - - - - Retrieves the EnhancedAvgSpeed field - Units: m/s - Comment: total_distance / total_timer_time - Returns nullable float representing the EnhancedAvgSpeed field - - - - Set EnhancedAvgSpeed field - Units: m/s - Comment: total_distance / total_timer_time - Nullable field value to be set - - - - Retrieves the EnhancedMaxSpeed field - Units: m/s - Returns nullable float representing the EnhancedMaxSpeed field - - - - Set EnhancedMaxSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the EnhancedAvgAltitude field - Units: m - Returns nullable float representing the EnhancedAvgAltitude field - - - - Set EnhancedAvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMinAltitude field - Units: m - Returns nullable float representing the EnhancedMinAltitude field - - - - Set EnhancedMinAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMaxAltitude field - Units: m - Returns nullable float representing the EnhancedMaxAltitude field - - - - Set EnhancedMaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the AvgLevMotorPower field - Units: watts - Comment: lev average motor power during session - Returns nullable ushort representing the AvgLevMotorPower field - - - - Set AvgLevMotorPower field - Units: watts - Comment: lev average motor power during session - Nullable field value to be set - - - - Retrieves the MaxLevMotorPower field - Units: watts - Comment: lev maximum motor power during session - Returns nullable ushort representing the MaxLevMotorPower field - - - - Set MaxLevMotorPower field - Units: watts - Comment: lev maximum motor power during session - Nullable field value to be set - - - - Retrieves the LevBatteryConsumption field - Units: percent - Comment: lev battery consumption during session - Returns nullable float representing the LevBatteryConsumption field - - - - Set LevBatteryConsumption field - Units: percent - Comment: lev battery consumption during session - Nullable field value to be set - - - - Retrieves the AvgVerticalRatio field - Units: percent - Returns nullable float representing the AvgVerticalRatio field - - - - Set AvgVerticalRatio field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStanceTimeBalance field - Units: percent - Returns nullable float representing the AvgStanceTimeBalance field - - - - Set AvgStanceTimeBalance field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStepLength field - Units: mm - Returns nullable float representing the AvgStepLength field - - - - Set AvgStepLength field - Units: mm - Nullable field value to be set - - - - Retrieves the TotalAnaerobicTrainingEffect field - Returns nullable float representing the TotalAnaerobicTrainingEffect field - - - - Set TotalAnaerobicTrainingEffect field - Nullable field value to be set - - - - Retrieves the AvgVam field - Units: m/s - Returns nullable float representing the AvgVam field - - - - Set AvgVam field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgRespirationRate field - Returns nullable byte representing the AvgRespirationRate field - - - - Set AvgRespirationRate field - Nullable field value to be set - - - - Retrieves the MaxRespirationRate field - Returns nullable byte representing the MaxRespirationRate field - - - - Set MaxRespirationRate field - Nullable field value to be set - - - - Retrieves the MinRespirationRate field - Returns nullable byte representing the MinRespirationRate field - - - - Set MinRespirationRate field - Nullable field value to be set - - - - Retrieves the TrainingLoadPeak field - Returns nullable float representing the TrainingLoadPeak field - - - - Set TrainingLoadPeak field - Nullable field value to be set - - - - Retrieves the EnhancedAvgRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedAvgRespirationRate field - - - - Set EnhancedAvgRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the EnhancedMaxRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedMaxRespirationRate field - - - - Set EnhancedMaxRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the EnhancedMinRespirationRate field - Returns nullable float representing the EnhancedMinRespirationRate field - - - - Set EnhancedMinRespirationRate field - Nullable field value to be set - - - - Retrieves the TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the TotalGrit field - - - - Set TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the TotalFlow field - - - - Set TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the JumpCount field - Returns nullable ushort representing the JumpCount field - - - - Set JumpCount field - Nullable field value to be set - - - - Retrieves the AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the AvgGrit field - - - - Set AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the AvgFlow field - - - - Set AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Returns nullable float representing the TotalFractionalAscent field - - - - Set TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Nullable field value to be set - - - - Retrieves the TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Returns nullable float representing the TotalFractionalDescent field - - - - Set TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Nullable field value to be set - - - - Retrieves the AvgCoreTemperature field - Units: C - Returns nullable float representing the AvgCoreTemperature field - - - - Set AvgCoreTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MinCoreTemperature field - Units: C - Returns nullable float representing the MinCoreTemperature field - - - - Set MinCoreTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MaxCoreTemperature field - Units: C - Returns nullable float representing the MaxCoreTemperature field - - - - Set MaxCoreTemperature field - Units: C - Nullable field value to be set - - - - Implements the Set profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Comment: Timestamp of the set - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Comment: Timestamp of the set - Nullable field value to be set - - - - Retrieves the Duration field - Units: s - Returns nullable float representing the Duration field - - - - Set Duration field - Units: s - Nullable field value to be set - - - - Retrieves the Repetitions field - Comment: # of repitions of the movement - Returns nullable ushort representing the Repetitions field - - - - Set Repetitions field - Comment: # of repitions of the movement - Nullable field value to be set - - - - Retrieves the Weight field - Units: kg - Comment: Amount of weight applied for the set - Returns nullable float representing the Weight field - - - - Set Weight field - Units: kg - Comment: Amount of weight applied for the set - Nullable field value to be set - - - - Retrieves the SetType field - Returns nullable byte representing the SetType field - - - - Set SetType field - Nullable field value to be set - - - - Retrieves the StartTime field - Comment: Start time of the set - Returns DateTime representing the StartTime field - - - - Set StartTime field - Comment: Start time of the set - Nullable field value to be set - - - - - - returns number of elements in field Category - - - - Retrieves the Category field - 0 based index of Category element to retrieve - Returns nullable ushort representing the Category field - - - - Set Category field - 0 based index of category - Nullable field value to be set - - - - - - returns number of elements in field CategorySubtype - - - - Retrieves the CategorySubtype field - Comment: Based on the associated category, see [category]_exercise_names - 0 based index of CategorySubtype element to retrieve - Returns nullable ushort representing the CategorySubtype field - - - - Set CategorySubtype field - Comment: Based on the associated category, see [category]_exercise_names - 0 based index of category_subtype - Nullable field value to be set - - - - Retrieves the WeightDisplayUnit field - Returns nullable ushort representing the WeightDisplayUnit field - - - - Set WeightDisplayUnit field - Nullable field value to be set - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the WktStepIndex field - Returns nullable ushort representing the WktStepIndex field - - - - Set WktStepIndex field - Nullable field value to be set - - - - Implements the SlaveDevice profile message. - - - - - Field Numbers for - - - - - Retrieves the Manufacturer field - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Nullable field value to be set - - - - Retrieves the Product field - Returns nullable ushort representing the Product field - - - - Set Product field - Nullable field value to be set - - - - Retrieves the FaveroProduct subfield - Nullable ushort representing the FaveroProduct subfield - - - - - Set FaveroProduct subfield - Subfield value to be set - - - - Retrieves the GarminProduct subfield - Nullable ushort representing the GarminProduct subfield - - - - - Set GarminProduct subfield - Subfield value to be set - - - - Implements the Software profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Version field - Returns nullable float representing the Version field - - - - Set Version field - Nullable field value to be set - - - - Retrieves the PartNumber field - Returns byte[] representing the PartNumber field - - - - Retrieves the PartNumber field - Returns String representing the PartNumber field - - - - Set PartNumber field - field value to be set - - - - Set PartNumber field - field value to be set - - - - Implements the SpeedZone profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HighValue field - Units: m/s - Returns nullable float representing the HighValue field - - - - Set HighValue field - Units: m/s - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Implements the Split profile message. - - - - - Field Numbers for - - - - - Retrieves the SplitType field - Returns nullable SplitType enum representing the SplitType field - - - - Set SplitType field - Nullable field value to be set - - - - Retrieves the TotalElapsedTime field - Units: s - Returns nullable float representing the TotalElapsedTime field - - - - Set TotalElapsedTime field - Units: s - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Nullable field value to be set - - - - Retrieves the TotalDistance field - Units: m - Returns nullable float representing the TotalDistance field - - - - Set TotalDistance field - Units: m - Nullable field value to be set - - - - Retrieves the StartTime field - Returns DateTime representing the StartTime field - - - - Set StartTime field - Nullable field value to be set - - - - Implements the Sport profile message. - - - - - Field Numbers for - - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Implements the StressLevel profile message. - - - - - Field Numbers for - - - - - Retrieves the StressLevelValue field - Returns nullable short representing the StressLevelValue field - - - - Set StressLevelValue field - Nullable field value to be set - - - - Retrieves the StressLevelTime field - Units: s - Comment: Time stress score was calculated - Returns DateTime representing the StressLevelTime field - - - - Set StressLevelTime field - Units: s - Comment: Time stress score was calculated - Nullable field value to be set - - - - Implements the ThreeDSensorCalibration profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the SensorType field - Comment: Indicates which sensor the calibration is for - Returns nullable SensorType enum representing the SensorType field - - - - Set SensorType field - Comment: Indicates which sensor the calibration is for - Nullable field value to be set - - - - Retrieves the CalibrationFactor field - Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - Returns nullable uint representing the CalibrationFactor field - - - - Set CalibrationFactor field - Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - Nullable field value to be set - - - - Retrieves the AccelCalFactor subfield - Units: g - Comment: Accelerometer calibration factor - Nullable uint representing the AccelCalFactor subfield - - - - - Set AccelCalFactor subfield - Units: g - Comment: Accelerometer calibration factor - Subfield value to be set - - - - Retrieves the GyroCalFactor subfield - Units: deg/s - Comment: Gyro calibration factor - Nullable uint representing the GyroCalFactor subfield - - - - - Set GyroCalFactor subfield - Units: deg/s - Comment: Gyro calibration factor - Subfield value to be set - - - - Retrieves the CalibrationDivisor field - Units: counts - Comment: Calibration factor divisor - Returns nullable uint representing the CalibrationDivisor field - - - - Set CalibrationDivisor field - Units: counts - Comment: Calibration factor divisor - Nullable field value to be set - - - - Retrieves the LevelShift field - Comment: Level shift value used to shift the ADC value back into range - Returns nullable uint representing the LevelShift field - - - - Set LevelShift field - Comment: Level shift value used to shift the ADC value back into range - Nullable field value to be set - - - - - - returns number of elements in field OffsetCal - - - - Retrieves the OffsetCal field - Comment: Internal calibration factors, one for each: xy, yx, zx - 0 based index of OffsetCal element to retrieve - Returns nullable int representing the OffsetCal field - - - - Set OffsetCal field - Comment: Internal calibration factors, one for each: xy, yx, zx - 0 based index of offset_cal - Nullable field value to be set - - - - - - returns number of elements in field OrientationMatrix - - - - Retrieves the OrientationMatrix field - Comment: 3 x 3 rotation matrix (row major) - 0 based index of OrientationMatrix element to retrieve - Returns nullable float representing the OrientationMatrix field - - - - Set OrientationMatrix field - Comment: 3 x 3 rotation matrix (row major) - 0 based index of orientation_matrix - Nullable field value to be set - - - - Implements the TimeInZone profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the ReferenceMesg field - Returns nullable ushort representing the ReferenceMesg field - - - - Set ReferenceMesg field - Nullable field value to be set - - - - Retrieves the ReferenceIndex field - Returns nullable ushort representing the ReferenceIndex field - - - - Set ReferenceIndex field - Nullable field value to be set - - - - - - returns number of elements in field TimeInHrZone - - - - Retrieves the TimeInHrZone field - Units: s - 0 based index of TimeInHrZone element to retrieve - Returns nullable float representing the TimeInHrZone field - - - - Set TimeInHrZone field - Units: s - 0 based index of time_in_hr_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInSpeedZone - - - - Retrieves the TimeInSpeedZone field - Units: s - 0 based index of TimeInSpeedZone element to retrieve - Returns nullable float representing the TimeInSpeedZone field - - - - Set TimeInSpeedZone field - Units: s - 0 based index of time_in_speed_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInCadenceZone - - - - Retrieves the TimeInCadenceZone field - Units: s - 0 based index of TimeInCadenceZone element to retrieve - Returns nullable float representing the TimeInCadenceZone field - - - - Set TimeInCadenceZone field - Units: s - 0 based index of time_in_cadence_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInPowerZone - - - - Retrieves the TimeInPowerZone field - Units: s - 0 based index of TimeInPowerZone element to retrieve - Returns nullable float representing the TimeInPowerZone field - - - - Set TimeInPowerZone field - Units: s - 0 based index of time_in_power_zone - Nullable field value to be set - - - - - - returns number of elements in field HrZoneHighBoundary - - - - Retrieves the HrZoneHighBoundary field - Units: bpm - 0 based index of HrZoneHighBoundary element to retrieve - Returns nullable byte representing the HrZoneHighBoundary field - - - - Set HrZoneHighBoundary field - Units: bpm - 0 based index of hr_zone_high_boundary - Nullable field value to be set - - - - - - returns number of elements in field SpeedZoneHighBoundary - - - - Retrieves the SpeedZoneHighBoundary field - Units: m/s - 0 based index of SpeedZoneHighBoundary element to retrieve - Returns nullable float representing the SpeedZoneHighBoundary field - - - - Set SpeedZoneHighBoundary field - Units: m/s - 0 based index of speed_zone_high_boundary - Nullable field value to be set - - - - - - returns number of elements in field CadenceZoneHighBondary - - - - Retrieves the CadenceZoneHighBondary field - Units: rpm - 0 based index of CadenceZoneHighBondary element to retrieve - Returns nullable byte representing the CadenceZoneHighBondary field - - - - Set CadenceZoneHighBondary field - Units: rpm - 0 based index of cadence_zone_high_bondary - Nullable field value to be set - - - - - - returns number of elements in field PowerZoneHighBoundary - - - - Retrieves the PowerZoneHighBoundary field - Units: watts - 0 based index of PowerZoneHighBoundary element to retrieve - Returns nullable ushort representing the PowerZoneHighBoundary field - - - - Set PowerZoneHighBoundary field - Units: watts - 0 based index of power_zone_high_boundary - Nullable field value to be set - - - - Retrieves the HrCalcType field - Returns nullable HrZoneCalc enum representing the HrCalcType field - - - - Set HrCalcType field - Nullable field value to be set - - - - Retrieves the MaxHeartRate field - Returns nullable byte representing the MaxHeartRate field - - - - Set MaxHeartRate field - Nullable field value to be set - - - - Retrieves the RestingHeartRate field - Returns nullable byte representing the RestingHeartRate field - - - - Set RestingHeartRate field - Nullable field value to be set - - - - Retrieves the ThresholdHeartRate field - Returns nullable byte representing the ThresholdHeartRate field - - - - Set ThresholdHeartRate field - Nullable field value to be set - - - - Retrieves the PwrCalcType field - Returns nullable PwrZoneCalc enum representing the PwrCalcType field - - - - Set PwrCalcType field - Nullable field value to be set - - - - Retrieves the FunctionalThresholdPower field - Returns nullable ushort representing the FunctionalThresholdPower field - - - - Set FunctionalThresholdPower field - Nullable field value to be set - - - - Implements the TimestampCorrelation profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of UTC timestamp at the time the system timestamp was recorded. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of UTC timestamp at the time the system timestamp was recorded. - Nullable field value to be set - - - - Retrieves the FractionalTimestamp field - Units: s - Comment: Fractional part of the UTC timestamp at the time the system timestamp was recorded. - Returns nullable float representing the FractionalTimestamp field - - - - Set FractionalTimestamp field - Units: s - Comment: Fractional part of the UTC timestamp at the time the system timestamp was recorded. - Nullable field value to be set - - - - Retrieves the SystemTimestamp field - Units: s - Comment: Whole second part of the system timestamp - Returns DateTime representing the SystemTimestamp field - - - - Set SystemTimestamp field - Units: s - Comment: Whole second part of the system timestamp - Nullable field value to be set - - - - Retrieves the FractionalSystemTimestamp field - Units: s - Comment: Fractional part of the system timestamp - Returns nullable float representing the FractionalSystemTimestamp field - - - - Set FractionalSystemTimestamp field - Units: s - Comment: Fractional part of the system timestamp - Nullable field value to be set - - - - Retrieves the LocalTimestamp field - Units: s - Comment: timestamp epoch expressed in local time used to convert timestamps to local time - Returns nullable uint representing the LocalTimestamp field - - - - Set LocalTimestamp field - Units: s - Comment: timestamp epoch expressed in local time used to convert timestamps to local time - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the UTC timestamp at the time the system timestamp was recorded. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the UTC timestamp at the time the system timestamp was recorded. - Nullable field value to be set - - - - Retrieves the SystemTimestampMs field - Units: ms - Comment: Millisecond part of the system timestamp - Returns nullable ushort representing the SystemTimestampMs field - - - - Set SystemTimestampMs field - Units: ms - Comment: Millisecond part of the system timestamp - Nullable field value to be set - - - - Implements the Totals profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the TimerTime field - Units: s - Comment: Excludes pauses - Returns nullable uint representing the TimerTime field - - - - Set TimerTime field - Units: s - Comment: Excludes pauses - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Returns nullable uint representing the Distance field - - - - Set Distance field - Units: m - Nullable field value to be set - - - - Retrieves the Calories field - Units: kcal - Returns nullable uint representing the Calories field - - - - Set Calories field - Units: kcal - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the ElapsedTime field - Units: s - Comment: Includes pauses - Returns nullable uint representing the ElapsedTime field - - - - Set ElapsedTime field - Units: s - Comment: Includes pauses - Nullable field value to be set - - - - Retrieves the Sessions field - Returns nullable ushort representing the Sessions field - - - - Set Sessions field - Nullable field value to be set - - - - Retrieves the ActiveTime field - Units: s - Returns nullable uint representing the ActiveTime field - - - - Set ActiveTime field - Units: s - Nullable field value to be set - - - - Retrieves the SportIndex field - Returns nullable byte representing the SportIndex field - - - - Set SportIndex field - Nullable field value to be set - - - - Implements the TrainingFile profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable File enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Manufacturer field - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Nullable field value to be set - - - - Retrieves the Product field - Returns nullable ushort representing the Product field - - - - Set Product field - Nullable field value to be set - - - - Retrieves the FaveroProduct subfield - Nullable ushort representing the FaveroProduct subfield - - - - - Set FaveroProduct subfield - Subfield value to be set - - - - Retrieves the GarminProduct subfield - Nullable ushort representing the GarminProduct subfield - - - - - Set GarminProduct subfield - Subfield value to be set - - - - Retrieves the SerialNumber field - Returns nullable uint representing the SerialNumber field - - - - Set SerialNumber field - Nullable field value to be set - - - - Retrieves the TimeCreated field - Returns DateTime representing the TimeCreated field - - - - Set TimeCreated field - Nullable field value to be set - - - - Implements the UserProfile profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the FriendlyName field - Returns byte[] representing the FriendlyName field - - - - Retrieves the FriendlyName field - Returns String representing the FriendlyName field - - - - Set FriendlyName field - field value to be set - - - - Set FriendlyName field - field value to be set - - - - Retrieves the Gender field - Returns nullable Gender enum representing the Gender field - - - - Set Gender field - Nullable field value to be set - - - - Retrieves the Age field - Units: years - Returns nullable byte representing the Age field - - - - Set Age field - Units: years - Nullable field value to be set - - - - Retrieves the Height field - Units: m - Returns nullable float representing the Height field - - - - Set Height field - Units: m - Nullable field value to be set - - - - Retrieves the Weight field - Units: kg - Returns nullable float representing the Weight field - - - - Set Weight field - Units: kg - Nullable field value to be set - - - - Retrieves the Language field - Returns nullable Language enum representing the Language field - - - - Set Language field - Nullable field value to be set - - - - Retrieves the ElevSetting field - Returns nullable DisplayMeasure enum representing the ElevSetting field - - - - Set ElevSetting field - Nullable field value to be set - - - - Retrieves the WeightSetting field - Returns nullable DisplayMeasure enum representing the WeightSetting field - - - - Set WeightSetting field - Nullable field value to be set - - - - Retrieves the RestingHeartRate field - Units: bpm - Returns nullable byte representing the RestingHeartRate field - - - - Set RestingHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the DefaultMaxRunningHeartRate field - Units: bpm - Returns nullable byte representing the DefaultMaxRunningHeartRate field - - - - Set DefaultMaxRunningHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the DefaultMaxBikingHeartRate field - Units: bpm - Returns nullable byte representing the DefaultMaxBikingHeartRate field - - - - Set DefaultMaxBikingHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the DefaultMaxHeartRate field - Units: bpm - Returns nullable byte representing the DefaultMaxHeartRate field - - - - Set DefaultMaxHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the HrSetting field - Returns nullable DisplayHeart enum representing the HrSetting field - - - - Set HrSetting field - Nullable field value to be set - - - - Retrieves the SpeedSetting field - Returns nullable DisplayMeasure enum representing the SpeedSetting field - - - - Set SpeedSetting field - Nullable field value to be set - - - - Retrieves the DistSetting field - Returns nullable DisplayMeasure enum representing the DistSetting field - - - - Set DistSetting field - Nullable field value to be set - - - - Retrieves the PowerSetting field - Returns nullable DisplayPower enum representing the PowerSetting field - - - - Set PowerSetting field - Nullable field value to be set - - - - Retrieves the ActivityClass field - Returns nullable ActivityClass enum representing the ActivityClass field - - - - Set ActivityClass field - Nullable field value to be set - - - - Retrieves the PositionSetting field - Returns nullable DisplayPosition enum representing the PositionSetting field - - - - Set PositionSetting field - Nullable field value to be set - - - - Retrieves the TemperatureSetting field - Returns nullable DisplayMeasure enum representing the TemperatureSetting field - - - - Set TemperatureSetting field - Nullable field value to be set - - - - Retrieves the LocalId field - Returns nullable ushort representing the LocalId field - - - - Set LocalId field - Nullable field value to be set - - - - - - returns number of elements in field GlobalId - - - - Retrieves the GlobalId field - 0 based index of GlobalId element to retrieve - Returns nullable byte representing the GlobalId field - - - - Set GlobalId field - 0 based index of global_id - Nullable field value to be set - - - - Retrieves the WakeTime field - Comment: Typical wake time - Returns nullable uint representing the WakeTime field - - - - Set WakeTime field - Comment: Typical wake time - Nullable field value to be set - - - - Retrieves the SleepTime field - Comment: Typical bed time - Returns nullable uint representing the SleepTime field - - - - Set SleepTime field - Comment: Typical bed time - Nullable field value to be set - - - - Retrieves the HeightSetting field - Returns nullable DisplayMeasure enum representing the HeightSetting field - - - - Set HeightSetting field - Nullable field value to be set - - - - Retrieves the UserRunningStepLength field - Units: m - Comment: User defined running step length set to 0 for auto length - Returns nullable float representing the UserRunningStepLength field - - - - Set UserRunningStepLength field - Units: m - Comment: User defined running step length set to 0 for auto length - Nullable field value to be set - - - - Retrieves the UserWalkingStepLength field - Units: m - Comment: User defined walking step length set to 0 for auto length - Returns nullable float representing the UserWalkingStepLength field - - - - Set UserWalkingStepLength field - Units: m - Comment: User defined walking step length set to 0 for auto length - Nullable field value to be set - - - - Retrieves the DepthSetting field - Returns nullable DisplayMeasure enum representing the DepthSetting field - - - - Set DepthSetting field - Nullable field value to be set - - - - Retrieves the DiveCount field - Returns nullable uint representing the DiveCount field - - - - Set DiveCount field - Nullable field value to be set - - - - Implements the VideoClip profile message. - - - - - Field Numbers for - - - - - Retrieves the ClipNumber field - Returns nullable ushort representing the ClipNumber field - - - - Set ClipNumber field - Nullable field value to be set - - - - Retrieves the StartTimestamp field - Returns DateTime representing the StartTimestamp field - - - - Set StartTimestamp field - Nullable field value to be set - - - - Retrieves the StartTimestampMs field - Returns nullable ushort representing the StartTimestampMs field - - - - Set StartTimestampMs field - Nullable field value to be set - - - - Retrieves the EndTimestamp field - Returns DateTime representing the EndTimestamp field - - - - Set EndTimestamp field - Nullable field value to be set - - - - Retrieves the EndTimestampMs field - Returns nullable ushort representing the EndTimestampMs field - - - - Set EndTimestampMs field - Nullable field value to be set - - - - Retrieves the ClipStart field - Units: ms - Comment: Start of clip in video time - Returns nullable uint representing the ClipStart field - - - - Set ClipStart field - Units: ms - Comment: Start of clip in video time - Nullable field value to be set - - - - Retrieves the ClipEnd field - Units: ms - Comment: End of clip in video time - Returns nullable uint representing the ClipEnd field - - - - Set ClipEnd field - Units: ms - Comment: End of clip in video time - Nullable field value to be set - - - - Implements the VideoDescription profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Comment: Long descriptions will be split into multiple parts - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Comment: Long descriptions will be split into multiple parts - Nullable field value to be set - - - - Retrieves the MessageCount field - Comment: Total number of description parts - Returns nullable ushort representing the MessageCount field - - - - Set MessageCount field - Comment: Total number of description parts - Nullable field value to be set - - - - Retrieves the Text field - Returns byte[] representing the Text field - - - - Retrieves the Text field - Returns String representing the Text field - - - - Set Text field - field value to be set - - - - Set Text field - field value to be set - - - - Implements the VideoFrame profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - Retrieves the FrameNumber field - Comment: Number of the frame that the timestamp and timestamp_ms correlate to - Returns nullable uint representing the FrameNumber field - - - - Set FrameNumber field - Comment: Number of the frame that the timestamp and timestamp_ms correlate to - Nullable field value to be set - - - - Implements the Video profile message. - - - - - Field Numbers for - - - - - Retrieves the Url field - Returns byte[] representing the Url field - - - - Retrieves the Url field - Returns String representing the Url field - - - - Set Url field - field value to be set - - - - Set Url field - field value to be set - - - - Retrieves the HostingProvider field - Returns byte[] representing the HostingProvider field - - - - Retrieves the HostingProvider field - Returns String representing the HostingProvider field - - - - Set HostingProvider field - field value to be set - - - - Set HostingProvider field - field value to be set - - - - Retrieves the Duration field - Units: ms - Comment: Playback time of video - Returns nullable uint representing the Duration field - - - - Set Duration field - Units: ms - Comment: Playback time of video - Nullable field value to be set - - - - Implements the VideoTitle profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Comment: Long titles will be split into multiple parts - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Comment: Long titles will be split into multiple parts - Nullable field value to be set - - - - Retrieves the MessageCount field - Comment: Total number of title parts - Returns nullable ushort representing the MessageCount field - - - - Set MessageCount field - Comment: Total number of title parts - Nullable field value to be set - - - - Retrieves the Text field - Returns byte[] representing the Text field - - - - Retrieves the Text field - Returns String representing the Text field - - - - Set Text field - field value to be set - - - - Set Text field - field value to be set - - - - Implements the WatchfaceSettings profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Mode field - Returns nullable WatchfaceMode enum representing the Mode field - - - - Set Mode field - Nullable field value to be set - - - - Retrieves the Layout field - Returns nullable byte representing the Layout field - - - - Set Layout field - Nullable field value to be set - - - - Retrieves the DigitalLayout subfield - Nullable DigitalWatchfaceLayout enum representing the DigitalLayout subfield - - - - - Set DigitalLayout subfield - Subfield value to be set - - - - Retrieves the AnalogLayout subfield - Nullable AnalogWatchfaceLayout enum representing the AnalogLayout subfield - - - - - Set AnalogLayout subfield - Subfield value to be set - - - - Implements the WeatherAlert profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the ReportId field - Comment: Unique identifier from GCS report ID string, length is 12 - Returns byte[] representing the ReportId field - - - - Retrieves the ReportId field - Comment: Unique identifier from GCS report ID string, length is 12 - Returns String representing the ReportId field - - - - Set ReportId field - Comment: Unique identifier from GCS report ID string, length is 12 - field value to be set - - - - Set ReportId field - Comment: Unique identifier from GCS report ID string, length is 12 - field value to be set - - - - Retrieves the IssueTime field - Comment: Time alert was issued - Returns DateTime representing the IssueTime field - - - - Set IssueTime field - Comment: Time alert was issued - Nullable field value to be set - - - - Retrieves the ExpireTime field - Comment: Time alert expires - Returns DateTime representing the ExpireTime field - - - - Set ExpireTime field - Comment: Time alert expires - Nullable field value to be set - - - - Retrieves the Severity field - Comment: Warning, Watch, Advisory, Statement - Returns nullable WeatherSeverity enum representing the Severity field - - - - Set Severity field - Comment: Warning, Watch, Advisory, Statement - Nullable field value to be set - - - - Retrieves the Type field - Comment: Tornado, Severe Thunderstorm, etc. - Returns nullable WeatherSevereType enum representing the Type field - - - - Set Type field - Comment: Tornado, Severe Thunderstorm, etc. - Nullable field value to be set - - - - Implements the WeatherConditions profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Comment: time of update for current conditions, else forecast time - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Comment: time of update for current conditions, else forecast time - Nullable field value to be set - - - - Retrieves the WeatherReport field - Comment: Current or forecast - Returns nullable WeatherReport enum representing the WeatherReport field - - - - Set WeatherReport field - Comment: Current or forecast - Nullable field value to be set - - - - Retrieves the Temperature field - Units: C - Returns nullable sbyte representing the Temperature field - - - - Set Temperature field - Units: C - Nullable field value to be set - - - - Retrieves the Condition field - Comment: Corresponds to GSC Response weatherIcon field - Returns nullable WeatherStatus enum representing the Condition field - - - - Set Condition field - Comment: Corresponds to GSC Response weatherIcon field - Nullable field value to be set - - - - Retrieves the WindDirection field - Units: degrees - Returns nullable ushort representing the WindDirection field - - - - Set WindDirection field - Units: degrees - Nullable field value to be set - - - - Retrieves the WindSpeed field - Units: m/s - Returns nullable float representing the WindSpeed field - - - - Set WindSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the PrecipitationProbability field - Comment: range 0-100 - Returns nullable byte representing the PrecipitationProbability field - - - - Set PrecipitationProbability field - Comment: range 0-100 - Nullable field value to be set - - - - Retrieves the TemperatureFeelsLike field - Units: C - Comment: Heat Index if GCS heatIdx above or equal to 90F or wind chill if GCS windChill below or equal to 32F - Returns nullable sbyte representing the TemperatureFeelsLike field - - - - Set TemperatureFeelsLike field - Units: C - Comment: Heat Index if GCS heatIdx above or equal to 90F or wind chill if GCS windChill below or equal to 32F - Nullable field value to be set - - - - Retrieves the RelativeHumidity field - Returns nullable byte representing the RelativeHumidity field - - - - Set RelativeHumidity field - Nullable field value to be set - - - - Retrieves the Location field - Comment: string corresponding to GCS response location string - Returns byte[] representing the Location field - - - - Retrieves the Location field - Comment: string corresponding to GCS response location string - Returns String representing the Location field - - - - Set Location field - Comment: string corresponding to GCS response location string - field value to be set - - - - Set Location field - Comment: string corresponding to GCS response location string - field value to be set - - - - Retrieves the ObservedAtTime field - Returns DateTime representing the ObservedAtTime field - - - - Set ObservedAtTime field - Nullable field value to be set - - - - Retrieves the ObservedLocationLat field - Units: semicircles - Returns nullable int representing the ObservedLocationLat field - - - - Set ObservedLocationLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the ObservedLocationLong field - Units: semicircles - Returns nullable int representing the ObservedLocationLong field - - - - Set ObservedLocationLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the DayOfWeek field - Returns nullable DayOfWeek enum representing the DayOfWeek field - - - - Set DayOfWeek field - Nullable field value to be set - - - - Retrieves the HighTemperature field - Units: C - Returns nullable sbyte representing the HighTemperature field - - - - Set HighTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the LowTemperature field - Units: C - Returns nullable sbyte representing the LowTemperature field - - - - Set LowTemperature field - Units: C - Nullable field value to be set - - - - Implements the WeightScale profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Weight field - Units: kg - Returns nullable float representing the Weight field - - - - Set Weight field - Units: kg - Nullable field value to be set - - - - Retrieves the PercentFat field - Units: % - Returns nullable float representing the PercentFat field - - - - Set PercentFat field - Units: % - Nullable field value to be set - - - - Retrieves the PercentHydration field - Units: % - Returns nullable float representing the PercentHydration field - - - - Set PercentHydration field - Units: % - Nullable field value to be set - - - - Retrieves the VisceralFatMass field - Units: kg - Returns nullable float representing the VisceralFatMass field - - - - Set VisceralFatMass field - Units: kg - Nullable field value to be set - - - - Retrieves the BoneMass field - Units: kg - Returns nullable float representing the BoneMass field - - - - Set BoneMass field - Units: kg - Nullable field value to be set - - - - Retrieves the MuscleMass field - Units: kg - Returns nullable float representing the MuscleMass field - - - - Set MuscleMass field - Units: kg - Nullable field value to be set - - - - Retrieves the BasalMet field - Units: kcal/day - Returns nullable float representing the BasalMet field - - - - Set BasalMet field - Units: kcal/day - Nullable field value to be set - - - - Retrieves the PhysiqueRating field - Returns nullable byte representing the PhysiqueRating field - - - - Set PhysiqueRating field - Nullable field value to be set - - - - Retrieves the ActiveMet field - Units: kcal/day - Comment: ~4kJ per kcal, 0.25 allows max 16384 kcal - Returns nullable float representing the ActiveMet field - - - - Set ActiveMet field - Units: kcal/day - Comment: ~4kJ per kcal, 0.25 allows max 16384 kcal - Nullable field value to be set - - - - Retrieves the MetabolicAge field - Units: years - Returns nullable byte representing the MetabolicAge field - - - - Set MetabolicAge field - Units: years - Nullable field value to be set - - - - Retrieves the VisceralFatRating field - Returns nullable byte representing the VisceralFatRating field - - - - Set VisceralFatRating field - Nullable field value to be set - - - - Retrieves the UserProfileIndex field - Comment: Associates this weight scale message to a user. This corresponds to the index of the user profile message in the weight scale file. - Returns nullable ushort representing the UserProfileIndex field - - - - Set UserProfileIndex field - Comment: Associates this weight scale message to a user. This corresponds to the index of the user profile message in the weight scale file. - Nullable field value to be set - - - - Implements the Workout profile message. - - - - - Field Numbers for - - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the Capabilities field - Returns nullable uint representing the Capabilities field - - - - Set Capabilities field - Nullable field value to be set - - - - Retrieves the NumValidSteps field - Comment: number of valid steps - Returns nullable ushort representing the NumValidSteps field - - - - Set NumValidSteps field - Comment: number of valid steps - Nullable field value to be set - - - - Retrieves the WktName field - Returns byte[] representing the WktName field - - - - Retrieves the WktName field - Returns String representing the WktName field - - - - Set WktName field - field value to be set - - - - Set WktName field - field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the PoolLength field - Units: m - Returns nullable float representing the PoolLength field - - - - Set PoolLength field - Units: m - Nullable field value to be set - - - - Retrieves the PoolLengthUnit field - Returns nullable DisplayMeasure enum representing the PoolLengthUnit field - - - - Set PoolLengthUnit field - Nullable field value to be set - - - - Implements the WorkoutSession profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the NumValidSteps field - Returns nullable ushort representing the NumValidSteps field - - - - Set NumValidSteps field - Nullable field value to be set - - - - Retrieves the FirstStepIndex field - Returns nullable ushort representing the FirstStepIndex field - - - - Set FirstStepIndex field - Nullable field value to be set - - - - Retrieves the PoolLength field - Units: m - Returns nullable float representing the PoolLength field - - - - Set PoolLength field - Units: m - Nullable field value to be set - - - - Retrieves the PoolLengthUnit field - Returns nullable DisplayMeasure enum representing the PoolLengthUnit field - - - - Set PoolLengthUnit field - Nullable field value to be set - - - - Implements the WorkoutStep profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the WktStepName field - Returns byte[] representing the WktStepName field - - - - Retrieves the WktStepName field - Returns String representing the WktStepName field - - - - Set WktStepName field - field value to be set - - - - Set WktStepName field - field value to be set - - - - Retrieves the DurationType field - Returns nullable WktStepDuration enum representing the DurationType field - - - - Set DurationType field - Nullable field value to be set - - - - Retrieves the DurationValue field - Returns nullable uint representing the DurationValue field - - - - Set DurationValue field - Nullable field value to be set - - - - Retrieves the DurationTime subfield - Units: s - Nullable float representing the DurationTime subfield - - - - - Set DurationTime subfield - Units: s - Subfield value to be set - - - - Retrieves the DurationDistance subfield - Units: m - Nullable float representing the DurationDistance subfield - - - - - Set DurationDistance subfield - Units: m - Subfield value to be set - - - - Retrieves the DurationHr subfield - Units: % or bpm - Nullable uint representing the DurationHr subfield - - - - - Set DurationHr subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the DurationCalories subfield - Units: calories - Nullable uint representing the DurationCalories subfield - - - - - Set DurationCalories subfield - Units: calories - Subfield value to be set - - - - Retrieves the DurationStep subfield - Comment: message_index of step to loop back to. Steps are assumed to be in the order by message_index. custom_name and intensity members are undefined for this duration type. - Nullable uint representing the DurationStep subfield - - - - - Set DurationStep subfield - Comment: message_index of step to loop back to. Steps are assumed to be in the order by message_index. custom_name and intensity members are undefined for this duration type. - Subfield value to be set - - - - Retrieves the DurationPower subfield - Units: % or watts - Nullable uint representing the DurationPower subfield - - - - - Set DurationPower subfield - Units: % or watts - Subfield value to be set - - - - Retrieves the DurationReps subfield - Nullable uint representing the DurationReps subfield - - - - - Set DurationReps subfield - Subfield value to be set - - - - Retrieves the TargetType field - Returns nullable WktStepTarget enum representing the TargetType field - - - - Set TargetType field - Nullable field value to be set - - - - Retrieves the TargetValue field - Returns nullable uint representing the TargetValue field - - - - Set TargetValue field - Nullable field value to be set - - - - Retrieves the TargetSpeedZone subfield - Comment: speed zone (1-10);Custom =0; - Nullable uint representing the TargetSpeedZone subfield - - - - - Set TargetSpeedZone subfield - Comment: speed zone (1-10);Custom =0; - Subfield value to be set - - - - Retrieves the TargetHrZone subfield - Comment: hr zone (1-5);Custom =0; - Nullable uint representing the TargetHrZone subfield - - - - - Set TargetHrZone subfield - Comment: hr zone (1-5);Custom =0; - Subfield value to be set - - - - Retrieves the TargetCadenceZone subfield - Comment: Zone (1-?); Custom = 0; - Nullable uint representing the TargetCadenceZone subfield - - - - - Set TargetCadenceZone subfield - Comment: Zone (1-?); Custom = 0; - Subfield value to be set - - - - Retrieves the TargetPowerZone subfield - Comment: Power Zone ( 1-7); Custom = 0; - Nullable uint representing the TargetPowerZone subfield - - - - - Set TargetPowerZone subfield - Comment: Power Zone ( 1-7); Custom = 0; - Subfield value to be set - - - - Retrieves the RepeatSteps subfield - Comment: # of repetitions - Nullable uint representing the RepeatSteps subfield - - - - - Set RepeatSteps subfield - Comment: # of repetitions - Subfield value to be set - - - - Retrieves the RepeatTime subfield - Units: s - Nullable float representing the RepeatTime subfield - - - - - Set RepeatTime subfield - Units: s - Subfield value to be set - - - - Retrieves the RepeatDistance subfield - Units: m - Nullable float representing the RepeatDistance subfield - - - - - Set RepeatDistance subfield - Units: m - Subfield value to be set - - - - Retrieves the RepeatCalories subfield - Units: calories - Nullable uint representing the RepeatCalories subfield - - - - - Set RepeatCalories subfield - Units: calories - Subfield value to be set - - - - Retrieves the RepeatHr subfield - Units: % or bpm - Nullable uint representing the RepeatHr subfield - - - - - Set RepeatHr subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the RepeatPower subfield - Units: % or watts - Nullable uint representing the RepeatPower subfield - - - - - Set RepeatPower subfield - Units: % or watts - Subfield value to be set - - - - Retrieves the TargetStrokeType subfield - Nullable SwimStroke enum representing the TargetStrokeType subfield - - - - - Set TargetStrokeType subfield - Subfield value to be set - - - - Retrieves the CustomTargetValueLow field - Returns nullable uint representing the CustomTargetValueLow field - - - - Set CustomTargetValueLow field - Nullable field value to be set - - - - Retrieves the CustomTargetSpeedLow subfield - Units: m/s - Nullable float representing the CustomTargetSpeedLow subfield - - - - - Set CustomTargetSpeedLow subfield - Units: m/s - Subfield value to be set - - - - Retrieves the CustomTargetHeartRateLow subfield - Units: % or bpm - Nullable uint representing the CustomTargetHeartRateLow subfield - - - - - Set CustomTargetHeartRateLow subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the CustomTargetCadenceLow subfield - Units: rpm - Nullable uint representing the CustomTargetCadenceLow subfield - - - - - Set CustomTargetCadenceLow subfield - Units: rpm - Subfield value to be set - - - - Retrieves the CustomTargetPowerLow subfield - Units: % or watts - Nullable uint representing the CustomTargetPowerLow subfield - - - - - Set CustomTargetPowerLow subfield - Units: % or watts - Subfield value to be set - - - - Retrieves the CustomTargetValueHigh field - Returns nullable uint representing the CustomTargetValueHigh field - - - - Set CustomTargetValueHigh field - Nullable field value to be set - - - - Retrieves the CustomTargetSpeedHigh subfield - Units: m/s - Nullable float representing the CustomTargetSpeedHigh subfield - - - - - Set CustomTargetSpeedHigh subfield - Units: m/s - Subfield value to be set - - - - Retrieves the CustomTargetHeartRateHigh subfield - Units: % or bpm - Nullable uint representing the CustomTargetHeartRateHigh subfield - - - - - Set CustomTargetHeartRateHigh subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the CustomTargetCadenceHigh subfield - Units: rpm - Nullable uint representing the CustomTargetCadenceHigh subfield - - - - - Set CustomTargetCadenceHigh subfield - Units: rpm - Subfield value to be set - - - - Retrieves the CustomTargetPowerHigh subfield - Units: % or watts - Nullable uint representing the CustomTargetPowerHigh subfield - - - - - Set CustomTargetPowerHigh subfield - Units: % or watts - Subfield value to be set - - - - Retrieves the Intensity field - Returns nullable Intensity enum representing the Intensity field - - - - Set Intensity field - Nullable field value to be set - - - - Retrieves the Notes field - Returns byte[] representing the Notes field - - - - Retrieves the Notes field - Returns String representing the Notes field - - - - Set Notes field - field value to be set - - - - Set Notes field - field value to be set - - - - Retrieves the Equipment field - Returns nullable WorkoutEquipment enum representing the Equipment field - - - - Set Equipment field - Nullable field value to be set - - - - Retrieves the ExerciseCategory field - Returns nullable ushort representing the ExerciseCategory field - - - - Set ExerciseCategory field - Nullable field value to be set - - - - Retrieves the ExerciseName field - Returns nullable ushort representing the ExerciseName field - - - - Set ExerciseName field - Nullable field value to be set - - - - Retrieves the ExerciseWeight field - Units: kg - Returns nullable float representing the ExerciseWeight field - - - - Set ExerciseWeight field - Units: kg - Nullable field value to be set - - - - Retrieves the WeightDisplayUnit field - Returns nullable ushort representing the WeightDisplayUnit field - - - - Set WeightDisplayUnit field - Nullable field value to be set - - - - Retrieves the SecondaryTargetType field - Returns nullable WktStepTarget enum representing the SecondaryTargetType field - - - - Set SecondaryTargetType field - Nullable field value to be set - - - - Retrieves the SecondaryTargetValue field - Returns nullable uint representing the SecondaryTargetValue field - - - - Set SecondaryTargetValue field - Nullable field value to be set - - - - Retrieves the SecondaryTargetSpeedZone subfield - Comment: speed zone (1-10);Custom =0; - Nullable uint representing the SecondaryTargetSpeedZone subfield - - - - - Set SecondaryTargetSpeedZone subfield - Comment: speed zone (1-10);Custom =0; - Subfield value to be set - - - - Retrieves the SecondaryTargetHrZone subfield - Comment: hr zone (1-5);Custom =0; - Nullable uint representing the SecondaryTargetHrZone subfield - - - - - Set SecondaryTargetHrZone subfield - Comment: hr zone (1-5);Custom =0; - Subfield value to be set - - - - Retrieves the SecondaryTargetCadenceZone subfield - Comment: Zone (1-?); Custom = 0; - Nullable uint representing the SecondaryTargetCadenceZone subfield - - - - - Set SecondaryTargetCadenceZone subfield - Comment: Zone (1-?); Custom = 0; - Subfield value to be set - - - - Retrieves the SecondaryTargetPowerZone subfield - Comment: Power Zone ( 1-7); Custom = 0; - Nullable uint representing the SecondaryTargetPowerZone subfield - - - - - Set SecondaryTargetPowerZone subfield - Comment: Power Zone ( 1-7); Custom = 0; - Subfield value to be set - - - - Retrieves the SecondaryTargetStrokeType subfield - Nullable SwimStroke enum representing the SecondaryTargetStrokeType subfield - - - - - Set SecondaryTargetStrokeType subfield - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetValueLow field - Returns nullable uint representing the SecondaryCustomTargetValueLow field - - - - Set SecondaryCustomTargetValueLow field - Nullable field value to be set - - - - Retrieves the SecondaryCustomTargetSpeedLow subfield - Units: m/s - Nullable float representing the SecondaryCustomTargetSpeedLow subfield - - - - - Set SecondaryCustomTargetSpeedLow subfield - Units: m/s - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetHeartRateLow subfield - Units: % or bpm - Nullable uint representing the SecondaryCustomTargetHeartRateLow subfield - - - - - Set SecondaryCustomTargetHeartRateLow subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetCadenceLow subfield - Units: rpm - Nullable uint representing the SecondaryCustomTargetCadenceLow subfield - - - - - Set SecondaryCustomTargetCadenceLow subfield - Units: rpm - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetPowerLow subfield - Units: % or watts - Nullable uint representing the SecondaryCustomTargetPowerLow subfield - - - - - Set SecondaryCustomTargetPowerLow subfield - Units: % or watts - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetValueHigh field - Returns nullable uint representing the SecondaryCustomTargetValueHigh field - - - - Set SecondaryCustomTargetValueHigh field - Nullable field value to be set - - - - Retrieves the SecondaryCustomTargetSpeedHigh subfield - Units: m/s - Nullable float representing the SecondaryCustomTargetSpeedHigh subfield - - - - - Set SecondaryCustomTargetSpeedHigh subfield - Units: m/s - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetHeartRateHigh subfield - Units: % or bpm - Nullable uint representing the SecondaryCustomTargetHeartRateHigh subfield - - - - - Set SecondaryCustomTargetHeartRateHigh subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetCadenceHigh subfield - Units: rpm - Nullable uint representing the SecondaryCustomTargetCadenceHigh subfield - - - - - Set SecondaryCustomTargetCadenceHigh subfield - Units: rpm - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetPowerHigh subfield - Units: % or watts - Nullable uint representing the SecondaryCustomTargetPowerHigh subfield - - - - - Set SecondaryCustomTargetPowerHigh subfield - Units: % or watts - Subfield value to be set - - - - Implements the ZonesTarget profile message. - - - - - Field Numbers for - - - - - Retrieves the MaxHeartRate field - Returns nullable byte representing the MaxHeartRate field - - - - Set MaxHeartRate field - Nullable field value to be set - - - - Retrieves the ThresholdHeartRate field - Returns nullable byte representing the ThresholdHeartRate field - - - - Set ThresholdHeartRate field - Nullable field value to be set - - - - Retrieves the FunctionalThresholdPower field - Returns nullable ushort representing the FunctionalThresholdPower field - - - - Set FunctionalThresholdPower field - Nullable field value to be set - - - - Retrieves the HrCalcType field - Returns nullable HrZoneCalc enum representing the HrCalcType field - - - - Set HrCalcType field - Nullable field value to be set - - - - Retrieves the PwrCalcType field - Returns nullable PwrZoneCalc enum representing the PwrCalcType field - - - - Set PwrCalcType field - Nullable field value to be set - - - - Implements the profile Activity type as an enum - - - - - Implements the profile ActivityClass type as an enum - - - - - Implements the profile ActivityLevel type as an enum - - - - - Implements the profile ActivitySubtype type as an enum - - - - - Implements the profile ActivityType type as an enum - - - - - Implements the profile AnalogWatchfaceLayout type as an enum - - - - - Implements the profile AntNetwork type as an enum - - - - - Implements the profile AntplusDeviceType type as a class - - - - - Implements the profile AttitudeStage type as an enum - - - - - Implements the profile AttitudeValidity type as a class - - - - - Implements the profile AutoActivityDetect type as a class - - - - - Implements the profile AutolapTrigger type as an enum - - - - - Implements the profile Autoscroll type as an enum - - - - - Implements the profile AutoSyncFrequency type as an enum - - - - - Implements the profile BacklightMode type as an enum - - - - - Implements the profile BacklightTimeout type as a class - - - - - Implements the profile BatteryStatus type as a class - - - - - Implements the profile BenchPressExerciseName type as a class - - - - - Implements the profile BikeLightBeamAngleMode type as a class - - - - - Implements the profile BikeLightNetworkConfigType type as an enum - - - - - Implements the profile BleDeviceType type as a class - - - - - Implements the profile BodyLocation type as an enum - - - - - Implements the profile Bool type as an enum - - - - - Implements the profile BpStatus type as an enum - - - - - Implements the profile CalfRaiseExerciseName type as a class - - - - - Implements the profile CameraEventType type as an enum - - - - - Implements the profile CameraOrientationType type as an enum - - - - - Implements the profile CardioExerciseName type as a class - - - - - Implements the profile CarryExerciseName type as a class - - - - - Implements the profile Checksum type as a class - - - - - Implements the profile ChopExerciseName type as a class - - - - - Implements the profile ClimbProEvent type as an enum - - - - - Implements the profile CommTimeoutType type as a class - - - - - Implements the profile ConnectivityCapabilities type as a class - - - - - Implements the profile CoreExerciseName type as a class - - - - - Implements the profile CourseCapabilities type as a class - - - - - Implements the profile CoursePoint type as an enum - - - - - Implements the profile CrunchExerciseName type as a class - - - - - Implements the profile CurlExerciseName type as a class - - - - - Implements the profile DateMode type as an enum - - - - - The DateTime class implements the Fit date_time type which references - UTC 00:00 Dec 31 1989 in second resolution - - - - - Implements the profile DayOfWeek type as an enum - - - - - Implements the profile DeadliftExerciseName type as a class - - - - - Implements the profile DeviceIndex type as a class - - - - - Implements the profile DigitalWatchfaceLayout type as an enum - - - - - Implements the profile DisplayHeart type as an enum - - - - - Implements the profile DisplayMeasure type as an enum - - - - - Implements the profile DisplayOrientation type as an enum - - - - - Implements the profile DisplayPosition type as an enum - - - - - Implements the profile DisplayPower type as an enum - - - - - Implements the profile DiveAlarmType type as an enum - - - - - Implements the profile DiveBacklightMode type as an enum - - - - - Implements the profile DiveGasStatus type as an enum - - - - - Implements the profile Event type as an enum - - - - - Implements the profile EventType type as an enum - - - - - Implements the profile ExdDataUnits type as an enum - - - - - Implements the profile ExdDescriptors type as an enum - - - - - Implements the profile ExdDisplayType type as an enum - - - - - Implements the profile ExdLayout type as an enum - - - - - Implements the profile ExdQualifiers type as an enum - - - - - Implements the profile ExerciseCategory type as a class - - - - - Implements the profile FaveroProduct type as a class - - - - - Implements the profile File type as an enum - - - - - Implements the profile FileFlags type as a class - - - - - Implements the profile FitBaseType type as a class - - - - - Implements the profile FitBaseUnit type as a class - - - - - Implements the profile FitnessEquipmentState type as an enum - - - - - Implements the profile FlyeExerciseName type as a class - - - - - Implements the profile GarminProduct type as a class - - - - - Implements the profile Gender type as an enum - - - - - Implements the profile Goal type as an enum - - - - - Implements the profile GoalRecurrence type as an enum - - - - - Implements the profile GoalSource type as an enum - - - - - Implements the profile HipRaiseExerciseName type as a class - - - - - Implements the profile HipStabilityExerciseName type as a class - - - - - Implements the profile HipSwingExerciseName type as a class - - - - - Implements the profile HrType type as an enum - - - - - Implements the profile HrZoneCalc type as an enum - - - - - Implements the profile HyperextensionExerciseName type as a class - - - - - Implements the profile Intensity type as an enum - - - - - Implements the profile Language type as an enum - - - - - Implements the profile LanguageBits0 type as a class - - - - - Implements the profile LanguageBits1 type as a class - - - - - Implements the profile LanguageBits2 type as a class - - - - - Implements the profile LanguageBits3 type as a class - - - - - Implements the profile LanguageBits4 type as a class - - - - - Implements the profile LapTrigger type as an enum - - - - - Implements the profile LateralRaiseExerciseName type as a class - - - - - Implements the profile LeftRightBalance type as a class - - - - - Implements the profile LeftRightBalance100 type as a class - - - - - Implements the profile LegCurlExerciseName type as a class - - - - - Implements the profile LegRaiseExerciseName type as a class - - - - - Implements the profile LengthType type as an enum - - - - - Implements the profile LocalDateTime type as a class - - - - - Implements the profile LocalDeviceType type as a class - - - - - Implements the profile LocaltimeIntoDay type as a class - - - - - Implements the profile LungeExerciseName type as a class - - - - - Implements the profile Manufacturer type as a class - - - - - Implements the profile MesgCount type as an enum - - - - - Implements the profile MesgNum type as a class - - - - - Implements the profile MessageIndex type as a class - - - - - Implements the profile OlympicLiftExerciseName type as a class - - - - - Implements the profile PlankExerciseName type as a class - - - - - Implements the profile PlyoExerciseName type as a class - - - - - Implements the profile PowerPhaseType type as an enum - - - - - Implements the profile PullUpExerciseName type as a class - - - - - Implements the profile PushUpExerciseName type as a class - - - - - Implements the profile PwrZoneCalc type as an enum - - - - - Implements the profile RadarThreatLevelType type as an enum - - - - - Implements the profile RiderPositionType type as an enum - - - - - Implements the profile RowExerciseName type as a class - - - - - Implements the profile RunExerciseName type as a class - - - - - Implements the profile Schedule type as an enum - - - - - Implements the profile SegmentDeleteStatus type as an enum - - - - - Implements the profile SegmentLapStatus type as an enum - - - - - Implements the profile SegmentLeaderboardType type as an enum - - - - - Implements the profile SegmentSelectionType type as an enum - - - - - Implements the profile SensorType type as an enum - - - - - Implements the profile SessionTrigger type as an enum - - - - - Implements the profile SetType type as a class - - - - - Implements the profile ShoulderPressExerciseName type as a class - - - - - Implements the profile ShoulderStabilityExerciseName type as a class - - - - - Implements the profile ShrugExerciseName type as a class - - - - - Implements the profile Side type as an enum - - - - - Implements the profile SitUpExerciseName type as a class - - - - - Implements the profile SourceType type as an enum - - - - - Implements the profile SplitType type as an enum - - - - - Implements the profile Sport type as an enum - - - - - Implements the profile SportBits0 type as a class - - - - - Implements the profile SportBits1 type as a class - - - - - Implements the profile SportBits2 type as a class - - - - - Implements the profile SportBits3 type as a class - - - - - Implements the profile SportBits4 type as a class - - - - - Implements the profile SportBits5 type as a class - - - - - Implements the profile SportBits6 type as a class - - - - - Implements the profile SportEvent type as an enum - - - - - Implements the profile SquatExerciseName type as a class - - - - - Implements the profile StrokeType type as an enum - - - - - Implements the profile SubSport type as an enum - - - - - Implements the profile SupportedExdScreenLayouts type as a class - - - - - Implements the profile SwimStroke type as an enum - - - - - Implements the profile Switch type as an enum - - - - - Implements the profile TapSensitivity type as an enum - - - - - Implements the profile TimeIntoDay type as a class - - - - - Implements the profile TimeMode type as an enum - - - - - Implements the profile TimerTrigger type as an enum - - - - - Implements the profile TimeZone type as an enum - - - - - Implements the profile TissueModelType type as an enum - - - - - Implements the profile Tone type as an enum - - - - - Implements the profile TotalBodyExerciseName type as a class - - - - - Implements the profile TricepsExtensionExerciseName type as a class - - - - - Implements the profile TurnType type as an enum - - - - - Implements the profile UserLocalId type as a class - - - - - Implements the profile WarmUpExerciseName type as a class - - - - - Implements the profile WatchfaceMode type as an enum - - - - - Implements the profile WaterType type as an enum - - - - - Implements the profile WeatherReport type as an enum - - - - - Implements the profile WeatherSevereType type as an enum - - - - - Implements the profile WeatherSeverity type as an enum - - - - - Implements the profile WeatherStatus type as an enum - - - - - Implements the profile Weight type as a class - - - - - Implements the profile WktStepDuration type as an enum - - - - - Implements the profile WktStepTarget type as an enum - - - - - Implements the profile WorkoutCapabilities type as a class - - - - - Implements the profile WorkoutEquipment type as an enum - - - - - Implements the profile WorkoutHr type as a class - - - - - Implements the profile WorkoutPower type as a class - - - - - Validate if a Message is compatible with a protocol version - - Message to validate - true if message is compatible. false otherwise - - - - Validate if a MessageDefinition is compatible with a protocol version - - Definition to validate - true if definition is compatible. false otherwise - - - - Validates Protocol Features for a given give version - - - - - Validate if a Message is compatible with a protocol version - - Message to validate - true if message is compatible. false otherwise - - - - Validate if a MessageDefinition is compatible with a protocol version - - Definition to validate - true if definition is compatible. false otherwise - - - - Validate if a Message is compatible with a protocol version - - Message to validate - true if message is compatible. false otherwise - - - - Validate if a MessageDefinition is compatible with a protocol version - - Definition to validate - true if definition is compatible. false otherwise - - - - The Subfield class represents an alternative field definition used - by dynamic fields. They can only be associated with a containing - field object. - - - - - The SubfieldMap class tracks the reference field/value pairs which indicate a field - should use the alternate subfield definition rather than the usual defn (allows Dynamic Fields) - - - - - Checks if the reference fields in a given message indicate the subfield (alternate) - definition should be used - - message of interest - true if the subfield is active - - - - Checks if the reference fields in a given message indicate the subfield (alternate) - definition should be used - - message of interest - true if the subfield is active - - - - Extend framework BinaryReader to support BigEndian datasources. - When reading multibyte values, the bytes are reordered appropriately. - - - - - Extend framework BinaryWriter to support BigEndian destinations. - When writing multibyte values, the bytes are reordered appropriately. - - - - diff --git a/src/Garmin/FitSdk_prev/Examples/ClassLib/Properties/AssemblyInfo.cs b/src/Garmin/FitSdk_prev/Examples/ClassLib/Properties/AssemblyInfo.cs deleted file mode 100644 index a6b5b3df0..000000000 --- a/src/Garmin/FitSdk_prev/Examples/ClassLib/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Fit")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Fit")] -[assembly: AssemblyCopyright("Copyright © 2012-2015")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("f2968d43-402a-4bdb-a78e-ff5e1b2bab31")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.0.*")] -[assembly: AssemblyVersion("1.0.0.*")] -[assembly: AssemblyFileVersion("1.0.0.0")] -[assembly: AssemblyInformationalVersion("1.0.0.*")] diff --git a/src/Garmin/FitSdk_prev/Examples/Decode/Decode.csproj b/src/Garmin/FitSdk_prev/Examples/Decode/Decode.csproj deleted file mode 100644 index c926ca802..000000000 --- a/src/Garmin/FitSdk_prev/Examples/Decode/Decode.csproj +++ /dev/null @@ -1,84 +0,0 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {7397E11F-301C-48CF-B2B7-69F8E3213B2D} - Exe - Properties - decode - decode - v4.6 - 512 - - - - - 3.5 - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - true - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - true - - - - - 3.5 - - - 3.5 - - - 3.5 - - - - - - - Profile\Mesgs\(FileName) - - - Profile\Types\(FileName) - - - Fit\(FileName) - - - Utility\(FileName) - - - - - - - - - - diff --git a/src/Garmin/FitSdk_prev/Examples/Decode/DecodeDemo.cs b/src/Garmin/FitSdk_prev/Examples/Decode/DecodeDemo.cs deleted file mode 100644 index 116045f8d..000000000 --- a/src/Garmin/FitSdk_prev/Examples/Decode/DecodeDemo.cs +++ /dev/null @@ -1,373 +0,0 @@ -#region Copyright -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2012 Garmin Canada Inc. -//////////////////////////////////////////////////////////////////////////////// -#endregion - -using System; -using System.Collections.Generic; -using System.Text; -using System.IO; -using System.Diagnostics; -using Dynastream.Fit; - - -namespace DecodeDemo -{ - class Program - { - static Dictionary mesgCounts = new Dictionary(); - static FileStream fitSource; - - static void Main(string[] args) - { - Stopwatch stopwatch = new Stopwatch(); - stopwatch.Start(); - - Console.WriteLine("FIT Decode Example Application"); - - if (args.Length != 1) - { - Console.WriteLine("Usage: decode.exe "); - return; - } - - try - { - // Attempt to open .FIT file - fitSource = new FileStream(args[0], FileMode.Open); - Console.WriteLine("Opening {0}", args[0]); - - Decode decodeDemo = new Decode(); - MesgBroadcaster mesgBroadcaster = new MesgBroadcaster(); - - // Connect the Broadcaster to our event (message) source (in this case the Decoder) - decodeDemo.MesgEvent += mesgBroadcaster.OnMesg; - decodeDemo.MesgDefinitionEvent += mesgBroadcaster.OnMesgDefinition; - decodeDemo.DeveloperFieldDescriptionEvent += OnDeveloperFieldDescriptionEvent; - - // Subscribe to message events of interest by connecting to the Broadcaster - mesgBroadcaster.MesgEvent += OnMesg; - mesgBroadcaster.MesgDefinitionEvent += OnMesgDefn; - - mesgBroadcaster.FileIdMesgEvent += OnFileIDMesg; - mesgBroadcaster.UserProfileMesgEvent += OnUserProfileMesg; - mesgBroadcaster.MonitoringMesgEvent += OnMonitoringMessage; - mesgBroadcaster.DeviceInfoMesgEvent += OnDeviceInfoMessage; - mesgBroadcaster.RecordMesgEvent += OnRecordMessage; - - bool status = decodeDemo.IsFIT(fitSource); - status &= decodeDemo.CheckIntegrity(fitSource); - - // Process the file - if (status) - { - Console.WriteLine("Decoding..."); - decodeDemo.Read(fitSource); - Console.WriteLine("Decoded FIT file {0}", args[0]); - } - else - { - try - { - Console.WriteLine("Integrity Check Failed {0}", args[0]); - if (decodeDemo.InvalidDataSize) - { - Console.WriteLine("Invalid Size Detected, Attempting to decode..."); - decodeDemo.Read(fitSource); - } - else - { - Console.WriteLine("Attempting to decode by skipping the header..."); - decodeDemo.Read(fitSource, DecodeMode.InvalidHeader); - } - } - catch (FitException ex) - { - Console.WriteLine("DecodeDemo caught FitException: " + ex.Message); - } - } - fitSource.Close(); - - Console.WriteLine(""); - Console.WriteLine("Summary:"); - int totalMesgs = 0; - foreach (KeyValuePair pair in mesgCounts) - { - Console.WriteLine("MesgID {0,3} Count {1}", pair.Key, pair.Value); - totalMesgs += pair.Value; - } - - Console.WriteLine("{0} Message Types {1} Total Messages", mesgCounts.Count, totalMesgs); - - stopwatch.Stop(); - Console.WriteLine(""); - Console.WriteLine("Time elapsed: {0:0.#}s", stopwatch.Elapsed.TotalSeconds); - Console.ReadKey(); - } - catch (FitException ex) - { - Console.WriteLine("A FitException occurred when trying to decode the FIT file. Message: " + ex.Message); - } - catch (Exception ex) - { - Console.WriteLine("Exception occurred when trying to decode the FIT file. Message: " + ex.Message); - } - } - - private static void OnDeveloperFieldDescriptionEvent(object sender, DeveloperFieldDescriptionEventArgs args) - { - Console.WriteLine("New Developer Field Description"); - Console.WriteLine(" App Id: {0}", args.Description.ApplicationId); - Console.WriteLine(" App Version: {0}", args.Description.ApplicationVersion); - Console.WriteLine(" Field Number: {0}", args.Description.FieldDefinitionNumber); - } - - #region Message Handlers - // Client implements their handlers of interest and subscribes to MesgBroadcaster events - static void OnMesgDefn(object sender, MesgDefinitionEventArgs e) - { - Console.WriteLine("OnMesgDef: Received Defn for local message #{0}, global num {1}", e.mesgDef.LocalMesgNum, e.mesgDef.GlobalMesgNum); - Console.WriteLine("\tIt has {0} fields {1} developer fields and is {2} bytes long", - e.mesgDef.NumFields, - e.mesgDef.NumDevFields, - e.mesgDef.GetMesgSize()); - } - - static void OnMesg(object sender, MesgEventArgs e) - { - Console.WriteLine("OnMesg: Received Mesg with global ID#{0}, its name is {1}", e.mesg.Num, e.mesg.Name); - - int i = 0; - foreach (Field field in e.mesg.Fields) - { - for (int j = 0; j < field.GetNumValues(); j++) - { - Console.WriteLine("\tField{0} Index{1} (\"{2}\" Field#{4}) Value: {3} (raw value {5})", - i, - j, - field.GetName(), - field.GetValue(j), - field.Num, - field.GetRawValue(j)); - } - - i++; - } - - foreach (var devField in e.mesg.DeveloperFields) - { - for (int j = 0; j < devField.GetNumValues(); j++) - { - Console.WriteLine("\tDeveloper{0} Field#{1} Index{2} (\"{3}\") Value: {4} (raw value {5})", - devField.DeveloperDataIndex, - devField.Num, - j, - devField.Name, - devField.GetValue(j), - devField.GetRawValue(j)); - } - } - - if (mesgCounts.ContainsKey(e.mesg.Num)) - { - mesgCounts[e.mesg.Num]++; - } - else - { - mesgCounts.Add(e.mesg.Num, 1); - } - } - - static void OnFileIDMesg(object sender, MesgEventArgs e) - { - Console.WriteLine("FileIdHandler: Received {1} Mesg with global ID#{0}", e.mesg.Num, e.mesg.Name); - FileIdMesg myFileId = (FileIdMesg)e.mesg; - try - { - Console.WriteLine("\tType: {0}", myFileId.GetType()); - Console.WriteLine("\tManufacturer: {0}", myFileId.GetManufacturer()); - Console.WriteLine("\tProduct: {0}", myFileId.GetProduct()); - Console.WriteLine("\tSerialNumber {0}", myFileId.GetSerialNumber()); - Console.WriteLine("\tNumber {0}", myFileId.GetNumber()); - Console.WriteLine("\tTimeCreated {0}", myFileId.GetTimeCreated()); - - //Make sure properties with sub properties arent null before trying to create objects based on them - if (myFileId.GetTimeCreated() != null) - { - Dynastream.Fit.DateTime dtTime = new Dynastream.Fit.DateTime(myFileId.GetTimeCreated().GetTimeStamp()); - } - } - catch (FitException exception) - { - Console.WriteLine("\tOnFileIDMesg Error {0}", exception.Message); - Console.WriteLine("\t{0}", exception.InnerException); - } - } - - static void OnUserProfileMesg(object sender, MesgEventArgs e) - { - Console.WriteLine("UserProfileHandler: Received {1} Mesg, it has global ID#{0}", e.mesg.Num, e.mesg.Name); - UserProfileMesg myUserProfile = (UserProfileMesg)e.mesg; - string friendlyName; - try - { - try - { - friendlyName = myUserProfile.GetFriendlyNameAsString(); - } - catch (ArgumentNullException) - { - //There is no FriendlyName property - friendlyName = ""; - } - Console.WriteLine("\tFriendlyName \"{0}\"", friendlyName); - Console.WriteLine("\tGender {0}", myUserProfile.GetGender().ToString()); - Console.WriteLine("\tAge {0}", myUserProfile.GetAge()); - Console.WriteLine("\tWeight {0}", myUserProfile.GetWeight()); - } - catch (FitException exception) - { - Console.WriteLine("\tOnUserProfileMesg Error {0}", exception.Message); - Console.WriteLine("\t{0}", exception.InnerException); - } - } - - static void OnDeviceInfoMessage(object sender, MesgEventArgs e) - { - Console.WriteLine("DeviceInfoHandler: Received {1} Mesg, it has global ID#{0}", e.mesg.Num, e.mesg.Name); - DeviceInfoMesg myDeviceInfoMessage = (DeviceInfoMesg)e.mesg; - try - { - Console.WriteLine("\tTimestamp {0}", myDeviceInfoMessage.GetTimestamp()); - Console.WriteLine("\tBattery Status{0}", myDeviceInfoMessage.GetBatteryStatus()); - } - catch (FitException exception) - { - Console.WriteLine("\tOnDeviceInfoMesg Error {0}", exception.Message); - Console.WriteLine("\t{0}", exception.InnerException); - } - } - - static void OnMonitoringMessage(object sender, MesgEventArgs e) - { - Console.WriteLine("MonitoringHandler: Received {1} Mesg, it has global ID#{0}", e.mesg.Num, e.mesg.Name); - MonitoringMesg myMonitoringMessage = (MonitoringMesg)e.mesg; - try - { - Console.WriteLine("\tTimestamp {0}", myMonitoringMessage.GetTimestamp()); - Console.WriteLine("\tActivityType {0}", myMonitoringMessage.GetActivityType()); - switch (myMonitoringMessage.GetActivityType()) // Cycles is a dynamic field - { - case ActivityType.Walking: - case ActivityType.Running: - Console.WriteLine("\tSteps {0}", myMonitoringMessage.GetSteps()); - break; - case ActivityType.Cycling: - case ActivityType.Swimming: - Console.WriteLine("\tStrokes {0}", myMonitoringMessage.GetStrokes()); - break; - default: - Console.WriteLine("\tCycles {0}", myMonitoringMessage.GetCycles()); - break; - } - } - catch (FitException exception) - { - Console.WriteLine("\tOnDeviceInfoMesg Error {0}", exception.Message); - Console.WriteLine("\t{0}", exception.InnerException); - } - } - - private static void OnRecordMessage(object sender, MesgEventArgs e) - { - Console.WriteLine("Record Handler: Received {0} Mesg, it has global ID#{1}", - e.mesg.Num, - e.mesg.Name); - - var recordMessage = (RecordMesg)e.mesg; - - WriteFieldWithOverrides(recordMessage, RecordMesg.FieldDefNum.HeartRate); - WriteFieldWithOverrides(recordMessage, RecordMesg.FieldDefNum.Cadence); - WriteFieldWithOverrides(recordMessage, RecordMesg.FieldDefNum.Speed); - WriteFieldWithOverrides(recordMessage, RecordMesg.FieldDefNum.Distance); - - WriteDeveloperFields(recordMessage); - } - - private static void WriteDeveloperFields(Mesg mesg) - { - foreach (var devField in mesg.DeveloperFields) - { - if (devField.GetNumValues() <= 0) - { - continue; - } - - if (devField.IsDefined) - { - Console.Write("\t{0}", devField.Name); - - if (devField.Units != null) - { - Console.Write(" [{0}]", devField.Units); - } - Console.Write(": "); - } - else - { - Console.Write("\tUndefined Field: "); - } - - Console.Write("{0}", devField.GetValue(0)); - for (int i = 1; i < devField.GetNumValues(); i++) - { - Console.Write(",{0}", devField.GetValue(i)); - } - - Console.WriteLine(); - } - } - - private static void WriteFieldWithOverrides(Mesg mesg, byte fieldNumber) - { - Field profileField = Profile.GetField(mesg.Num, fieldNumber); - bool nameWritten = false; - - if (null == profileField) - { - return; - } - - IEnumerable fields = mesg.GetOverrideField(fieldNumber); - - foreach (FieldBase field in fields) - { - if (!nameWritten) - { - Console.WriteLine(" {0}", profileField.GetName()); - nameWritten = true; - } - - if (field is Field) - { - Console.WriteLine(" native: {0}", field.GetValue()); - } - else - { - Console.WriteLine(" override: {0}", field.GetValue()); - } - } - } - - #endregion - } -} diff --git a/src/Garmin/FitSdk_prev/Examples/Decode/Properties/AssemblyInfo.cs b/src/Garmin/FitSdk_prev/Examples/Decode/Properties/AssemblyInfo.cs deleted file mode 100644 index 958d1fd22..000000000 --- a/src/Garmin/FitSdk_prev/Examples/Decode/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("decode")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("decode")] -[assembly: AssemblyCopyright("Copyright © 2015")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("455ec453-cf64-4f7f-90b7-e1da67c5d8c0")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.0.*")] -[assembly: AssemblyVersion("1.0.0.*")] -[assembly: AssemblyFileVersion("1.0.0.0")] -[assembly: AssemblyInformationalVersion("1.0.0.*")] diff --git a/src/Garmin/FitSdk_prev/Examples/Decode/app.config b/src/Garmin/FitSdk_prev/Examples/Decode/app.config deleted file mode 100644 index 92ed82822..000000000 --- a/src/Garmin/FitSdk_prev/Examples/Decode/app.config +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/Garmin/FitSdk_prev/Examples/Encode/Encode.csproj b/src/Garmin/FitSdk_prev/Examples/Encode/Encode.csproj deleted file mode 100644 index e99f16398..000000000 --- a/src/Garmin/FitSdk_prev/Examples/Encode/Encode.csproj +++ /dev/null @@ -1,76 +0,0 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {DD6CF09E-46B0-43A8-834E-B6A2EE6255BE} - Exe - Properties - encode - encode - v4.6 - 512 - - - - - 3.5 - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - true - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - true - - - - False - ..\..\Fit.dll - - - - 3.5 - - - 3.5 - - - 3.5 - - - - - - - - - - - - - - diff --git a/src/Garmin/FitSdk_prev/Examples/Encode/EncodeDemo.cs b/src/Garmin/FitSdk_prev/Examples/Encode/EncodeDemo.cs deleted file mode 100644 index de0011486..000000000 --- a/src/Garmin/FitSdk_prev/Examples/Encode/EncodeDemo.cs +++ /dev/null @@ -1,216 +0,0 @@ -#region Copyright -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2012 Garmin Canada Inc. -//////////////////////////////////////////////////////////////////////////////// -#endregion - -using System; -using System.Collections.Generic; -using System.Text; -using System.IO; -using System.Diagnostics; -using Dynastream.Fit; -using DateTime = Dynastream.Fit.DateTime; - -namespace EncodeDemo -{ - class Program - { - static void Main(string[] args) - { - Stopwatch stopwatch = new Stopwatch(); - stopwatch.Start(); - - // Encode both of our example files - EncodeSettingsFile(); - EncodeMonitoringFile(); - EncodeActivityFile(); - - stopwatch.Stop(); - Console.WriteLine("Time elapsed: {0:0.#}s", stopwatch.Elapsed.TotalSeconds); - } - - static void EncodeActivityFile() - { - // Generate some FIT messages - var fileIdMesg = new FileIdMesg(); // Every FIT file MUST contain a 'File ID' message as the first message - var developerIdMesg = new DeveloperDataIdMesg(); - var fieldDescMesg = new FieldDescriptionMesg(); - - var records = new List(); - - byte[] appId = { - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16 - }; - - fileIdMesg.SetType(Dynastream.Fit.File.Activity); - fileIdMesg.SetManufacturer(Manufacturer.Development); - fileIdMesg.SetProduct(1); - fileIdMesg.SetSerialNumber(12345); - fileIdMesg.SetTimeCreated(new DateTime(621463080)); - - for (int i = 0; i < appId.Length; i++) - { - developerIdMesg.SetApplicationId(i, appId[i]); - } - developerIdMesg.SetDeveloperDataIndex(0); - - fieldDescMesg.SetDeveloperDataIndex(0); - fieldDescMesg.SetFieldDefinitionNumber(0); - fieldDescMesg.SetFitBaseTypeId(FitBaseType.Sint8); - fieldDescMesg.SetFieldName(0, "doughnuts_earned"); - fieldDescMesg.SetUnits(0, "doughnuts"); - - for (int i = 0; i < 3; i++) - { - var newRecord = new RecordMesg(); - var doughnutsEarnedField = new DeveloperField(fieldDescMesg, developerIdMesg); - newRecord.SetDeveloperField(doughnutsEarnedField); - - newRecord.SetHeartRate((byte)(140 + (i * 2))); - newRecord.SetCadence((byte)(88 + (i * 2))); - newRecord.SetDistance(510 + (i * 100)); - newRecord.SetSpeed(2.8f + (i * 0.4f)); - doughnutsEarnedField.SetValue(i + 1); - - records.Add(newRecord); - } - - // Create file encode object - Encode encodeDemo = new Encode(ProtocolVersion.V20); - - FileStream fitDest = new FileStream("ExampleActivity.fit", FileMode.Create, FileAccess.ReadWrite, FileShare.Read); - - // Write our header - encodeDemo.Open(fitDest); - - // Encode each message, a definition message is automatically generated and output if necessary - encodeDemo.Write(fileIdMesg); - encodeDemo.Write(developerIdMesg); - encodeDemo.Write(fieldDescMesg); - encodeDemo.Write(records); - - // Update header datasize and file CRC - encodeDemo.Close(); - fitDest.Close(); - - Console.WriteLine("Encoded FIT file ExampleActivity.fit"); - } - - /// - /// Demonstrate the encoding of a 'Settings File' by writing a 'Settings File' containing a 'User Profile' Message. - /// This example is simpler than the 'Monitoring File' example. - /// - static void EncodeSettingsFile() - { - // Generate some FIT messages - FileIdMesg fileIdMesg = new FileIdMesg(); // Every FIT file MUST contain a 'File ID' message as the first message - fileIdMesg.SetType(Dynastream.Fit.File.Settings); - fileIdMesg.SetManufacturer(Manufacturer.Development); // Types defined in the profile are available - fileIdMesg.SetProduct(1); - fileIdMesg.SetSerialNumber(12345); - - UserProfileMesg myUserProfile = new UserProfileMesg(); - myUserProfile.SetGender(Gender.Female); - float myWeight = 63.1F; - myUserProfile.SetWeight(myWeight); - myUserProfile.SetAge(99); - myUserProfile.SetFriendlyName(Encoding.UTF8.GetBytes("TestUser")); - - FileStream fitDest = new FileStream("ExampleSettings.fit", FileMode.Create, FileAccess.ReadWrite, FileShare.Read); - - // Create file encode object - Encode encodeDemo = new Encode(ProtocolVersion.V10); - - // Write our header - encodeDemo.Open(fitDest); - - // Encode each message, a definition message is automatically generated and output if necessary - encodeDemo.Write(fileIdMesg); - encodeDemo.Write(myUserProfile); - - // Update header datasize and file CRC - encodeDemo.Close(); - fitDest.Close(); - - Console.WriteLine("Encoded FIT file ExampleSettings.fit"); - return; - } - - /// - /// Demonstrates encoding a 'MonitoringB File' of a made up device which counts steps and reports the battery status of the device. - /// - static void EncodeMonitoringFile() - { - System.DateTime systemStartTime = System.DateTime.Now; - System.DateTime systemTimeNow = systemStartTime; - - FileStream fitDest = new FileStream("ExampleMonitoringFile.fit", FileMode.Create, FileAccess.ReadWrite, FileShare.Read); - - // Create file encode object - Encode encodeDemo = new Encode(ProtocolVersion.V10); - - // Write our header - encodeDemo.Open(fitDest); - - // Generate some FIT messages - FileIdMesg fileIdMesg = new FileIdMesg(); // Every FIT file MUST contain a 'File ID' message as the first message - fileIdMesg.SetTimeCreated(new Dynastream.Fit.DateTime(systemTimeNow)); - fileIdMesg.SetManufacturer(Manufacturer.Development); - fileIdMesg.SetProduct(1); - fileIdMesg.SetSerialNumber(12345); - fileIdMesg.SetNumber(0); - fileIdMesg.SetType(Dynastream.Fit.File.MonitoringB); // See the 'FIT FIle Types Description' document for more information about this file type. - encodeDemo.Write(fileIdMesg); // Write the 'File ID Message' - - DeviceInfoMesg deviceInfoMesg = new DeviceInfoMesg(); - deviceInfoMesg.SetTimestamp(new Dynastream.Fit.DateTime(systemTimeNow)); - deviceInfoMesg.SetSerialNumber(12345); - deviceInfoMesg.SetManufacturer(Manufacturer.Development); - deviceInfoMesg.SetBatteryStatus(Dynastream.Fit.BatteryStatus.Good); - encodeDemo.Write(deviceInfoMesg); - - MonitoringMesg monitoringMesg = new MonitoringMesg(); - - // By default, each time a new message is written the Local Message Type 0 will be redefined to match the new message. - // In this case,to avoid having a definition message each time there is a DeviceInfoMesg, we can manually set the Local Message Type of the MonitoringMessage to '1'. - // By doing this we avoid an additional 7 definition messages in our FIT file. - monitoringMesg.LocalNum = 1; - - // Simulate some data - Random numberOfCycles = new Random(); // Fake a number of cycles - for (int i = 0; i < 4; i++) // Each of these loops represent a quarter of a day - { - for (int j = 0; j < 6; j++) // Each of these loops represent 1 hour - { - monitoringMesg.SetTimestamp(new Dynastream.Fit.DateTime(systemTimeNow)); - monitoringMesg.SetActivityType(Dynastream.Fit.ActivityType.Walking); // Setting this to walking will cause Cycles to be interpretted as steps. - monitoringMesg.SetCycles(monitoringMesg.GetCycles() + numberOfCycles.Next(0, 1000)); // Cycles are accumulated (i.e. must be increasing) - encodeDemo.Write(monitoringMesg); - systemTimeNow = systemTimeNow.AddHours(1); // Add an hour to our contrieved timestamp - } - - deviceInfoMesg.SetTimestamp(new Dynastream.Fit.DateTime(systemTimeNow)); - deviceInfoMesg.SetBatteryStatus(Dynastream.Fit.BatteryStatus.Good); // Report the battery status every quarter day - encodeDemo.Write(deviceInfoMesg); - } - - // Update header datasize and file CRC - encodeDemo.Close(); - fitDest.Close(); - - Console.WriteLine("Encoded FIT file ExampleMonitoringFile.fit"); - } - } -} diff --git a/src/Garmin/FitSdk_prev/Examples/Encode/Properties/AssemblyInfo.cs b/src/Garmin/FitSdk_prev/Examples/Encode/Properties/AssemblyInfo.cs deleted file mode 100644 index 8d9bc95aa..000000000 --- a/src/Garmin/FitSdk_prev/Examples/Encode/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("encode")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("encode")] -[assembly: AssemblyCopyright("Copyright © 2015")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("01f25c19-9c77-4972-a8cd-82e34a859d0b")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.0.*")] -[assembly: AssemblyVersion("1.0.0.*")] -[assembly: AssemblyFileVersion("1.0.0.0")] -[assembly: AssemblyInformationalVersion("1.0.0.*")] \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/Examples/Encode/app.config b/src/Garmin/FitSdk_prev/Examples/Encode/app.config deleted file mode 100644 index 92ed82822..000000000 --- a/src/Garmin/FitSdk_prev/Examples/Encode/app.config +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/Garmin/FitSdk_prev/Examples/Examples.sln b/src/Garmin/FitSdk_prev/Examples/Examples.sln deleted file mode 100644 index 964c87e0d..000000000 --- a/src/Garmin/FitSdk_prev/Examples/Examples.sln +++ /dev/null @@ -1,43 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.21005.1 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Decode", "Decode\Decode.csproj", "{7397E11F-301C-48CF-B2B7-69F8E3213B2D}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Encode", "Encode\Encode.csproj", "{DD6CF09E-46B0-43A8-834E-B6A2EE6255BE}" - ProjectSection(ProjectDependencies) = postProject - {F9D616B2-8333-4556-8FBB-1F5C6907FB44} = {F9D616B2-8333-4556-8FBB-1F5C6907FB44} - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassLib", "ClassLib\ClassLib.csproj", "{F9D616B2-8333-4556-8FBB-1F5C6907FB44}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FitPortable", "FitPortable\FitPortable.csproj", "{30807094-40BA-42DE-B0B2-C15757649715}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7397E11F-301C-48CF-B2B7-69F8E3213B2D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7397E11F-301C-48CF-B2B7-69F8E3213B2D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7397E11F-301C-48CF-B2B7-69F8E3213B2D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7397E11F-301C-48CF-B2B7-69F8E3213B2D}.Release|Any CPU.Build.0 = Release|Any CPU - {DD6CF09E-46B0-43A8-834E-B6A2EE6255BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DD6CF09E-46B0-43A8-834E-B6A2EE6255BE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DD6CF09E-46B0-43A8-834E-B6A2EE6255BE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DD6CF09E-46B0-43A8-834E-B6A2EE6255BE}.Release|Any CPU.Build.0 = Release|Any CPU - {F9D616B2-8333-4556-8FBB-1F5C6907FB44}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F9D616B2-8333-4556-8FBB-1F5C6907FB44}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F9D616B2-8333-4556-8FBB-1F5C6907FB44}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F9D616B2-8333-4556-8FBB-1F5C6907FB44}.Release|Any CPU.Build.0 = Release|Any CPU - {30807094-40BA-42DE-B0B2-C15757649715}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {30807094-40BA-42DE-B0B2-C15757649715}.Debug|Any CPU.Build.0 = Debug|Any CPU - {30807094-40BA-42DE-B0B2-C15757649715}.Release|Any CPU.ActiveCfg = Release|Any CPU - {30807094-40BA-42DE-B0B2-C15757649715}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/src/Garmin/FitSdk_prev/Examples/FitPortable/FitPortable.csproj b/src/Garmin/FitSdk_prev/Examples/FitPortable/FitPortable.csproj deleted file mode 100644 index 3ccf4cf8a..000000000 --- a/src/Garmin/FitSdk_prev/Examples/FitPortable/FitPortable.csproj +++ /dev/null @@ -1,52 +0,0 @@ - - - - - 11.0 - Debug - AnyCPU - {30807094-40BA-42DE-B0B2-C15757649715} - Library - Properties - Fit - Dynastream.Fit.Portable - v4.5 - Profile78 - 512 - {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - - - true - full - false - ..\..\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - ..\..\ - TRACE - prompt - 4 - - - - - - - %(FileName) - - - - - - diff --git a/src/Garmin/FitSdk_prev/Examples/FitPortable/Properties/AssemblyInfo.cs b/src/Garmin/FitSdk_prev/Examples/FitPortable/Properties/AssemblyInfo.cs deleted file mode 100644 index e48558a84..000000000 --- a/src/Garmin/FitSdk_prev/Examples/FitPortable/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System.Resources; -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Dynastream.Fit.Portable")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Dynastream.Fit.Portable")] -[assembly: AssemblyCopyright("Copyright © 2016")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] -[assembly: NeutralResourcesLanguage("en")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.0.*")] -[assembly: AssemblyVersion("1.0.0.*")] -[assembly: AssemblyFileVersion("1.0.0.0")] -[assembly: AssemblyInformationalVersion("1.0.0.*")] diff --git a/src/Garmin/FitSdk_prev/Fit.dll b/src/Garmin/FitSdk_prev/Fit.dll deleted file mode 100644 index 61e99d6c1..000000000 Binary files a/src/Garmin/FitSdk_prev/Fit.dll and /dev/null differ diff --git a/src/Garmin/FitSdk_prev/Fit.xml b/src/Garmin/FitSdk_prev/Fit.xml deleted file mode 100644 index 0e3967cc5..000000000 --- a/src/Garmin/FitSdk_prev/Fit.xml +++ /dev/null @@ -1,18584 +0,0 @@ - - - - Fit - - - - - - BufferedMesgBroadcaster intercepts the incoming messages - from the given decode stream, buffers them, and offers - an opportunity to edit the messages before broadcasting - the messages to all registered listeners. - - - To edit the messages, an IMesgBroadcastPlugin must be - registered. All registered IMesgBroadcastPlugins are given - the opportunity to see each message as they are decoded, - as well as to see and edit the final list of - messages before broadcast to listeners - - - - - - Implements Dynastream CRC16 function - - - - - Event Args Class associated with the DeveloperFieldDescrtiption Event - - - - - This class will decode a .fit file reading the file header and any definition or data messages. - - - - - Reads the file header to check if the file is FIT. - Does not check CRC. - Returns true if file is FIT. - - Seekable (file)stream to parse - - - - Reads the FIT binary file header and crc to check compatibility and integrity. - Also checks data reords size. - Returns true if file is ok (not corrupt). - - Seekable (file)stream to parse. - - - - Reads a FIT binary file. - - Seekable (file)stream to parse. - - Returns true if reading finishes successfully. - - - - - Reads a FIT binary file. - - Seekable (file)stream to parse. - When true, skip file header. Also CRC will not be calculated. - - Returns true if reading finishes successfully. - - - - - Reads a FIT binary File - - Seekable (file)stream to parse. - Decode Mode to use for reading the file - - Returns true if reading finishes successfully. - - - - - - - - - - - - Mode used for Read Operations - - - - - Indicates that file contains valid Header and CRC data - - - - - Indicates that the Stream Contains a Header that is Corrupt - - - - - Indicates that the Stream does not contain a Header or CRC - - - - - Determines whether the specified is equal to the current . - - - true if the specified is equal to the current ; otherwise, false. - - The to compare with the current . - - - - Determines whether the specified is equal to the current . - - - true if the specified is equal to the current ; otherwise, false. - - - The to compare with the current . - - - - - Serves as a hash function for a particular type. - - - A hash code for the current . - - - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - - - A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: Value Meaning Less than zero This instance precedes in the sort order. Zero This instance occurs in the same position in the sort order as . Greater than zero This instance follows in the sort order. - - An object to compare with this instance. is not the same type as this instance. - - - - Retrieve the Native Field Number that this Developer Field Overrides - - - Native Field Number that is overridden if applicable, - otherwise - - - - - Represents a Developer Field Definition - - - - - Gets a boolean indicating if the Field Definition has associated meta - data - - - - - Gets the Field Number associated with the Developer Field - - - - - Gets the Number of bytes associated with the Developer Field - - - - - Gets the developer index of the Developer Field - - - - - Gets the current description message for the field - - - - - Gets the Associated Developer Id for the message - - - - - - - - - - - If description parameter is invalid - - - - - Gets the Value of the Application Version for the Field Description - - - - - Gets the Value of the Application Id for the Field Description - - - - - Gets the Value of the Field Definition Number for thbe Field Description - - - - - Supports generating binary .FIT files. Header, Message Definition and Message - data may be written. - - - - - If default ctor is used Header object may be manipulated if desired before Open is called. - - - - - Updates the data size and CRC in the file header - Updates file CRC - - - - - - - - - - - - - - - Extends System.Exception to provide application specific exceptions. - - - - - Implements .FIT header encode/decode. - - - - - Build a standard header with CRC. The CRC will be - precomputed and it is assumed no data is present yet. - - - - - Build a standard header with CRC. The CRC will be - precomputed and it is assumed no data is present yet. - - - - - Build header by decoding callers stream. - - - - - - Verify Header format is valid. - - - - - - Populate header object by decoding callers stream - - Readable stream - - - - Output header object to beginning of callers writeable stream. Crc should - be recalculated before calling. - - Writeable, Seekable stream. Position set to end of header - - - - Recompute the header CRC based on the current contents of the header object - - - - - - - - - - Replace an existing field, otherwise add a reference to fields list - - Caller allocated field - - - - Insert a field at the desired index. If the field already exists in the mesg it is first removed. - - Index to insert the field, if index is out of range, the field is added to the end of the list - Caller allocated field - - - - Removes the specified field from this message. - - The Field to be removed from this message. - - - - Removes all fields from this message that have been generated through - component expansion while decoding the source .FIT file. - - - - - The MesgBroadcaster manages Mesg and MesgDefinition events. Its - handlers should be connected to the source of Mesg and MesgDef events - (such as a file decoder). - Clients may subscribe to the Broadcasters events (Mesg, Mesg Def - or specofic Profile Mesg) - - - - - Architecture defaults to Little Endian (unless decoded from an binary defn as Big Endian) - This could be exposed in the future to programatically create BE streams. - - - - - Represents the Fit Profile including message, field and type definition. - - - - - Implements the AccelerometerData profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - - - returns number of elements in field SampleTimeOffset - - - - Retrieves the SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the accelerometer sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in accel_x and accel_y and accel_z - 0 based index of SampleTimeOffset element to retrieve - Returns nullable ushort representing the SampleTimeOffset field - - - - Set SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the accelerometer sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in accel_x and accel_y and accel_z - 0 based index of sample_time_offset - Nullable field value to be set - - - - - - returns number of elements in field AccelX - - - - Retrieves the AccelX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of AccelX element to retrieve - Returns nullable ushort representing the AccelX field - - - - Set AccelX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of accel_x - Nullable field value to be set - - - - - - returns number of elements in field AccelY - - - - Retrieves the AccelY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of AccelY element to retrieve - Returns nullable ushort representing the AccelY field - - - - Set AccelY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of accel_y - Nullable field value to be set - - - - - - returns number of elements in field AccelZ - - - - Retrieves the AccelZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of AccelZ element to retrieve - Returns nullable ushort representing the AccelZ field - - - - Set AccelZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of accel_z - Nullable field value to be set - - - - - - returns number of elements in field CalibratedAccelX - - - - Retrieves the CalibratedAccelX field - Units: g - Comment: Calibrated accel reading - 0 based index of CalibratedAccelX element to retrieve - Returns nullable float representing the CalibratedAccelX field - - - - Set CalibratedAccelX field - Units: g - Comment: Calibrated accel reading - 0 based index of calibrated_accel_x - Nullable field value to be set - - - - - - returns number of elements in field CalibratedAccelY - - - - Retrieves the CalibratedAccelY field - Units: g - Comment: Calibrated accel reading - 0 based index of CalibratedAccelY element to retrieve - Returns nullable float representing the CalibratedAccelY field - - - - Set CalibratedAccelY field - Units: g - Comment: Calibrated accel reading - 0 based index of calibrated_accel_y - Nullable field value to be set - - - - - - returns number of elements in field CalibratedAccelZ - - - - Retrieves the CalibratedAccelZ field - Units: g - Comment: Calibrated accel reading - 0 based index of CalibratedAccelZ element to retrieve - Returns nullable float representing the CalibratedAccelZ field - - - - Set CalibratedAccelZ field - Units: g - Comment: Calibrated accel reading - 0 based index of calibrated_accel_z - Nullable field value to be set - - - - - - returns number of elements in field CompressedCalibratedAccelX - - - - Retrieves the CompressedCalibratedAccelX field - Units: mG - Comment: Calibrated accel reading - 0 based index of CompressedCalibratedAccelX element to retrieve - Returns nullable short representing the CompressedCalibratedAccelX field - - - - Set CompressedCalibratedAccelX field - Units: mG - Comment: Calibrated accel reading - 0 based index of compressed_calibrated_accel_x - Nullable field value to be set - - - - - - returns number of elements in field CompressedCalibratedAccelY - - - - Retrieves the CompressedCalibratedAccelY field - Units: mG - Comment: Calibrated accel reading - 0 based index of CompressedCalibratedAccelY element to retrieve - Returns nullable short representing the CompressedCalibratedAccelY field - - - - Set CompressedCalibratedAccelY field - Units: mG - Comment: Calibrated accel reading - 0 based index of compressed_calibrated_accel_y - Nullable field value to be set - - - - - - returns number of elements in field CompressedCalibratedAccelZ - - - - Retrieves the CompressedCalibratedAccelZ field - Units: mG - Comment: Calibrated accel reading - 0 based index of CompressedCalibratedAccelZ element to retrieve - Returns nullable short representing the CompressedCalibratedAccelZ field - - - - Set CompressedCalibratedAccelZ field - Units: mG - Comment: Calibrated accel reading - 0 based index of compressed_calibrated_accel_z - Nullable field value to be set - - - - Implements the Activity profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Comment: Exclude pauses - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Comment: Exclude pauses - Nullable field value to be set - - - - Retrieves the NumSessions field - Returns nullable ushort representing the NumSessions field - - - - Set NumSessions field - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable Activity enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Event field - Returns nullable Event enum representing the Event field - - - - Set Event field - Nullable field value to be set - - - - Retrieves the EventType field - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Nullable field value to be set - - - - Retrieves the LocalTimestamp field - Comment: timestamp epoch expressed in local time, used to convert activity timestamps to local time - Returns nullable uint representing the LocalTimestamp field - - - - Set LocalTimestamp field - Comment: timestamp epoch expressed in local time, used to convert activity timestamps to local time - Nullable field value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Implements the AntChannelId profile message. - - - - - Field Numbers for - - - - - Retrieves the ChannelNumber field - Returns nullable byte representing the ChannelNumber field - - - - Set ChannelNumber field - Nullable field value to be set - - - - Retrieves the DeviceType field - Returns nullable byte representing the DeviceType field - - - - Set DeviceType field - Nullable field value to be set - - - - Retrieves the DeviceNumber field - Returns nullable ushort representing the DeviceNumber field - - - - Set DeviceNumber field - Nullable field value to be set - - - - Retrieves the TransmissionType field - Returns nullable byte representing the TransmissionType field - - - - Set TransmissionType field - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Nullable field value to be set - - - - Implements the AntRx profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the FractionalTimestamp field - Units: s - Returns nullable float representing the FractionalTimestamp field - - - - Set FractionalTimestamp field - Units: s - Nullable field value to be set - - - - Retrieves the MesgId field - Returns nullable byte representing the MesgId field - - - - Set MesgId field - Nullable field value to be set - - - - - - returns number of elements in field MesgData - - - - Retrieves the MesgData field - 0 based index of MesgData element to retrieve - Returns nullable byte representing the MesgData field - - - - Set MesgData field - 0 based index of mesg_data - Nullable field value to be set - - - - Retrieves the ChannelNumber field - Returns nullable byte representing the ChannelNumber field - - - - Set ChannelNumber field - Nullable field value to be set - - - - - - returns number of elements in field Data - - - - Retrieves the Data field - 0 based index of Data element to retrieve - Returns nullable byte representing the Data field - - - - Set Data field - 0 based index of data - Nullable field value to be set - - - - Implements the AntTx profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the FractionalTimestamp field - Units: s - Returns nullable float representing the FractionalTimestamp field - - - - Set FractionalTimestamp field - Units: s - Nullable field value to be set - - - - Retrieves the MesgId field - Returns nullable byte representing the MesgId field - - - - Set MesgId field - Nullable field value to be set - - - - - - returns number of elements in field MesgData - - - - Retrieves the MesgData field - 0 based index of MesgData element to retrieve - Returns nullable byte representing the MesgData field - - - - Set MesgData field - 0 based index of mesg_data - Nullable field value to be set - - - - Retrieves the ChannelNumber field - Returns nullable byte representing the ChannelNumber field - - - - Set ChannelNumber field - Nullable field value to be set - - - - - - returns number of elements in field Data - - - - Retrieves the Data field - 0 based index of Data element to retrieve - Returns nullable byte representing the Data field - - - - Set Data field - 0 based index of data - Nullable field value to be set - - - - Implements the AviationAttitude profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Timestamp message was output - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Timestamp message was output - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Nullable field value to be set - - - - - - returns number of elements in field SystemTime - - - - Retrieves the SystemTime field - Units: ms - Comment: System time associated with sample expressed in ms. - 0 based index of SystemTime element to retrieve - Returns nullable uint representing the SystemTime field - - - - Set SystemTime field - Units: ms - Comment: System time associated with sample expressed in ms. - 0 based index of system_time - Nullable field value to be set - - - - - - returns number of elements in field Pitch - - - - Retrieves the Pitch field - Units: radians - Comment: Range -PI/2 to +PI/2 - 0 based index of Pitch element to retrieve - Returns nullable float representing the Pitch field - - - - Set Pitch field - Units: radians - Comment: Range -PI/2 to +PI/2 - 0 based index of pitch - Nullable field value to be set - - - - - - returns number of elements in field Roll - - - - Retrieves the Roll field - Units: radians - Comment: Range -PI to +PI - 0 based index of Roll element to retrieve - Returns nullable float representing the Roll field - - - - Set Roll field - Units: radians - Comment: Range -PI to +PI - 0 based index of roll - Nullable field value to be set - - - - - - returns number of elements in field AccelLateral - - - - Retrieves the AccelLateral field - Units: m/s^2 - Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - 0 based index of AccelLateral element to retrieve - Returns nullable float representing the AccelLateral field - - - - Set AccelLateral field - Units: m/s^2 - Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - 0 based index of accel_lateral - Nullable field value to be set - - - - - - returns number of elements in field AccelNormal - - - - Retrieves the AccelNormal field - Units: m/s^2 - Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - 0 based index of AccelNormal element to retrieve - Returns nullable float representing the AccelNormal field - - - - Set AccelNormal field - Units: m/s^2 - Comment: Range -78.4 to +78.4 (-8 Gs to 8 Gs) - 0 based index of accel_normal - Nullable field value to be set - - - - - - returns number of elements in field TurnRate - - - - Retrieves the TurnRate field - Units: radians/second - Comment: Range -8.727 to +8.727 (-500 degs/sec to +500 degs/sec) - 0 based index of TurnRate element to retrieve - Returns nullable float representing the TurnRate field - - - - Set TurnRate field - Units: radians/second - Comment: Range -8.727 to +8.727 (-500 degs/sec to +500 degs/sec) - 0 based index of turn_rate - Nullable field value to be set - - - - - - returns number of elements in field Stage - - - - Retrieves the Stage field - 0 based index of Stage element to retrieve - Returns nullable AttitudeStage enum representing the Stage field - - - - Set Stage field - 0 based index of stage - Nullable field value to be set - - - - - - returns number of elements in field AttitudeStageComplete - - - - Retrieves the AttitudeStageComplete field - Units: % - Comment: The percent complete of the current attitude stage. Set to 0 for attitude stages 0, 1 and 2 and to 100 for attitude stage 3 by AHRS modules that do not support it. Range - 100 - 0 based index of AttitudeStageComplete element to retrieve - Returns nullable byte representing the AttitudeStageComplete field - - - - Set AttitudeStageComplete field - Units: % - Comment: The percent complete of the current attitude stage. Set to 0 for attitude stages 0, 1 and 2 and to 100 for attitude stage 3 by AHRS modules that do not support it. Range - 100 - 0 based index of attitude_stage_complete - Nullable field value to be set - - - - - - returns number of elements in field Track - - - - Retrieves the Track field - Units: radians - Comment: Track Angle/Heading Range 0 - 2pi - 0 based index of Track element to retrieve - Returns nullable float representing the Track field - - - - Set Track field - Units: radians - Comment: Track Angle/Heading Range 0 - 2pi - 0 based index of track - Nullable field value to be set - - - - - - returns number of elements in field Validity - - - - Retrieves the Validity field - 0 based index of Validity element to retrieve - Returns nullable ushort representing the Validity field - - - - Set Validity field - 0 based index of validity - Nullable field value to be set - - - - Implements the BarometerData profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - - - returns number of elements in field SampleTimeOffset - - - - Retrieves the SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the barometer sample with the corrosponding index was taken. The samples may span across seconds. Array size must match the number of samples in baro_cal - 0 based index of SampleTimeOffset element to retrieve - Returns nullable ushort representing the SampleTimeOffset field - - - - Set SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the barometer sample with the corrosponding index was taken. The samples may span across seconds. Array size must match the number of samples in baro_cal - 0 based index of sample_time_offset - Nullable field value to be set - - - - - - returns number of elements in field BaroPres - - - - Retrieves the BaroPres field - Units: Pa - Comment: These are the raw ADC reading. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of BaroPres element to retrieve - Returns nullable uint representing the BaroPres field - - - - Set BaroPres field - Units: Pa - Comment: These are the raw ADC reading. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of baro_pres - Nullable field value to be set - - - - Implements the BikeProfile profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the Odometer field - Units: m - Returns nullable float representing the Odometer field - - - - Set Odometer field - Units: m - Nullable field value to be set - - - - Retrieves the BikeSpdAntId field - Returns nullable ushort representing the BikeSpdAntId field - - - - Set BikeSpdAntId field - Nullable field value to be set - - - - Retrieves the BikeCadAntId field - Returns nullable ushort representing the BikeCadAntId field - - - - Set BikeCadAntId field - Nullable field value to be set - - - - Retrieves the BikeSpdcadAntId field - Returns nullable ushort representing the BikeSpdcadAntId field - - - - Set BikeSpdcadAntId field - Nullable field value to be set - - - - Retrieves the BikePowerAntId field - Returns nullable ushort representing the BikePowerAntId field - - - - Set BikePowerAntId field - Nullable field value to be set - - - - Retrieves the CustomWheelsize field - Units: m - Returns nullable float representing the CustomWheelsize field - - - - Set CustomWheelsize field - Units: m - Nullable field value to be set - - - - Retrieves the AutoWheelsize field - Units: m - Returns nullable float representing the AutoWheelsize field - - - - Set AutoWheelsize field - Units: m - Nullable field value to be set - - - - Retrieves the BikeWeight field - Units: kg - Returns nullable float representing the BikeWeight field - - - - Set BikeWeight field - Units: kg - Nullable field value to be set - - - - Retrieves the PowerCalFactor field - Units: % - Returns nullable float representing the PowerCalFactor field - - - - Set PowerCalFactor field - Units: % - Nullable field value to be set - - - - Retrieves the AutoWheelCal field - Returns nullable Bool enum representing the AutoWheelCal field - - - - Set AutoWheelCal field - Nullable field value to be set - - - - Retrieves the AutoPowerZero field - Returns nullable Bool enum representing the AutoPowerZero field - - - - Set AutoPowerZero field - Nullable field value to be set - - - - Retrieves the Id field - Returns nullable byte representing the Id field - - - - Set Id field - Nullable field value to be set - - - - Retrieves the SpdEnabled field - Returns nullable Bool enum representing the SpdEnabled field - - - - Set SpdEnabled field - Nullable field value to be set - - - - Retrieves the CadEnabled field - Returns nullable Bool enum representing the CadEnabled field - - - - Set CadEnabled field - Nullable field value to be set - - - - Retrieves the SpdcadEnabled field - Returns nullable Bool enum representing the SpdcadEnabled field - - - - Set SpdcadEnabled field - Nullable field value to be set - - - - Retrieves the PowerEnabled field - Returns nullable Bool enum representing the PowerEnabled field - - - - Set PowerEnabled field - Nullable field value to be set - - - - Retrieves the CrankLength field - Units: mm - Returns nullable float representing the CrankLength field - - - - Set CrankLength field - Units: mm - Nullable field value to be set - - - - Retrieves the Enabled field - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Nullable field value to be set - - - - Retrieves the BikeSpdAntIdTransType field - Returns nullable byte representing the BikeSpdAntIdTransType field - - - - Set BikeSpdAntIdTransType field - Nullable field value to be set - - - - Retrieves the BikeCadAntIdTransType field - Returns nullable byte representing the BikeCadAntIdTransType field - - - - Set BikeCadAntIdTransType field - Nullable field value to be set - - - - Retrieves the BikeSpdcadAntIdTransType field - Returns nullable byte representing the BikeSpdcadAntIdTransType field - - - - Set BikeSpdcadAntIdTransType field - Nullable field value to be set - - - - Retrieves the BikePowerAntIdTransType field - Returns nullable byte representing the BikePowerAntIdTransType field - - - - Set BikePowerAntIdTransType field - Nullable field value to be set - - - - Retrieves the OdometerRollover field - Comment: Rollover counter that can be used to extend the odometer - Returns nullable byte representing the OdometerRollover field - - - - Set OdometerRollover field - Comment: Rollover counter that can be used to extend the odometer - Nullable field value to be set - - - - Retrieves the FrontGearNum field - Comment: Number of front gears - Returns nullable byte representing the FrontGearNum field - - - - Set FrontGearNum field - Comment: Number of front gears - Nullable field value to be set - - - - - - returns number of elements in field FrontGear - - - - Retrieves the FrontGear field - Comment: Number of teeth on each gear 0 is innermost - 0 based index of FrontGear element to retrieve - Returns nullable byte representing the FrontGear field - - - - Set FrontGear field - Comment: Number of teeth on each gear 0 is innermost - 0 based index of front_gear - Nullable field value to be set - - - - Retrieves the RearGearNum field - Comment: Number of rear gears - Returns nullable byte representing the RearGearNum field - - - - Set RearGearNum field - Comment: Number of rear gears - Nullable field value to be set - - - - - - returns number of elements in field RearGear - - - - Retrieves the RearGear field - Comment: Number of teeth on each gear 0 is innermost - 0 based index of RearGear element to retrieve - Returns nullable byte representing the RearGear field - - - - Set RearGear field - Comment: Number of teeth on each gear 0 is innermost - 0 based index of rear_gear - Nullable field value to be set - - - - Retrieves the ShimanoDi2Enabled field - Returns nullable Bool enum representing the ShimanoDi2Enabled field - - - - Set ShimanoDi2Enabled field - Nullable field value to be set - - - - Implements the BloodPressure profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the SystolicPressure field - Units: mmHg - Returns nullable ushort representing the SystolicPressure field - - - - Set SystolicPressure field - Units: mmHg - Nullable field value to be set - - - - Retrieves the DiastolicPressure field - Units: mmHg - Returns nullable ushort representing the DiastolicPressure field - - - - Set DiastolicPressure field - Units: mmHg - Nullable field value to be set - - - - Retrieves the MeanArterialPressure field - Units: mmHg - Returns nullable ushort representing the MeanArterialPressure field - - - - Set MeanArterialPressure field - Units: mmHg - Nullable field value to be set - - - - Retrieves the Map3SampleMean field - Units: mmHg - Returns nullable ushort representing the Map3SampleMean field - - - - Set Map3SampleMean field - Units: mmHg - Nullable field value to be set - - - - Retrieves the MapMorningValues field - Units: mmHg - Returns nullable ushort representing the MapMorningValues field - - - - Set MapMorningValues field - Units: mmHg - Nullable field value to be set - - - - Retrieves the MapEveningValues field - Units: mmHg - Returns nullable ushort representing the MapEveningValues field - - - - Set MapEveningValues field - Units: mmHg - Nullable field value to be set - - - - Retrieves the HeartRate field - Units: bpm - Returns nullable byte representing the HeartRate field - - - - Set HeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the HeartRateType field - Returns nullable HrType enum representing the HeartRateType field - - - - Set HeartRateType field - Nullable field value to be set - - - - Retrieves the Status field - Returns nullable BpStatus enum representing the Status field - - - - Set Status field - Nullable field value to be set - - - - Retrieves the UserProfileIndex field - Comment: Associates this blood pressure message to a user. This corresponds to the index of the user profile message in the blood pressure file. - Returns nullable ushort representing the UserProfileIndex field - - - - Set UserProfileIndex field - Comment: Associates this blood pressure message to a user. This corresponds to the index of the user profile message in the blood pressure file. - Nullable field value to be set - - - - Implements the CadenceZone profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HighValue field - Units: rpm - Returns nullable byte representing the HighValue field - - - - Set HighValue field - Units: rpm - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Implements the CameraEvent profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp. - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - Retrieves the CameraEventType field - Returns nullable CameraEventType enum representing the CameraEventType field - - - - Set CameraEventType field - Nullable field value to be set - - - - Retrieves the CameraFileUuid field - Returns byte[] representing the CameraFileUuid field - - - - Retrieves the CameraFileUuid field - Returns String representing the CameraFileUuid field - - - - Set CameraFileUuid field - field value to be set - - - - Set CameraFileUuid field - field value to be set - - - - Retrieves the CameraOrientation field - Returns nullable CameraOrientationType enum representing the CameraOrientation field - - - - Set CameraOrientation field - Nullable field value to be set - - - - Implements the Capabilities profile message. - - - - - Field Numbers for - - - - - - - returns number of elements in field Languages - - - - Retrieves the Languages field - Comment: Use language_bits_x types where x is index of array. - 0 based index of Languages element to retrieve - Returns nullable byte representing the Languages field - - - - Set Languages field - Comment: Use language_bits_x types where x is index of array. - 0 based index of languages - Nullable field value to be set - - - - - - returns number of elements in field Sports - - - - Retrieves the Sports field - Comment: Use sport_bits_x types where x is index of array. - 0 based index of Sports element to retrieve - Returns nullable byte representing the Sports field - - - - Set Sports field - Comment: Use sport_bits_x types where x is index of array. - 0 based index of sports - Nullable field value to be set - - - - Retrieves the WorkoutsSupported field - Returns nullable uint representing the WorkoutsSupported field - - - - Set WorkoutsSupported field - Nullable field value to be set - - - - Retrieves the ConnectivitySupported field - Returns nullable uint representing the ConnectivitySupported field - - - - Set ConnectivitySupported field - Nullable field value to be set - - - - Implements the ClimbPro profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the ClimbProEvent field - Returns nullable ClimbProEvent enum representing the ClimbProEvent field - - - - Set ClimbProEvent field - Nullable field value to be set - - - - Retrieves the ClimbNumber field - Returns nullable ushort representing the ClimbNumber field - - - - Set ClimbNumber field - Nullable field value to be set - - - - Retrieves the ClimbCategory field - Returns nullable byte representing the ClimbCategory field - - - - Set ClimbCategory field - Nullable field value to be set - - - - Retrieves the CurrentDist field - Units: m - Returns nullable float representing the CurrentDist field - - - - Set CurrentDist field - Units: m - Nullable field value to be set - - - - Implements the Connectivity profile message. - - - - - Field Numbers for - - - - - Retrieves the BluetoothEnabled field - Comment: Use Bluetooth for connectivity features - Returns nullable Bool enum representing the BluetoothEnabled field - - - - Set BluetoothEnabled field - Comment: Use Bluetooth for connectivity features - Nullable field value to be set - - - - Retrieves the BluetoothLeEnabled field - Comment: Use Bluetooth Low Energy for connectivity features - Returns nullable Bool enum representing the BluetoothLeEnabled field - - - - Set BluetoothLeEnabled field - Comment: Use Bluetooth Low Energy for connectivity features - Nullable field value to be set - - - - Retrieves the AntEnabled field - Comment: Use ANT for connectivity features - Returns nullable Bool enum representing the AntEnabled field - - - - Set AntEnabled field - Comment: Use ANT for connectivity features - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the LiveTrackingEnabled field - Returns nullable Bool enum representing the LiveTrackingEnabled field - - - - Set LiveTrackingEnabled field - Nullable field value to be set - - - - Retrieves the WeatherConditionsEnabled field - Returns nullable Bool enum representing the WeatherConditionsEnabled field - - - - Set WeatherConditionsEnabled field - Nullable field value to be set - - - - Retrieves the WeatherAlertsEnabled field - Returns nullable Bool enum representing the WeatherAlertsEnabled field - - - - Set WeatherAlertsEnabled field - Nullable field value to be set - - - - Retrieves the AutoActivityUploadEnabled field - Returns nullable Bool enum representing the AutoActivityUploadEnabled field - - - - Set AutoActivityUploadEnabled field - Nullable field value to be set - - - - Retrieves the CourseDownloadEnabled field - Returns nullable Bool enum representing the CourseDownloadEnabled field - - - - Set CourseDownloadEnabled field - Nullable field value to be set - - - - Retrieves the WorkoutDownloadEnabled field - Returns nullable Bool enum representing the WorkoutDownloadEnabled field - - - - Set WorkoutDownloadEnabled field - Nullable field value to be set - - - - Retrieves the GpsEphemerisDownloadEnabled field - Returns nullable Bool enum representing the GpsEphemerisDownloadEnabled field - - - - Set GpsEphemerisDownloadEnabled field - Nullable field value to be set - - - - Retrieves the IncidentDetectionEnabled field - Returns nullable Bool enum representing the IncidentDetectionEnabled field - - - - Set IncidentDetectionEnabled field - Nullable field value to be set - - - - Retrieves the GrouptrackEnabled field - Returns nullable Bool enum representing the GrouptrackEnabled field - - - - Set GrouptrackEnabled field - Nullable field value to be set - - - - Implements the Course profile message. - - - - - Field Numbers for - - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the Capabilities field - Returns nullable uint representing the Capabilities field - - - - Set Capabilities field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Implements the CoursePoint profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Returns nullable float representing the Distance field - - - - Set Distance field - Units: m - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable CoursePoint enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the Favorite field - Returns nullable Bool enum representing the Favorite field - - - - Set Favorite field - Nullable field value to be set - - - - Implements the DeveloperDataId profile message. - - - - - Field Numbers for - - - - - - - returns number of elements in field DeveloperId - - - - Retrieves the DeveloperId field - 0 based index of DeveloperId element to retrieve - Returns nullable byte representing the DeveloperId field - - - - Set DeveloperId field - 0 based index of developer_id - Nullable field value to be set - - - - - - returns number of elements in field ApplicationId - - - - Retrieves the ApplicationId field - 0 based index of ApplicationId element to retrieve - Returns nullable byte representing the ApplicationId field - - - - Set ApplicationId field - 0 based index of application_id - Nullable field value to be set - - - - Retrieves the ManufacturerId field - Returns nullable ushort representing the ManufacturerId field - - - - Set ManufacturerId field - Nullable field value to be set - - - - Retrieves the DeveloperDataIndex field - Returns nullable byte representing the DeveloperDataIndex field - - - - Set DeveloperDataIndex field - Nullable field value to be set - - - - Retrieves the ApplicationVersion field - Returns nullable uint representing the ApplicationVersion field - - - - Set ApplicationVersion field - Nullable field value to be set - - - - Implements the DeviceAuxBatteryInfo profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Nullable field value to be set - - - - Retrieves the BatteryVoltage field - Units: V - Returns nullable float representing the BatteryVoltage field - - - - Set BatteryVoltage field - Units: V - Nullable field value to be set - - - - Retrieves the BatteryStatus field - Returns nullable byte representing the BatteryStatus field - - - - Set BatteryStatus field - Nullable field value to be set - - - - Retrieves the BatteryIdentifier field - Returns nullable byte representing the BatteryIdentifier field - - - - Set BatteryIdentifier field - Nullable field value to be set - - - - Implements the DeviceInfo profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Nullable field value to be set - - - - Retrieves the DeviceType field - Returns nullable byte representing the DeviceType field - - - - Set DeviceType field - Nullable field value to be set - - - - Retrieves the BleDeviceType subfield - Nullable byte representing the BleDeviceType subfield - - - - - Set BleDeviceType subfield - Subfield value to be set - - - - Retrieves the AntplusDeviceType subfield - Nullable byte representing the AntplusDeviceType subfield - - - - - Set AntplusDeviceType subfield - Subfield value to be set - - - - Retrieves the AntDeviceType subfield - Nullable byte representing the AntDeviceType subfield - - - - - Set AntDeviceType subfield - Subfield value to be set - - - - Retrieves the LocalDeviceType subfield - Nullable byte representing the LocalDeviceType subfield - - - - - Set LocalDeviceType subfield - Subfield value to be set - - - - Retrieves the Manufacturer field - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Nullable field value to be set - - - - Retrieves the SerialNumber field - Returns nullable uint representing the SerialNumber field - - - - Set SerialNumber field - Nullable field value to be set - - - - Retrieves the Product field - Returns nullable ushort representing the Product field - - - - Set Product field - Nullable field value to be set - - - - Retrieves the FaveroProduct subfield - Nullable ushort representing the FaveroProduct subfield - - - - - Set FaveroProduct subfield - Subfield value to be set - - - - Retrieves the GarminProduct subfield - Nullable ushort representing the GarminProduct subfield - - - - - Set GarminProduct subfield - Subfield value to be set - - - - Retrieves the SoftwareVersion field - Returns nullable float representing the SoftwareVersion field - - - - Set SoftwareVersion field - Nullable field value to be set - - - - Retrieves the HardwareVersion field - Returns nullable byte representing the HardwareVersion field - - - - Set HardwareVersion field - Nullable field value to be set - - - - Retrieves the CumOperatingTime field - Units: s - Comment: Reset by new battery or charge. - Returns nullable uint representing the CumOperatingTime field - - - - Set CumOperatingTime field - Units: s - Comment: Reset by new battery or charge. - Nullable field value to be set - - - - Retrieves the BatteryVoltage field - Units: V - Returns nullable float representing the BatteryVoltage field - - - - Set BatteryVoltage field - Units: V - Nullable field value to be set - - - - Retrieves the BatteryStatus field - Returns nullable byte representing the BatteryStatus field - - - - Set BatteryStatus field - Nullable field value to be set - - - - Retrieves the SensorPosition field - Comment: Indicates the location of the sensor - Returns nullable BodyLocation enum representing the SensorPosition field - - - - Set SensorPosition field - Comment: Indicates the location of the sensor - Nullable field value to be set - - - - Retrieves the Descriptor field - Comment: Used to describe the sensor or location - Returns byte[] representing the Descriptor field - - - - Retrieves the Descriptor field - Comment: Used to describe the sensor or location - Returns String representing the Descriptor field - - - - Set Descriptor field - Comment: Used to describe the sensor or location - field value to be set - - - - Set Descriptor field - Comment: Used to describe the sensor or location - field value to be set - - - - Retrieves the AntTransmissionType field - Returns nullable byte representing the AntTransmissionType field - - - - Set AntTransmissionType field - Nullable field value to be set - - - - Retrieves the AntDeviceNumber field - Returns nullable ushort representing the AntDeviceNumber field - - - - Set AntDeviceNumber field - Nullable field value to be set - - - - Retrieves the AntNetwork field - Returns nullable AntNetwork enum representing the AntNetwork field - - - - Set AntNetwork field - Nullable field value to be set - - - - Retrieves the SourceType field - Returns nullable SourceType enum representing the SourceType field - - - - Set SourceType field - Nullable field value to be set - - - - Retrieves the ProductName field - Comment: Optional free form string to indicate the devices name or model - Returns byte[] representing the ProductName field - - - - Retrieves the ProductName field - Comment: Optional free form string to indicate the devices name or model - Returns String representing the ProductName field - - - - Set ProductName field - Comment: Optional free form string to indicate the devices name or model - field value to be set - - - - Set ProductName field - Comment: Optional free form string to indicate the devices name or model - field value to be set - - - - Retrieves the BatteryLevel field - Units: % - Returns nullable byte representing the BatteryLevel field - - - - Set BatteryLevel field - Units: % - Nullable field value to be set - - - - Implements the DeviceSettings profile message. - - - - - Field Numbers for - - - - - Retrieves the ActiveTimeZone field - Comment: Index into time zone arrays. - Returns nullable byte representing the ActiveTimeZone field - - - - Set ActiveTimeZone field - Comment: Index into time zone arrays. - Nullable field value to be set - - - - Retrieves the UtcOffset field - Comment: Offset from system time. Required to convert timestamp from system time to UTC. - Returns nullable uint representing the UtcOffset field - - - - Set UtcOffset field - Comment: Offset from system time. Required to convert timestamp from system time to UTC. - Nullable field value to be set - - - - - - returns number of elements in field TimeOffset - - - - Retrieves the TimeOffset field - Units: s - Comment: Offset from system time. - 0 based index of TimeOffset element to retrieve - Returns nullable uint representing the TimeOffset field - - - - Set TimeOffset field - Units: s - Comment: Offset from system time. - 0 based index of time_offset - Nullable field value to be set - - - - - - returns number of elements in field TimeMode - - - - Retrieves the TimeMode field - Comment: Display mode for the time - 0 based index of TimeMode element to retrieve - Returns nullable TimeMode enum representing the TimeMode field - - - - Set TimeMode field - Comment: Display mode for the time - 0 based index of time_mode - Nullable field value to be set - - - - - - returns number of elements in field TimeZoneOffset - - - - Retrieves the TimeZoneOffset field - Units: hr - Comment: timezone offset in 1/4 hour increments - 0 based index of TimeZoneOffset element to retrieve - Returns nullable float representing the TimeZoneOffset field - - - - Set TimeZoneOffset field - Units: hr - Comment: timezone offset in 1/4 hour increments - 0 based index of time_zone_offset - Nullable field value to be set - - - - Retrieves the BacklightMode field - Comment: Mode for backlight - Returns nullable BacklightMode enum representing the BacklightMode field - - - - Set BacklightMode field - Comment: Mode for backlight - Nullable field value to be set - - - - Retrieves the ActivityTrackerEnabled field - Comment: Enabled state of the activity tracker functionality - Returns nullable Bool enum representing the ActivityTrackerEnabled field - - - - Set ActivityTrackerEnabled field - Comment: Enabled state of the activity tracker functionality - Nullable field value to be set - - - - Retrieves the ClockTime field - Comment: UTC timestamp used to set the devices clock and date - Returns DateTime representing the ClockTime field - - - - Set ClockTime field - Comment: UTC timestamp used to set the devices clock and date - Nullable field value to be set - - - - - - returns number of elements in field PagesEnabled - - - - Retrieves the PagesEnabled field - Comment: Bitfield to configure enabled screens for each supported loop - 0 based index of PagesEnabled element to retrieve - Returns nullable ushort representing the PagesEnabled field - - - - Set PagesEnabled field - Comment: Bitfield to configure enabled screens for each supported loop - 0 based index of pages_enabled - Nullable field value to be set - - - - Retrieves the MoveAlertEnabled field - Comment: Enabled state of the move alert - Returns nullable Bool enum representing the MoveAlertEnabled field - - - - Set MoveAlertEnabled field - Comment: Enabled state of the move alert - Nullable field value to be set - - - - Retrieves the DateMode field - Comment: Display mode for the date - Returns nullable DateMode enum representing the DateMode field - - - - Set DateMode field - Comment: Display mode for the date - Nullable field value to be set - - - - Retrieves the DisplayOrientation field - Returns nullable DisplayOrientation enum representing the DisplayOrientation field - - - - Set DisplayOrientation field - Nullable field value to be set - - - - Retrieves the MountingSide field - Returns nullable Side enum representing the MountingSide field - - - - Set MountingSide field - Nullable field value to be set - - - - - - returns number of elements in field DefaultPage - - - - Retrieves the DefaultPage field - Comment: Bitfield to indicate one page as default for each supported loop - 0 based index of DefaultPage element to retrieve - Returns nullable ushort representing the DefaultPage field - - - - Set DefaultPage field - Comment: Bitfield to indicate one page as default for each supported loop - 0 based index of default_page - Nullable field value to be set - - - - Retrieves the AutosyncMinSteps field - Units: steps - Comment: Minimum steps before an autosync can occur - Returns nullable ushort representing the AutosyncMinSteps field - - - - Set AutosyncMinSteps field - Units: steps - Comment: Minimum steps before an autosync can occur - Nullable field value to be set - - - - Retrieves the AutosyncMinTime field - Units: minutes - Comment: Minimum minutes before an autosync can occur - Returns nullable ushort representing the AutosyncMinTime field - - - - Set AutosyncMinTime field - Units: minutes - Comment: Minimum minutes before an autosync can occur - Nullable field value to be set - - - - Retrieves the LactateThresholdAutodetectEnabled field - Comment: Enable auto-detect setting for the lactate threshold feature. - Returns nullable Bool enum representing the LactateThresholdAutodetectEnabled field - - - - Set LactateThresholdAutodetectEnabled field - Comment: Enable auto-detect setting for the lactate threshold feature. - Nullable field value to be set - - - - Retrieves the BleAutoUploadEnabled field - Comment: Automatically upload using BLE - Returns nullable Bool enum representing the BleAutoUploadEnabled field - - - - Set BleAutoUploadEnabled field - Comment: Automatically upload using BLE - Nullable field value to be set - - - - Retrieves the AutoSyncFrequency field - Comment: Helps to conserve battery by changing modes - Returns nullable AutoSyncFrequency enum representing the AutoSyncFrequency field - - - - Set AutoSyncFrequency field - Comment: Helps to conserve battery by changing modes - Nullable field value to be set - - - - Retrieves the AutoActivityDetect field - Comment: Allows setting specific activities auto-activity detect enabled/disabled settings - Returns nullable uint representing the AutoActivityDetect field - - - - Set AutoActivityDetect field - Comment: Allows setting specific activities auto-activity detect enabled/disabled settings - Nullable field value to be set - - - - Retrieves the NumberOfScreens field - Comment: Number of screens configured to display - Returns nullable byte representing the NumberOfScreens field - - - - Set NumberOfScreens field - Comment: Number of screens configured to display - Nullable field value to be set - - - - Retrieves the SmartNotificationDisplayOrientation field - Comment: Smart Notification display orientation - Returns nullable DisplayOrientation enum representing the SmartNotificationDisplayOrientation field - - - - Set SmartNotificationDisplayOrientation field - Comment: Smart Notification display orientation - Nullable field value to be set - - - - Retrieves the TapInterface field - Returns nullable Switch enum representing the TapInterface field - - - - Set TapInterface field - Nullable field value to be set - - - - Retrieves the TapSensitivity field - Comment: Used to hold the tap threshold setting - Returns nullable TapSensitivity enum representing the TapSensitivity field - - - - Set TapSensitivity field - Comment: Used to hold the tap threshold setting - Nullable field value to be set - - - - Implements the DiveAlarm profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Comment: Index of the alarm - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Comment: Index of the alarm - Nullable field value to be set - - - - Retrieves the Depth field - Units: m - Comment: Depth setting (m) for depth type alarms - Returns nullable float representing the Depth field - - - - Set Depth field - Units: m - Comment: Depth setting (m) for depth type alarms - Nullable field value to be set - - - - Retrieves the Time field - Units: s - Comment: Time setting (s) for time type alarms - Returns nullable int representing the Time field - - - - Set Time field - Units: s - Comment: Time setting (s) for time type alarms - Nullable field value to be set - - - - Retrieves the Enabled field - Comment: Enablement flag - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Comment: Enablement flag - Nullable field value to be set - - - - Retrieves the AlarmType field - Comment: Alarm type setting - Returns nullable DiveAlarmType enum representing the AlarmType field - - - - Set AlarmType field - Comment: Alarm type setting - Nullable field value to be set - - - - Retrieves the Sound field - Comment: Tone and Vibe setting for the alarm - Returns nullable Tone enum representing the Sound field - - - - Set Sound field - Comment: Tone and Vibe setting for the alarm - Nullable field value to be set - - - - - - returns number of elements in field DiveTypes - - - - Retrieves the DiveTypes field - Comment: Dive types the alarm will trigger on - 0 based index of DiveTypes element to retrieve - Returns nullable SubSport enum representing the DiveTypes field - - - - Set DiveTypes field - Comment: Dive types the alarm will trigger on - 0 based index of dive_types - Nullable field value to be set - - - - Implements the DiveGas profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HeliumContent field - Units: percent - Returns nullable byte representing the HeliumContent field - - - - Set HeliumContent field - Units: percent - Nullable field value to be set - - - - Retrieves the OxygenContent field - Units: percent - Returns nullable byte representing the OxygenContent field - - - - Set OxygenContent field - Units: percent - Nullable field value to be set - - - - Retrieves the Status field - Returns nullable DiveGasStatus enum representing the Status field - - - - Set Status field - Nullable field value to be set - - - - Implements the DiveSettings profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the Model field - Returns nullable TissueModelType enum representing the Model field - - - - Set Model field - Nullable field value to be set - - - - Retrieves the GfLow field - Units: percent - Returns nullable byte representing the GfLow field - - - - Set GfLow field - Units: percent - Nullable field value to be set - - - - Retrieves the GfHigh field - Units: percent - Returns nullable byte representing the GfHigh field - - - - Set GfHigh field - Units: percent - Nullable field value to be set - - - - Retrieves the WaterType field - Returns nullable WaterType enum representing the WaterType field - - - - Set WaterType field - Nullable field value to be set - - - - Retrieves the WaterDensity field - Units: kg/m^3 - Comment: Fresh water is usually 1000; salt water is usually 1025 - Returns nullable float representing the WaterDensity field - - - - Set WaterDensity field - Units: kg/m^3 - Comment: Fresh water is usually 1000; salt water is usually 1025 - Nullable field value to be set - - - - Retrieves the Po2Warn field - Units: percent - Comment: Typically 1.40 - Returns nullable float representing the Po2Warn field - - - - Set Po2Warn field - Units: percent - Comment: Typically 1.40 - Nullable field value to be set - - - - Retrieves the Po2Critical field - Units: percent - Comment: Typically 1.60 - Returns nullable float representing the Po2Critical field - - - - Set Po2Critical field - Units: percent - Comment: Typically 1.60 - Nullable field value to be set - - - - Retrieves the Po2Deco field - Units: percent - Returns nullable float representing the Po2Deco field - - - - Set Po2Deco field - Units: percent - Nullable field value to be set - - - - Retrieves the SafetyStopEnabled field - Returns nullable Bool enum representing the SafetyStopEnabled field - - - - Set SafetyStopEnabled field - Nullable field value to be set - - - - Retrieves the BottomDepth field - Returns nullable float representing the BottomDepth field - - - - Set BottomDepth field - Nullable field value to be set - - - - Retrieves the BottomTime field - Returns nullable uint representing the BottomTime field - - - - Set BottomTime field - Nullable field value to be set - - - - Retrieves the ApneaCountdownEnabled field - Returns nullable Bool enum representing the ApneaCountdownEnabled field - - - - Set ApneaCountdownEnabled field - Nullable field value to be set - - - - Retrieves the ApneaCountdownTime field - Returns nullable uint representing the ApneaCountdownTime field - - - - Set ApneaCountdownTime field - Nullable field value to be set - - - - Retrieves the BacklightMode field - Returns nullable DiveBacklightMode enum representing the BacklightMode field - - - - Set BacklightMode field - Nullable field value to be set - - - - Retrieves the BacklightBrightness field - Returns nullable byte representing the BacklightBrightness field - - - - Set BacklightBrightness field - Nullable field value to be set - - - - Retrieves the BacklightTimeout field - Returns nullable byte representing the BacklightTimeout field - - - - Set BacklightTimeout field - Nullable field value to be set - - - - Retrieves the RepeatDiveInterval field - Units: s - Comment: Time between surfacing and ending the activity - Returns nullable ushort representing the RepeatDiveInterval field - - - - Set RepeatDiveInterval field - Units: s - Comment: Time between surfacing and ending the activity - Nullable field value to be set - - - - Retrieves the SafetyStopTime field - Units: s - Comment: Time at safety stop (if enabled) - Returns nullable ushort representing the SafetyStopTime field - - - - Set SafetyStopTime field - Units: s - Comment: Time at safety stop (if enabled) - Nullable field value to be set - - - - Retrieves the HeartRateSourceType field - Returns nullable SourceType enum representing the HeartRateSourceType field - - - - Set HeartRateSourceType field - Nullable field value to be set - - - - Retrieves the HeartRateSource field - Returns nullable byte representing the HeartRateSource field - - - - Set HeartRateSource field - Nullable field value to be set - - - - Retrieves the HeartRateAntplusDeviceType subfield - Nullable byte representing the HeartRateAntplusDeviceType subfield - - - - - Set HeartRateAntplusDeviceType subfield - Subfield value to be set - - - - Retrieves the HeartRateLocalDeviceType subfield - Nullable byte representing the HeartRateLocalDeviceType subfield - - - - - Set HeartRateLocalDeviceType subfield - Subfield value to be set - - - - Implements the DiveSummary profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the ReferenceMesg field - Returns nullable ushort representing the ReferenceMesg field - - - - Set ReferenceMesg field - Nullable field value to be set - - - - Retrieves the ReferenceIndex field - Returns nullable ushort representing the ReferenceIndex field - - - - Set ReferenceIndex field - Nullable field value to be set - - - - Retrieves the AvgDepth field - Units: m - Comment: 0 if above water - Returns nullable float representing the AvgDepth field - - - - Set AvgDepth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the MaxDepth field - Units: m - Comment: 0 if above water - Returns nullable float representing the MaxDepth field - - - - Set MaxDepth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the SurfaceInterval field - Units: s - Comment: Time since end of last dive - Returns nullable uint representing the SurfaceInterval field - - - - Set SurfaceInterval field - Units: s - Comment: Time since end of last dive - Nullable field value to be set - - - - Retrieves the StartCns field - Units: percent - Returns nullable byte representing the StartCns field - - - - Set StartCns field - Units: percent - Nullable field value to be set - - - - Retrieves the EndCns field - Units: percent - Returns nullable byte representing the EndCns field - - - - Set EndCns field - Units: percent - Nullable field value to be set - - - - Retrieves the StartN2 field - Units: percent - Returns nullable ushort representing the StartN2 field - - - - Set StartN2 field - Units: percent - Nullable field value to be set - - - - Retrieves the EndN2 field - Units: percent - Returns nullable ushort representing the EndN2 field - - - - Set EndN2 field - Units: percent - Nullable field value to be set - - - - Retrieves the O2Toxicity field - Units: OTUs - Returns nullable ushort representing the O2Toxicity field - - - - Set O2Toxicity field - Units: OTUs - Nullable field value to be set - - - - Retrieves the DiveNumber field - Returns nullable uint representing the DiveNumber field - - - - Set DiveNumber field - Nullable field value to be set - - - - Retrieves the BottomTime field - Units: s - Returns nullable float representing the BottomTime field - - - - Set BottomTime field - Units: s - Nullable field value to be set - - - - Retrieves the AvgAscentRate field - Units: m/s - Comment: Average ascent rate, not including descents or stops - Returns nullable float representing the AvgAscentRate field - - - - Set AvgAscentRate field - Units: m/s - Comment: Average ascent rate, not including descents or stops - Nullable field value to be set - - - - Retrieves the AvgDescentRate field - Units: m/s - Comment: Average descent rate, not including ascents or stops - Returns nullable float representing the AvgDescentRate field - - - - Set AvgDescentRate field - Units: m/s - Comment: Average descent rate, not including ascents or stops - Nullable field value to be set - - - - Retrieves the MaxAscentRate field - Units: m/s - Comment: Maximum ascent rate - Returns nullable float representing the MaxAscentRate field - - - - Set MaxAscentRate field - Units: m/s - Comment: Maximum ascent rate - Nullable field value to be set - - - - Retrieves the MaxDescentRate field - Units: m/s - Comment: Maximum descent rate - Returns nullable float representing the MaxDescentRate field - - - - Set MaxDescentRate field - Units: m/s - Comment: Maximum descent rate - Nullable field value to be set - - - - Retrieves the HangTime field - Units: s - Comment: Time spent neither ascending nor descending - Returns nullable float representing the HangTime field - - - - Set HangTime field - Units: s - Comment: Time spent neither ascending nor descending - Nullable field value to be set - - - - Implements the Event profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Event field - Returns nullable Event enum representing the Event field - - - - Set Event field - Nullable field value to be set - - - - Retrieves the EventType field - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Nullable field value to be set - - - - Retrieves the Data16 field - Returns nullable ushort representing the Data16 field - - - - Set Data16 field - Nullable field value to be set - - - - Retrieves the Data field - Returns nullable uint representing the Data field - - - - Set Data field - Nullable field value to be set - - - - Retrieves the TimerTrigger subfield - Nullable TimerTrigger enum representing the TimerTrigger subfield - - - - - Set TimerTrigger subfield - Subfield value to be set - - - - Retrieves the CoursePointIndex subfield - Nullable ushort representing the CoursePointIndex subfield - - - - - Set CoursePointIndex subfield - Subfield value to be set - - - - Retrieves the BatteryLevel subfield - Units: V - Nullable float representing the BatteryLevel subfield - - - - - Set BatteryLevel subfield - Units: V - Subfield value to be set - - - - Retrieves the VirtualPartnerSpeed subfield - Units: m/s - Nullable float representing the VirtualPartnerSpeed subfield - - - - - Set VirtualPartnerSpeed subfield - Units: m/s - Subfield value to be set - - - - Retrieves the HrHighAlert subfield - Units: bpm - Nullable byte representing the HrHighAlert subfield - - - - - Set HrHighAlert subfield - Units: bpm - Subfield value to be set - - - - Retrieves the HrLowAlert subfield - Units: bpm - Nullable byte representing the HrLowAlert subfield - - - - - Set HrLowAlert subfield - Units: bpm - Subfield value to be set - - - - Retrieves the SpeedHighAlert subfield - Units: m/s - Nullable float representing the SpeedHighAlert subfield - - - - - Set SpeedHighAlert subfield - Units: m/s - Subfield value to be set - - - - Retrieves the SpeedLowAlert subfield - Units: m/s - Nullable float representing the SpeedLowAlert subfield - - - - - Set SpeedLowAlert subfield - Units: m/s - Subfield value to be set - - - - Retrieves the CadHighAlert subfield - Units: rpm - Nullable ushort representing the CadHighAlert subfield - - - - - Set CadHighAlert subfield - Units: rpm - Subfield value to be set - - - - Retrieves the CadLowAlert subfield - Units: rpm - Nullable ushort representing the CadLowAlert subfield - - - - - Set CadLowAlert subfield - Units: rpm - Subfield value to be set - - - - Retrieves the PowerHighAlert subfield - Units: watts - Nullable ushort representing the PowerHighAlert subfield - - - - - Set PowerHighAlert subfield - Units: watts - Subfield value to be set - - - - Retrieves the PowerLowAlert subfield - Units: watts - Nullable ushort representing the PowerLowAlert subfield - - - - - Set PowerLowAlert subfield - Units: watts - Subfield value to be set - - - - Retrieves the TimeDurationAlert subfield - Units: s - Nullable float representing the TimeDurationAlert subfield - - - - - Set TimeDurationAlert subfield - Units: s - Subfield value to be set - - - - Retrieves the DistanceDurationAlert subfield - Units: m - Nullable float representing the DistanceDurationAlert subfield - - - - - Set DistanceDurationAlert subfield - Units: m - Subfield value to be set - - - - Retrieves the CalorieDurationAlert subfield - Units: calories - Nullable uint representing the CalorieDurationAlert subfield - - - - - Set CalorieDurationAlert subfield - Units: calories - Subfield value to be set - - - - Retrieves the FitnessEquipmentState subfield - Nullable FitnessEquipmentState enum representing the FitnessEquipmentState subfield - - - - - Set FitnessEquipmentState subfield - Subfield value to be set - - - - Retrieves the SportPoint subfield - Nullable uint representing the SportPoint subfield - - - - - Set SportPoint subfield - Subfield value to be set - - - - Retrieves the GearChangeData subfield - Nullable uint representing the GearChangeData subfield - - - - - Set GearChangeData subfield - Subfield value to be set - - - - Retrieves the RiderPosition subfield - Comment: Indicates the rider position value. - Nullable RiderPositionType enum representing the RiderPosition subfield - - - - - Set RiderPosition subfield - Comment: Indicates the rider position value. - Subfield value to be set - - - - Retrieves the CommTimeout subfield - Nullable ushort representing the CommTimeout subfield - - - - - Set CommTimeout subfield - Subfield value to be set - - - - Retrieves the RadarThreatAlert subfield - Comment: The first byte is the radar_threat_level_max, the second byte is the radar_threat_count, third bytes is the average approach speed, and the 4th byte is the max approach speed - Nullable uint representing the RadarThreatAlert subfield - - - - - Set RadarThreatAlert subfield - Comment: The first byte is the radar_threat_level_max, the second byte is the radar_threat_count, third bytes is the average approach speed, and the 4th byte is the max approach speed - Subfield value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Retrieves the Score field - Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - Returns nullable ushort representing the Score field - - - - Set Score field - Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - Nullable field value to be set - - - - Retrieves the OpponentScore field - Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - Returns nullable ushort representing the OpponentScore field - - - - Set OpponentScore field - Comment: Do not populate directly. Autogenerated by decoder for sport_point subfield components - Nullable field value to be set - - - - Retrieves the FrontGearNum field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Front gear number. 1 is innermost. - Returns nullable byte representing the FrontGearNum field - - - - Set FrontGearNum field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Front gear number. 1 is innermost. - Nullable field value to be set - - - - Retrieves the FrontGear field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of front teeth. - Returns nullable byte representing the FrontGear field - - - - Set FrontGear field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of front teeth. - Nullable field value to be set - - - - Retrieves the RearGearNum field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Rear gear number. 1 is innermost. - Returns nullable byte representing the RearGearNum field - - - - Set RearGearNum field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Rear gear number. 1 is innermost. - Nullable field value to be set - - - - Retrieves the RearGear field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of rear teeth. - Returns nullable byte representing the RearGear field - - - - Set RearGear field - Comment: Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of rear teeth. - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Nullable field value to be set - - - - Retrieves the RadarThreatLevelMax field - Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - Returns nullable RadarThreatLevelType enum representing the RadarThreatLevelMax field - - - - Set RadarThreatLevelMax field - Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - Nullable field value to be set - - - - Retrieves the RadarThreatCount field - Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - Returns nullable byte representing the RadarThreatCount field - - - - Set RadarThreatCount field - Comment: Do not populate directly. Autogenerated by decoder for threat_alert subfield components. - Nullable field value to be set - - - - Retrieves the RadarThreatAvgApproachSpeed field - Units: m/s - Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - Returns nullable float representing the RadarThreatAvgApproachSpeed field - - - - Set RadarThreatAvgApproachSpeed field - Units: m/s - Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - Nullable field value to be set - - - - Retrieves the RadarThreatMaxApproachSpeed field - Units: m/s - Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - Returns nullable float representing the RadarThreatMaxApproachSpeed field - - - - Set RadarThreatMaxApproachSpeed field - Units: m/s - Comment: Do not populate directly. Autogenerated by decoder for radar_threat_alert subfield components - Nullable field value to be set - - - - Implements the ExdDataConceptConfiguration profile message. - - - - - Field Numbers for - - - - - Retrieves the ScreenIndex field - Returns nullable byte representing the ScreenIndex field - - - - Set ScreenIndex field - Nullable field value to be set - - - - Retrieves the ConceptField field - Returns nullable byte representing the ConceptField field - - - - Set ConceptField field - Nullable field value to be set - - - - Retrieves the FieldId field - Returns nullable byte representing the FieldId field - - - - Set FieldId field - Nullable field value to be set - - - - Retrieves the ConceptIndex field - Returns nullable byte representing the ConceptIndex field - - - - Set ConceptIndex field - Nullable field value to be set - - - - Retrieves the DataPage field - Returns nullable byte representing the DataPage field - - - - Set DataPage field - Nullable field value to be set - - - - Retrieves the ConceptKey field - Returns nullable byte representing the ConceptKey field - - - - Set ConceptKey field - Nullable field value to be set - - - - Retrieves the Scaling field - Returns nullable byte representing the Scaling field - - - - Set Scaling field - Nullable field value to be set - - - - Retrieves the DataUnits field - Returns nullable ExdDataUnits enum representing the DataUnits field - - - - Set DataUnits field - Nullable field value to be set - - - - Retrieves the Qualifier field - Returns nullable ExdQualifiers enum representing the Qualifier field - - - - Set Qualifier field - Nullable field value to be set - - - - Retrieves the Descriptor field - Returns nullable ExdDescriptors enum representing the Descriptor field - - - - Set Descriptor field - Nullable field value to be set - - - - Retrieves the IsSigned field - Returns nullable Bool enum representing the IsSigned field - - - - Set IsSigned field - Nullable field value to be set - - - - Implements the ExdDataFieldConfiguration profile message. - - - - - Field Numbers for - - - - - Retrieves the ScreenIndex field - Returns nullable byte representing the ScreenIndex field - - - - Set ScreenIndex field - Nullable field value to be set - - - - Retrieves the ConceptField field - Returns nullable byte representing the ConceptField field - - - - Set ConceptField field - Nullable field value to be set - - - - Retrieves the FieldId field - Returns nullable byte representing the FieldId field - - - - Set FieldId field - Nullable field value to be set - - - - Retrieves the ConceptCount field - Returns nullable byte representing the ConceptCount field - - - - Set ConceptCount field - Nullable field value to be set - - - - Retrieves the DisplayType field - Returns nullable ExdDisplayType enum representing the DisplayType field - - - - Set DisplayType field - Nullable field value to be set - - - - - - returns number of elements in field Title - - - - Retrieves the Title field - 0 based index of Title element to retrieve - Returns byte[] representing the Title field - - - - Retrieves the Title field - 0 based index of Title element to retrieve - Returns String representing the Title field - - - - Set Title field - 0 based index of Title element to retrieve - field value to be set - - - - Set Title field - 0 based index of title - field value to be set - - - - Implements the ExdScreenConfiguration profile message. - - - - - Field Numbers for - - - - - Retrieves the ScreenIndex field - Returns nullable byte representing the ScreenIndex field - - - - Set ScreenIndex field - Nullable field value to be set - - - - Retrieves the FieldCount field - Comment: number of fields in screen - Returns nullable byte representing the FieldCount field - - - - Set FieldCount field - Comment: number of fields in screen - Nullable field value to be set - - - - Retrieves the Layout field - Returns nullable ExdLayout enum representing the Layout field - - - - Set Layout field - Nullable field value to be set - - - - Retrieves the ScreenEnabled field - Returns nullable Bool enum representing the ScreenEnabled field - - - - Set ScreenEnabled field - Nullable field value to be set - - - - Implements the ExerciseTitle profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the ExerciseCategory field - Returns nullable ushort representing the ExerciseCategory field - - - - Set ExerciseCategory field - Nullable field value to be set - - - - Retrieves the ExerciseName field - Returns nullable ushort representing the ExerciseName field - - - - Set ExerciseName field - Nullable field value to be set - - - - - - returns number of elements in field WktStepName - - - - Retrieves the WktStepName field - 0 based index of WktStepName element to retrieve - Returns byte[] representing the WktStepName field - - - - Retrieves the WktStepName field - 0 based index of WktStepName element to retrieve - Returns String representing the WktStepName field - - - - Set WktStepName field - 0 based index of WktStepName element to retrieve - field value to be set - - - - Set WktStepName field - 0 based index of wkt_step_name - field value to be set - - - - Implements the FieldCapabilities profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the File field - Returns nullable File enum representing the File field - - - - Set File field - Nullable field value to be set - - - - Retrieves the MesgNum field - Returns nullable ushort representing the MesgNum field - - - - Set MesgNum field - Nullable field value to be set - - - - Retrieves the FieldNum field - Returns nullable byte representing the FieldNum field - - - - Set FieldNum field - Nullable field value to be set - - - - Retrieves the Count field - Returns nullable ushort representing the Count field - - - - Set Count field - Nullable field value to be set - - - - Implements the FieldDescription profile message. - - - - - Field Numbers for - - - - - Retrieves the DeveloperDataIndex field - Returns nullable byte representing the DeveloperDataIndex field - - - - Set DeveloperDataIndex field - Nullable field value to be set - - - - Retrieves the FieldDefinitionNumber field - Returns nullable byte representing the FieldDefinitionNumber field - - - - Set FieldDefinitionNumber field - Nullable field value to be set - - - - Retrieves the FitBaseTypeId field - Returns nullable byte representing the FitBaseTypeId field - - - - Set FitBaseTypeId field - Nullable field value to be set - - - - - - returns number of elements in field FieldName - - - - Retrieves the FieldName field - 0 based index of FieldName element to retrieve - Returns byte[] representing the FieldName field - - - - Retrieves the FieldName field - 0 based index of FieldName element to retrieve - Returns String representing the FieldName field - - - - Set FieldName field - 0 based index of FieldName element to retrieve - field value to be set - - - - Set FieldName field - 0 based index of field_name - field value to be set - - - - Retrieves the Array field - Returns nullable byte representing the Array field - - - - Set Array field - Nullable field value to be set - - - - Retrieves the Components field - Returns byte[] representing the Components field - - - - Retrieves the Components field - Returns String representing the Components field - - - - Set Components field - field value to be set - - - - Set Components field - field value to be set - - - - Retrieves the Scale field - Returns nullable byte representing the Scale field - - - - Set Scale field - Nullable field value to be set - - - - Retrieves the Offset field - Returns nullable sbyte representing the Offset field - - - - Set Offset field - Nullable field value to be set - - - - - - returns number of elements in field Units - - - - Retrieves the Units field - 0 based index of Units element to retrieve - Returns byte[] representing the Units field - - - - Retrieves the Units field - 0 based index of Units element to retrieve - Returns String representing the Units field - - - - Set Units field - 0 based index of Units element to retrieve - field value to be set - - - - Set Units field - 0 based index of units - field value to be set - - - - Retrieves the Bits field - Returns byte[] representing the Bits field - - - - Retrieves the Bits field - Returns String representing the Bits field - - - - Set Bits field - field value to be set - - - - Set Bits field - field value to be set - - - - Retrieves the Accumulate field - Returns byte[] representing the Accumulate field - - - - Retrieves the Accumulate field - Returns String representing the Accumulate field - - - - Set Accumulate field - field value to be set - - - - Set Accumulate field - field value to be set - - - - Retrieves the FitBaseUnitId field - Returns nullable ushort representing the FitBaseUnitId field - - - - Set FitBaseUnitId field - Nullable field value to be set - - - - Retrieves the NativeMesgNum field - Returns nullable ushort representing the NativeMesgNum field - - - - Set NativeMesgNum field - Nullable field value to be set - - - - Retrieves the NativeFieldNum field - Returns nullable byte representing the NativeFieldNum field - - - - Set NativeFieldNum field - Nullable field value to be set - - - - Implements the FileCapabilities profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable File enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Flags field - Returns nullable byte representing the Flags field - - - - Set Flags field - Nullable field value to be set - - - - Retrieves the Directory field - Returns byte[] representing the Directory field - - - - Retrieves the Directory field - Returns String representing the Directory field - - - - Set Directory field - field value to be set - - - - Set Directory field - field value to be set - - - - Retrieves the MaxCount field - Returns nullable ushort representing the MaxCount field - - - - Set MaxCount field - Nullable field value to be set - - - - Retrieves the MaxSize field - Units: bytes - Returns nullable uint representing the MaxSize field - - - - Set MaxSize field - Units: bytes - Nullable field value to be set - - - - Implements the FileCreator profile message. - - - - - Field Numbers for - - - - - Retrieves the SoftwareVersion field - Returns nullable ushort representing the SoftwareVersion field - - - - Set SoftwareVersion field - Nullable field value to be set - - - - Retrieves the HardwareVersion field - Returns nullable byte representing the HardwareVersion field - - - - Set HardwareVersion field - Nullable field value to be set - - - - Implements the FileId profile message. - - - - - Field Numbers for - - - - - Retrieves the Type field - Returns nullable File enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Manufacturer field - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Nullable field value to be set - - - - Retrieves the Product field - Returns nullable ushort representing the Product field - - - - Set Product field - Nullable field value to be set - - - - Retrieves the FaveroProduct subfield - Nullable ushort representing the FaveroProduct subfield - - - - - Set FaveroProduct subfield - Subfield value to be set - - - - Retrieves the GarminProduct subfield - Nullable ushort representing the GarminProduct subfield - - - - - Set GarminProduct subfield - Subfield value to be set - - - - Retrieves the SerialNumber field - Returns nullable uint representing the SerialNumber field - - - - Set SerialNumber field - Nullable field value to be set - - - - Retrieves the TimeCreated field - Comment: Only set for files that are can be created/erased. - Returns DateTime representing the TimeCreated field - - - - Set TimeCreated field - Comment: Only set for files that are can be created/erased. - Nullable field value to be set - - - - Retrieves the Number field - Comment: Only set for files that are not created/erased. - Returns nullable ushort representing the Number field - - - - Set Number field - Comment: Only set for files that are not created/erased. - Nullable field value to be set - - - - Retrieves the ProductName field - Comment: Optional free form string to indicate the devices name or model - Returns byte[] representing the ProductName field - - - - Retrieves the ProductName field - Comment: Optional free form string to indicate the devices name or model - Returns String representing the ProductName field - - - - Set ProductName field - Comment: Optional free form string to indicate the devices name or model - field value to be set - - - - Set ProductName field - Comment: Optional free form string to indicate the devices name or model - field value to be set - - - - Implements the Goal profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the StartDate field - Returns DateTime representing the StartDate field - - - - Set StartDate field - Nullable field value to be set - - - - Retrieves the EndDate field - Returns DateTime representing the EndDate field - - - - Set EndDate field - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable Goal enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Value field - Returns nullable uint representing the Value field - - - - Set Value field - Nullable field value to be set - - - - Retrieves the Repeat field - Returns nullable Bool enum representing the Repeat field - - - - Set Repeat field - Nullable field value to be set - - - - Retrieves the TargetValue field - Returns nullable uint representing the TargetValue field - - - - Set TargetValue field - Nullable field value to be set - - - - Retrieves the Recurrence field - Returns nullable GoalRecurrence enum representing the Recurrence field - - - - Set Recurrence field - Nullable field value to be set - - - - Retrieves the RecurrenceValue field - Returns nullable ushort representing the RecurrenceValue field - - - - Set RecurrenceValue field - Nullable field value to be set - - - - Retrieves the Enabled field - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Nullable field value to be set - - - - Retrieves the Source field - Returns nullable GoalSource enum representing the Source field - - - - Set Source field - Nullable field value to be set - - - - Implements the GpsMetadata profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp. - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the EnhancedAltitude field - Units: m - Returns nullable float representing the EnhancedAltitude field - - - - Set EnhancedAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedSpeed field - Units: m/s - Returns nullable float representing the EnhancedSpeed field - - - - Set EnhancedSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the Heading field - Units: degrees - Returns nullable float representing the Heading field - - - - Set Heading field - Units: degrees - Nullable field value to be set - - - - Retrieves the UtcTimestamp field - Units: s - Comment: Used to correlate UTC to system time if the timestamp of the message is in system time. This UTC time is derived from the GPS data. - Returns DateTime representing the UtcTimestamp field - - - - Set UtcTimestamp field - Units: s - Comment: Used to correlate UTC to system time if the timestamp of the message is in system time. This UTC time is derived from the GPS data. - Nullable field value to be set - - - - - - returns number of elements in field Velocity - - - - Retrieves the Velocity field - Units: m/s - Comment: velocity[0] is lon velocity. Velocity[1] is lat velocity. Velocity[2] is altitude velocity. - 0 based index of Velocity element to retrieve - Returns nullable float representing the Velocity field - - - - Set Velocity field - Units: m/s - Comment: velocity[0] is lon velocity. Velocity[1] is lat velocity. Velocity[2] is altitude velocity. - 0 based index of velocity - Nullable field value to be set - - - - Implements the GyroscopeData profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - - - returns number of elements in field SampleTimeOffset - - - - Retrieves the SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the gyro sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in gyro_x and gyro_y and gyro_z - 0 based index of SampleTimeOffset element to retrieve - Returns nullable ushort representing the SampleTimeOffset field - - - - Set SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the gyro sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in gyro_x and gyro_y and gyro_z - 0 based index of sample_time_offset - Nullable field value to be set - - - - - - returns number of elements in field GyroX - - - - Retrieves the GyroX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of GyroX element to retrieve - Returns nullable ushort representing the GyroX field - - - - Set GyroX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of gyro_x - Nullable field value to be set - - - - - - returns number of elements in field GyroY - - - - Retrieves the GyroY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of GyroY element to retrieve - Returns nullable ushort representing the GyroY field - - - - Set GyroY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of gyro_y - Nullable field value to be set - - - - - - returns number of elements in field GyroZ - - - - Retrieves the GyroZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of GyroZ element to retrieve - Returns nullable ushort representing the GyroZ field - - - - Set GyroZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of gyro_z - Nullable field value to be set - - - - - - returns number of elements in field CalibratedGyroX - - - - Retrieves the CalibratedGyroX field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of CalibratedGyroX element to retrieve - Returns nullable float representing the CalibratedGyroX field - - - - Set CalibratedGyroX field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of calibrated_gyro_x - Nullable field value to be set - - - - - - returns number of elements in field CalibratedGyroY - - - - Retrieves the CalibratedGyroY field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of CalibratedGyroY element to retrieve - Returns nullable float representing the CalibratedGyroY field - - - - Set CalibratedGyroY field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of calibrated_gyro_y - Nullable field value to be set - - - - - - returns number of elements in field CalibratedGyroZ - - - - Retrieves the CalibratedGyroZ field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of CalibratedGyroZ element to retrieve - Returns nullable float representing the CalibratedGyroZ field - - - - Set CalibratedGyroZ field - Units: deg/s - Comment: Calibrated gyro reading - 0 based index of calibrated_gyro_z - Nullable field value to be set - - - - Implements the Hr profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the FractionalTimestamp field - Units: s - Returns nullable float representing the FractionalTimestamp field - - - - Set FractionalTimestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Time256 field - Units: s - Returns nullable float representing the Time256 field - - - - Set Time256 field - Units: s - Nullable field value to be set - - - - - - returns number of elements in field FilteredBpm - - - - Retrieves the FilteredBpm field - Units: bpm - 0 based index of FilteredBpm element to retrieve - Returns nullable byte representing the FilteredBpm field - - - - Set FilteredBpm field - Units: bpm - 0 based index of filtered_bpm - Nullable field value to be set - - - - - - returns number of elements in field EventTimestamp - - - - Retrieves the EventTimestamp field - Units: s - 0 based index of EventTimestamp element to retrieve - Returns nullable float representing the EventTimestamp field - - - - Set EventTimestamp field - Units: s - 0 based index of event_timestamp - Nullable field value to be set - - - - - - returns number of elements in field EventTimestamp12 - - - - Retrieves the EventTimestamp12 field - 0 based index of EventTimestamp12 element to retrieve - Returns nullable byte representing the EventTimestamp12 field - - - - Set EventTimestamp12 field - 0 based index of event_timestamp_12 - Nullable field value to be set - - - - Implements the HrmProfile profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Enabled field - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Nullable field value to be set - - - - Retrieves the HrmAntId field - Returns nullable ushort representing the HrmAntId field - - - - Set HrmAntId field - Nullable field value to be set - - - - Retrieves the LogHrv field - Returns nullable Bool enum representing the LogHrv field - - - - Set LogHrv field - Nullable field value to be set - - - - Retrieves the HrmAntIdTransType field - Returns nullable byte representing the HrmAntIdTransType field - - - - Set HrmAntIdTransType field - Nullable field value to be set - - - - Implements the Hrv profile message. - - - - - Field Numbers for - - - - - - - returns number of elements in field Time - - - - Retrieves the Time field - Units: s - Comment: Time between beats - 0 based index of Time element to retrieve - Returns nullable float representing the Time field - - - - Set Time field - Units: s - Comment: Time between beats - 0 based index of time - Nullable field value to be set - - - - Implements the HrZone profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HighBpm field - Units: bpm - Returns nullable byte representing the HighBpm field - - - - Set HighBpm field - Units: bpm - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Implements the Jump profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Returns nullable float representing the Distance field - - - - Set Distance field - Units: m - Nullable field value to be set - - - - Retrieves the Height field - Units: m - Returns nullable float representing the Height field - - - - Set Height field - Units: m - Nullable field value to be set - - - - Retrieves the Rotations field - Returns nullable byte representing the Rotations field - - - - Set Rotations field - Nullable field value to be set - - - - Retrieves the HangTime field - Units: s - Returns nullable float representing the HangTime field - - - - Set HangTime field - Units: s - Nullable field value to be set - - - - Retrieves the Score field - Comment: A score for a jump calculated based on hang time, rotations, and distance. - Returns nullable float representing the Score field - - - - Set Score field - Comment: A score for a jump calculated based on hang time, rotations, and distance. - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the Speed field - Units: m/s - Returns nullable float representing the Speed field - - - - Set Speed field - Units: m/s - Nullable field value to be set - - - - Retrieves the EnhancedSpeed field - Units: m/s - Returns nullable float representing the EnhancedSpeed field - - - - Set EnhancedSpeed field - Units: m/s - Nullable field value to be set - - - - Implements the Lap profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Timestamp field - Units: s - Comment: Lap end time. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Lap end time. - Nullable field value to be set - - - - Retrieves the Event field - Returns nullable Event enum representing the Event field - - - - Set Event field - Nullable field value to be set - - - - Retrieves the EventType field - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Nullable field value to be set - - - - Retrieves the StartTime field - Returns DateTime representing the StartTime field - - - - Set StartTime field - Nullable field value to be set - - - - Retrieves the StartPositionLat field - Units: semicircles - Returns nullable int representing the StartPositionLat field - - - - Set StartPositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the StartPositionLong field - Units: semicircles - Returns nullable int representing the StartPositionLong field - - - - Set StartPositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the EndPositionLat field - Units: semicircles - Returns nullable int representing the EndPositionLat field - - - - Set EndPositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the EndPositionLong field - Units: semicircles - Returns nullable int representing the EndPositionLong field - - - - Set EndPositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Returns nullable float representing the TotalElapsedTime field - - - - Set TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Nullable field value to be set - - - - Retrieves the TotalDistance field - Units: m - Returns nullable float representing the TotalDistance field - - - - Set TotalDistance field - Units: m - Nullable field value to be set - - - - Retrieves the TotalCycles field - Units: cycles - Returns nullable uint representing the TotalCycles field - - - - Set TotalCycles field - Units: cycles - Nullable field value to be set - - - - Retrieves the TotalStrides subfield - Units: strides - Nullable uint representing the TotalStrides subfield - - - - - Set TotalStrides subfield - Units: strides - Subfield value to be set - - - - Retrieves the TotalStrokes subfield - Units: strokes - Nullable uint representing the TotalStrokes subfield - - - - - Set TotalStrokes subfield - Units: strokes - Subfield value to be set - - - - Retrieves the TotalCalories field - Units: kcal - Returns nullable ushort representing the TotalCalories field - - - - Set TotalCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the TotalFatCalories field - Units: kcal - Comment: If New Leaf - Returns nullable ushort representing the TotalFatCalories field - - - - Set TotalFatCalories field - Units: kcal - Comment: If New Leaf - Nullable field value to be set - - - - Retrieves the AvgSpeed field - Units: m/s - Returns nullable float representing the AvgSpeed field - - - - Set AvgSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxSpeed field - Units: m/s - Returns nullable float representing the MaxSpeed field - - - - Set MaxSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgHeartRate field - Units: bpm - Returns nullable byte representing the AvgHeartRate field - - - - Set AvgHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the MaxHeartRate field - Units: bpm - Returns nullable byte representing the MaxHeartRate field - - - - Set MaxHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Returns nullable byte representing the AvgCadence field - - - - Set AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Nullable field value to be set - - - - Retrieves the AvgRunningCadence subfield - Units: strides/min - Nullable byte representing the AvgRunningCadence subfield - - - - - Set AvgRunningCadence subfield - Units: strides/min - Subfield value to be set - - - - Retrieves the MaxCadence field - Units: rpm - Returns nullable byte representing the MaxCadence field - - - - Set MaxCadence field - Units: rpm - Nullable field value to be set - - - - Retrieves the MaxRunningCadence subfield - Units: strides/min - Nullable byte representing the MaxRunningCadence subfield - - - - - Set MaxRunningCadence subfield - Units: strides/min - Subfield value to be set - - - - Retrieves the AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Returns nullable ushort representing the AvgPower field - - - - Set AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Nullable field value to be set - - - - Retrieves the MaxPower field - Units: watts - Returns nullable ushort representing the MaxPower field - - - - Set MaxPower field - Units: watts - Nullable field value to be set - - - - Retrieves the TotalAscent field - Units: m - Returns nullable ushort representing the TotalAscent field - - - - Set TotalAscent field - Units: m - Nullable field value to be set - - - - Retrieves the TotalDescent field - Units: m - Returns nullable ushort representing the TotalDescent field - - - - Set TotalDescent field - Units: m - Nullable field value to be set - - - - Retrieves the Intensity field - Returns nullable Intensity enum representing the Intensity field - - - - Set Intensity field - Nullable field value to be set - - - - Retrieves the LapTrigger field - Returns nullable LapTrigger enum representing the LapTrigger field - - - - Set LapTrigger field - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Retrieves the NumLengths field - Units: lengths - Comment: # of lengths of swim pool - Returns nullable ushort representing the NumLengths field - - - - Set NumLengths field - Units: lengths - Comment: # of lengths of swim pool - Nullable field value to be set - - - - Retrieves the NormalizedPower field - Units: watts - Returns nullable ushort representing the NormalizedPower field - - - - Set NormalizedPower field - Units: watts - Nullable field value to be set - - - - Retrieves the LeftRightBalance field - Returns nullable ushort representing the LeftRightBalance field - - - - Set LeftRightBalance field - Nullable field value to be set - - - - Retrieves the FirstLengthIndex field - Returns nullable ushort representing the FirstLengthIndex field - - - - Set FirstLengthIndex field - Nullable field value to be set - - - - Retrieves the AvgStrokeDistance field - Units: m - Returns nullable float representing the AvgStrokeDistance field - - - - Set AvgStrokeDistance field - Units: m - Nullable field value to be set - - - - Retrieves the SwimStroke field - Returns nullable SwimStroke enum representing the SwimStroke field - - - - Set SwimStroke field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the NumActiveLengths field - Units: lengths - Comment: # of active lengths of swim pool - Returns nullable ushort representing the NumActiveLengths field - - - - Set NumActiveLengths field - Units: lengths - Comment: # of active lengths of swim pool - Nullable field value to be set - - - - Retrieves the TotalWork field - Units: J - Returns nullable uint representing the TotalWork field - - - - Set TotalWork field - Units: J - Nullable field value to be set - - - - Retrieves the AvgAltitude field - Units: m - Returns nullable float representing the AvgAltitude field - - - - Set AvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the MaxAltitude field - Units: m - Returns nullable float representing the MaxAltitude field - - - - Set MaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the GpsAccuracy field - Units: m - Returns nullable byte representing the GpsAccuracy field - - - - Set GpsAccuracy field - Units: m - Nullable field value to be set - - - - Retrieves the AvgGrade field - Units: % - Returns nullable float representing the AvgGrade field - - - - Set AvgGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgPosGrade field - Units: % - Returns nullable float representing the AvgPosGrade field - - - - Set AvgPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgNegGrade field - Units: % - Returns nullable float representing the AvgNegGrade field - - - - Set AvgNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxPosGrade field - Units: % - Returns nullable float representing the MaxPosGrade field - - - - Set MaxPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxNegGrade field - Units: % - Returns nullable float representing the MaxNegGrade field - - - - Set MaxNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgTemperature field - Units: C - Returns nullable sbyte representing the AvgTemperature field - - - - Set AvgTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MaxTemperature field - Units: C - Returns nullable sbyte representing the MaxTemperature field - - - - Set MaxTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the TotalMovingTime field - Units: s - Returns nullable float representing the TotalMovingTime field - - - - Set TotalMovingTime field - Units: s - Nullable field value to be set - - - - Retrieves the AvgPosVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgPosVerticalSpeed field - - - - Set AvgPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgNegVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgNegVerticalSpeed field - - - - Set AvgNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxPosVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxPosVerticalSpeed field - - - - Set MaxPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxNegVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxNegVerticalSpeed field - - - - Set MaxNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - - - returns number of elements in field TimeInHrZone - - - - Retrieves the TimeInHrZone field - Units: s - 0 based index of TimeInHrZone element to retrieve - Returns nullable float representing the TimeInHrZone field - - - - Set TimeInHrZone field - Units: s - 0 based index of time_in_hr_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInSpeedZone - - - - Retrieves the TimeInSpeedZone field - Units: s - 0 based index of TimeInSpeedZone element to retrieve - Returns nullable float representing the TimeInSpeedZone field - - - - Set TimeInSpeedZone field - Units: s - 0 based index of time_in_speed_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInCadenceZone - - - - Retrieves the TimeInCadenceZone field - Units: s - 0 based index of TimeInCadenceZone element to retrieve - Returns nullable float representing the TimeInCadenceZone field - - - - Set TimeInCadenceZone field - Units: s - 0 based index of time_in_cadence_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInPowerZone - - - - Retrieves the TimeInPowerZone field - Units: s - 0 based index of TimeInPowerZone element to retrieve - Returns nullable float representing the TimeInPowerZone field - - - - Set TimeInPowerZone field - Units: s - 0 based index of time_in_power_zone - Nullable field value to be set - - - - Retrieves the RepetitionNum field - Returns nullable ushort representing the RepetitionNum field - - - - Set RepetitionNum field - Nullable field value to be set - - - - Retrieves the MinAltitude field - Units: m - Returns nullable float representing the MinAltitude field - - - - Set MinAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the MinHeartRate field - Units: bpm - Returns nullable byte representing the MinHeartRate field - - - - Set MinHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the WktStepIndex field - Returns nullable ushort representing the WktStepIndex field - - - - Set WktStepIndex field - Nullable field value to be set - - - - Retrieves the OpponentScore field - Returns nullable ushort representing the OpponentScore field - - - - Set OpponentScore field - Nullable field value to be set - - - - - - returns number of elements in field StrokeCount - - - - Retrieves the StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of StrokeCount element to retrieve - Returns nullable ushort representing the StrokeCount field - - - - Set StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of stroke_count - Nullable field value to be set - - - - - - returns number of elements in field ZoneCount - - - - Retrieves the ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of ZoneCount element to retrieve - Returns nullable ushort representing the ZoneCount field - - - - Set ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of zone_count - Nullable field value to be set - - - - Retrieves the AvgVerticalOscillation field - Units: mm - Returns nullable float representing the AvgVerticalOscillation field - - - - Set AvgVerticalOscillation field - Units: mm - Nullable field value to be set - - - - Retrieves the AvgStanceTimePercent field - Units: percent - Returns nullable float representing the AvgStanceTimePercent field - - - - Set AvgStanceTimePercent field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStanceTime field - Units: ms - Returns nullable float representing the AvgStanceTime field - - - - Set AvgStanceTime field - Units: ms - Nullable field value to be set - - - - Retrieves the AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Returns nullable float representing the AvgFractionalCadence field - - - - Set AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Nullable field value to be set - - - - Retrieves the MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Returns nullable float representing the MaxFractionalCadence field - - - - Set MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Nullable field value to be set - - - - Retrieves the TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Returns nullable float representing the TotalFractionalCycles field - - - - Set TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Nullable field value to be set - - - - Retrieves the PlayerScore field - Returns nullable ushort representing the PlayerScore field - - - - Set PlayerScore field - Nullable field value to be set - - - - - - returns number of elements in field AvgTotalHemoglobinConc - - - - Retrieves the AvgTotalHemoglobinConc field - Units: g/dL - Comment: Avg saturated and unsaturated hemoglobin - 0 based index of AvgTotalHemoglobinConc element to retrieve - Returns nullable float representing the AvgTotalHemoglobinConc field - - - - Set AvgTotalHemoglobinConc field - Units: g/dL - Comment: Avg saturated and unsaturated hemoglobin - 0 based index of avg_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field MinTotalHemoglobinConc - - - - Retrieves the MinTotalHemoglobinConc field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - 0 based index of MinTotalHemoglobinConc element to retrieve - Returns nullable float representing the MinTotalHemoglobinConc field - - - - Set MinTotalHemoglobinConc field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - 0 based index of min_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field MaxTotalHemoglobinConc - - - - Retrieves the MaxTotalHemoglobinConc field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - 0 based index of MaxTotalHemoglobinConc element to retrieve - Returns nullable float representing the MaxTotalHemoglobinConc field - - - - Set MaxTotalHemoglobinConc field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - 0 based index of max_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field AvgSaturatedHemoglobinPercent - - - - Retrieves the AvgSaturatedHemoglobinPercent field - Units: % - Comment: Avg percentage of hemoglobin saturated with oxygen - 0 based index of AvgSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the AvgSaturatedHemoglobinPercent field - - - - Set AvgSaturatedHemoglobinPercent field - Units: % - Comment: Avg percentage of hemoglobin saturated with oxygen - 0 based index of avg_saturated_hemoglobin_percent - Nullable field value to be set - - - - - - returns number of elements in field MinSaturatedHemoglobinPercent - - - - Retrieves the MinSaturatedHemoglobinPercent field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - 0 based index of MinSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the MinSaturatedHemoglobinPercent field - - - - Set MinSaturatedHemoglobinPercent field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - 0 based index of min_saturated_hemoglobin_percent - Nullable field value to be set - - - - - - returns number of elements in field MaxSaturatedHemoglobinPercent - - - - Retrieves the MaxSaturatedHemoglobinPercent field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - 0 based index of MaxSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the MaxSaturatedHemoglobinPercent field - - - - Set MaxSaturatedHemoglobinPercent field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - 0 based index of max_saturated_hemoglobin_percent - Nullable field value to be set - - - - Retrieves the AvgLeftTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgLeftTorqueEffectiveness field - - - - Set AvgLeftTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgRightTorqueEffectiveness field - - - - Set AvgRightTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgLeftPedalSmoothness field - Units: percent - Returns nullable float representing the AvgLeftPedalSmoothness field - - - - Set AvgLeftPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightPedalSmoothness field - Units: percent - Returns nullable float representing the AvgRightPedalSmoothness field - - - - Set AvgRightPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgCombinedPedalSmoothness field - Units: percent - Returns nullable float representing the AvgCombinedPedalSmoothness field - - - - Set AvgCombinedPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the TimeStanding field - Units: s - Comment: Total time spent in the standing position - Returns nullable float representing the TimeStanding field - - - - Set TimeStanding field - Units: s - Comment: Total time spent in the standing position - Nullable field value to be set - - - - Retrieves the StandCount field - Comment: Number of transitions to the standing state - Returns nullable ushort representing the StandCount field - - - - Set StandCount field - Comment: Number of transitions to the standing state - Nullable field value to be set - - - - Retrieves the AvgLeftPco field - Units: mm - Comment: Average left platform center offset - Returns nullable sbyte representing the AvgLeftPco field - - - - Set AvgLeftPco field - Units: mm - Comment: Average left platform center offset - Nullable field value to be set - - - - Retrieves the AvgRightPco field - Units: mm - Comment: Average right platform center offset - Returns nullable sbyte representing the AvgRightPco field - - - - Set AvgRightPco field - Units: mm - Comment: Average right platform center offset - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhase - - - - Retrieves the AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhase element to retrieve - Returns nullable float representing the AvgLeftPowerPhase field - - - - Set AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of avg_left_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhasePeak - - - - Retrieves the AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhasePeak element to retrieve - Returns nullable float representing the AvgLeftPowerPhasePeak field - - - - Set AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of avg_left_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhase - - - - Retrieves the AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhase element to retrieve - Returns nullable float representing the AvgRightPowerPhase field - - - - Set AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhasePeak - - - - Retrieves the AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhasePeak element to retrieve - Returns nullable float representing the AvgRightPowerPhasePeak field - - - - Set AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgPowerPosition - - - - Retrieves the AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of AvgPowerPosition element to retrieve - Returns nullable ushort representing the AvgPowerPosition field - - - - Set AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of avg_power_position - Nullable field value to be set - - - - - - returns number of elements in field MaxPowerPosition - - - - Retrieves the MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of MaxPowerPosition element to retrieve - Returns nullable ushort representing the MaxPowerPosition field - - - - Set MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of max_power_position - Nullable field value to be set - - - - - - returns number of elements in field AvgCadencePosition - - - - Retrieves the AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of AvgCadencePosition element to retrieve - Returns nullable byte representing the AvgCadencePosition field - - - - Set AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of avg_cadence_position - Nullable field value to be set - - - - - - returns number of elements in field MaxCadencePosition - - - - Retrieves the MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of MaxCadencePosition element to retrieve - Returns nullable byte representing the MaxCadencePosition field - - - - Set MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of max_cadence_position - Nullable field value to be set - - - - Retrieves the EnhancedAvgSpeed field - Units: m/s - Returns nullable float representing the EnhancedAvgSpeed field - - - - Set EnhancedAvgSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the EnhancedMaxSpeed field - Units: m/s - Returns nullable float representing the EnhancedMaxSpeed field - - - - Set EnhancedMaxSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the EnhancedAvgAltitude field - Units: m - Returns nullable float representing the EnhancedAvgAltitude field - - - - Set EnhancedAvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMinAltitude field - Units: m - Returns nullable float representing the EnhancedMinAltitude field - - - - Set EnhancedMinAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMaxAltitude field - Units: m - Returns nullable float representing the EnhancedMaxAltitude field - - - - Set EnhancedMaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the AvgLevMotorPower field - Units: watts - Comment: lev average motor power during lap - Returns nullable ushort representing the AvgLevMotorPower field - - - - Set AvgLevMotorPower field - Units: watts - Comment: lev average motor power during lap - Nullable field value to be set - - - - Retrieves the MaxLevMotorPower field - Units: watts - Comment: lev maximum motor power during lap - Returns nullable ushort representing the MaxLevMotorPower field - - - - Set MaxLevMotorPower field - Units: watts - Comment: lev maximum motor power during lap - Nullable field value to be set - - - - Retrieves the LevBatteryConsumption field - Units: percent - Comment: lev battery consumption during lap - Returns nullable float representing the LevBatteryConsumption field - - - - Set LevBatteryConsumption field - Units: percent - Comment: lev battery consumption during lap - Nullable field value to be set - - - - Retrieves the AvgVerticalRatio field - Units: percent - Returns nullable float representing the AvgVerticalRatio field - - - - Set AvgVerticalRatio field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStanceTimeBalance field - Units: percent - Returns nullable float representing the AvgStanceTimeBalance field - - - - Set AvgStanceTimeBalance field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStepLength field - Units: mm - Returns nullable float representing the AvgStepLength field - - - - Set AvgStepLength field - Units: mm - Nullable field value to be set - - - - Retrieves the AvgVam field - Units: m/s - Returns nullable float representing the AvgVam field - - - - Set AvgVam field - Units: m/s - Nullable field value to be set - - - - Retrieves the EnhancedAvgRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedAvgRespirationRate field - - - - Set EnhancedAvgRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the EnhancedMaxRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedMaxRespirationRate field - - - - Set EnhancedMaxRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the AvgRespirationRate field - Returns nullable byte representing the AvgRespirationRate field - - - - Set AvgRespirationRate field - Nullable field value to be set - - - - Retrieves the MaxRespirationRate field - Returns nullable byte representing the MaxRespirationRate field - - - - Set MaxRespirationRate field - Nullable field value to be set - - - - Retrieves the TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the TotalGrit field - - - - Set TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the TotalFlow field - - - - Set TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the JumpCount field - Returns nullable ushort representing the JumpCount field - - - - Set JumpCount field - Nullable field value to be set - - - - Retrieves the AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the AvgGrit field - - - - Set AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the AvgFlow field - - - - Set AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Returns nullable float representing the TotalFractionalAscent field - - - - Set TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Nullable field value to be set - - - - Retrieves the TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Returns nullable float representing the TotalFractionalDescent field - - - - Set TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Nullable field value to be set - - - - Retrieves the AvgCoreTemperature field - Units: C - Returns nullable float representing the AvgCoreTemperature field - - - - Set AvgCoreTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MinCoreTemperature field - Units: C - Returns nullable float representing the MinCoreTemperature field - - - - Set MinCoreTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MaxCoreTemperature field - Units: C - Returns nullable float representing the MaxCoreTemperature field - - - - Set MaxCoreTemperature field - Units: C - Nullable field value to be set - - - - Implements the Length profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the Event field - Returns nullable Event enum representing the Event field - - - - Set Event field - Nullable field value to be set - - - - Retrieves the EventType field - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Nullable field value to be set - - - - Retrieves the StartTime field - Returns DateTime representing the StartTime field - - - - Set StartTime field - Nullable field value to be set - - - - Retrieves the TotalElapsedTime field - Units: s - Returns nullable float representing the TotalElapsedTime field - - - - Set TotalElapsedTime field - Units: s - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Nullable field value to be set - - - - Retrieves the TotalStrokes field - Units: strokes - Returns nullable ushort representing the TotalStrokes field - - - - Set TotalStrokes field - Units: strokes - Nullable field value to be set - - - - Retrieves the AvgSpeed field - Units: m/s - Returns nullable float representing the AvgSpeed field - - - - Set AvgSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the SwimStroke field - Units: swim_stroke - Returns nullable SwimStroke enum representing the SwimStroke field - - - - Set SwimStroke field - Units: swim_stroke - Nullable field value to be set - - - - Retrieves the AvgSwimmingCadence field - Units: strokes/min - Returns nullable byte representing the AvgSwimmingCadence field - - - - Set AvgSwimmingCadence field - Units: strokes/min - Nullable field value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Retrieves the TotalCalories field - Units: kcal - Returns nullable ushort representing the TotalCalories field - - - - Set TotalCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the LengthType field - Returns nullable LengthType enum representing the LengthType field - - - - Set LengthType field - Nullable field value to be set - - - - Retrieves the PlayerScore field - Returns nullable ushort representing the PlayerScore field - - - - Set PlayerScore field - Nullable field value to be set - - - - Retrieves the OpponentScore field - Returns nullable ushort representing the OpponentScore field - - - - Set OpponentScore field - Nullable field value to be set - - - - - - returns number of elements in field StrokeCount - - - - Retrieves the StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of StrokeCount element to retrieve - Returns nullable ushort representing the StrokeCount field - - - - Set StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of stroke_count - Nullable field value to be set - - - - - - returns number of elements in field ZoneCount - - - - Retrieves the ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of ZoneCount element to retrieve - Returns nullable ushort representing the ZoneCount field - - - - Set ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of zone_count - Nullable field value to be set - - - - Retrieves the EnhancedAvgRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedAvgRespirationRate field - - - - Set EnhancedAvgRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the EnhancedMaxRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedMaxRespirationRate field - - - - Set EnhancedMaxRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the AvgRespirationRate field - Returns nullable byte representing the AvgRespirationRate field - - - - Set AvgRespirationRate field - Nullable field value to be set - - - - Retrieves the MaxRespirationRate field - Returns nullable byte representing the MaxRespirationRate field - - - - Set MaxRespirationRate field - Nullable field value to be set - - - - Implements the MagnetometerData profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - - - returns number of elements in field SampleTimeOffset - - - - Retrieves the SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the compass sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in cmps_x and cmps_y and cmps_z - 0 based index of SampleTimeOffset element to retrieve - Returns nullable ushort representing the SampleTimeOffset field - - - - Set SampleTimeOffset field - Units: ms - Comment: Each time in the array describes the time at which the compass sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in cmps_x and cmps_y and cmps_z - 0 based index of sample_time_offset - Nullable field value to be set - - - - - - returns number of elements in field MagX - - - - Retrieves the MagX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of MagX element to retrieve - Returns nullable ushort representing the MagX field - - - - Set MagX field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of mag_x - Nullable field value to be set - - - - - - returns number of elements in field MagY - - - - Retrieves the MagY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of MagY element to retrieve - Returns nullable ushort representing the MagY field - - - - Set MagY field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of mag_y - Nullable field value to be set - - - - - - returns number of elements in field MagZ - - - - Retrieves the MagZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of MagZ element to retrieve - Returns nullable ushort representing the MagZ field - - - - Set MagZ field - Units: counts - Comment: These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read. - 0 based index of mag_z - Nullable field value to be set - - - - - - returns number of elements in field CalibratedMagX - - - - Retrieves the CalibratedMagX field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of CalibratedMagX element to retrieve - Returns nullable float representing the CalibratedMagX field - - - - Set CalibratedMagX field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of calibrated_mag_x - Nullable field value to be set - - - - - - returns number of elements in field CalibratedMagY - - - - Retrieves the CalibratedMagY field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of CalibratedMagY element to retrieve - Returns nullable float representing the CalibratedMagY field - - - - Set CalibratedMagY field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of calibrated_mag_y - Nullable field value to be set - - - - - - returns number of elements in field CalibratedMagZ - - - - Retrieves the CalibratedMagZ field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of CalibratedMagZ element to retrieve - Returns nullable float representing the CalibratedMagZ field - - - - Set CalibratedMagZ field - Units: G - Comment: Calibrated Magnetometer reading - 0 based index of calibrated_mag_z - Nullable field value to be set - - - - Implements the MemoGlob profile message. - - - - - Field Numbers for - - - - - Retrieves the PartIndex field - Comment: Sequence number of memo blocks - Returns nullable uint representing the PartIndex field - - - - Set PartIndex field - Comment: Sequence number of memo blocks - Nullable field value to be set - - - - - - returns number of elements in field Memo - - - - Retrieves the Memo field - Comment: Deprecated. Use data field. - 0 based index of Memo element to retrieve - Returns nullable byte representing the Memo field - - - - Set Memo field - Comment: Deprecated. Use data field. - 0 based index of memo - Nullable field value to be set - - - - Retrieves the MesgNum field - Comment: Message Number of the parent message - Returns nullable ushort representing the MesgNum field - - - - Set MesgNum field - Comment: Message Number of the parent message - Nullable field value to be set - - - - Retrieves the ParentIndex field - Comment: Index of mesg that this glob is associated with. - Returns nullable ushort representing the ParentIndex field - - - - Set ParentIndex field - Comment: Index of mesg that this glob is associated with. - Nullable field value to be set - - - - Retrieves the FieldNum field - Comment: Field within the parent that this glob is associated with - Returns nullable byte representing the FieldNum field - - - - Set FieldNum field - Comment: Field within the parent that this glob is associated with - Nullable field value to be set - - - - - - returns number of elements in field Data - - - - Retrieves the Data field - Comment: Block of utf8 bytes. Note, mutltibyte characters may be split across adjoining memo_glob messages. - 0 based index of Data element to retrieve - Returns nullable byte representing the Data field - - - - Set Data field - Comment: Block of utf8 bytes. Note, mutltibyte characters may be split across adjoining memo_glob messages. - 0 based index of data - Nullable field value to be set - - - - Implements the MesgCapabilities profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the File field - Returns nullable File enum representing the File field - - - - Set File field - Nullable field value to be set - - - - Retrieves the MesgNum field - Returns nullable ushort representing the MesgNum field - - - - Set MesgNum field - Nullable field value to be set - - - - Retrieves the CountType field - Returns nullable MesgCount enum representing the CountType field - - - - Set CountType field - Nullable field value to be set - - - - Retrieves the Count field - Returns nullable ushort representing the Count field - - - - Set Count field - Nullable field value to be set - - - - Retrieves the NumPerFile subfield - Nullable ushort representing the NumPerFile subfield - - - - - Set NumPerFile subfield - Subfield value to be set - - - - Retrieves the MaxPerFile subfield - Nullable ushort representing the MaxPerFile subfield - - - - - Set MaxPerFile subfield - Subfield value to be set - - - - Retrieves the MaxPerFileType subfield - Nullable ushort representing the MaxPerFileType subfield - - - - - Set MaxPerFileType subfield - Subfield value to be set - - - - Implements the MetZone profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HighBpm field - Returns nullable byte representing the HighBpm field - - - - Set HighBpm field - Nullable field value to be set - - - - Retrieves the Calories field - Units: kcal / min - Returns nullable float representing the Calories field - - - - Set Calories field - Units: kcal / min - Nullable field value to be set - - - - Retrieves the FatCalories field - Units: kcal / min - Returns nullable float representing the FatCalories field - - - - Set FatCalories field - Units: kcal / min - Nullable field value to be set - - - - Implements the MonitoringInfo profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the LocalTimestamp field - Units: s - Comment: Use to convert activity timestamps to local time if device does not support time zone and daylight savings time correction. - Returns nullable uint representing the LocalTimestamp field - - - - Set LocalTimestamp field - Units: s - Comment: Use to convert activity timestamps to local time if device does not support time zone and daylight savings time correction. - Nullable field value to be set - - - - - - returns number of elements in field ActivityType - - - - Retrieves the ActivityType field - 0 based index of ActivityType element to retrieve - Returns nullable ActivityType enum representing the ActivityType field - - - - Set ActivityType field - 0 based index of activity_type - Nullable field value to be set - - - - - - returns number of elements in field CyclesToDistance - - - - Retrieves the CyclesToDistance field - Units: m/cycle - Comment: Indexed by activity_type - 0 based index of CyclesToDistance element to retrieve - Returns nullable float representing the CyclesToDistance field - - - - Set CyclesToDistance field - Units: m/cycle - Comment: Indexed by activity_type - 0 based index of cycles_to_distance - Nullable field value to be set - - - - - - returns number of elements in field CyclesToCalories - - - - Retrieves the CyclesToCalories field - Units: kcal/cycle - Comment: Indexed by activity_type - 0 based index of CyclesToCalories element to retrieve - Returns nullable float representing the CyclesToCalories field - - - - Set CyclesToCalories field - Units: kcal/cycle - Comment: Indexed by activity_type - 0 based index of cycles_to_calories - Nullable field value to be set - - - - Retrieves the RestingMetabolicRate field - Units: kcal / day - Returns nullable ushort representing the RestingMetabolicRate field - - - - Set RestingMetabolicRate field - Units: kcal / day - Nullable field value to be set - - - - Implements the Monitoring profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Comment: Associates this data to device_info message. Not required for file with single device (sensor). - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Comment: Associates this data to device_info message. Not required for file with single device (sensor). - Nullable field value to be set - - - - Retrieves the Calories field - Units: kcal - Comment: Accumulated total calories. Maintained by MonitoringReader for each activity_type. See SDK documentation - Returns nullable ushort representing the Calories field - - - - Set Calories field - Units: kcal - Comment: Accumulated total calories. Maintained by MonitoringReader for each activity_type. See SDK documentation - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Comment: Accumulated distance. Maintained by MonitoringReader for each activity_type. See SDK documentation. - Returns nullable float representing the Distance field - - - - Set Distance field - Units: m - Comment: Accumulated distance. Maintained by MonitoringReader for each activity_type. See SDK documentation. - Nullable field value to be set - - - - Retrieves the Cycles field - Units: cycles - Comment: Accumulated cycles. Maintained by MonitoringReader for each activity_type. See SDK documentation. - Returns nullable float representing the Cycles field - - - - Set Cycles field - Units: cycles - Comment: Accumulated cycles. Maintained by MonitoringReader for each activity_type. See SDK documentation. - Nullable field value to be set - - - - Retrieves the Steps subfield - Units: steps - Nullable uint representing the Steps subfield - - - - - Set Steps subfield - Units: steps - Subfield value to be set - - - - Retrieves the Strokes subfield - Units: strokes - Nullable float representing the Strokes subfield - - - - - Set Strokes subfield - Units: strokes - Subfield value to be set - - - - Retrieves the ActiveTime field - Units: s - Returns nullable float representing the ActiveTime field - - - - Set ActiveTime field - Units: s - Nullable field value to be set - - - - Retrieves the ActivityType field - Returns nullable ActivityType enum representing the ActivityType field - - - - Set ActivityType field - Nullable field value to be set - - - - Retrieves the ActivitySubtype field - Returns nullable ActivitySubtype enum representing the ActivitySubtype field - - - - Set ActivitySubtype field - Nullable field value to be set - - - - Retrieves the ActivityLevel field - Returns nullable ActivityLevel enum representing the ActivityLevel field - - - - Set ActivityLevel field - Nullable field value to be set - - - - Retrieves the Distance16 field - Units: 100 * m - Returns nullable ushort representing the Distance16 field - - - - Set Distance16 field - Units: 100 * m - Nullable field value to be set - - - - Retrieves the Cycles16 field - Units: 2 * cycles (steps) - Returns nullable ushort representing the Cycles16 field - - - - Set Cycles16 field - Units: 2 * cycles (steps) - Nullable field value to be set - - - - Retrieves the ActiveTime16 field - Units: s - Returns nullable ushort representing the ActiveTime16 field - - - - Set ActiveTime16 field - Units: s - Nullable field value to be set - - - - Retrieves the LocalTimestamp field - Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - Returns nullable uint representing the LocalTimestamp field - - - - Set LocalTimestamp field - Comment: Must align to logging interval, for example, time must be 00:00:00 for daily log. - Nullable field value to be set - - - - Retrieves the Temperature field - Units: C - Comment: Avg temperature during the logging interval ended at timestamp - Returns nullable float representing the Temperature field - - - - Set Temperature field - Units: C - Comment: Avg temperature during the logging interval ended at timestamp - Nullable field value to be set - - - - Retrieves the TemperatureMin field - Units: C - Comment: Min temperature during the logging interval ended at timestamp - Returns nullable float representing the TemperatureMin field - - - - Set TemperatureMin field - Units: C - Comment: Min temperature during the logging interval ended at timestamp - Nullable field value to be set - - - - Retrieves the TemperatureMax field - Units: C - Comment: Max temperature during the logging interval ended at timestamp - Returns nullable float representing the TemperatureMax field - - - - Set TemperatureMax field - Units: C - Comment: Max temperature during the logging interval ended at timestamp - Nullable field value to be set - - - - - - returns number of elements in field ActivityTime - - - - Retrieves the ActivityTime field - Units: minutes - Comment: Indexed using minute_activity_level enum - 0 based index of ActivityTime element to retrieve - Returns nullable ushort representing the ActivityTime field - - - - Set ActivityTime field - Units: minutes - Comment: Indexed using minute_activity_level enum - 0 based index of activity_time - Nullable field value to be set - - - - Retrieves the ActiveCalories field - Units: kcal - Returns nullable ushort representing the ActiveCalories field - - - - Set ActiveCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the CurrentActivityTypeIntensity field - Comment: Indicates single type / intensity for duration since last monitoring message. - Returns nullable byte representing the CurrentActivityTypeIntensity field - - - - Set CurrentActivityTypeIntensity field - Comment: Indicates single type / intensity for duration since last monitoring message. - Nullable field value to be set - - - - Retrieves the TimestampMin8 field - Units: min - Returns nullable byte representing the TimestampMin8 field - - - - Set TimestampMin8 field - Units: min - Nullable field value to be set - - - - Retrieves the Timestamp16 field - Units: s - Returns nullable ushort representing the Timestamp16 field - - - - Set Timestamp16 field - Units: s - Nullable field value to be set - - - - Retrieves the HeartRate field - Units: bpm - Returns nullable byte representing the HeartRate field - - - - Set HeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the Intensity field - Returns nullable float representing the Intensity field - - - - Set Intensity field - Nullable field value to be set - - - - Retrieves the DurationMin field - Units: min - Returns nullable ushort representing the DurationMin field - - - - Set DurationMin field - Units: min - Nullable field value to be set - - - - Retrieves the Duration field - Units: s - Returns nullable uint representing the Duration field - - - - Set Duration field - Units: s - Nullable field value to be set - - - - Retrieves the Ascent field - Units: m - Returns nullable float representing the Ascent field - - - - Set Ascent field - Units: m - Nullable field value to be set - - - - Retrieves the Descent field - Units: m - Returns nullable float representing the Descent field - - - - Set Descent field - Units: m - Nullable field value to be set - - - - Retrieves the ModerateActivityMinutes field - Units: minutes - Returns nullable ushort representing the ModerateActivityMinutes field - - - - Set ModerateActivityMinutes field - Units: minutes - Nullable field value to be set - - - - Retrieves the VigorousActivityMinutes field - Units: minutes - Returns nullable ushort representing the VigorousActivityMinutes field - - - - Set VigorousActivityMinutes field - Units: minutes - Nullable field value to be set - - - - Implements the NmeaSentence profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Timestamp message was output - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Timestamp message was output - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Nullable field value to be set - - - - Retrieves the Sentence field - Comment: NMEA sentence - Returns byte[] representing the Sentence field - - - - Retrieves the Sentence field - Comment: NMEA sentence - Returns String representing the Sentence field - - - - Set Sentence field - Comment: NMEA sentence - field value to be set - - - - Set Sentence field - Comment: NMEA sentence - field value to be set - - - - Implements the ObdiiData profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Timestamp message was output - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Timestamp message was output - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Fractional part of timestamp, added to timestamp - Nullable field value to be set - - - - - - returns number of elements in field TimeOffset - - - - Retrieves the TimeOffset field - Units: ms - Comment: Offset of PID reading [i] from start_timestamp+start_timestamp_ms. Readings may span accross seconds. - 0 based index of TimeOffset element to retrieve - Returns nullable ushort representing the TimeOffset field - - - - Set TimeOffset field - Units: ms - Comment: Offset of PID reading [i] from start_timestamp+start_timestamp_ms. Readings may span accross seconds. - 0 based index of time_offset - Nullable field value to be set - - - - Retrieves the Pid field - Comment: Parameter ID - Returns nullable byte representing the Pid field - - - - Set Pid field - Comment: Parameter ID - Nullable field value to be set - - - - - - returns number of elements in field RawData - - - - Retrieves the RawData field - Comment: Raw parameter data - 0 based index of RawData element to retrieve - Returns nullable byte representing the RawData field - - - - Set RawData field - Comment: Raw parameter data - 0 based index of raw_data - Nullable field value to be set - - - - - - returns number of elements in field PidDataSize - - - - Retrieves the PidDataSize field - Comment: Optional, data size of PID[i]. If not specified refer to SAE J1979. - 0 based index of PidDataSize element to retrieve - Returns nullable byte representing the PidDataSize field - - - - Set PidDataSize field - Comment: Optional, data size of PID[i]. If not specified refer to SAE J1979. - 0 based index of pid_data_size - Nullable field value to be set - - - - - - returns number of elements in field SystemTime - - - - Retrieves the SystemTime field - Comment: System time associated with sample expressed in ms, can be used instead of time_offset. There will be a system_time value for each raw_data element. For multibyte pids the system_time is repeated. - 0 based index of SystemTime element to retrieve - Returns nullable uint representing the SystemTime field - - - - Set SystemTime field - Comment: System time associated with sample expressed in ms, can be used instead of time_offset. There will be a system_time value for each raw_data element. For multibyte pids the system_time is repeated. - 0 based index of system_time - Nullable field value to be set - - - - Retrieves the StartTimestamp field - Comment: Timestamp of first sample recorded in the message. Used with time_offset to generate time of each sample - Returns DateTime representing the StartTimestamp field - - - - Set StartTimestamp field - Comment: Timestamp of first sample recorded in the message. Used with time_offset to generate time of each sample - Nullable field value to be set - - - - Retrieves the StartTimestampMs field - Units: ms - Comment: Fractional part of start_timestamp - Returns nullable ushort representing the StartTimestampMs field - - - - Set StartTimestampMs field - Units: ms - Comment: Fractional part of start_timestamp - Nullable field value to be set - - - - Implements the OhrSettings profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Enabled field - Returns nullable Switch enum representing the Enabled field - - - - Set Enabled field - Nullable field value to be set - - - - Implements the OneDSensorCalibration profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the SensorType field - Comment: Indicates which sensor the calibration is for - Returns nullable SensorType enum representing the SensorType field - - - - Set SensorType field - Comment: Indicates which sensor the calibration is for - Nullable field value to be set - - - - Retrieves the CalibrationFactor field - Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - Returns nullable uint representing the CalibrationFactor field - - - - Set CalibrationFactor field - Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - Nullable field value to be set - - - - Retrieves the BaroCalFactor subfield - Units: Pa - Comment: Barometer calibration factor - Nullable uint representing the BaroCalFactor subfield - - - - - Set BaroCalFactor subfield - Units: Pa - Comment: Barometer calibration factor - Subfield value to be set - - - - Retrieves the CalibrationDivisor field - Units: counts - Comment: Calibration factor divisor - Returns nullable uint representing the CalibrationDivisor field - - - - Set CalibrationDivisor field - Units: counts - Comment: Calibration factor divisor - Nullable field value to be set - - - - Retrieves the LevelShift field - Comment: Level shift value used to shift the ADC value back into range - Returns nullable uint representing the LevelShift field - - - - Set LevelShift field - Comment: Level shift value used to shift the ADC value back into range - Nullable field value to be set - - - - Retrieves the OffsetCal field - Comment: Internal Calibration factor - Returns nullable int representing the OffsetCal field - - - - Set OffsetCal field - Comment: Internal Calibration factor - Nullable field value to be set - - - - Implements the Pad profile message. - - - - - Field Numbers for - - - - - Implements the PowerZone profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HighValue field - Units: watts - Returns nullable ushort representing the HighValue field - - - - Set HighValue field - Units: watts - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Implements the Record profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the Altitude field - Units: m - Returns nullable float representing the Altitude field - - - - Set Altitude field - Units: m - Nullable field value to be set - - - - Retrieves the HeartRate field - Units: bpm - Returns nullable byte representing the HeartRate field - - - - Set HeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the Cadence field - Units: rpm - Returns nullable byte representing the Cadence field - - - - Set Cadence field - Units: rpm - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Returns nullable float representing the Distance field - - - - Set Distance field - Units: m - Nullable field value to be set - - - - Retrieves the Speed field - Units: m/s - Returns nullable float representing the Speed field - - - - Set Speed field - Units: m/s - Nullable field value to be set - - - - Retrieves the Power field - Units: watts - Returns nullable ushort representing the Power field - - - - Set Power field - Units: watts - Nullable field value to be set - - - - - - returns number of elements in field CompressedSpeedDistance - - - - Retrieves the CompressedSpeedDistance field - 0 based index of CompressedSpeedDistance element to retrieve - Returns nullable byte representing the CompressedSpeedDistance field - - - - Set CompressedSpeedDistance field - 0 based index of compressed_speed_distance - Nullable field value to be set - - - - Retrieves the Grade field - Units: % - Returns nullable float representing the Grade field - - - - Set Grade field - Units: % - Nullable field value to be set - - - - Retrieves the Resistance field - Comment: Relative. 0 is none 254 is Max. - Returns nullable byte representing the Resistance field - - - - Set Resistance field - Comment: Relative. 0 is none 254 is Max. - Nullable field value to be set - - - - Retrieves the TimeFromCourse field - Units: s - Returns nullable float representing the TimeFromCourse field - - - - Set TimeFromCourse field - Units: s - Nullable field value to be set - - - - Retrieves the CycleLength field - Units: m - Returns nullable float representing the CycleLength field - - - - Set CycleLength field - Units: m - Nullable field value to be set - - - - Retrieves the Temperature field - Units: C - Returns nullable sbyte representing the Temperature field - - - - Set Temperature field - Units: C - Nullable field value to be set - - - - - - returns number of elements in field Speed1s - - - - Retrieves the Speed1s field - Units: m/s - Comment: Speed at 1s intervals. Timestamp field indicates time of last array element. - 0 based index of Speed1s element to retrieve - Returns nullable float representing the Speed1s field - - - - Set Speed1s field - Units: m/s - Comment: Speed at 1s intervals. Timestamp field indicates time of last array element. - 0 based index of speed_1s - Nullable field value to be set - - - - Retrieves the Cycles field - Units: cycles - Returns nullable byte representing the Cycles field - - - - Set Cycles field - Units: cycles - Nullable field value to be set - - - - Retrieves the TotalCycles field - Units: cycles - Returns nullable uint representing the TotalCycles field - - - - Set TotalCycles field - Units: cycles - Nullable field value to be set - - - - Retrieves the CompressedAccumulatedPower field - Units: watts - Returns nullable ushort representing the CompressedAccumulatedPower field - - - - Set CompressedAccumulatedPower field - Units: watts - Nullable field value to be set - - - - Retrieves the AccumulatedPower field - Units: watts - Returns nullable uint representing the AccumulatedPower field - - - - Set AccumulatedPower field - Units: watts - Nullable field value to be set - - - - Retrieves the LeftRightBalance field - Returns nullable byte representing the LeftRightBalance field - - - - Set LeftRightBalance field - Nullable field value to be set - - - - Retrieves the GpsAccuracy field - Units: m - Returns nullable byte representing the GpsAccuracy field - - - - Set GpsAccuracy field - Units: m - Nullable field value to be set - - - - Retrieves the VerticalSpeed field - Units: m/s - Returns nullable float representing the VerticalSpeed field - - - - Set VerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the Calories field - Units: kcal - Returns nullable ushort representing the Calories field - - - - Set Calories field - Units: kcal - Nullable field value to be set - - - - Retrieves the VerticalOscillation field - Units: mm - Returns nullable float representing the VerticalOscillation field - - - - Set VerticalOscillation field - Units: mm - Nullable field value to be set - - - - Retrieves the StanceTimePercent field - Units: percent - Returns nullable float representing the StanceTimePercent field - - - - Set StanceTimePercent field - Units: percent - Nullable field value to be set - - - - Retrieves the StanceTime field - Units: ms - Returns nullable float representing the StanceTime field - - - - Set StanceTime field - Units: ms - Nullable field value to be set - - - - Retrieves the ActivityType field - Returns nullable ActivityType enum representing the ActivityType field - - - - Set ActivityType field - Nullable field value to be set - - - - Retrieves the LeftTorqueEffectiveness field - Units: percent - Returns nullable float representing the LeftTorqueEffectiveness field - - - - Set LeftTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the RightTorqueEffectiveness field - Units: percent - Returns nullable float representing the RightTorqueEffectiveness field - - - - Set RightTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the LeftPedalSmoothness field - Units: percent - Returns nullable float representing the LeftPedalSmoothness field - - - - Set LeftPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the RightPedalSmoothness field - Units: percent - Returns nullable float representing the RightPedalSmoothness field - - - - Set RightPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the CombinedPedalSmoothness field - Units: percent - Returns nullable float representing the CombinedPedalSmoothness field - - - - Set CombinedPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the Time128 field - Units: s - Returns nullable float representing the Time128 field - - - - Set Time128 field - Units: s - Nullable field value to be set - - - - Retrieves the StrokeType field - Returns nullable StrokeType enum representing the StrokeType field - - - - Set StrokeType field - Nullable field value to be set - - - - Retrieves the Zone field - Returns nullable byte representing the Zone field - - - - Set Zone field - Nullable field value to be set - - - - Retrieves the BallSpeed field - Units: m/s - Returns nullable float representing the BallSpeed field - - - - Set BallSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the Cadence256 field - Units: rpm - Comment: Log cadence and fractional cadence for backwards compatability - Returns nullable float representing the Cadence256 field - - - - Set Cadence256 field - Units: rpm - Comment: Log cadence and fractional cadence for backwards compatability - Nullable field value to be set - - - - Retrieves the FractionalCadence field - Units: rpm - Returns nullable float representing the FractionalCadence field - - - - Set FractionalCadence field - Units: rpm - Nullable field value to be set - - - - Retrieves the TotalHemoglobinConc field - Units: g/dL - Comment: Total saturated and unsaturated hemoglobin - Returns nullable float representing the TotalHemoglobinConc field - - - - Set TotalHemoglobinConc field - Units: g/dL - Comment: Total saturated and unsaturated hemoglobin - Nullable field value to be set - - - - Retrieves the TotalHemoglobinConcMin field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - Returns nullable float representing the TotalHemoglobinConcMin field - - - - Set TotalHemoglobinConcMin field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - Nullable field value to be set - - - - Retrieves the TotalHemoglobinConcMax field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - Returns nullable float representing the TotalHemoglobinConcMax field - - - - Set TotalHemoglobinConcMax field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - Nullable field value to be set - - - - Retrieves the SaturatedHemoglobinPercent field - Units: % - Comment: Percentage of hemoglobin saturated with oxygen - Returns nullable float representing the SaturatedHemoglobinPercent field - - - - Set SaturatedHemoglobinPercent field - Units: % - Comment: Percentage of hemoglobin saturated with oxygen - Nullable field value to be set - - - - Retrieves the SaturatedHemoglobinPercentMin field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - Returns nullable float representing the SaturatedHemoglobinPercentMin field - - - - Set SaturatedHemoglobinPercentMin field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - Nullable field value to be set - - - - Retrieves the SaturatedHemoglobinPercentMax field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - Returns nullable float representing the SaturatedHemoglobinPercentMax field - - - - Set SaturatedHemoglobinPercentMax field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - Nullable field value to be set - - - - Retrieves the DeviceIndex field - Returns nullable byte representing the DeviceIndex field - - - - Set DeviceIndex field - Nullable field value to be set - - - - Retrieves the LeftPco field - Units: mm - Comment: Left platform center offset - Returns nullable sbyte representing the LeftPco field - - - - Set LeftPco field - Units: mm - Comment: Left platform center offset - Nullable field value to be set - - - - Retrieves the RightPco field - Units: mm - Comment: Right platform center offset - Returns nullable sbyte representing the RightPco field - - - - Set RightPco field - Units: mm - Comment: Right platform center offset - Nullable field value to be set - - - - - - returns number of elements in field LeftPowerPhase - - - - Retrieves the LeftPowerPhase field - Units: degrees - Comment: Left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of LeftPowerPhase element to retrieve - Returns nullable float representing the LeftPowerPhase field - - - - Set LeftPowerPhase field - Units: degrees - Comment: Left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of left_power_phase - Nullable field value to be set - - - - - - returns number of elements in field LeftPowerPhasePeak - - - - Retrieves the LeftPowerPhasePeak field - Units: degrees - Comment: Left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of LeftPowerPhasePeak element to retrieve - Returns nullable float representing the LeftPowerPhasePeak field - - - - Set LeftPowerPhasePeak field - Units: degrees - Comment: Left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of left_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field RightPowerPhase - - - - Retrieves the RightPowerPhase field - Units: degrees - Comment: Right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of RightPowerPhase element to retrieve - Returns nullable float representing the RightPowerPhase field - - - - Set RightPowerPhase field - Units: degrees - Comment: Right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of right_power_phase - Nullable field value to be set - - - - - - returns number of elements in field RightPowerPhasePeak - - - - Retrieves the RightPowerPhasePeak field - Units: degrees - Comment: Right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of RightPowerPhasePeak element to retrieve - Returns nullable float representing the RightPowerPhasePeak field - - - - Set RightPowerPhasePeak field - Units: degrees - Comment: Right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of right_power_phase_peak - Nullable field value to be set - - - - Retrieves the EnhancedSpeed field - Units: m/s - Returns nullable float representing the EnhancedSpeed field - - - - Set EnhancedSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the EnhancedAltitude field - Units: m - Returns nullable float representing the EnhancedAltitude field - - - - Set EnhancedAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the BatterySoc field - Units: percent - Comment: lev battery state of charge - Returns nullable float representing the BatterySoc field - - - - Set BatterySoc field - Units: percent - Comment: lev battery state of charge - Nullable field value to be set - - - - Retrieves the MotorPower field - Units: watts - Comment: lev motor power - Returns nullable ushort representing the MotorPower field - - - - Set MotorPower field - Units: watts - Comment: lev motor power - Nullable field value to be set - - - - Retrieves the VerticalRatio field - Units: percent - Returns nullable float representing the VerticalRatio field - - - - Set VerticalRatio field - Units: percent - Nullable field value to be set - - - - Retrieves the StanceTimeBalance field - Units: percent - Returns nullable float representing the StanceTimeBalance field - - - - Set StanceTimeBalance field - Units: percent - Nullable field value to be set - - - - Retrieves the StepLength field - Units: mm - Returns nullable float representing the StepLength field - - - - Set StepLength field - Units: mm - Nullable field value to be set - - - - Retrieves the AbsolutePressure field - Units: Pa - Comment: Includes atmospheric pressure - Returns nullable uint representing the AbsolutePressure field - - - - Set AbsolutePressure field - Units: Pa - Comment: Includes atmospheric pressure - Nullable field value to be set - - - - Retrieves the Depth field - Units: m - Comment: 0 if above water - Returns nullable float representing the Depth field - - - - Set Depth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the NextStopDepth field - Units: m - Comment: 0 if above water - Returns nullable float representing the NextStopDepth field - - - - Set NextStopDepth field - Units: m - Comment: 0 if above water - Nullable field value to be set - - - - Retrieves the NextStopTime field - Units: s - Returns nullable uint representing the NextStopTime field - - - - Set NextStopTime field - Units: s - Nullable field value to be set - - - - Retrieves the TimeToSurface field - Units: s - Returns nullable uint representing the TimeToSurface field - - - - Set TimeToSurface field - Units: s - Nullable field value to be set - - - - Retrieves the NdlTime field - Units: s - Returns nullable uint representing the NdlTime field - - - - Set NdlTime field - Units: s - Nullable field value to be set - - - - Retrieves the CnsLoad field - Units: percent - Returns nullable byte representing the CnsLoad field - - - - Set CnsLoad field - Units: percent - Nullable field value to be set - - - - Retrieves the N2Load field - Units: percent - Returns nullable ushort representing the N2Load field - - - - Set N2Load field - Units: percent - Nullable field value to be set - - - - Retrieves the RespirationRate field - Units: s - Returns nullable byte representing the RespirationRate field - - - - Set RespirationRate field - Units: s - Nullable field value to be set - - - - Retrieves the EnhancedRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedRespirationRate field - - - - Set EnhancedRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the Grit field - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the Grit field - - - - Set Grit field - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the Flow field - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the Flow field - - - - Set Flow field - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the EbikeTravelRange field - Units: km - Returns nullable ushort representing the EbikeTravelRange field - - - - Set EbikeTravelRange field - Units: km - Nullable field value to be set - - - - Retrieves the EbikeBatteryLevel field - Units: percent - Returns nullable byte representing the EbikeBatteryLevel field - - - - Set EbikeBatteryLevel field - Units: percent - Nullable field value to be set - - - - Retrieves the EbikeAssistMode field - Units: depends on sensor - Returns nullable byte representing the EbikeAssistMode field - - - - Set EbikeAssistMode field - Units: depends on sensor - Nullable field value to be set - - - - Retrieves the EbikeAssistLevelPercent field - Units: percent - Returns nullable byte representing the EbikeAssistLevelPercent field - - - - Set EbikeAssistLevelPercent field - Units: percent - Nullable field value to be set - - - - Retrieves the CoreTemperature field - Units: C - Returns nullable float representing the CoreTemperature field - - - - Set CoreTemperature field - Units: C - Nullable field value to be set - - - - Implements the Schedule profile message. - - - - - Field Numbers for - - - - - Retrieves the Manufacturer field - Comment: Corresponds to file_id of scheduled workout / course. - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Comment: Corresponds to file_id of scheduled workout / course. - Nullable field value to be set - - - - Retrieves the Product field - Comment: Corresponds to file_id of scheduled workout / course. - Returns nullable ushort representing the Product field - - - - Set Product field - Comment: Corresponds to file_id of scheduled workout / course. - Nullable field value to be set - - - - Retrieves the FaveroProduct subfield - Nullable ushort representing the FaveroProduct subfield - - - - - Set FaveroProduct subfield - Subfield value to be set - - - - Retrieves the GarminProduct subfield - Nullable ushort representing the GarminProduct subfield - - - - - Set GarminProduct subfield - Subfield value to be set - - - - Retrieves the SerialNumber field - Comment: Corresponds to file_id of scheduled workout / course. - Returns nullable uint representing the SerialNumber field - - - - Set SerialNumber field - Comment: Corresponds to file_id of scheduled workout / course. - Nullable field value to be set - - - - Retrieves the TimeCreated field - Comment: Corresponds to file_id of scheduled workout / course. - Returns DateTime representing the TimeCreated field - - - - Set TimeCreated field - Comment: Corresponds to file_id of scheduled workout / course. - Nullable field value to be set - - - - Retrieves the Completed field - Comment: TRUE if this activity has been started - Returns nullable Bool enum representing the Completed field - - - - Set Completed field - Comment: TRUE if this activity has been started - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable Schedule enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the ScheduledTime field - Returns nullable uint representing the ScheduledTime field - - - - Set ScheduledTime field - Nullable field value to be set - - - - Implements the SdmProfile profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Enabled field - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Nullable field value to be set - - - - Retrieves the SdmAntId field - Returns nullable ushort representing the SdmAntId field - - - - Set SdmAntId field - Nullable field value to be set - - - - Retrieves the SdmCalFactor field - Units: % - Returns nullable float representing the SdmCalFactor field - - - - Set SdmCalFactor field - Units: % - Nullable field value to be set - - - - Retrieves the Odometer field - Units: m - Returns nullable float representing the Odometer field - - - - Set Odometer field - Units: m - Nullable field value to be set - - - - Retrieves the SpeedSource field - Comment: Use footpod for speed source instead of GPS - Returns nullable Bool enum representing the SpeedSource field - - - - Set SpeedSource field - Comment: Use footpod for speed source instead of GPS - Nullable field value to be set - - - - Retrieves the SdmAntIdTransType field - Returns nullable byte representing the SdmAntIdTransType field - - - - Set SdmAntIdTransType field - Nullable field value to be set - - - - Retrieves the OdometerRollover field - Comment: Rollover counter that can be used to extend the odometer - Returns nullable byte representing the OdometerRollover field - - - - Set OdometerRollover field - Comment: Rollover counter that can be used to extend the odometer - Nullable field value to be set - - - - Implements the SegmentFile profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the FileUuid field - Comment: UUID of the segment file - Returns byte[] representing the FileUuid field - - - - Retrieves the FileUuid field - Comment: UUID of the segment file - Returns String representing the FileUuid field - - - - Set FileUuid field - Comment: UUID of the segment file - field value to be set - - - - Set FileUuid field - Comment: UUID of the segment file - field value to be set - - - - Retrieves the Enabled field - Comment: Enabled state of the segment file - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Comment: Enabled state of the segment file - Nullable field value to be set - - - - Retrieves the UserProfilePrimaryKey field - Comment: Primary key of the user that created the segment file - Returns nullable uint representing the UserProfilePrimaryKey field - - - - Set UserProfilePrimaryKey field - Comment: Primary key of the user that created the segment file - Nullable field value to be set - - - - - - returns number of elements in field LeaderType - - - - Retrieves the LeaderType field - Comment: Leader type of each leader in the segment file - 0 based index of LeaderType element to retrieve - Returns nullable SegmentLeaderboardType enum representing the LeaderType field - - - - Set LeaderType field - Comment: Leader type of each leader in the segment file - 0 based index of leader_type - Nullable field value to be set - - - - - - returns number of elements in field LeaderGroupPrimaryKey - - - - Retrieves the LeaderGroupPrimaryKey field - Comment: Group primary key of each leader in the segment file - 0 based index of LeaderGroupPrimaryKey element to retrieve - Returns nullable uint representing the LeaderGroupPrimaryKey field - - - - Set LeaderGroupPrimaryKey field - Comment: Group primary key of each leader in the segment file - 0 based index of leader_group_primary_key - Nullable field value to be set - - - - - - returns number of elements in field LeaderActivityId - - - - Retrieves the LeaderActivityId field - Comment: Activity ID of each leader in the segment file - 0 based index of LeaderActivityId element to retrieve - Returns nullable uint representing the LeaderActivityId field - - - - Set LeaderActivityId field - Comment: Activity ID of each leader in the segment file - 0 based index of leader_activity_id - Nullable field value to be set - - - - - - returns number of elements in field LeaderActivityIdString - - - - Retrieves the LeaderActivityIdString field - Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - 0 based index of LeaderActivityIdString element to retrieve - Returns byte[] representing the LeaderActivityIdString field - - - - Retrieves the LeaderActivityIdString field - Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - 0 based index of LeaderActivityIdString element to retrieve - Returns String representing the LeaderActivityIdString field - - - - Set LeaderActivityIdString field - Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - 0 based index of LeaderActivityIdString element to retrieve - field value to be set - - - - Set LeaderActivityIdString field - Comment: String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal - 0 based index of leader_activity_id_string - field value to be set - - - - Retrieves the DefaultRaceLeader field - Comment: Index for the Leader Board entry selected as the default race participant - Returns nullable byte representing the DefaultRaceLeader field - - - - Set DefaultRaceLeader field - Comment: Index for the Leader Board entry selected as the default race participant - Nullable field value to be set - - - - Implements the SegmentId profile message. - - - - - Field Numbers for - - - - - Retrieves the Name field - Comment: Friendly name assigned to segment - Returns byte[] representing the Name field - - - - Retrieves the Name field - Comment: Friendly name assigned to segment - Returns String representing the Name field - - - - Set Name field - Comment: Friendly name assigned to segment - field value to be set - - - - Set Name field - Comment: Friendly name assigned to segment - field value to be set - - - - Retrieves the Uuid field - Comment: UUID of the segment - Returns byte[] representing the Uuid field - - - - Retrieves the Uuid field - Comment: UUID of the segment - Returns String representing the Uuid field - - - - Set Uuid field - Comment: UUID of the segment - field value to be set - - - - Set Uuid field - Comment: UUID of the segment - field value to be set - - - - Retrieves the Sport field - Comment: Sport associated with the segment - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Comment: Sport associated with the segment - Nullable field value to be set - - - - Retrieves the Enabled field - Comment: Segment enabled for evaluation - Returns nullable Bool enum representing the Enabled field - - - - Set Enabled field - Comment: Segment enabled for evaluation - Nullable field value to be set - - - - Retrieves the UserProfilePrimaryKey field - Comment: Primary key of the user that created the segment - Returns nullable uint representing the UserProfilePrimaryKey field - - - - Set UserProfilePrimaryKey field - Comment: Primary key of the user that created the segment - Nullable field value to be set - - - - Retrieves the DeviceId field - Comment: ID of the device that created the segment - Returns nullable uint representing the DeviceId field - - - - Set DeviceId field - Comment: ID of the device that created the segment - Nullable field value to be set - - - - Retrieves the DefaultRaceLeader field - Comment: Index for the Leader Board entry selected as the default race participant - Returns nullable byte representing the DefaultRaceLeader field - - - - Set DefaultRaceLeader field - Comment: Index for the Leader Board entry selected as the default race participant - Nullable field value to be set - - - - Retrieves the DeleteStatus field - Comment: Indicates if any segments should be deleted - Returns nullable SegmentDeleteStatus enum representing the DeleteStatus field - - - - Set DeleteStatus field - Comment: Indicates if any segments should be deleted - Nullable field value to be set - - - - Retrieves the SelectionType field - Comment: Indicates how the segment was selected to be sent to the device - Returns nullable SegmentSelectionType enum representing the SelectionType field - - - - Set SelectionType field - Comment: Indicates how the segment was selected to be sent to the device - Nullable field value to be set - - - - Implements the SegmentLap profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Timestamp field - Units: s - Comment: Lap end time. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Lap end time. - Nullable field value to be set - - - - Retrieves the Event field - Returns nullable Event enum representing the Event field - - - - Set Event field - Nullable field value to be set - - - - Retrieves the EventType field - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Nullable field value to be set - - - - Retrieves the StartTime field - Returns DateTime representing the StartTime field - - - - Set StartTime field - Nullable field value to be set - - - - Retrieves the StartPositionLat field - Units: semicircles - Returns nullable int representing the StartPositionLat field - - - - Set StartPositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the StartPositionLong field - Units: semicircles - Returns nullable int representing the StartPositionLong field - - - - Set StartPositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the EndPositionLat field - Units: semicircles - Returns nullable int representing the EndPositionLat field - - - - Set EndPositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the EndPositionLong field - Units: semicircles - Returns nullable int representing the EndPositionLong field - - - - Set EndPositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Returns nullable float representing the TotalElapsedTime field - - - - Set TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Nullable field value to be set - - - - Retrieves the TotalDistance field - Units: m - Returns nullable float representing the TotalDistance field - - - - Set TotalDistance field - Units: m - Nullable field value to be set - - - - Retrieves the TotalCycles field - Units: cycles - Returns nullable uint representing the TotalCycles field - - - - Set TotalCycles field - Units: cycles - Nullable field value to be set - - - - Retrieves the TotalStrokes subfield - Units: strokes - Nullable uint representing the TotalStrokes subfield - - - - - Set TotalStrokes subfield - Units: strokes - Subfield value to be set - - - - Retrieves the TotalCalories field - Units: kcal - Returns nullable ushort representing the TotalCalories field - - - - Set TotalCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the TotalFatCalories field - Units: kcal - Comment: If New Leaf - Returns nullable ushort representing the TotalFatCalories field - - - - Set TotalFatCalories field - Units: kcal - Comment: If New Leaf - Nullable field value to be set - - - - Retrieves the AvgSpeed field - Units: m/s - Returns nullable float representing the AvgSpeed field - - - - Set AvgSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxSpeed field - Units: m/s - Returns nullable float representing the MaxSpeed field - - - - Set MaxSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgHeartRate field - Units: bpm - Returns nullable byte representing the AvgHeartRate field - - - - Set AvgHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the MaxHeartRate field - Units: bpm - Returns nullable byte representing the MaxHeartRate field - - - - Set MaxHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Returns nullable byte representing the AvgCadence field - - - - Set AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Nullable field value to be set - - - - Retrieves the MaxCadence field - Units: rpm - Returns nullable byte representing the MaxCadence field - - - - Set MaxCadence field - Units: rpm - Nullable field value to be set - - - - Retrieves the AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Returns nullable ushort representing the AvgPower field - - - - Set AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Nullable field value to be set - - - - Retrieves the MaxPower field - Units: watts - Returns nullable ushort representing the MaxPower field - - - - Set MaxPower field - Units: watts - Nullable field value to be set - - - - Retrieves the TotalAscent field - Units: m - Returns nullable ushort representing the TotalAscent field - - - - Set TotalAscent field - Units: m - Nullable field value to be set - - - - Retrieves the TotalDescent field - Units: m - Returns nullable ushort representing the TotalDescent field - - - - Set TotalDescent field - Units: m - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Retrieves the NecLat field - Units: semicircles - Comment: North east corner latitude. - Returns nullable int representing the NecLat field - - - - Set NecLat field - Units: semicircles - Comment: North east corner latitude. - Nullable field value to be set - - - - Retrieves the NecLong field - Units: semicircles - Comment: North east corner longitude. - Returns nullable int representing the NecLong field - - - - Set NecLong field - Units: semicircles - Comment: North east corner longitude. - Nullable field value to be set - - - - Retrieves the SwcLat field - Units: semicircles - Comment: South west corner latitude. - Returns nullable int representing the SwcLat field - - - - Set SwcLat field - Units: semicircles - Comment: South west corner latitude. - Nullable field value to be set - - - - Retrieves the SwcLong field - Units: semicircles - Comment: South west corner latitude. - Returns nullable int representing the SwcLong field - - - - Set SwcLong field - Units: semicircles - Comment: South west corner latitude. - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Retrieves the NormalizedPower field - Units: watts - Returns nullable ushort representing the NormalizedPower field - - - - Set NormalizedPower field - Units: watts - Nullable field value to be set - - - - Retrieves the LeftRightBalance field - Returns nullable ushort representing the LeftRightBalance field - - - - Set LeftRightBalance field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the TotalWork field - Units: J - Returns nullable uint representing the TotalWork field - - - - Set TotalWork field - Units: J - Nullable field value to be set - - - - Retrieves the AvgAltitude field - Units: m - Returns nullable float representing the AvgAltitude field - - - - Set AvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the MaxAltitude field - Units: m - Returns nullable float representing the MaxAltitude field - - - - Set MaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the GpsAccuracy field - Units: m - Returns nullable byte representing the GpsAccuracy field - - - - Set GpsAccuracy field - Units: m - Nullable field value to be set - - - - Retrieves the AvgGrade field - Units: % - Returns nullable float representing the AvgGrade field - - - - Set AvgGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgPosGrade field - Units: % - Returns nullable float representing the AvgPosGrade field - - - - Set AvgPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgNegGrade field - Units: % - Returns nullable float representing the AvgNegGrade field - - - - Set AvgNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxPosGrade field - Units: % - Returns nullable float representing the MaxPosGrade field - - - - Set MaxPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxNegGrade field - Units: % - Returns nullable float representing the MaxNegGrade field - - - - Set MaxNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgTemperature field - Units: C - Returns nullable sbyte representing the AvgTemperature field - - - - Set AvgTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MaxTemperature field - Units: C - Returns nullable sbyte representing the MaxTemperature field - - - - Set MaxTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the TotalMovingTime field - Units: s - Returns nullable float representing the TotalMovingTime field - - - - Set TotalMovingTime field - Units: s - Nullable field value to be set - - - - Retrieves the AvgPosVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgPosVerticalSpeed field - - - - Set AvgPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgNegVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgNegVerticalSpeed field - - - - Set AvgNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxPosVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxPosVerticalSpeed field - - - - Set MaxPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxNegVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxNegVerticalSpeed field - - - - Set MaxNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - - - returns number of elements in field TimeInHrZone - - - - Retrieves the TimeInHrZone field - Units: s - 0 based index of TimeInHrZone element to retrieve - Returns nullable float representing the TimeInHrZone field - - - - Set TimeInHrZone field - Units: s - 0 based index of time_in_hr_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInSpeedZone - - - - Retrieves the TimeInSpeedZone field - Units: s - 0 based index of TimeInSpeedZone element to retrieve - Returns nullable float representing the TimeInSpeedZone field - - - - Set TimeInSpeedZone field - Units: s - 0 based index of time_in_speed_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInCadenceZone - - - - Retrieves the TimeInCadenceZone field - Units: s - 0 based index of TimeInCadenceZone element to retrieve - Returns nullable float representing the TimeInCadenceZone field - - - - Set TimeInCadenceZone field - Units: s - 0 based index of time_in_cadence_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInPowerZone - - - - Retrieves the TimeInPowerZone field - Units: s - 0 based index of TimeInPowerZone element to retrieve - Returns nullable float representing the TimeInPowerZone field - - - - Set TimeInPowerZone field - Units: s - 0 based index of time_in_power_zone - Nullable field value to be set - - - - Retrieves the RepetitionNum field - Returns nullable ushort representing the RepetitionNum field - - - - Set RepetitionNum field - Nullable field value to be set - - - - Retrieves the MinAltitude field - Units: m - Returns nullable float representing the MinAltitude field - - - - Set MinAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the MinHeartRate field - Units: bpm - Returns nullable byte representing the MinHeartRate field - - - - Set MinHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the ActiveTime field - Units: s - Returns nullable float representing the ActiveTime field - - - - Set ActiveTime field - Units: s - Nullable field value to be set - - - - Retrieves the WktStepIndex field - Returns nullable ushort representing the WktStepIndex field - - - - Set WktStepIndex field - Nullable field value to be set - - - - Retrieves the SportEvent field - Returns nullable SportEvent enum representing the SportEvent field - - - - Set SportEvent field - Nullable field value to be set - - - - Retrieves the AvgLeftTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgLeftTorqueEffectiveness field - - - - Set AvgLeftTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgRightTorqueEffectiveness field - - - - Set AvgRightTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgLeftPedalSmoothness field - Units: percent - Returns nullable float representing the AvgLeftPedalSmoothness field - - - - Set AvgLeftPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightPedalSmoothness field - Units: percent - Returns nullable float representing the AvgRightPedalSmoothness field - - - - Set AvgRightPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgCombinedPedalSmoothness field - Units: percent - Returns nullable float representing the AvgCombinedPedalSmoothness field - - - - Set AvgCombinedPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the Status field - Returns nullable SegmentLapStatus enum representing the Status field - - - - Set Status field - Nullable field value to be set - - - - Retrieves the Uuid field - Returns byte[] representing the Uuid field - - - - Retrieves the Uuid field - Returns String representing the Uuid field - - - - Set Uuid field - field value to be set - - - - Set Uuid field - field value to be set - - - - Retrieves the AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Returns nullable float representing the AvgFractionalCadence field - - - - Set AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Nullable field value to be set - - - - Retrieves the MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Returns nullable float representing the MaxFractionalCadence field - - - - Set MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Nullable field value to be set - - - - Retrieves the TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Returns nullable float representing the TotalFractionalCycles field - - - - Set TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Nullable field value to be set - - - - Retrieves the FrontGearShiftCount field - Returns nullable ushort representing the FrontGearShiftCount field - - - - Set FrontGearShiftCount field - Nullable field value to be set - - - - Retrieves the RearGearShiftCount field - Returns nullable ushort representing the RearGearShiftCount field - - - - Set RearGearShiftCount field - Nullable field value to be set - - - - Retrieves the TimeStanding field - Units: s - Comment: Total time spent in the standing position - Returns nullable float representing the TimeStanding field - - - - Set TimeStanding field - Units: s - Comment: Total time spent in the standing position - Nullable field value to be set - - - - Retrieves the StandCount field - Comment: Number of transitions to the standing state - Returns nullable ushort representing the StandCount field - - - - Set StandCount field - Comment: Number of transitions to the standing state - Nullable field value to be set - - - - Retrieves the AvgLeftPco field - Units: mm - Comment: Average left platform center offset - Returns nullable sbyte representing the AvgLeftPco field - - - - Set AvgLeftPco field - Units: mm - Comment: Average left platform center offset - Nullable field value to be set - - - - Retrieves the AvgRightPco field - Units: mm - Comment: Average right platform center offset - Returns nullable sbyte representing the AvgRightPco field - - - - Set AvgRightPco field - Units: mm - Comment: Average right platform center offset - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhase - - - - Retrieves the AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhase element to retrieve - Returns nullable float representing the AvgLeftPowerPhase field - - - - Set AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Data value indexes defined by power_phase_type. - 0 based index of avg_left_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhasePeak - - - - Retrieves the AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhasePeak element to retrieve - Returns nullable float representing the AvgLeftPowerPhasePeak field - - - - Set AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of avg_left_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhase - - - - Retrieves the AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhase element to retrieve - Returns nullable float representing the AvgRightPowerPhase field - - - - Set AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhasePeak - - - - Retrieves the AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhasePeak element to retrieve - Returns nullable float representing the AvgRightPowerPhasePeak field - - - - Set AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgPowerPosition - - - - Retrieves the AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of AvgPowerPosition element to retrieve - Returns nullable ushort representing the AvgPowerPosition field - - - - Set AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of avg_power_position - Nullable field value to be set - - - - - - returns number of elements in field MaxPowerPosition - - - - Retrieves the MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of MaxPowerPosition element to retrieve - Returns nullable ushort representing the MaxPowerPosition field - - - - Set MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of max_power_position - Nullable field value to be set - - - - - - returns number of elements in field AvgCadencePosition - - - - Retrieves the AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of AvgCadencePosition element to retrieve - Returns nullable byte representing the AvgCadencePosition field - - - - Set AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of avg_cadence_position - Nullable field value to be set - - - - - - returns number of elements in field MaxCadencePosition - - - - Retrieves the MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of MaxCadencePosition element to retrieve - Returns nullable byte representing the MaxCadencePosition field - - - - Set MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of max_cadence_position - Nullable field value to be set - - - - Retrieves the Manufacturer field - Comment: Manufacturer that produced the segment - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Comment: Manufacturer that produced the segment - Nullable field value to be set - - - - Retrieves the TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the TotalGrit field - - - - Set TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the TotalFlow field - - - - Set TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the AvgGrit field - - - - Set AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the AvgFlow field - - - - Set AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Returns nullable float representing the TotalFractionalAscent field - - - - Set TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Nullable field value to be set - - - - Retrieves the TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Returns nullable float representing the TotalFractionalDescent field - - - - Set TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Nullable field value to be set - - - - Retrieves the EnhancedAvgAltitude field - Units: m - Returns nullable float representing the EnhancedAvgAltitude field - - - - Set EnhancedAvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMaxAltitude field - Units: m - Returns nullable float representing the EnhancedMaxAltitude field - - - - Set EnhancedMaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMinAltitude field - Units: m - Returns nullable float representing the EnhancedMinAltitude field - - - - Set EnhancedMinAltitude field - Units: m - Nullable field value to be set - - - - Implements the SegmentLeaderboardEntry profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Name field - Comment: Friendly name assigned to leader - Returns byte[] representing the Name field - - - - Retrieves the Name field - Comment: Friendly name assigned to leader - Returns String representing the Name field - - - - Set Name field - Comment: Friendly name assigned to leader - field value to be set - - - - Set Name field - Comment: Friendly name assigned to leader - field value to be set - - - - Retrieves the Type field - Comment: Leader classification - Returns nullable SegmentLeaderboardType enum representing the Type field - - - - Set Type field - Comment: Leader classification - Nullable field value to be set - - - - Retrieves the GroupPrimaryKey field - Comment: Primary user ID of this leader - Returns nullable uint representing the GroupPrimaryKey field - - - - Set GroupPrimaryKey field - Comment: Primary user ID of this leader - Nullable field value to be set - - - - Retrieves the ActivityId field - Comment: ID of the activity associated with this leader time - Returns nullable uint representing the ActivityId field - - - - Set ActivityId field - Comment: ID of the activity associated with this leader time - Nullable field value to be set - - - - Retrieves the SegmentTime field - Units: s - Comment: Segment Time (includes pauses) - Returns nullable float representing the SegmentTime field - - - - Set SegmentTime field - Units: s - Comment: Segment Time (includes pauses) - Nullable field value to be set - - - - Retrieves the ActivityIdString field - Comment: String version of the activity_id. 21 characters long, express in decimal - Returns byte[] representing the ActivityIdString field - - - - Retrieves the ActivityIdString field - Comment: String version of the activity_id. 21 characters long, express in decimal - Returns String representing the ActivityIdString field - - - - Set ActivityIdString field - Comment: String version of the activity_id. 21 characters long, express in decimal - field value to be set - - - - Set ActivityIdString field - Comment: String version of the activity_id. 21 characters long, express in decimal - field value to be set - - - - Implements the SegmentPoint profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the PositionLat field - Units: semicircles - Returns nullable int representing the PositionLat field - - - - Set PositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the PositionLong field - Units: semicircles - Returns nullable int representing the PositionLong field - - - - Set PositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Comment: Accumulated distance along the segment at the described point - Returns nullable float representing the Distance field - - - - Set Distance field - Units: m - Comment: Accumulated distance along the segment at the described point - Nullable field value to be set - - - - Retrieves the Altitude field - Units: m - Comment: Accumulated altitude along the segment at the described point - Returns nullable float representing the Altitude field - - - - Set Altitude field - Units: m - Comment: Accumulated altitude along the segment at the described point - Nullable field value to be set - - - - - - returns number of elements in field LeaderTime - - - - Retrieves the LeaderTime field - Units: s - Comment: Accumualted time each leader board member required to reach the described point. This value is zero for all leader board members at the starting point of the segment. - 0 based index of LeaderTime element to retrieve - Returns nullable float representing the LeaderTime field - - - - Set LeaderTime field - Units: s - Comment: Accumualted time each leader board member required to reach the described point. This value is zero for all leader board members at the starting point of the segment. - 0 based index of leader_time - Nullable field value to be set - - - - Retrieves the EnhancedAltitude field - Units: m - Comment: Accumulated altitude along the segment at the described point - Returns nullable float representing the EnhancedAltitude field - - - - Set EnhancedAltitude field - Units: m - Comment: Accumulated altitude along the segment at the described point - Nullable field value to be set - - - - Implements the Session profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Comment: Selected bit is set for the current session. - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Comment: Selected bit is set for the current session. - Nullable field value to be set - - - - Retrieves the Timestamp field - Units: s - Comment: Sesson end time. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Sesson end time. - Nullable field value to be set - - - - Retrieves the Event field - Comment: session - Returns nullable Event enum representing the Event field - - - - Set Event field - Comment: session - Nullable field value to be set - - - - Retrieves the EventType field - Comment: stop - Returns nullable EventType enum representing the EventType field - - - - Set EventType field - Comment: stop - Nullable field value to be set - - - - Retrieves the StartTime field - Returns DateTime representing the StartTime field - - - - Set StartTime field - Nullable field value to be set - - - - Retrieves the StartPositionLat field - Units: semicircles - Returns nullable int representing the StartPositionLat field - - - - Set StartPositionLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the StartPositionLong field - Units: semicircles - Returns nullable int representing the StartPositionLong field - - - - Set StartPositionLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Returns nullable float representing the TotalElapsedTime field - - - - Set TotalElapsedTime field - Units: s - Comment: Time (includes pauses) - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Comment: Timer Time (excludes pauses) - Nullable field value to be set - - - - Retrieves the TotalDistance field - Units: m - Returns nullable float representing the TotalDistance field - - - - Set TotalDistance field - Units: m - Nullable field value to be set - - - - Retrieves the TotalCycles field - Units: cycles - Returns nullable uint representing the TotalCycles field - - - - Set TotalCycles field - Units: cycles - Nullable field value to be set - - - - Retrieves the TotalStrides subfield - Units: strides - Nullable uint representing the TotalStrides subfield - - - - - Set TotalStrides subfield - Units: strides - Subfield value to be set - - - - Retrieves the TotalStrokes subfield - Units: strokes - Nullable uint representing the TotalStrokes subfield - - - - - Set TotalStrokes subfield - Units: strokes - Subfield value to be set - - - - Retrieves the TotalCalories field - Units: kcal - Returns nullable ushort representing the TotalCalories field - - - - Set TotalCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the TotalFatCalories field - Units: kcal - Returns nullable ushort representing the TotalFatCalories field - - - - Set TotalFatCalories field - Units: kcal - Nullable field value to be set - - - - Retrieves the AvgSpeed field - Units: m/s - Comment: total_distance / total_timer_time - Returns nullable float representing the AvgSpeed field - - - - Set AvgSpeed field - Units: m/s - Comment: total_distance / total_timer_time - Nullable field value to be set - - - - Retrieves the MaxSpeed field - Units: m/s - Returns nullable float representing the MaxSpeed field - - - - Set MaxSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgHeartRate field - Units: bpm - Comment: average heart rate (excludes pause time) - Returns nullable byte representing the AvgHeartRate field - - - - Set AvgHeartRate field - Units: bpm - Comment: average heart rate (excludes pause time) - Nullable field value to be set - - - - Retrieves the MaxHeartRate field - Units: bpm - Returns nullable byte representing the MaxHeartRate field - - - - Set MaxHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Returns nullable byte representing the AvgCadence field - - - - Set AvgCadence field - Units: rpm - Comment: total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time - Nullable field value to be set - - - - Retrieves the AvgRunningCadence subfield - Units: strides/min - Nullable byte representing the AvgRunningCadence subfield - - - - - Set AvgRunningCadence subfield - Units: strides/min - Subfield value to be set - - - - Retrieves the MaxCadence field - Units: rpm - Returns nullable byte representing the MaxCadence field - - - - Set MaxCadence field - Units: rpm - Nullable field value to be set - - - - Retrieves the MaxRunningCadence subfield - Units: strides/min - Nullable byte representing the MaxRunningCadence subfield - - - - - Set MaxRunningCadence subfield - Units: strides/min - Subfield value to be set - - - - Retrieves the AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Returns nullable ushort representing the AvgPower field - - - - Set AvgPower field - Units: watts - Comment: total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time - Nullable field value to be set - - - - Retrieves the MaxPower field - Units: watts - Returns nullable ushort representing the MaxPower field - - - - Set MaxPower field - Units: watts - Nullable field value to be set - - - - Retrieves the TotalAscent field - Units: m - Returns nullable ushort representing the TotalAscent field - - - - Set TotalAscent field - Units: m - Nullable field value to be set - - - - Retrieves the TotalDescent field - Units: m - Returns nullable ushort representing the TotalDescent field - - - - Set TotalDescent field - Units: m - Nullable field value to be set - - - - Retrieves the TotalTrainingEffect field - Returns nullable float representing the TotalTrainingEffect field - - - - Set TotalTrainingEffect field - Nullable field value to be set - - - - Retrieves the FirstLapIndex field - Returns nullable ushort representing the FirstLapIndex field - - - - Set FirstLapIndex field - Nullable field value to be set - - - - Retrieves the NumLaps field - Returns nullable ushort representing the NumLaps field - - - - Set NumLaps field - Nullable field value to be set - - - - Retrieves the EventGroup field - Returns nullable byte representing the EventGroup field - - - - Set EventGroup field - Nullable field value to be set - - - - Retrieves the Trigger field - Returns nullable SessionTrigger enum representing the Trigger field - - - - Set Trigger field - Nullable field value to be set - - - - Retrieves the NecLat field - Units: semicircles - Comment: North east corner latitude - Returns nullable int representing the NecLat field - - - - Set NecLat field - Units: semicircles - Comment: North east corner latitude - Nullable field value to be set - - - - Retrieves the NecLong field - Units: semicircles - Comment: North east corner longitude - Returns nullable int representing the NecLong field - - - - Set NecLong field - Units: semicircles - Comment: North east corner longitude - Nullable field value to be set - - - - Retrieves the SwcLat field - Units: semicircles - Comment: South west corner latitude - Returns nullable int representing the SwcLat field - - - - Set SwcLat field - Units: semicircles - Comment: South west corner latitude - Nullable field value to be set - - - - Retrieves the SwcLong field - Units: semicircles - Comment: South west corner longitude - Returns nullable int representing the SwcLong field - - - - Set SwcLong field - Units: semicircles - Comment: South west corner longitude - Nullable field value to be set - - - - Retrieves the NumLengths field - Units: lengths - Comment: # of lengths of swim pool - Returns nullable ushort representing the NumLengths field - - - - Set NumLengths field - Units: lengths - Comment: # of lengths of swim pool - Nullable field value to be set - - - - Retrieves the NormalizedPower field - Units: watts - Returns nullable ushort representing the NormalizedPower field - - - - Set NormalizedPower field - Units: watts - Nullable field value to be set - - - - Retrieves the TrainingStressScore field - Units: tss - Returns nullable float representing the TrainingStressScore field - - - - Set TrainingStressScore field - Units: tss - Nullable field value to be set - - - - Retrieves the IntensityFactor field - Units: if - Returns nullable float representing the IntensityFactor field - - - - Set IntensityFactor field - Units: if - Nullable field value to be set - - - - Retrieves the LeftRightBalance field - Returns nullable ushort representing the LeftRightBalance field - - - - Set LeftRightBalance field - Nullable field value to be set - - - - Retrieves the AvgStrokeCount field - Units: strokes/lap - Returns nullable float representing the AvgStrokeCount field - - - - Set AvgStrokeCount field - Units: strokes/lap - Nullable field value to be set - - - - Retrieves the AvgStrokeDistance field - Units: m - Returns nullable float representing the AvgStrokeDistance field - - - - Set AvgStrokeDistance field - Units: m - Nullable field value to be set - - - - Retrieves the SwimStroke field - Units: swim_stroke - Returns nullable SwimStroke enum representing the SwimStroke field - - - - Set SwimStroke field - Units: swim_stroke - Nullable field value to be set - - - - Retrieves the PoolLength field - Units: m - Returns nullable float representing the PoolLength field - - - - Set PoolLength field - Units: m - Nullable field value to be set - - - - Retrieves the ThresholdPower field - Units: watts - Returns nullable ushort representing the ThresholdPower field - - - - Set ThresholdPower field - Units: watts - Nullable field value to be set - - - - Retrieves the PoolLengthUnit field - Returns nullable DisplayMeasure enum representing the PoolLengthUnit field - - - - Set PoolLengthUnit field - Nullable field value to be set - - - - Retrieves the NumActiveLengths field - Units: lengths - Comment: # of active lengths of swim pool - Returns nullable ushort representing the NumActiveLengths field - - - - Set NumActiveLengths field - Units: lengths - Comment: # of active lengths of swim pool - Nullable field value to be set - - - - Retrieves the TotalWork field - Units: J - Returns nullable uint representing the TotalWork field - - - - Set TotalWork field - Units: J - Nullable field value to be set - - - - Retrieves the AvgAltitude field - Units: m - Returns nullable float representing the AvgAltitude field - - - - Set AvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the MaxAltitude field - Units: m - Returns nullable float representing the MaxAltitude field - - - - Set MaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the GpsAccuracy field - Units: m - Returns nullable byte representing the GpsAccuracy field - - - - Set GpsAccuracy field - Units: m - Nullable field value to be set - - - - Retrieves the AvgGrade field - Units: % - Returns nullable float representing the AvgGrade field - - - - Set AvgGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgPosGrade field - Units: % - Returns nullable float representing the AvgPosGrade field - - - - Set AvgPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgNegGrade field - Units: % - Returns nullable float representing the AvgNegGrade field - - - - Set AvgNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxPosGrade field - Units: % - Returns nullable float representing the MaxPosGrade field - - - - Set MaxPosGrade field - Units: % - Nullable field value to be set - - - - Retrieves the MaxNegGrade field - Units: % - Returns nullable float representing the MaxNegGrade field - - - - Set MaxNegGrade field - Units: % - Nullable field value to be set - - - - Retrieves the AvgTemperature field - Units: C - Returns nullable sbyte representing the AvgTemperature field - - - - Set AvgTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MaxTemperature field - Units: C - Returns nullable sbyte representing the MaxTemperature field - - - - Set MaxTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the TotalMovingTime field - Units: s - Returns nullable float representing the TotalMovingTime field - - - - Set TotalMovingTime field - Units: s - Nullable field value to be set - - - - Retrieves the AvgPosVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgPosVerticalSpeed field - - - - Set AvgPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgNegVerticalSpeed field - Units: m/s - Returns nullable float representing the AvgNegVerticalSpeed field - - - - Set AvgNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxPosVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxPosVerticalSpeed field - - - - Set MaxPosVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MaxNegVerticalSpeed field - Units: m/s - Returns nullable float representing the MaxNegVerticalSpeed field - - - - Set MaxNegVerticalSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the MinHeartRate field - Units: bpm - Returns nullable byte representing the MinHeartRate field - - - - Set MinHeartRate field - Units: bpm - Nullable field value to be set - - - - - - returns number of elements in field TimeInHrZone - - - - Retrieves the TimeInHrZone field - Units: s - 0 based index of TimeInHrZone element to retrieve - Returns nullable float representing the TimeInHrZone field - - - - Set TimeInHrZone field - Units: s - 0 based index of time_in_hr_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInSpeedZone - - - - Retrieves the TimeInSpeedZone field - Units: s - 0 based index of TimeInSpeedZone element to retrieve - Returns nullable float representing the TimeInSpeedZone field - - - - Set TimeInSpeedZone field - Units: s - 0 based index of time_in_speed_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInCadenceZone - - - - Retrieves the TimeInCadenceZone field - Units: s - 0 based index of TimeInCadenceZone element to retrieve - Returns nullable float representing the TimeInCadenceZone field - - - - Set TimeInCadenceZone field - Units: s - 0 based index of time_in_cadence_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInPowerZone - - - - Retrieves the TimeInPowerZone field - Units: s - 0 based index of TimeInPowerZone element to retrieve - Returns nullable float representing the TimeInPowerZone field - - - - Set TimeInPowerZone field - Units: s - 0 based index of time_in_power_zone - Nullable field value to be set - - - - Retrieves the AvgLapTime field - Units: s - Returns nullable float representing the AvgLapTime field - - - - Set AvgLapTime field - Units: s - Nullable field value to be set - - - - Retrieves the BestLapIndex field - Returns nullable ushort representing the BestLapIndex field - - - - Set BestLapIndex field - Nullable field value to be set - - - - Retrieves the MinAltitude field - Units: m - Returns nullable float representing the MinAltitude field - - - - Set MinAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the PlayerScore field - Returns nullable ushort representing the PlayerScore field - - - - Set PlayerScore field - Nullable field value to be set - - - - Retrieves the OpponentScore field - Returns nullable ushort representing the OpponentScore field - - - - Set OpponentScore field - Nullable field value to be set - - - - Retrieves the OpponentName field - Returns byte[] representing the OpponentName field - - - - Retrieves the OpponentName field - Returns String representing the OpponentName field - - - - Set OpponentName field - field value to be set - - - - Set OpponentName field - field value to be set - - - - - - returns number of elements in field StrokeCount - - - - Retrieves the StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of StrokeCount element to retrieve - Returns nullable ushort representing the StrokeCount field - - - - Set StrokeCount field - Units: counts - Comment: stroke_type enum used as the index - 0 based index of stroke_count - Nullable field value to be set - - - - - - returns number of elements in field ZoneCount - - - - Retrieves the ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of ZoneCount element to retrieve - Returns nullable ushort representing the ZoneCount field - - - - Set ZoneCount field - Units: counts - Comment: zone number used as the index - 0 based index of zone_count - Nullable field value to be set - - - - Retrieves the MaxBallSpeed field - Units: m/s - Returns nullable float representing the MaxBallSpeed field - - - - Set MaxBallSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgBallSpeed field - Units: m/s - Returns nullable float representing the AvgBallSpeed field - - - - Set AvgBallSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgVerticalOscillation field - Units: mm - Returns nullable float representing the AvgVerticalOscillation field - - - - Set AvgVerticalOscillation field - Units: mm - Nullable field value to be set - - - - Retrieves the AvgStanceTimePercent field - Units: percent - Returns nullable float representing the AvgStanceTimePercent field - - - - Set AvgStanceTimePercent field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStanceTime field - Units: ms - Returns nullable float representing the AvgStanceTime field - - - - Set AvgStanceTime field - Units: ms - Nullable field value to be set - - - - Retrieves the AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Returns nullable float representing the AvgFractionalCadence field - - - - Set AvgFractionalCadence field - Units: rpm - Comment: fractional part of the avg_cadence - Nullable field value to be set - - - - Retrieves the MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Returns nullable float representing the MaxFractionalCadence field - - - - Set MaxFractionalCadence field - Units: rpm - Comment: fractional part of the max_cadence - Nullable field value to be set - - - - Retrieves the TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Returns nullable float representing the TotalFractionalCycles field - - - - Set TotalFractionalCycles field - Units: cycles - Comment: fractional part of the total_cycles - Nullable field value to be set - - - - - - returns number of elements in field AvgTotalHemoglobinConc - - - - Retrieves the AvgTotalHemoglobinConc field - Units: g/dL - Comment: Avg saturated and unsaturated hemoglobin - 0 based index of AvgTotalHemoglobinConc element to retrieve - Returns nullable float representing the AvgTotalHemoglobinConc field - - - - Set AvgTotalHemoglobinConc field - Units: g/dL - Comment: Avg saturated and unsaturated hemoglobin - 0 based index of avg_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field MinTotalHemoglobinConc - - - - Retrieves the MinTotalHemoglobinConc field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - 0 based index of MinTotalHemoglobinConc element to retrieve - Returns nullable float representing the MinTotalHemoglobinConc field - - - - Set MinTotalHemoglobinConc field - Units: g/dL - Comment: Min saturated and unsaturated hemoglobin - 0 based index of min_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field MaxTotalHemoglobinConc - - - - Retrieves the MaxTotalHemoglobinConc field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - 0 based index of MaxTotalHemoglobinConc element to retrieve - Returns nullable float representing the MaxTotalHemoglobinConc field - - - - Set MaxTotalHemoglobinConc field - Units: g/dL - Comment: Max saturated and unsaturated hemoglobin - 0 based index of max_total_hemoglobin_conc - Nullable field value to be set - - - - - - returns number of elements in field AvgSaturatedHemoglobinPercent - - - - Retrieves the AvgSaturatedHemoglobinPercent field - Units: % - Comment: Avg percentage of hemoglobin saturated with oxygen - 0 based index of AvgSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the AvgSaturatedHemoglobinPercent field - - - - Set AvgSaturatedHemoglobinPercent field - Units: % - Comment: Avg percentage of hemoglobin saturated with oxygen - 0 based index of avg_saturated_hemoglobin_percent - Nullable field value to be set - - - - - - returns number of elements in field MinSaturatedHemoglobinPercent - - - - Retrieves the MinSaturatedHemoglobinPercent field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - 0 based index of MinSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the MinSaturatedHemoglobinPercent field - - - - Set MinSaturatedHemoglobinPercent field - Units: % - Comment: Min percentage of hemoglobin saturated with oxygen - 0 based index of min_saturated_hemoglobin_percent - Nullable field value to be set - - - - - - returns number of elements in field MaxSaturatedHemoglobinPercent - - - - Retrieves the MaxSaturatedHemoglobinPercent field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - 0 based index of MaxSaturatedHemoglobinPercent element to retrieve - Returns nullable float representing the MaxSaturatedHemoglobinPercent field - - - - Set MaxSaturatedHemoglobinPercent field - Units: % - Comment: Max percentage of hemoglobin saturated with oxygen - 0 based index of max_saturated_hemoglobin_percent - Nullable field value to be set - - - - Retrieves the AvgLeftTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgLeftTorqueEffectiveness field - - - - Set AvgLeftTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightTorqueEffectiveness field - Units: percent - Returns nullable float representing the AvgRightTorqueEffectiveness field - - - - Set AvgRightTorqueEffectiveness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgLeftPedalSmoothness field - Units: percent - Returns nullable float representing the AvgLeftPedalSmoothness field - - - - Set AvgLeftPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgRightPedalSmoothness field - Units: percent - Returns nullable float representing the AvgRightPedalSmoothness field - - - - Set AvgRightPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgCombinedPedalSmoothness field - Units: percent - Returns nullable float representing the AvgCombinedPedalSmoothness field - - - - Set AvgCombinedPedalSmoothness field - Units: percent - Nullable field value to be set - - - - Retrieves the SportIndex field - Returns nullable byte representing the SportIndex field - - - - Set SportIndex field - Nullable field value to be set - - - - Retrieves the TimeStanding field - Units: s - Comment: Total time spend in the standing position - Returns nullable float representing the TimeStanding field - - - - Set TimeStanding field - Units: s - Comment: Total time spend in the standing position - Nullable field value to be set - - - - Retrieves the StandCount field - Comment: Number of transitions to the standing state - Returns nullable ushort representing the StandCount field - - - - Set StandCount field - Comment: Number of transitions to the standing state - Nullable field value to be set - - - - Retrieves the AvgLeftPco field - Units: mm - Comment: Average platform center offset Left - Returns nullable sbyte representing the AvgLeftPco field - - - - Set AvgLeftPco field - Units: mm - Comment: Average platform center offset Left - Nullable field value to be set - - - - Retrieves the AvgRightPco field - Units: mm - Comment: Average platform center offset Right - Returns nullable sbyte representing the AvgRightPco field - - - - Set AvgRightPco field - Units: mm - Comment: Average platform center offset Right - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhase - - - - Retrieves the AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhase element to retrieve - Returns nullable float representing the AvgLeftPowerPhase field - - - - Set AvgLeftPowerPhase field - Units: degrees - Comment: Average left power phase angles. Indexes defined by power_phase_type. - 0 based index of avg_left_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgLeftPowerPhasePeak - - - - Retrieves the AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of AvgLeftPowerPhasePeak element to retrieve - Returns nullable float representing the AvgLeftPowerPhasePeak field - - - - Set AvgLeftPowerPhasePeak field - Units: degrees - Comment: Average left power phase peak angles. Data value indexes defined by power_phase_type. - 0 based index of avg_left_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhase - - - - Retrieves the AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhase element to retrieve - Returns nullable float representing the AvgRightPowerPhase field - - - - Set AvgRightPowerPhase field - Units: degrees - Comment: Average right power phase angles. Data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase - Nullable field value to be set - - - - - - returns number of elements in field AvgRightPowerPhasePeak - - - - Retrieves the AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles data value indexes defined by power_phase_type. - 0 based index of AvgRightPowerPhasePeak element to retrieve - Returns nullable float representing the AvgRightPowerPhasePeak field - - - - Set AvgRightPowerPhasePeak field - Units: degrees - Comment: Average right power phase peak angles data value indexes defined by power_phase_type. - 0 based index of avg_right_power_phase_peak - Nullable field value to be set - - - - - - returns number of elements in field AvgPowerPosition - - - - Retrieves the AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of AvgPowerPosition element to retrieve - Returns nullable ushort representing the AvgPowerPosition field - - - - Set AvgPowerPosition field - Units: watts - Comment: Average power by position. Data value indexes defined by rider_position_type. - 0 based index of avg_power_position - Nullable field value to be set - - - - - - returns number of elements in field MaxPowerPosition - - - - Retrieves the MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of MaxPowerPosition element to retrieve - Returns nullable ushort representing the MaxPowerPosition field - - - - Set MaxPowerPosition field - Units: watts - Comment: Maximum power by position. Data value indexes defined by rider_position_type. - 0 based index of max_power_position - Nullable field value to be set - - - - - - returns number of elements in field AvgCadencePosition - - - - Retrieves the AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of AvgCadencePosition element to retrieve - Returns nullable byte representing the AvgCadencePosition field - - - - Set AvgCadencePosition field - Units: rpm - Comment: Average cadence by position. Data value indexes defined by rider_position_type. - 0 based index of avg_cadence_position - Nullable field value to be set - - - - - - returns number of elements in field MaxCadencePosition - - - - Retrieves the MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of MaxCadencePosition element to retrieve - Returns nullable byte representing the MaxCadencePosition field - - - - Set MaxCadencePosition field - Units: rpm - Comment: Maximum cadence by position. Data value indexes defined by rider_position_type. - 0 based index of max_cadence_position - Nullable field value to be set - - - - Retrieves the EnhancedAvgSpeed field - Units: m/s - Comment: total_distance / total_timer_time - Returns nullable float representing the EnhancedAvgSpeed field - - - - Set EnhancedAvgSpeed field - Units: m/s - Comment: total_distance / total_timer_time - Nullable field value to be set - - - - Retrieves the EnhancedMaxSpeed field - Units: m/s - Returns nullable float representing the EnhancedMaxSpeed field - - - - Set EnhancedMaxSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the EnhancedAvgAltitude field - Units: m - Returns nullable float representing the EnhancedAvgAltitude field - - - - Set EnhancedAvgAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMinAltitude field - Units: m - Returns nullable float representing the EnhancedMinAltitude field - - - - Set EnhancedMinAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the EnhancedMaxAltitude field - Units: m - Returns nullable float representing the EnhancedMaxAltitude field - - - - Set EnhancedMaxAltitude field - Units: m - Nullable field value to be set - - - - Retrieves the AvgLevMotorPower field - Units: watts - Comment: lev average motor power during session - Returns nullable ushort representing the AvgLevMotorPower field - - - - Set AvgLevMotorPower field - Units: watts - Comment: lev average motor power during session - Nullable field value to be set - - - - Retrieves the MaxLevMotorPower field - Units: watts - Comment: lev maximum motor power during session - Returns nullable ushort representing the MaxLevMotorPower field - - - - Set MaxLevMotorPower field - Units: watts - Comment: lev maximum motor power during session - Nullable field value to be set - - - - Retrieves the LevBatteryConsumption field - Units: percent - Comment: lev battery consumption during session - Returns nullable float representing the LevBatteryConsumption field - - - - Set LevBatteryConsumption field - Units: percent - Comment: lev battery consumption during session - Nullable field value to be set - - - - Retrieves the AvgVerticalRatio field - Units: percent - Returns nullable float representing the AvgVerticalRatio field - - - - Set AvgVerticalRatio field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStanceTimeBalance field - Units: percent - Returns nullable float representing the AvgStanceTimeBalance field - - - - Set AvgStanceTimeBalance field - Units: percent - Nullable field value to be set - - - - Retrieves the AvgStepLength field - Units: mm - Returns nullable float representing the AvgStepLength field - - - - Set AvgStepLength field - Units: mm - Nullable field value to be set - - - - Retrieves the TotalAnaerobicTrainingEffect field - Returns nullable float representing the TotalAnaerobicTrainingEffect field - - - - Set TotalAnaerobicTrainingEffect field - Nullable field value to be set - - - - Retrieves the AvgVam field - Units: m/s - Returns nullable float representing the AvgVam field - - - - Set AvgVam field - Units: m/s - Nullable field value to be set - - - - Retrieves the AvgRespirationRate field - Returns nullable byte representing the AvgRespirationRate field - - - - Set AvgRespirationRate field - Nullable field value to be set - - - - Retrieves the MaxRespirationRate field - Returns nullable byte representing the MaxRespirationRate field - - - - Set MaxRespirationRate field - Nullable field value to be set - - - - Retrieves the MinRespirationRate field - Returns nullable byte representing the MinRespirationRate field - - - - Set MinRespirationRate field - Nullable field value to be set - - - - Retrieves the TrainingLoadPeak field - Returns nullable float representing the TrainingLoadPeak field - - - - Set TrainingLoadPeak field - Nullable field value to be set - - - - Retrieves the EnhancedAvgRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedAvgRespirationRate field - - - - Set EnhancedAvgRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the EnhancedMaxRespirationRate field - Units: Breaths/min - Returns nullable float representing the EnhancedMaxRespirationRate field - - - - Set EnhancedMaxRespirationRate field - Units: Breaths/min - Nullable field value to be set - - - - Retrieves the EnhancedMinRespirationRate field - Returns nullable float representing the EnhancedMinRespirationRate field - - - - Set EnhancedMinRespirationRate field - Nullable field value to be set - - - - Retrieves the TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the TotalGrit field - - - - Set TotalGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the TotalFlow field - - - - Set TotalFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the JumpCount field - Returns nullable ushort representing the JumpCount field - - - - Set JumpCount field - Nullable field value to be set - - - - Retrieves the AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Returns nullable float representing the AvgGrit field - - - - Set AvgGrit field - Units: kGrit - Comment: The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. - Nullable field value to be set - - - - Retrieves the AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Returns nullable float representing the AvgFlow field - - - - Set AvgFlow field - Units: Flow - Comment: The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. - Nullable field value to be set - - - - Retrieves the TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Returns nullable float representing the TotalFractionalAscent field - - - - Set TotalFractionalAscent field - Units: m - Comment: fractional part of total_ascent - Nullable field value to be set - - - - Retrieves the TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Returns nullable float representing the TotalFractionalDescent field - - - - Set TotalFractionalDescent field - Units: m - Comment: fractional part of total_descent - Nullable field value to be set - - - - Retrieves the AvgCoreTemperature field - Units: C - Returns nullable float representing the AvgCoreTemperature field - - - - Set AvgCoreTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MinCoreTemperature field - Units: C - Returns nullable float representing the MinCoreTemperature field - - - - Set MinCoreTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the MaxCoreTemperature field - Units: C - Returns nullable float representing the MaxCoreTemperature field - - - - Set MaxCoreTemperature field - Units: C - Nullable field value to be set - - - - Implements the Set profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Comment: Timestamp of the set - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Comment: Timestamp of the set - Nullable field value to be set - - - - Retrieves the Duration field - Units: s - Returns nullable float representing the Duration field - - - - Set Duration field - Units: s - Nullable field value to be set - - - - Retrieves the Repetitions field - Comment: # of repitions of the movement - Returns nullable ushort representing the Repetitions field - - - - Set Repetitions field - Comment: # of repitions of the movement - Nullable field value to be set - - - - Retrieves the Weight field - Units: kg - Comment: Amount of weight applied for the set - Returns nullable float representing the Weight field - - - - Set Weight field - Units: kg - Comment: Amount of weight applied for the set - Nullable field value to be set - - - - Retrieves the SetType field - Returns nullable byte representing the SetType field - - - - Set SetType field - Nullable field value to be set - - - - Retrieves the StartTime field - Comment: Start time of the set - Returns DateTime representing the StartTime field - - - - Set StartTime field - Comment: Start time of the set - Nullable field value to be set - - - - - - returns number of elements in field Category - - - - Retrieves the Category field - 0 based index of Category element to retrieve - Returns nullable ushort representing the Category field - - - - Set Category field - 0 based index of category - Nullable field value to be set - - - - - - returns number of elements in field CategorySubtype - - - - Retrieves the CategorySubtype field - Comment: Based on the associated category, see [category]_exercise_names - 0 based index of CategorySubtype element to retrieve - Returns nullable ushort representing the CategorySubtype field - - - - Set CategorySubtype field - Comment: Based on the associated category, see [category]_exercise_names - 0 based index of category_subtype - Nullable field value to be set - - - - Retrieves the WeightDisplayUnit field - Returns nullable ushort representing the WeightDisplayUnit field - - - - Set WeightDisplayUnit field - Nullable field value to be set - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the WktStepIndex field - Returns nullable ushort representing the WktStepIndex field - - - - Set WktStepIndex field - Nullable field value to be set - - - - Implements the SlaveDevice profile message. - - - - - Field Numbers for - - - - - Retrieves the Manufacturer field - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Nullable field value to be set - - - - Retrieves the Product field - Returns nullable ushort representing the Product field - - - - Set Product field - Nullable field value to be set - - - - Retrieves the FaveroProduct subfield - Nullable ushort representing the FaveroProduct subfield - - - - - Set FaveroProduct subfield - Subfield value to be set - - - - Retrieves the GarminProduct subfield - Nullable ushort representing the GarminProduct subfield - - - - - Set GarminProduct subfield - Subfield value to be set - - - - Implements the Software profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Version field - Returns nullable float representing the Version field - - - - Set Version field - Nullable field value to be set - - - - Retrieves the PartNumber field - Returns byte[] representing the PartNumber field - - - - Retrieves the PartNumber field - Returns String representing the PartNumber field - - - - Set PartNumber field - field value to be set - - - - Set PartNumber field - field value to be set - - - - Implements the SpeedZone profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the HighValue field - Units: m/s - Returns nullable float representing the HighValue field - - - - Set HighValue field - Units: m/s - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Implements the Split profile message. - - - - - Field Numbers for - - - - - Retrieves the SplitType field - Returns nullable SplitType enum representing the SplitType field - - - - Set SplitType field - Nullable field value to be set - - - - Retrieves the TotalElapsedTime field - Units: s - Returns nullable float representing the TotalElapsedTime field - - - - Set TotalElapsedTime field - Units: s - Nullable field value to be set - - - - Retrieves the TotalTimerTime field - Units: s - Returns nullable float representing the TotalTimerTime field - - - - Set TotalTimerTime field - Units: s - Nullable field value to be set - - - - Retrieves the TotalDistance field - Units: m - Returns nullable float representing the TotalDistance field - - - - Set TotalDistance field - Units: m - Nullable field value to be set - - - - Retrieves the StartTime field - Returns DateTime representing the StartTime field - - - - Set StartTime field - Nullable field value to be set - - - - Implements the Sport profile message. - - - - - Field Numbers for - - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the Name field - Returns byte[] representing the Name field - - - - Retrieves the Name field - Returns String representing the Name field - - - - Set Name field - field value to be set - - - - Set Name field - field value to be set - - - - Implements the StressLevel profile message. - - - - - Field Numbers for - - - - - Retrieves the StressLevelValue field - Returns nullable short representing the StressLevelValue field - - - - Set StressLevelValue field - Nullable field value to be set - - - - Retrieves the StressLevelTime field - Units: s - Comment: Time stress score was calculated - Returns DateTime representing the StressLevelTime field - - - - Set StressLevelTime field - Units: s - Comment: Time stress score was calculated - Nullable field value to be set - - - - Implements the ThreeDSensorCalibration profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the SensorType field - Comment: Indicates which sensor the calibration is for - Returns nullable SensorType enum representing the SensorType field - - - - Set SensorType field - Comment: Indicates which sensor the calibration is for - Nullable field value to be set - - - - Retrieves the CalibrationFactor field - Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - Returns nullable uint representing the CalibrationFactor field - - - - Set CalibrationFactor field - Comment: Calibration factor used to convert from raw ADC value to degrees, g, etc. - Nullable field value to be set - - - - Retrieves the AccelCalFactor subfield - Units: g - Comment: Accelerometer calibration factor - Nullable uint representing the AccelCalFactor subfield - - - - - Set AccelCalFactor subfield - Units: g - Comment: Accelerometer calibration factor - Subfield value to be set - - - - Retrieves the GyroCalFactor subfield - Units: deg/s - Comment: Gyro calibration factor - Nullable uint representing the GyroCalFactor subfield - - - - - Set GyroCalFactor subfield - Units: deg/s - Comment: Gyro calibration factor - Subfield value to be set - - - - Retrieves the CalibrationDivisor field - Units: counts - Comment: Calibration factor divisor - Returns nullable uint representing the CalibrationDivisor field - - - - Set CalibrationDivisor field - Units: counts - Comment: Calibration factor divisor - Nullable field value to be set - - - - Retrieves the LevelShift field - Comment: Level shift value used to shift the ADC value back into range - Returns nullable uint representing the LevelShift field - - - - Set LevelShift field - Comment: Level shift value used to shift the ADC value back into range - Nullable field value to be set - - - - - - returns number of elements in field OffsetCal - - - - Retrieves the OffsetCal field - Comment: Internal calibration factors, one for each: xy, yx, zx - 0 based index of OffsetCal element to retrieve - Returns nullable int representing the OffsetCal field - - - - Set OffsetCal field - Comment: Internal calibration factors, one for each: xy, yx, zx - 0 based index of offset_cal - Nullable field value to be set - - - - - - returns number of elements in field OrientationMatrix - - - - Retrieves the OrientationMatrix field - Comment: 3 x 3 rotation matrix (row major) - 0 based index of OrientationMatrix element to retrieve - Returns nullable float representing the OrientationMatrix field - - - - Set OrientationMatrix field - Comment: 3 x 3 rotation matrix (row major) - 0 based index of orientation_matrix - Nullable field value to be set - - - - Implements the TimeInZone profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the ReferenceMesg field - Returns nullable ushort representing the ReferenceMesg field - - - - Set ReferenceMesg field - Nullable field value to be set - - - - Retrieves the ReferenceIndex field - Returns nullable ushort representing the ReferenceIndex field - - - - Set ReferenceIndex field - Nullable field value to be set - - - - - - returns number of elements in field TimeInHrZone - - - - Retrieves the TimeInHrZone field - Units: s - 0 based index of TimeInHrZone element to retrieve - Returns nullable float representing the TimeInHrZone field - - - - Set TimeInHrZone field - Units: s - 0 based index of time_in_hr_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInSpeedZone - - - - Retrieves the TimeInSpeedZone field - Units: s - 0 based index of TimeInSpeedZone element to retrieve - Returns nullable float representing the TimeInSpeedZone field - - - - Set TimeInSpeedZone field - Units: s - 0 based index of time_in_speed_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInCadenceZone - - - - Retrieves the TimeInCadenceZone field - Units: s - 0 based index of TimeInCadenceZone element to retrieve - Returns nullable float representing the TimeInCadenceZone field - - - - Set TimeInCadenceZone field - Units: s - 0 based index of time_in_cadence_zone - Nullable field value to be set - - - - - - returns number of elements in field TimeInPowerZone - - - - Retrieves the TimeInPowerZone field - Units: s - 0 based index of TimeInPowerZone element to retrieve - Returns nullable float representing the TimeInPowerZone field - - - - Set TimeInPowerZone field - Units: s - 0 based index of time_in_power_zone - Nullable field value to be set - - - - - - returns number of elements in field HrZoneHighBoundary - - - - Retrieves the HrZoneHighBoundary field - Units: bpm - 0 based index of HrZoneHighBoundary element to retrieve - Returns nullable byte representing the HrZoneHighBoundary field - - - - Set HrZoneHighBoundary field - Units: bpm - 0 based index of hr_zone_high_boundary - Nullable field value to be set - - - - - - returns number of elements in field SpeedZoneHighBoundary - - - - Retrieves the SpeedZoneHighBoundary field - Units: m/s - 0 based index of SpeedZoneHighBoundary element to retrieve - Returns nullable float representing the SpeedZoneHighBoundary field - - - - Set SpeedZoneHighBoundary field - Units: m/s - 0 based index of speed_zone_high_boundary - Nullable field value to be set - - - - - - returns number of elements in field CadenceZoneHighBondary - - - - Retrieves the CadenceZoneHighBondary field - Units: rpm - 0 based index of CadenceZoneHighBondary element to retrieve - Returns nullable byte representing the CadenceZoneHighBondary field - - - - Set CadenceZoneHighBondary field - Units: rpm - 0 based index of cadence_zone_high_bondary - Nullable field value to be set - - - - - - returns number of elements in field PowerZoneHighBoundary - - - - Retrieves the PowerZoneHighBoundary field - Units: watts - 0 based index of PowerZoneHighBoundary element to retrieve - Returns nullable ushort representing the PowerZoneHighBoundary field - - - - Set PowerZoneHighBoundary field - Units: watts - 0 based index of power_zone_high_boundary - Nullable field value to be set - - - - Retrieves the HrCalcType field - Returns nullable HrZoneCalc enum representing the HrCalcType field - - - - Set HrCalcType field - Nullable field value to be set - - - - Retrieves the MaxHeartRate field - Returns nullable byte representing the MaxHeartRate field - - - - Set MaxHeartRate field - Nullable field value to be set - - - - Retrieves the RestingHeartRate field - Returns nullable byte representing the RestingHeartRate field - - - - Set RestingHeartRate field - Nullable field value to be set - - - - Retrieves the ThresholdHeartRate field - Returns nullable byte representing the ThresholdHeartRate field - - - - Set ThresholdHeartRate field - Nullable field value to be set - - - - Retrieves the PwrCalcType field - Returns nullable PwrZoneCalc enum representing the PwrCalcType field - - - - Set PwrCalcType field - Nullable field value to be set - - - - Retrieves the FunctionalThresholdPower field - Returns nullable ushort representing the FunctionalThresholdPower field - - - - Set FunctionalThresholdPower field - Nullable field value to be set - - - - Implements the TimestampCorrelation profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of UTC timestamp at the time the system timestamp was recorded. - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of UTC timestamp at the time the system timestamp was recorded. - Nullable field value to be set - - - - Retrieves the FractionalTimestamp field - Units: s - Comment: Fractional part of the UTC timestamp at the time the system timestamp was recorded. - Returns nullable float representing the FractionalTimestamp field - - - - Set FractionalTimestamp field - Units: s - Comment: Fractional part of the UTC timestamp at the time the system timestamp was recorded. - Nullable field value to be set - - - - Retrieves the SystemTimestamp field - Units: s - Comment: Whole second part of the system timestamp - Returns DateTime representing the SystemTimestamp field - - - - Set SystemTimestamp field - Units: s - Comment: Whole second part of the system timestamp - Nullable field value to be set - - - - Retrieves the FractionalSystemTimestamp field - Units: s - Comment: Fractional part of the system timestamp - Returns nullable float representing the FractionalSystemTimestamp field - - - - Set FractionalSystemTimestamp field - Units: s - Comment: Fractional part of the system timestamp - Nullable field value to be set - - - - Retrieves the LocalTimestamp field - Units: s - Comment: timestamp epoch expressed in local time used to convert timestamps to local time - Returns nullable uint representing the LocalTimestamp field - - - - Set LocalTimestamp field - Units: s - Comment: timestamp epoch expressed in local time used to convert timestamps to local time - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the UTC timestamp at the time the system timestamp was recorded. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the UTC timestamp at the time the system timestamp was recorded. - Nullable field value to be set - - - - Retrieves the SystemTimestampMs field - Units: ms - Comment: Millisecond part of the system timestamp - Returns nullable ushort representing the SystemTimestampMs field - - - - Set SystemTimestampMs field - Units: ms - Comment: Millisecond part of the system timestamp - Nullable field value to be set - - - - Implements the Totals profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the TimerTime field - Units: s - Comment: Excludes pauses - Returns nullable uint representing the TimerTime field - - - - Set TimerTime field - Units: s - Comment: Excludes pauses - Nullable field value to be set - - - - Retrieves the Distance field - Units: m - Returns nullable uint representing the Distance field - - - - Set Distance field - Units: m - Nullable field value to be set - - - - Retrieves the Calories field - Units: kcal - Returns nullable uint representing the Calories field - - - - Set Calories field - Units: kcal - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the ElapsedTime field - Units: s - Comment: Includes pauses - Returns nullable uint representing the ElapsedTime field - - - - Set ElapsedTime field - Units: s - Comment: Includes pauses - Nullable field value to be set - - - - Retrieves the Sessions field - Returns nullable ushort representing the Sessions field - - - - Set Sessions field - Nullable field value to be set - - - - Retrieves the ActiveTime field - Units: s - Returns nullable uint representing the ActiveTime field - - - - Set ActiveTime field - Units: s - Nullable field value to be set - - - - Retrieves the SportIndex field - Returns nullable byte representing the SportIndex field - - - - Set SportIndex field - Nullable field value to be set - - - - Implements the TrainingFile profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the Type field - Returns nullable File enum representing the Type field - - - - Set Type field - Nullable field value to be set - - - - Retrieves the Manufacturer field - Returns nullable ushort representing the Manufacturer field - - - - Set Manufacturer field - Nullable field value to be set - - - - Retrieves the Product field - Returns nullable ushort representing the Product field - - - - Set Product field - Nullable field value to be set - - - - Retrieves the FaveroProduct subfield - Nullable ushort representing the FaveroProduct subfield - - - - - Set FaveroProduct subfield - Subfield value to be set - - - - Retrieves the GarminProduct subfield - Nullable ushort representing the GarminProduct subfield - - - - - Set GarminProduct subfield - Subfield value to be set - - - - Retrieves the SerialNumber field - Returns nullable uint representing the SerialNumber field - - - - Set SerialNumber field - Nullable field value to be set - - - - Retrieves the TimeCreated field - Returns DateTime representing the TimeCreated field - - - - Set TimeCreated field - Nullable field value to be set - - - - Implements the UserProfile profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the FriendlyName field - Returns byte[] representing the FriendlyName field - - - - Retrieves the FriendlyName field - Returns String representing the FriendlyName field - - - - Set FriendlyName field - field value to be set - - - - Set FriendlyName field - field value to be set - - - - Retrieves the Gender field - Returns nullable Gender enum representing the Gender field - - - - Set Gender field - Nullable field value to be set - - - - Retrieves the Age field - Units: years - Returns nullable byte representing the Age field - - - - Set Age field - Units: years - Nullable field value to be set - - - - Retrieves the Height field - Units: m - Returns nullable float representing the Height field - - - - Set Height field - Units: m - Nullable field value to be set - - - - Retrieves the Weight field - Units: kg - Returns nullable float representing the Weight field - - - - Set Weight field - Units: kg - Nullable field value to be set - - - - Retrieves the Language field - Returns nullable Language enum representing the Language field - - - - Set Language field - Nullable field value to be set - - - - Retrieves the ElevSetting field - Returns nullable DisplayMeasure enum representing the ElevSetting field - - - - Set ElevSetting field - Nullable field value to be set - - - - Retrieves the WeightSetting field - Returns nullable DisplayMeasure enum representing the WeightSetting field - - - - Set WeightSetting field - Nullable field value to be set - - - - Retrieves the RestingHeartRate field - Units: bpm - Returns nullable byte representing the RestingHeartRate field - - - - Set RestingHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the DefaultMaxRunningHeartRate field - Units: bpm - Returns nullable byte representing the DefaultMaxRunningHeartRate field - - - - Set DefaultMaxRunningHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the DefaultMaxBikingHeartRate field - Units: bpm - Returns nullable byte representing the DefaultMaxBikingHeartRate field - - - - Set DefaultMaxBikingHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the DefaultMaxHeartRate field - Units: bpm - Returns nullable byte representing the DefaultMaxHeartRate field - - - - Set DefaultMaxHeartRate field - Units: bpm - Nullable field value to be set - - - - Retrieves the HrSetting field - Returns nullable DisplayHeart enum representing the HrSetting field - - - - Set HrSetting field - Nullable field value to be set - - - - Retrieves the SpeedSetting field - Returns nullable DisplayMeasure enum representing the SpeedSetting field - - - - Set SpeedSetting field - Nullable field value to be set - - - - Retrieves the DistSetting field - Returns nullable DisplayMeasure enum representing the DistSetting field - - - - Set DistSetting field - Nullable field value to be set - - - - Retrieves the PowerSetting field - Returns nullable DisplayPower enum representing the PowerSetting field - - - - Set PowerSetting field - Nullable field value to be set - - - - Retrieves the ActivityClass field - Returns nullable ActivityClass enum representing the ActivityClass field - - - - Set ActivityClass field - Nullable field value to be set - - - - Retrieves the PositionSetting field - Returns nullable DisplayPosition enum representing the PositionSetting field - - - - Set PositionSetting field - Nullable field value to be set - - - - Retrieves the TemperatureSetting field - Returns nullable DisplayMeasure enum representing the TemperatureSetting field - - - - Set TemperatureSetting field - Nullable field value to be set - - - - Retrieves the LocalId field - Returns nullable ushort representing the LocalId field - - - - Set LocalId field - Nullable field value to be set - - - - - - returns number of elements in field GlobalId - - - - Retrieves the GlobalId field - 0 based index of GlobalId element to retrieve - Returns nullable byte representing the GlobalId field - - - - Set GlobalId field - 0 based index of global_id - Nullable field value to be set - - - - Retrieves the WakeTime field - Comment: Typical wake time - Returns nullable uint representing the WakeTime field - - - - Set WakeTime field - Comment: Typical wake time - Nullable field value to be set - - - - Retrieves the SleepTime field - Comment: Typical bed time - Returns nullable uint representing the SleepTime field - - - - Set SleepTime field - Comment: Typical bed time - Nullable field value to be set - - - - Retrieves the HeightSetting field - Returns nullable DisplayMeasure enum representing the HeightSetting field - - - - Set HeightSetting field - Nullable field value to be set - - - - Retrieves the UserRunningStepLength field - Units: m - Comment: User defined running step length set to 0 for auto length - Returns nullable float representing the UserRunningStepLength field - - - - Set UserRunningStepLength field - Units: m - Comment: User defined running step length set to 0 for auto length - Nullable field value to be set - - - - Retrieves the UserWalkingStepLength field - Units: m - Comment: User defined walking step length set to 0 for auto length - Returns nullable float representing the UserWalkingStepLength field - - - - Set UserWalkingStepLength field - Units: m - Comment: User defined walking step length set to 0 for auto length - Nullable field value to be set - - - - Retrieves the DepthSetting field - Returns nullable DisplayMeasure enum representing the DepthSetting field - - - - Set DepthSetting field - Nullable field value to be set - - - - Retrieves the DiveCount field - Returns nullable uint representing the DiveCount field - - - - Set DiveCount field - Nullable field value to be set - - - - Implements the VideoClip profile message. - - - - - Field Numbers for - - - - - Retrieves the ClipNumber field - Returns nullable ushort representing the ClipNumber field - - - - Set ClipNumber field - Nullable field value to be set - - - - Retrieves the StartTimestamp field - Returns DateTime representing the StartTimestamp field - - - - Set StartTimestamp field - Nullable field value to be set - - - - Retrieves the StartTimestampMs field - Returns nullable ushort representing the StartTimestampMs field - - - - Set StartTimestampMs field - Nullable field value to be set - - - - Retrieves the EndTimestamp field - Returns DateTime representing the EndTimestamp field - - - - Set EndTimestamp field - Nullable field value to be set - - - - Retrieves the EndTimestampMs field - Returns nullable ushort representing the EndTimestampMs field - - - - Set EndTimestampMs field - Nullable field value to be set - - - - Retrieves the ClipStart field - Units: ms - Comment: Start of clip in video time - Returns nullable uint representing the ClipStart field - - - - Set ClipStart field - Units: ms - Comment: Start of clip in video time - Nullable field value to be set - - - - Retrieves the ClipEnd field - Units: ms - Comment: End of clip in video time - Returns nullable uint representing the ClipEnd field - - - - Set ClipEnd field - Units: ms - Comment: End of clip in video time - Nullable field value to be set - - - - Implements the VideoDescription profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Comment: Long descriptions will be split into multiple parts - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Comment: Long descriptions will be split into multiple parts - Nullable field value to be set - - - - Retrieves the MessageCount field - Comment: Total number of description parts - Returns nullable ushort representing the MessageCount field - - - - Set MessageCount field - Comment: Total number of description parts - Nullable field value to be set - - - - Retrieves the Text field - Returns byte[] representing the Text field - - - - Retrieves the Text field - Returns String representing the Text field - - - - Set Text field - field value to be set - - - - Set Text field - field value to be set - - - - Implements the VideoFrame profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Comment: Whole second part of the timestamp - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Comment: Whole second part of the timestamp - Nullable field value to be set - - - - Retrieves the TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Returns nullable ushort representing the TimestampMs field - - - - Set TimestampMs field - Units: ms - Comment: Millisecond part of the timestamp. - Nullable field value to be set - - - - Retrieves the FrameNumber field - Comment: Number of the frame that the timestamp and timestamp_ms correlate to - Returns nullable uint representing the FrameNumber field - - - - Set FrameNumber field - Comment: Number of the frame that the timestamp and timestamp_ms correlate to - Nullable field value to be set - - - - Implements the Video profile message. - - - - - Field Numbers for - - - - - Retrieves the Url field - Returns byte[] representing the Url field - - - - Retrieves the Url field - Returns String representing the Url field - - - - Set Url field - field value to be set - - - - Set Url field - field value to be set - - - - Retrieves the HostingProvider field - Returns byte[] representing the HostingProvider field - - - - Retrieves the HostingProvider field - Returns String representing the HostingProvider field - - - - Set HostingProvider field - field value to be set - - - - Set HostingProvider field - field value to be set - - - - Retrieves the Duration field - Units: ms - Comment: Playback time of video - Returns nullable uint representing the Duration field - - - - Set Duration field - Units: ms - Comment: Playback time of video - Nullable field value to be set - - - - Implements the VideoTitle profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Comment: Long titles will be split into multiple parts - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Comment: Long titles will be split into multiple parts - Nullable field value to be set - - - - Retrieves the MessageCount field - Comment: Total number of title parts - Returns nullable ushort representing the MessageCount field - - - - Set MessageCount field - Comment: Total number of title parts - Nullable field value to be set - - - - Retrieves the Text field - Returns byte[] representing the Text field - - - - Retrieves the Text field - Returns String representing the Text field - - - - Set Text field - field value to be set - - - - Set Text field - field value to be set - - - - Implements the WatchfaceSettings profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Mode field - Returns nullable WatchfaceMode enum representing the Mode field - - - - Set Mode field - Nullable field value to be set - - - - Retrieves the Layout field - Returns nullable byte representing the Layout field - - - - Set Layout field - Nullable field value to be set - - - - Retrieves the DigitalLayout subfield - Nullable DigitalWatchfaceLayout enum representing the DigitalLayout subfield - - - - - Set DigitalLayout subfield - Subfield value to be set - - - - Retrieves the AnalogLayout subfield - Nullable AnalogWatchfaceLayout enum representing the AnalogLayout subfield - - - - - Set AnalogLayout subfield - Subfield value to be set - - - - Implements the WeatherAlert profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Nullable field value to be set - - - - Retrieves the ReportId field - Comment: Unique identifier from GCS report ID string, length is 12 - Returns byte[] representing the ReportId field - - - - Retrieves the ReportId field - Comment: Unique identifier from GCS report ID string, length is 12 - Returns String representing the ReportId field - - - - Set ReportId field - Comment: Unique identifier from GCS report ID string, length is 12 - field value to be set - - - - Set ReportId field - Comment: Unique identifier from GCS report ID string, length is 12 - field value to be set - - - - Retrieves the IssueTime field - Comment: Time alert was issued - Returns DateTime representing the IssueTime field - - - - Set IssueTime field - Comment: Time alert was issued - Nullable field value to be set - - - - Retrieves the ExpireTime field - Comment: Time alert expires - Returns DateTime representing the ExpireTime field - - - - Set ExpireTime field - Comment: Time alert expires - Nullable field value to be set - - - - Retrieves the Severity field - Comment: Warning, Watch, Advisory, Statement - Returns nullable WeatherSeverity enum representing the Severity field - - - - Set Severity field - Comment: Warning, Watch, Advisory, Statement - Nullable field value to be set - - - - Retrieves the Type field - Comment: Tornado, Severe Thunderstorm, etc. - Returns nullable WeatherSevereType enum representing the Type field - - - - Set Type field - Comment: Tornado, Severe Thunderstorm, etc. - Nullable field value to be set - - - - Implements the WeatherConditions profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Comment: time of update for current conditions, else forecast time - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Comment: time of update for current conditions, else forecast time - Nullable field value to be set - - - - Retrieves the WeatherReport field - Comment: Current or forecast - Returns nullable WeatherReport enum representing the WeatherReport field - - - - Set WeatherReport field - Comment: Current or forecast - Nullable field value to be set - - - - Retrieves the Temperature field - Units: C - Returns nullable sbyte representing the Temperature field - - - - Set Temperature field - Units: C - Nullable field value to be set - - - - Retrieves the Condition field - Comment: Corresponds to GSC Response weatherIcon field - Returns nullable WeatherStatus enum representing the Condition field - - - - Set Condition field - Comment: Corresponds to GSC Response weatherIcon field - Nullable field value to be set - - - - Retrieves the WindDirection field - Units: degrees - Returns nullable ushort representing the WindDirection field - - - - Set WindDirection field - Units: degrees - Nullable field value to be set - - - - Retrieves the WindSpeed field - Units: m/s - Returns nullable float representing the WindSpeed field - - - - Set WindSpeed field - Units: m/s - Nullable field value to be set - - - - Retrieves the PrecipitationProbability field - Comment: range 0-100 - Returns nullable byte representing the PrecipitationProbability field - - - - Set PrecipitationProbability field - Comment: range 0-100 - Nullable field value to be set - - - - Retrieves the TemperatureFeelsLike field - Units: C - Comment: Heat Index if GCS heatIdx above or equal to 90F or wind chill if GCS windChill below or equal to 32F - Returns nullable sbyte representing the TemperatureFeelsLike field - - - - Set TemperatureFeelsLike field - Units: C - Comment: Heat Index if GCS heatIdx above or equal to 90F or wind chill if GCS windChill below or equal to 32F - Nullable field value to be set - - - - Retrieves the RelativeHumidity field - Returns nullable byte representing the RelativeHumidity field - - - - Set RelativeHumidity field - Nullable field value to be set - - - - Retrieves the Location field - Comment: string corresponding to GCS response location string - Returns byte[] representing the Location field - - - - Retrieves the Location field - Comment: string corresponding to GCS response location string - Returns String representing the Location field - - - - Set Location field - Comment: string corresponding to GCS response location string - field value to be set - - - - Set Location field - Comment: string corresponding to GCS response location string - field value to be set - - - - Retrieves the ObservedAtTime field - Returns DateTime representing the ObservedAtTime field - - - - Set ObservedAtTime field - Nullable field value to be set - - - - Retrieves the ObservedLocationLat field - Units: semicircles - Returns nullable int representing the ObservedLocationLat field - - - - Set ObservedLocationLat field - Units: semicircles - Nullable field value to be set - - - - Retrieves the ObservedLocationLong field - Units: semicircles - Returns nullable int representing the ObservedLocationLong field - - - - Set ObservedLocationLong field - Units: semicircles - Nullable field value to be set - - - - Retrieves the DayOfWeek field - Returns nullable DayOfWeek enum representing the DayOfWeek field - - - - Set DayOfWeek field - Nullable field value to be set - - - - Retrieves the HighTemperature field - Units: C - Returns nullable sbyte representing the HighTemperature field - - - - Set HighTemperature field - Units: C - Nullable field value to be set - - - - Retrieves the LowTemperature field - Units: C - Returns nullable sbyte representing the LowTemperature field - - - - Set LowTemperature field - Units: C - Nullable field value to be set - - - - Implements the WeightScale profile message. - - - - - Field Numbers for - - - - - Retrieves the Timestamp field - Units: s - Returns DateTime representing the Timestamp field - - - - Set Timestamp field - Units: s - Nullable field value to be set - - - - Retrieves the Weight field - Units: kg - Returns nullable float representing the Weight field - - - - Set Weight field - Units: kg - Nullable field value to be set - - - - Retrieves the PercentFat field - Units: % - Returns nullable float representing the PercentFat field - - - - Set PercentFat field - Units: % - Nullable field value to be set - - - - Retrieves the PercentHydration field - Units: % - Returns nullable float representing the PercentHydration field - - - - Set PercentHydration field - Units: % - Nullable field value to be set - - - - Retrieves the VisceralFatMass field - Units: kg - Returns nullable float representing the VisceralFatMass field - - - - Set VisceralFatMass field - Units: kg - Nullable field value to be set - - - - Retrieves the BoneMass field - Units: kg - Returns nullable float representing the BoneMass field - - - - Set BoneMass field - Units: kg - Nullable field value to be set - - - - Retrieves the MuscleMass field - Units: kg - Returns nullable float representing the MuscleMass field - - - - Set MuscleMass field - Units: kg - Nullable field value to be set - - - - Retrieves the BasalMet field - Units: kcal/day - Returns nullable float representing the BasalMet field - - - - Set BasalMet field - Units: kcal/day - Nullable field value to be set - - - - Retrieves the PhysiqueRating field - Returns nullable byte representing the PhysiqueRating field - - - - Set PhysiqueRating field - Nullable field value to be set - - - - Retrieves the ActiveMet field - Units: kcal/day - Comment: ~4kJ per kcal, 0.25 allows max 16384 kcal - Returns nullable float representing the ActiveMet field - - - - Set ActiveMet field - Units: kcal/day - Comment: ~4kJ per kcal, 0.25 allows max 16384 kcal - Nullable field value to be set - - - - Retrieves the MetabolicAge field - Units: years - Returns nullable byte representing the MetabolicAge field - - - - Set MetabolicAge field - Units: years - Nullable field value to be set - - - - Retrieves the VisceralFatRating field - Returns nullable byte representing the VisceralFatRating field - - - - Set VisceralFatRating field - Nullable field value to be set - - - - Retrieves the UserProfileIndex field - Comment: Associates this weight scale message to a user. This corresponds to the index of the user profile message in the weight scale file. - Returns nullable ushort representing the UserProfileIndex field - - - - Set UserProfileIndex field - Comment: Associates this weight scale message to a user. This corresponds to the index of the user profile message in the weight scale file. - Nullable field value to be set - - - - Implements the Workout profile message. - - - - - Field Numbers for - - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the Capabilities field - Returns nullable uint representing the Capabilities field - - - - Set Capabilities field - Nullable field value to be set - - - - Retrieves the NumValidSteps field - Comment: number of valid steps - Returns nullable ushort representing the NumValidSteps field - - - - Set NumValidSteps field - Comment: number of valid steps - Nullable field value to be set - - - - Retrieves the WktName field - Returns byte[] representing the WktName field - - - - Retrieves the WktName field - Returns String representing the WktName field - - - - Set WktName field - field value to be set - - - - Set WktName field - field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the PoolLength field - Units: m - Returns nullable float representing the PoolLength field - - - - Set PoolLength field - Units: m - Nullable field value to be set - - - - Retrieves the PoolLengthUnit field - Returns nullable DisplayMeasure enum representing the PoolLengthUnit field - - - - Set PoolLengthUnit field - Nullable field value to be set - - - - Implements the WorkoutSession profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the Sport field - Returns nullable Sport enum representing the Sport field - - - - Set Sport field - Nullable field value to be set - - - - Retrieves the SubSport field - Returns nullable SubSport enum representing the SubSport field - - - - Set SubSport field - Nullable field value to be set - - - - Retrieves the NumValidSteps field - Returns nullable ushort representing the NumValidSteps field - - - - Set NumValidSteps field - Nullable field value to be set - - - - Retrieves the FirstStepIndex field - Returns nullable ushort representing the FirstStepIndex field - - - - Set FirstStepIndex field - Nullable field value to be set - - - - Retrieves the PoolLength field - Units: m - Returns nullable float representing the PoolLength field - - - - Set PoolLength field - Units: m - Nullable field value to be set - - - - Retrieves the PoolLengthUnit field - Returns nullable DisplayMeasure enum representing the PoolLengthUnit field - - - - Set PoolLengthUnit field - Nullable field value to be set - - - - Implements the WorkoutStep profile message. - - - - - Field Numbers for - - - - - Retrieves the MessageIndex field - Returns nullable ushort representing the MessageIndex field - - - - Set MessageIndex field - Nullable field value to be set - - - - Retrieves the WktStepName field - Returns byte[] representing the WktStepName field - - - - Retrieves the WktStepName field - Returns String representing the WktStepName field - - - - Set WktStepName field - field value to be set - - - - Set WktStepName field - field value to be set - - - - Retrieves the DurationType field - Returns nullable WktStepDuration enum representing the DurationType field - - - - Set DurationType field - Nullable field value to be set - - - - Retrieves the DurationValue field - Returns nullable uint representing the DurationValue field - - - - Set DurationValue field - Nullable field value to be set - - - - Retrieves the DurationTime subfield - Units: s - Nullable float representing the DurationTime subfield - - - - - Set DurationTime subfield - Units: s - Subfield value to be set - - - - Retrieves the DurationDistance subfield - Units: m - Nullable float representing the DurationDistance subfield - - - - - Set DurationDistance subfield - Units: m - Subfield value to be set - - - - Retrieves the DurationHr subfield - Units: % or bpm - Nullable uint representing the DurationHr subfield - - - - - Set DurationHr subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the DurationCalories subfield - Units: calories - Nullable uint representing the DurationCalories subfield - - - - - Set DurationCalories subfield - Units: calories - Subfield value to be set - - - - Retrieves the DurationStep subfield - Comment: message_index of step to loop back to. Steps are assumed to be in the order by message_index. custom_name and intensity members are undefined for this duration type. - Nullable uint representing the DurationStep subfield - - - - - Set DurationStep subfield - Comment: message_index of step to loop back to. Steps are assumed to be in the order by message_index. custom_name and intensity members are undefined for this duration type. - Subfield value to be set - - - - Retrieves the DurationPower subfield - Units: % or watts - Nullable uint representing the DurationPower subfield - - - - - Set DurationPower subfield - Units: % or watts - Subfield value to be set - - - - Retrieves the DurationReps subfield - Nullable uint representing the DurationReps subfield - - - - - Set DurationReps subfield - Subfield value to be set - - - - Retrieves the TargetType field - Returns nullable WktStepTarget enum representing the TargetType field - - - - Set TargetType field - Nullable field value to be set - - - - Retrieves the TargetValue field - Returns nullable uint representing the TargetValue field - - - - Set TargetValue field - Nullable field value to be set - - - - Retrieves the TargetSpeedZone subfield - Comment: speed zone (1-10);Custom =0; - Nullable uint representing the TargetSpeedZone subfield - - - - - Set TargetSpeedZone subfield - Comment: speed zone (1-10);Custom =0; - Subfield value to be set - - - - Retrieves the TargetHrZone subfield - Comment: hr zone (1-5);Custom =0; - Nullable uint representing the TargetHrZone subfield - - - - - Set TargetHrZone subfield - Comment: hr zone (1-5);Custom =0; - Subfield value to be set - - - - Retrieves the TargetCadenceZone subfield - Comment: Zone (1-?); Custom = 0; - Nullable uint representing the TargetCadenceZone subfield - - - - - Set TargetCadenceZone subfield - Comment: Zone (1-?); Custom = 0; - Subfield value to be set - - - - Retrieves the TargetPowerZone subfield - Comment: Power Zone ( 1-7); Custom = 0; - Nullable uint representing the TargetPowerZone subfield - - - - - Set TargetPowerZone subfield - Comment: Power Zone ( 1-7); Custom = 0; - Subfield value to be set - - - - Retrieves the RepeatSteps subfield - Comment: # of repetitions - Nullable uint representing the RepeatSteps subfield - - - - - Set RepeatSteps subfield - Comment: # of repetitions - Subfield value to be set - - - - Retrieves the RepeatTime subfield - Units: s - Nullable float representing the RepeatTime subfield - - - - - Set RepeatTime subfield - Units: s - Subfield value to be set - - - - Retrieves the RepeatDistance subfield - Units: m - Nullable float representing the RepeatDistance subfield - - - - - Set RepeatDistance subfield - Units: m - Subfield value to be set - - - - Retrieves the RepeatCalories subfield - Units: calories - Nullable uint representing the RepeatCalories subfield - - - - - Set RepeatCalories subfield - Units: calories - Subfield value to be set - - - - Retrieves the RepeatHr subfield - Units: % or bpm - Nullable uint representing the RepeatHr subfield - - - - - Set RepeatHr subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the RepeatPower subfield - Units: % or watts - Nullable uint representing the RepeatPower subfield - - - - - Set RepeatPower subfield - Units: % or watts - Subfield value to be set - - - - Retrieves the TargetStrokeType subfield - Nullable SwimStroke enum representing the TargetStrokeType subfield - - - - - Set TargetStrokeType subfield - Subfield value to be set - - - - Retrieves the CustomTargetValueLow field - Returns nullable uint representing the CustomTargetValueLow field - - - - Set CustomTargetValueLow field - Nullable field value to be set - - - - Retrieves the CustomTargetSpeedLow subfield - Units: m/s - Nullable float representing the CustomTargetSpeedLow subfield - - - - - Set CustomTargetSpeedLow subfield - Units: m/s - Subfield value to be set - - - - Retrieves the CustomTargetHeartRateLow subfield - Units: % or bpm - Nullable uint representing the CustomTargetHeartRateLow subfield - - - - - Set CustomTargetHeartRateLow subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the CustomTargetCadenceLow subfield - Units: rpm - Nullable uint representing the CustomTargetCadenceLow subfield - - - - - Set CustomTargetCadenceLow subfield - Units: rpm - Subfield value to be set - - - - Retrieves the CustomTargetPowerLow subfield - Units: % or watts - Nullable uint representing the CustomTargetPowerLow subfield - - - - - Set CustomTargetPowerLow subfield - Units: % or watts - Subfield value to be set - - - - Retrieves the CustomTargetValueHigh field - Returns nullable uint representing the CustomTargetValueHigh field - - - - Set CustomTargetValueHigh field - Nullable field value to be set - - - - Retrieves the CustomTargetSpeedHigh subfield - Units: m/s - Nullable float representing the CustomTargetSpeedHigh subfield - - - - - Set CustomTargetSpeedHigh subfield - Units: m/s - Subfield value to be set - - - - Retrieves the CustomTargetHeartRateHigh subfield - Units: % or bpm - Nullable uint representing the CustomTargetHeartRateHigh subfield - - - - - Set CustomTargetHeartRateHigh subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the CustomTargetCadenceHigh subfield - Units: rpm - Nullable uint representing the CustomTargetCadenceHigh subfield - - - - - Set CustomTargetCadenceHigh subfield - Units: rpm - Subfield value to be set - - - - Retrieves the CustomTargetPowerHigh subfield - Units: % or watts - Nullable uint representing the CustomTargetPowerHigh subfield - - - - - Set CustomTargetPowerHigh subfield - Units: % or watts - Subfield value to be set - - - - Retrieves the Intensity field - Returns nullable Intensity enum representing the Intensity field - - - - Set Intensity field - Nullable field value to be set - - - - Retrieves the Notes field - Returns byte[] representing the Notes field - - - - Retrieves the Notes field - Returns String representing the Notes field - - - - Set Notes field - field value to be set - - - - Set Notes field - field value to be set - - - - Retrieves the Equipment field - Returns nullable WorkoutEquipment enum representing the Equipment field - - - - Set Equipment field - Nullable field value to be set - - - - Retrieves the ExerciseCategory field - Returns nullable ushort representing the ExerciseCategory field - - - - Set ExerciseCategory field - Nullable field value to be set - - - - Retrieves the ExerciseName field - Returns nullable ushort representing the ExerciseName field - - - - Set ExerciseName field - Nullable field value to be set - - - - Retrieves the ExerciseWeight field - Units: kg - Returns nullable float representing the ExerciseWeight field - - - - Set ExerciseWeight field - Units: kg - Nullable field value to be set - - - - Retrieves the WeightDisplayUnit field - Returns nullable ushort representing the WeightDisplayUnit field - - - - Set WeightDisplayUnit field - Nullable field value to be set - - - - Retrieves the SecondaryTargetType field - Returns nullable WktStepTarget enum representing the SecondaryTargetType field - - - - Set SecondaryTargetType field - Nullable field value to be set - - - - Retrieves the SecondaryTargetValue field - Returns nullable uint representing the SecondaryTargetValue field - - - - Set SecondaryTargetValue field - Nullable field value to be set - - - - Retrieves the SecondaryTargetSpeedZone subfield - Comment: speed zone (1-10);Custom =0; - Nullable uint representing the SecondaryTargetSpeedZone subfield - - - - - Set SecondaryTargetSpeedZone subfield - Comment: speed zone (1-10);Custom =0; - Subfield value to be set - - - - Retrieves the SecondaryTargetHrZone subfield - Comment: hr zone (1-5);Custom =0; - Nullable uint representing the SecondaryTargetHrZone subfield - - - - - Set SecondaryTargetHrZone subfield - Comment: hr zone (1-5);Custom =0; - Subfield value to be set - - - - Retrieves the SecondaryTargetCadenceZone subfield - Comment: Zone (1-?); Custom = 0; - Nullable uint representing the SecondaryTargetCadenceZone subfield - - - - - Set SecondaryTargetCadenceZone subfield - Comment: Zone (1-?); Custom = 0; - Subfield value to be set - - - - Retrieves the SecondaryTargetPowerZone subfield - Comment: Power Zone ( 1-7); Custom = 0; - Nullable uint representing the SecondaryTargetPowerZone subfield - - - - - Set SecondaryTargetPowerZone subfield - Comment: Power Zone ( 1-7); Custom = 0; - Subfield value to be set - - - - Retrieves the SecondaryTargetStrokeType subfield - Nullable SwimStroke enum representing the SecondaryTargetStrokeType subfield - - - - - Set SecondaryTargetStrokeType subfield - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetValueLow field - Returns nullable uint representing the SecondaryCustomTargetValueLow field - - - - Set SecondaryCustomTargetValueLow field - Nullable field value to be set - - - - Retrieves the SecondaryCustomTargetSpeedLow subfield - Units: m/s - Nullable float representing the SecondaryCustomTargetSpeedLow subfield - - - - - Set SecondaryCustomTargetSpeedLow subfield - Units: m/s - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetHeartRateLow subfield - Units: % or bpm - Nullable uint representing the SecondaryCustomTargetHeartRateLow subfield - - - - - Set SecondaryCustomTargetHeartRateLow subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetCadenceLow subfield - Units: rpm - Nullable uint representing the SecondaryCustomTargetCadenceLow subfield - - - - - Set SecondaryCustomTargetCadenceLow subfield - Units: rpm - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetPowerLow subfield - Units: % or watts - Nullable uint representing the SecondaryCustomTargetPowerLow subfield - - - - - Set SecondaryCustomTargetPowerLow subfield - Units: % or watts - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetValueHigh field - Returns nullable uint representing the SecondaryCustomTargetValueHigh field - - - - Set SecondaryCustomTargetValueHigh field - Nullable field value to be set - - - - Retrieves the SecondaryCustomTargetSpeedHigh subfield - Units: m/s - Nullable float representing the SecondaryCustomTargetSpeedHigh subfield - - - - - Set SecondaryCustomTargetSpeedHigh subfield - Units: m/s - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetHeartRateHigh subfield - Units: % or bpm - Nullable uint representing the SecondaryCustomTargetHeartRateHigh subfield - - - - - Set SecondaryCustomTargetHeartRateHigh subfield - Units: % or bpm - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetCadenceHigh subfield - Units: rpm - Nullable uint representing the SecondaryCustomTargetCadenceHigh subfield - - - - - Set SecondaryCustomTargetCadenceHigh subfield - Units: rpm - Subfield value to be set - - - - Retrieves the SecondaryCustomTargetPowerHigh subfield - Units: % or watts - Nullable uint representing the SecondaryCustomTargetPowerHigh subfield - - - - - Set SecondaryCustomTargetPowerHigh subfield - Units: % or watts - Subfield value to be set - - - - Implements the ZonesTarget profile message. - - - - - Field Numbers for - - - - - Retrieves the MaxHeartRate field - Returns nullable byte representing the MaxHeartRate field - - - - Set MaxHeartRate field - Nullable field value to be set - - - - Retrieves the ThresholdHeartRate field - Returns nullable byte representing the ThresholdHeartRate field - - - - Set ThresholdHeartRate field - Nullable field value to be set - - - - Retrieves the FunctionalThresholdPower field - Returns nullable ushort representing the FunctionalThresholdPower field - - - - Set FunctionalThresholdPower field - Nullable field value to be set - - - - Retrieves the HrCalcType field - Returns nullable HrZoneCalc enum representing the HrCalcType field - - - - Set HrCalcType field - Nullable field value to be set - - - - Retrieves the PwrCalcType field - Returns nullable PwrZoneCalc enum representing the PwrCalcType field - - - - Set PwrCalcType field - Nullable field value to be set - - - - Implements the profile Activity type as an enum - - - - - Implements the profile ActivityClass type as an enum - - - - - Implements the profile ActivityLevel type as an enum - - - - - Implements the profile ActivitySubtype type as an enum - - - - - Implements the profile ActivityType type as an enum - - - - - Implements the profile AnalogWatchfaceLayout type as an enum - - - - - Implements the profile AntNetwork type as an enum - - - - - Implements the profile AntplusDeviceType type as a class - - - - - Implements the profile AttitudeStage type as an enum - - - - - Implements the profile AttitudeValidity type as a class - - - - - Implements the profile AutoActivityDetect type as a class - - - - - Implements the profile AutolapTrigger type as an enum - - - - - Implements the profile Autoscroll type as an enum - - - - - Implements the profile AutoSyncFrequency type as an enum - - - - - Implements the profile BacklightMode type as an enum - - - - - Implements the profile BacklightTimeout type as a class - - - - - Implements the profile BatteryStatus type as a class - - - - - Implements the profile BenchPressExerciseName type as a class - - - - - Implements the profile BikeLightBeamAngleMode type as a class - - - - - Implements the profile BikeLightNetworkConfigType type as an enum - - - - - Implements the profile BleDeviceType type as a class - - - - - Implements the profile BodyLocation type as an enum - - - - - Implements the profile Bool type as an enum - - - - - Implements the profile BpStatus type as an enum - - - - - Implements the profile CalfRaiseExerciseName type as a class - - - - - Implements the profile CameraEventType type as an enum - - - - - Implements the profile CameraOrientationType type as an enum - - - - - Implements the profile CardioExerciseName type as a class - - - - - Implements the profile CarryExerciseName type as a class - - - - - Implements the profile Checksum type as a class - - - - - Implements the profile ChopExerciseName type as a class - - - - - Implements the profile ClimbProEvent type as an enum - - - - - Implements the profile CommTimeoutType type as a class - - - - - Implements the profile ConnectivityCapabilities type as a class - - - - - Implements the profile CoreExerciseName type as a class - - - - - Implements the profile CourseCapabilities type as a class - - - - - Implements the profile CoursePoint type as an enum - - - - - Implements the profile CrunchExerciseName type as a class - - - - - Implements the profile CurlExerciseName type as a class - - - - - Implements the profile DateMode type as an enum - - - - - The DateTime class implements the Fit date_time type which references - UTC 00:00 Dec 31 1989 in second resolution - - - - - Implements the profile DayOfWeek type as an enum - - - - - Implements the profile DeadliftExerciseName type as a class - - - - - Implements the profile DeviceIndex type as a class - - - - - Implements the profile DigitalWatchfaceLayout type as an enum - - - - - Implements the profile DisplayHeart type as an enum - - - - - Implements the profile DisplayMeasure type as an enum - - - - - Implements the profile DisplayOrientation type as an enum - - - - - Implements the profile DisplayPosition type as an enum - - - - - Implements the profile DisplayPower type as an enum - - - - - Implements the profile DiveAlarmType type as an enum - - - - - Implements the profile DiveBacklightMode type as an enum - - - - - Implements the profile DiveGasStatus type as an enum - - - - - Implements the profile Event type as an enum - - - - - Implements the profile EventType type as an enum - - - - - Implements the profile ExdDataUnits type as an enum - - - - - Implements the profile ExdDescriptors type as an enum - - - - - Implements the profile ExdDisplayType type as an enum - - - - - Implements the profile ExdLayout type as an enum - - - - - Implements the profile ExdQualifiers type as an enum - - - - - Implements the profile ExerciseCategory type as a class - - - - - Implements the profile FaveroProduct type as a class - - - - - Implements the profile File type as an enum - - - - - Implements the profile FileFlags type as a class - - - - - Implements the profile FitBaseType type as a class - - - - - Implements the profile FitBaseUnit type as a class - - - - - Implements the profile FitnessEquipmentState type as an enum - - - - - Implements the profile FlyeExerciseName type as a class - - - - - Implements the profile GarminProduct type as a class - - - - - Implements the profile Gender type as an enum - - - - - Implements the profile Goal type as an enum - - - - - Implements the profile GoalRecurrence type as an enum - - - - - Implements the profile GoalSource type as an enum - - - - - Implements the profile HipRaiseExerciseName type as a class - - - - - Implements the profile HipStabilityExerciseName type as a class - - - - - Implements the profile HipSwingExerciseName type as a class - - - - - Implements the profile HrType type as an enum - - - - - Implements the profile HrZoneCalc type as an enum - - - - - Implements the profile HyperextensionExerciseName type as a class - - - - - Implements the profile Intensity type as an enum - - - - - Implements the profile Language type as an enum - - - - - Implements the profile LanguageBits0 type as a class - - - - - Implements the profile LanguageBits1 type as a class - - - - - Implements the profile LanguageBits2 type as a class - - - - - Implements the profile LanguageBits3 type as a class - - - - - Implements the profile LanguageBits4 type as a class - - - - - Implements the profile LapTrigger type as an enum - - - - - Implements the profile LateralRaiseExerciseName type as a class - - - - - Implements the profile LeftRightBalance type as a class - - - - - Implements the profile LeftRightBalance100 type as a class - - - - - Implements the profile LegCurlExerciseName type as a class - - - - - Implements the profile LegRaiseExerciseName type as a class - - - - - Implements the profile LengthType type as an enum - - - - - Implements the profile LocalDateTime type as a class - - - - - Implements the profile LocalDeviceType type as a class - - - - - Implements the profile LocaltimeIntoDay type as a class - - - - - Implements the profile LungeExerciseName type as a class - - - - - Implements the profile Manufacturer type as a class - - - - - Implements the profile MesgCount type as an enum - - - - - Implements the profile MesgNum type as a class - - - - - Implements the profile MessageIndex type as a class - - - - - Implements the profile OlympicLiftExerciseName type as a class - - - - - Implements the profile PlankExerciseName type as a class - - - - - Implements the profile PlyoExerciseName type as a class - - - - - Implements the profile PowerPhaseType type as an enum - - - - - Implements the profile PullUpExerciseName type as a class - - - - - Implements the profile PushUpExerciseName type as a class - - - - - Implements the profile PwrZoneCalc type as an enum - - - - - Implements the profile RadarThreatLevelType type as an enum - - - - - Implements the profile RiderPositionType type as an enum - - - - - Implements the profile RowExerciseName type as a class - - - - - Implements the profile RunExerciseName type as a class - - - - - Implements the profile Schedule type as an enum - - - - - Implements the profile SegmentDeleteStatus type as an enum - - - - - Implements the profile SegmentLapStatus type as an enum - - - - - Implements the profile SegmentLeaderboardType type as an enum - - - - - Implements the profile SegmentSelectionType type as an enum - - - - - Implements the profile SensorType type as an enum - - - - - Implements the profile SessionTrigger type as an enum - - - - - Implements the profile SetType type as a class - - - - - Implements the profile ShoulderPressExerciseName type as a class - - - - - Implements the profile ShoulderStabilityExerciseName type as a class - - - - - Implements the profile ShrugExerciseName type as a class - - - - - Implements the profile Side type as an enum - - - - - Implements the profile SitUpExerciseName type as a class - - - - - Implements the profile SourceType type as an enum - - - - - Implements the profile SplitType type as an enum - - - - - Implements the profile Sport type as an enum - - - - - Implements the profile SportBits0 type as a class - - - - - Implements the profile SportBits1 type as a class - - - - - Implements the profile SportBits2 type as a class - - - - - Implements the profile SportBits3 type as a class - - - - - Implements the profile SportBits4 type as a class - - - - - Implements the profile SportBits5 type as a class - - - - - Implements the profile SportBits6 type as a class - - - - - Implements the profile SportEvent type as an enum - - - - - Implements the profile SquatExerciseName type as a class - - - - - Implements the profile StrokeType type as an enum - - - - - Implements the profile SubSport type as an enum - - - - - Implements the profile SupportedExdScreenLayouts type as a class - - - - - Implements the profile SwimStroke type as an enum - - - - - Implements the profile Switch type as an enum - - - - - Implements the profile TapSensitivity type as an enum - - - - - Implements the profile TimeIntoDay type as a class - - - - - Implements the profile TimeMode type as an enum - - - - - Implements the profile TimerTrigger type as an enum - - - - - Implements the profile TimeZone type as an enum - - - - - Implements the profile TissueModelType type as an enum - - - - - Implements the profile Tone type as an enum - - - - - Implements the profile TotalBodyExerciseName type as a class - - - - - Implements the profile TricepsExtensionExerciseName type as a class - - - - - Implements the profile TurnType type as an enum - - - - - Implements the profile UserLocalId type as a class - - - - - Implements the profile WarmUpExerciseName type as a class - - - - - Implements the profile WatchfaceMode type as an enum - - - - - Implements the profile WaterType type as an enum - - - - - Implements the profile WeatherReport type as an enum - - - - - Implements the profile WeatherSevereType type as an enum - - - - - Implements the profile WeatherSeverity type as an enum - - - - - Implements the profile WeatherStatus type as an enum - - - - - Implements the profile Weight type as a class - - - - - Implements the profile WktStepDuration type as an enum - - - - - Implements the profile WktStepTarget type as an enum - - - - - Implements the profile WorkoutCapabilities type as a class - - - - - Implements the profile WorkoutEquipment type as an enum - - - - - Implements the profile WorkoutHr type as a class - - - - - Implements the profile WorkoutPower type as a class - - - - - Validate if a Message is compatible with a protocol version - - Message to validate - true if message is compatible. false otherwise - - - - Validate if a MessageDefinition is compatible with a protocol version - - Definition to validate - true if definition is compatible. false otherwise - - - - Validates Protocol Features for a given give version - - - - - Validate if a Message is compatible with a protocol version - - Message to validate - true if message is compatible. false otherwise - - - - Validate if a MessageDefinition is compatible with a protocol version - - Definition to validate - true if definition is compatible. false otherwise - - - - Validate if a Message is compatible with a protocol version - - Message to validate - true if message is compatible. false otherwise - - - - Validate if a MessageDefinition is compatible with a protocol version - - Definition to validate - true if definition is compatible. false otherwise - - - - The Subfield class represents an alternative field definition used - by dynamic fields. They can only be associated with a containing - field object. - - - - - The SubfieldMap class tracks the reference field/value pairs which indicate a field - should use the alternate subfield definition rather than the usual defn (allows Dynamic Fields) - - - - - Checks if the reference fields in a given message indicate the subfield (alternate) - definition should be used - - message of interest - true if the subfield is active - - - - Checks if the reference fields in a given message indicate the subfield (alternate) - definition should be used - - message of interest - true if the subfield is active - - - - Extend framework BinaryReader to support BigEndian datasources. - When reading multibyte values, the bytes are reordered appropriately. - - - - - Extend framework BinaryWriter to support BigEndian destinations. - When writing multibyte values, the bytes are reordered appropriately. - - - - diff --git a/src/Garmin/FitSdk_prev/plugins/HrToRecordMesgBroadcastPlugin.cs b/src/Garmin/FitSdk_prev/plugins/HrToRecordMesgBroadcastPlugin.cs deleted file mode 100644 index 18dd1d874..000000000 --- a/src/Garmin/FitSdk_prev/plugins/HrToRecordMesgBroadcastPlugin.cs +++ /dev/null @@ -1,192 +0,0 @@ -#region Copyright -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2015 Garmin Canada Inc. -//////////////////////////////////////////////////////////////////////////////// -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - class HrToRecordMesgBroadcastPlugin : IMesgBroadcastPlugin - { - #region Fields - private bool isActivityFile = false; - private static readonly int INVALID_INDEX = -1; - private DateTime record_range_start_time = new DateTime(0); - private int mesg_count = 0; - private int hr_start_index = INVALID_INDEX; - private int hr_start_sub_index = INVALID_INDEX; - #endregion - - public HrToRecordMesgBroadcastPlugin() - { - } - - public void OnIncomingMesg(object sender, IncomingMesgEventArgs e) - { - switch (e.mesg.Num) { - case MesgNum.FileId: - FileIdMesg fileIdMesg = new FileIdMesg(e.mesg); - if (fileIdMesg.GetType() == File.Activity) - isActivityFile = true; - break; - case MesgNum.Session: - SessionMesg sessionMesg = new SessionMesg(e.mesg); - record_range_start_time = new DateTime(sessionMesg.GetStartTime()); - break; - - case MesgNum.Hr: - if( hr_start_index == HrToRecordMesgBroadcastPlugin.INVALID_INDEX ) { - // Mark the first appearance of an HR message - hr_start_index = mesg_count; - hr_start_sub_index = 0; - } - break; - - default: - break; - } // switch - - mesg_count++; - } - - public void OnBroadcast(object sender, MesgBroadcastEventArgs e) - { - List mesgs = e.mesgs; - if (isActivityFile && (hr_start_index != HrToRecordMesgBroadcastPlugin.INVALID_INDEX)) { - float? hr_anchor_event_timestamp = 0.0f; - DateTime hr_anchor_timestamp = new DateTime(0); - bool hr_anchor_set = false; - byte? last_valid_hr = 0; - DateTime last_valid_hr_time = new DateTime(0); - - for (int mesgCounter = 0; mesgCounter < mesgs.Count; mesgCounter++) { - Mesg mesg = mesgs[mesgCounter]; - - if (mesg.Num == MesgNum.Record) { - long hrSum = 0; - long hrSumCount = 0; - - // Cast message to record message - RecordMesg recordMesg = new RecordMesg(mesg); - - // Obtain the time for which the record message is valid - DateTime record_range_end_time = new DateTime(recordMesg.GetTimestamp()); - - // Need to determine timestamp range which applies to this record - bool findingInRangeHrMesgs = true; - - // Start searching HR mesgs where we left off - int hr_mesg_counter = hr_start_index; - int hr_sub_mesg_counter = hr_start_sub_index; - - while(findingInRangeHrMesgs && (hr_mesg_counter < mesgs.Count)) { - - // Skip over any non HR messages - if(mesgs[hr_mesg_counter].Num == MesgNum.Hr) { - HrMesg hrMesg = new HrMesg(mesgs[hr_mesg_counter]); - - // Update HR timestamp anchor, if present - if(hrMesg.GetTimestamp() != null && hrMesg.GetTimestamp().GetTimeStamp() != 0) { - hr_anchor_timestamp = new DateTime(hrMesg.GetTimestamp()); - hr_anchor_set = true; - - if(hrMesg.GetFractionalTimestamp() != null) - hr_anchor_timestamp.Add((double)hrMesg.GetFractionalTimestamp()); - - if(hrMesg.GetNumEventTimestamp() == 1) { - hr_anchor_event_timestamp = hrMesg.GetEventTimestamp(0); - } - else { - throw new FitException("FIT HrToRecordMesgBroadcastPlugin Error: Anchor HR mesg must have 1 event_timestamp"); - } - } - - if(hr_anchor_set == false) { - // We cannot process any HR messages if we have not received a timestamp anchor - throw new FitException("FIT HrToRecordMesgBroadcastPlugin Error: No anchor timestamp received in a HR mesg before diff HR mesgs"); - } - else if(hrMesg.GetNumEventTimestamp() != hrMesg.GetNumFilteredBpm()) { - throw new FitException("FIT HrToRecordMesgBroadcastPlugin Error: HR mesg with mismatching event timestamp and filtered bpm"); - } - for(int j = hr_sub_mesg_counter; j < hrMesg.GetNumEventTimestamp(); j++) { - - // Build up timestamp for each message using the anchor and event_timestamp - DateTime hrMesgTime = new DateTime(hr_anchor_timestamp); - float? event_timestamp = hrMesg.GetEventTimestamp(j); - - // Deal with roll over case - if(event_timestamp < hr_anchor_event_timestamp) { - if ((hr_anchor_event_timestamp - event_timestamp) > ( 1 << 21 )) { - event_timestamp += ( 1 << 22 ); - } - else { - throw new FitException("FIT HrToRecordMesgBroadcastPlugin Error: Anchor event_timestamp is greater than subsequent event_timestamp. This does not allow for correct delta calculation."); - } - } - hrMesgTime.Add((double)(event_timestamp - hr_anchor_event_timestamp)); - - // Check if hrMesgTime is gt record start time - // and if hrMesgTime is lte to record end time - if((hrMesgTime.CompareTo(record_range_start_time) > 0) && - (hrMesgTime.CompareTo(record_range_end_time) <= 0)) { - hrSum += (long)hrMesg.GetFilteredBpm(j); - hrSumCount++; - last_valid_hr_time = new DateTime(hrMesgTime); - - } - // check if hrMesgTime exceeds the record time - else if(hrMesgTime.CompareTo(record_range_end_time) > 0) { - - // Remember where we left off - hr_start_index = hr_mesg_counter; - hr_start_sub_index = j; - findingInRangeHrMesgs = false; - - if(hrSumCount > 0) { - // Update record heart rate - last_valid_hr = (byte?)System.Math.Round((((float)hrSum) / hrSumCount), MidpointRounding.AwayFromZero); - recordMesg.SetHeartRate(last_valid_hr); - mesgs[mesgCounter] = (Mesg)recordMesg; - } - // If no stored HR is available, fill in record messages with the - // last valid filtered hr for a maximum of 5 seconds - else if((record_range_start_time.CompareTo(last_valid_hr_time) > 0) && - ((record_range_start_time.GetTimeStamp() - last_valid_hr_time.GetTimeStamp()) < 5)) { - recordMesg.SetHeartRate(last_valid_hr); - mesgs[mesgCounter] = (Mesg)recordMesg; - } - - // Reset HR average - hrSum = 0; - hrSumCount = 0; - - record_range_start_time = new DateTime(record_range_end_time); - - // Breaks out of looping within the event_timestamp array - break; - } - } - } - hr_mesg_counter++; - hr_sub_mesg_counter = 0; - } - } - } - } - } - } -} \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/plugins/ThreeDSensorAdjustmentPlugin.cs b/src/Garmin/FitSdk_prev/plugins/ThreeDSensorAdjustmentPlugin.cs deleted file mode 100644 index ab72bb468..000000000 --- a/src/Garmin/FitSdk_prev/plugins/ThreeDSensorAdjustmentPlugin.cs +++ /dev/null @@ -1,262 +0,0 @@ -#region copyright -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2016 Garmin Canada Inc. -//////////////////////////////////////////////////////////////////////////////// -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.IO; - -namespace Dynastream.Fit -{ - public class ThreeDSensorAdjustmentPlugin : IMesgBroadcastPlugin - { - - #region Fields - private const int NUM_AXIS = 3; - private const int NUM_COLUMNS = 3; - private const int NUM_ROWS = 3; - private const int X_AXIS_OFFSET = 0; - private const int Y_AXIS_OFFSET = 1; - private const int Z_AXIS_OFFSET = 2; - private const ushort accelDataFieldNum = MesgNum.AccelerometerData; - private readonly string[] accelDataFieldNameXYZ = { "CalibratedAccelX", "CalibratedAccelY", "CalibratedAccelZ" }; - private const ushort gyroDataFieldNum = MesgNum.GyroscopeData; - private readonly string[] gyroDataFieldNameXYZ = {"CalibratedGyroX", "CalibratedGyroY", "CalibratedGyroZ"}; - private const ushort magDataFieldNum = MesgNum.MagnetometerData; - private readonly string[] magDataFieldNameXYZ = {"CalibratedMagX", "CalibratedMagY", "CalibratedMagZ"}; - private bool haveAccelCal = false; - private bool haveGyroCal = false; - private bool haveMagCal = false; - private CalibrationParameters accelCalParams = new CalibrationParameters(); - private CalibrationParameters gyroCalParams = new CalibrationParameters(); - private CalibrationParameters magCalParams = new CalibrationParameters(); - #endregion - - #region Construcotrs - public ThreeDSensorAdjustmentPlugin() - { - } - #endregion - - private class CalibrationParameters - { - #region Fields - private long[] channelOffset = new long[NUM_ROWS]; - private float[,] rotationMatrix = new float[NUM_COLUMNS, NUM_ROWS]; - #endregion - - #region Properties - internal long CalDivisor { get; private set; } - internal long CalFactor { get; private set; } - internal long[] ChannelOffset - { - get { return channelOffset; } - } - internal long LevelShift { get; private set; } - internal float[,] RotationMatrix - { - get { return rotationMatrix; } - } - #endregion - - #region Methods - public void LoadParams(ThreeDSensorCalibrationMesg calMesg) - { - this.CalFactor = (long)calMesg.GetCalibrationFactor(); - this.CalDivisor = (long)calMesg.GetCalibrationDivisor(); - this.LevelShift = (long)calMesg.GetLevelShift(); - - this.channelOffset[X_AXIS_OFFSET] = (long)calMesg.GetOffsetCal(X_AXIS_OFFSET); - this.channelOffset[Y_AXIS_OFFSET] = (long)calMesg.GetOffsetCal(Y_AXIS_OFFSET); - this.channelOffset[Z_AXIS_OFFSET] = (long)calMesg.GetOffsetCal(Z_AXIS_OFFSET); - - // Rotation Matrix row major - this.rotationMatrix[0,0] = (float)calMesg.GetOrientationMatrix(0); - this.rotationMatrix[0,1] = (float)calMesg.GetOrientationMatrix(1); - this.rotationMatrix[0,2] = (float)calMesg.GetOrientationMatrix(2); - this.rotationMatrix[1,0] = (float)calMesg.GetOrientationMatrix(3); - this.rotationMatrix[1,1] = (float)calMesg.GetOrientationMatrix(4); - this.rotationMatrix[1,2] = (float)calMesg.GetOrientationMatrix(5); - this.rotationMatrix[2,0] = (float)calMesg.GetOrientationMatrix(6); - this.rotationMatrix[2,1] = (float)calMesg.GetOrientationMatrix(7); - this.rotationMatrix[2,2] = (float)calMesg.GetOrientationMatrix(8); - } - #endregion - } - - #region Methods - public void OnIncomingMesg(object sender, IncomingMesgEventArgs e) - { - switch (e.mesg.Num) - { - case MesgNum.ThreeDSensorCalibration: - ThreeDSensorCalibrationMesg calMesg = new ThreeDSensorCalibrationMesg(e.mesg); - switch (calMesg.GetSensorType()) - { - case SensorType.Accelerometer: - accelCalParams.LoadParams(calMesg); - haveAccelCal = true; - break; - case SensorType.Gyroscope: - gyroCalParams.LoadParams(calMesg); - haveGyroCal = true; - break; - case SensorType.Compass: - magCalParams.LoadParams(calMesg); - haveMagCal = true; - break; - default: - break; - - } // switch - break; - default: - break; - - } //switch - } - - private float[] AdjustSensorData(int[] rawData, CalibrationParameters calParams) - { - float[] calibratedValues = new float[rawData.Length]; - float[] rotatedValues = new float[rawData.Length]; - - //Apply the calibration parameters - for (int i = 0; i < rawData.Length; i++) - { - calibratedValues[i] = (float)rawData[i]; - calibratedValues[i] -= calParams.LevelShift; - calibratedValues[i] -= calParams.ChannelOffset[i]; - calibratedValues[i] *= calParams.CalFactor; - calibratedValues[i] /= calParams.CalDivisor; - } - - // Apply the rotation matrix - // [Rotation] * [XYZ] - rotatedValues[0] = (calParams.RotationMatrix[0, 0] * calibratedValues[0]) + (calParams.RotationMatrix[0, 1] * calibratedValues[1]) + (calParams.RotationMatrix[0, 2] * calibratedValues[2]); - rotatedValues[1] = (calParams.RotationMatrix[1, 0] * calibratedValues[0]) + (calParams.RotationMatrix[1, 1] * calibratedValues[1]) + (calParams.RotationMatrix[1, 2] * calibratedValues[2]); - rotatedValues[2] = (calParams.RotationMatrix[2, 0] * calibratedValues[0]) + (calParams.RotationMatrix[2, 1] * calibratedValues[1]) + (calParams.RotationMatrix[2, 2] * calibratedValues[2]); - - return rotatedValues; - } - - public void OnBroadcast(object sender, MesgBroadcastEventArgs e) - { - float[] calibratedXYZ; - int count; - List mesgs = e.mesgs; - int[] rawXYZ = new int[NUM_AXIS]; - - foreach (Mesg mesg in mesgs) - { - switch (mesg.Num) - { - case MesgNum.AccelerometerData: - if (haveAccelCal) - { - AccelerometerDataMesg accelData = new AccelerometerDataMesg(mesg); - count = accelData.GetNumAccelX(); - for(int i = 0; i < count; i++ ) - { - //Extract the uncalibrated accel data from incoming message - rawXYZ[X_AXIS_OFFSET] = Convert.ToInt32(accelData.GetAccelX(i)); - rawXYZ[Y_AXIS_OFFSET] = Convert.ToInt32(accelData.GetAccelY(i)); - rawXYZ[Z_AXIS_OFFSET] = Convert.ToInt32(accelData.GetAccelZ(i)); - - // Apply calibration to the values - calibratedXYZ = AdjustSensorData( rawXYZ, accelCalParams ); - - // Update the message - ProcessCalibrationFactor( mesg, accelDataFieldNameXYZ, calibratedXYZ, accelDataFieldNum ); - } - } - break; - case MesgNum.GyroscopeData: - if (haveGyroCal) - { - GyroscopeDataMesg gyroData = new GyroscopeDataMesg(mesg); - count = gyroData.GetNumGyroX(); - for (int i = 0; i < count; i++) - { - //Extract the uncalibrated gyro data from incoming message - rawXYZ[X_AXIS_OFFSET] = Convert.ToInt32(gyroData.GetGyroX(i)); - rawXYZ[Y_AXIS_OFFSET] = Convert.ToInt32(gyroData.GetGyroY(i)); - rawXYZ[Z_AXIS_OFFSET] = Convert.ToInt32(gyroData.GetGyroZ(i)); - - // Apply calibration to the values - calibratedXYZ = AdjustSensorData( rawXYZ, gyroCalParams); - - // Update the message - ProcessCalibrationFactor( mesg, gyroDataFieldNameXYZ, calibratedXYZ, gyroDataFieldNum ); - } - } - break; - case MesgNum.MagnetometerData: - if (haveMagCal) - { - MagnetometerDataMesg magData = new MagnetometerDataMesg(mesg); - count = magData.GetNumMagX(); - for (int i = 0; i < count; i++) - { - //Extract the uncalibrated mag data from incoming message - rawXYZ[X_AXIS_OFFSET] = Convert.ToInt32(magData.GetMagX(i)); - rawXYZ[Y_AXIS_OFFSET] = Convert.ToInt32(magData.GetMagY(i)); - rawXYZ[Z_AXIS_OFFSET] = Convert.ToInt32(magData.GetMagZ(i)); - - // Apply calibration to the values - calibratedXYZ = AdjustSensorData( rawXYZ, magCalParams); - - // Update the message - ProcessCalibrationFactor( mesg, magDataFieldNameXYZ, calibratedXYZ, magDataFieldNum ); - } - } - break; - default: - break; - }// switch - }// foreach - } - - private void ProcessCalibrationFactor( Mesg mesg, string[] fieldsXYZ, float[] calibratedXYZ, ushort globalMesgNum ) - { - if ((fieldsXYZ.Length != NUM_AXIS) || (calibratedXYZ.Length != NUM_AXIS)) - { - //Invalid number of arguments - return; - } - - //Add the newly calculated calibrated values to the calibrated data fields - if ( mesg.GetField(fieldsXYZ[X_AXIS_OFFSET]) == null ) - { - mesg.SetField(new Field(Profile.GetField(globalMesgNum, fieldsXYZ[X_AXIS_OFFSET]))); - } - - if (mesg.GetField(fieldsXYZ[Y_AXIS_OFFSET]) == null) - { - mesg.SetField(new Field(Profile.GetField(globalMesgNum, fieldsXYZ[Y_AXIS_OFFSET]))); - } - - if (mesg.GetField(fieldsXYZ[Z_AXIS_OFFSET]) == null) - { - mesg.SetField(new Field(Profile.GetField(globalMesgNum, fieldsXYZ[Z_AXIS_OFFSET]))); - } - - mesg.GetField(fieldsXYZ[X_AXIS_OFFSET]).AddValue(calibratedXYZ[X_AXIS_OFFSET]); - mesg.GetField(fieldsXYZ[Y_AXIS_OFFSET]).AddValue(calibratedXYZ[Y_AXIS_OFFSET]); - mesg.GetField(fieldsXYZ[Z_AXIS_OFFSET]).AddValue(calibratedXYZ[Z_AXIS_OFFSET]); - } - #endregion - } // Class -} // namespace diff --git a/src/Garmin/FitSdk_prev/plugins/examples/HrToMessageBroadcastExample/HrToMessageBroadcastExample.csproj b/src/Garmin/FitSdk_prev/plugins/examples/HrToMessageBroadcastExample/HrToMessageBroadcastExample.csproj deleted file mode 100644 index 589364e62..000000000 --- a/src/Garmin/FitSdk_prev/plugins/examples/HrToMessageBroadcastExample/HrToMessageBroadcastExample.csproj +++ /dev/null @@ -1,66 +0,0 @@ - - - - - Debug - AnyCPU - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78} - Exe - Properties - hrToMessageBroadcastExample - hrToMessageBroadcastExample - v4.6 - 512 - - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - - - - ..\..\..\Fit.dll - - - - - - - - - - - HrToRecordMesgBroadcastPlugin.cs - - - - - - - - - - \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/plugins/examples/HrToMessageBroadcastExample/Program.cs b/src/Garmin/FitSdk_prev/plugins/examples/HrToMessageBroadcastExample/Program.cs deleted file mode 100644 index c5f0afebc..000000000 --- a/src/Garmin/FitSdk_prev/plugins/examples/HrToMessageBroadcastExample/Program.cs +++ /dev/null @@ -1,184 +0,0 @@ -#region Copyright -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2015 Garmin Canada Inc. -//////////////////////////////////////////////////////////////////////////////// -#endregion -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Diagnostics; -using System.IO; - -using Dynastream.Fit; - -namespace HrToRecordMesgBroadcastDemo -{ - class Program - { - static FileStream fitSource; - - static void Main(string[] args) - { - if (args.Length != 1) - { - Console.WriteLine("Usage: decode.exe "); - return; - } - - try - { - // Attempt to open .FIT file - fitSource = new FileStream(args[0], FileMode.Open); - Console.WriteLine("Opening {0}", args[0]); - - //Attempt to create an output file - String fileName = String.Format("{0}.csv",args[0].Split('.')); //Strip off the first part of the file name - FileStream fs = new FileStream(fileName, FileMode.Create); - // First, save the standard output. - StreamWriter sw = new StreamWriter(fs); - sw.AutoFlush = true; - Console.SetOut(sw); - } - catch(Exception ex) - { - Console.WriteLine("DecodeDemo caught Exception: " + ex.Message); - return; - } - - Decode decodeDemo = new Decode(); - BufferedMesgBroadcaster mesgBroadcaster = new BufferedMesgBroadcaster(); - - // Connect the Broadcaster to our event (message) source (in this case the Decoder) - decodeDemo.MesgEvent += mesgBroadcaster.OnMesg; - decodeDemo.MesgDefinitionEvent += mesgBroadcaster.OnMesgDefinition; - - // Subscribe to message events of interest by connecting to the Broadcaster - mesgBroadcaster.MesgEvent += new MesgEventHandler(OnMesg); - - IMesgBroadcastPlugin plugin = new HrToRecordMesgBroadcastPlugin(); - mesgBroadcaster.RegisterMesgBroadcastPlugin(plugin); - - // Process the file - - try - { - //Attempt to decode the file - Console.WriteLine("Type,Local Number,Message,Field 1,Value 1,Units 1,Field 2,Value 2,Units 2,Field 3,Value 3,Units 3,Field 4,Value 4,Units 4,Field 5,Value 5,Units 5,Field 6,Value 6,Units 6"); - decodeDemo.Read(fitSource); - mesgBroadcaster.Broadcast(); - } - catch (FitException ex) - { - Console.WriteLine("DecodeDemo caught FitException: " + ex.Message); - } - - fitSource.Close(); - return; - } - - #region Message Handlers - - static void OnMesg(object sender, MesgEventArgs e) - { - Mesg msg = e.mesg; - - if( msg.Num == MesgNum.Record) - { - RecordMesg recordMesg = new RecordMesg(msg); - Console.Write("Data,{0},record,", msg.LocalNum); - if(recordMesg.GetTimestamp() != null) - { - Console.Write("timestamp,{0},s,", recordMesg.GetTimestamp().GetTimeStamp()); - } - if ( ( recordMesg.GetDistance() != null ) && ( recordMesg.GetDistance() != (uint)Fit.BaseType[Fit.UInt32].invalidValue ) ) - { - Console.Write("distance, {0:0.0}, m,", recordMesg.GetDistance()); - } - if ( ( recordMesg.GetSpeed() != null ) && ( recordMesg.GetSpeed() != (ushort)Fit.BaseType[Fit.UInt16].invalidValue ) ) - { - Console.Write("speed,{0:0.000},m/s,", recordMesg.GetSpeed()); - } - if ( ( recordMesg.GetCadence() != null ) && ( recordMesg.GetCadence() != (byte)Fit.BaseType[Fit.UInt8].invalidValue ) ) - { - Console.Write("cadence,{0},rpm,", recordMesg.GetCadence()); - } - if ( ( recordMesg.GetEnhancedSpeed() != null ) && ( recordMesg.GetEnhancedSpeed() != (uint)Fit.BaseType[Fit.UInt32].invalidValue ) ) - { - Console.Write("enhanced_speed,{0:0.000},m/s,", recordMesg.GetEnhancedSpeed()); - } - if ( ( recordMesg.GetHeartRate() != null ) && ( recordMesg.GetHeartRate() != (byte)Fit.BaseType[Fit.UInt8].invalidValue ) ) - { - Console.Write("heart_rate,{0},bpm,", recordMesg.GetHeartRate()); - } - Console.Write("\n"); - } - else if( msg.Num == MesgNum.Hr ) - { - HrMesg hrMesg = new HrMesg(msg); - Console.Write("Data,{0},hr,", msg.LocalNum); - int count; - if ( ( hrMesg.GetTimestamp() != null ) && ( hrMesg.GetTimestamp().GetTimeStamp() != (uint)Fit.BaseType[Fit.UInt32].invalidValue ) ) - { - Console.Write("timestamp,{0},,", hrMesg.GetTimestamp().GetTimeStamp()); - } - if ( hrMesg.GetNumFilteredBpm() > 0 ) - { - Console.Write("filtered_bpm,"); - count = hrMesg.GetNumFilteredBpm(); - for (int i = 0; i < count; i++) - { - Console.Write("{0}", hrMesg.GetFilteredBpm(i)); - if (i < count - 1) - { - Console.Write("|"); - } - } - Console.Write(",bpm,"); - } - if ( hrMesg.GetNumEventTimestamp12() > 0 ) - { - Console.Write("event_timestamp_12,"); - count = hrMesg.GetNumEventTimestamp12(); - for (int i = 0; i < count; i++) - { - Console.Write("{0}", hrMesg.GetEventTimestamp12(i)); - if (i < count - 1) - { - Console.Write("|"); - } - } - Console.Write(",,"); - } - if ( hrMesg.GetNumEventTimestamp() > 0 ) - { - Console.Write("event_timestamp,"); - count = hrMesg.GetNumEventTimestamp(); - for (int i = 0; i < count; i++) - { - Console.Write("{0:G}", hrMesg.GetEventTimestamp(i)); - if (i < count - 1) - { - Console.Write("|"); - } - } - Console.Write(",s,"); - } - if (hrMesg.GetFractionalTimestamp() != null) - { - Console.Write("fractional_timestamp,{0:0.######},s,", hrMesg.GetFractionalTimestamp()); - } - Console.Write("\n"); - } - } - #endregion - } -} diff --git a/src/Garmin/FitSdk_prev/plugins/examples/HrToMessageBroadcastExample/Properties/AssemblyInfo.cs b/src/Garmin/FitSdk_prev/plugins/examples/HrToMessageBroadcastExample/Properties/AssemblyInfo.cs deleted file mode 100644 index 70fcf0598..000000000 --- a/src/Garmin/FitSdk_prev/plugins/examples/HrToMessageBroadcastExample/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("HrToMessageBroadcastExample")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Garmin")] -[assembly: AssemblyProduct("HrToMessageBroadcastExample")] -[assembly: AssemblyCopyright("Copyright © Garmin 2015")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("9758fef4-2c31-4d1b-a514-47e2e184e40e")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/Garmin/FitSdk_prev/plugins/examples/HrToMessageBroadcastExample/app.config b/src/Garmin/FitSdk_prev/plugins/examples/HrToMessageBroadcastExample/app.config deleted file mode 100644 index 92ed82822..000000000 --- a/src/Garmin/FitSdk_prev/plugins/examples/HrToMessageBroadcastExample/app.config +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/Garmin/FitSdk_prev/plugins/examples/ThreeDSensorAdjustmentPluginExample/App.config b/src/Garmin/FitSdk_prev/plugins/examples/ThreeDSensorAdjustmentPluginExample/App.config deleted file mode 100644 index fad249e40..000000000 --- a/src/Garmin/FitSdk_prev/plugins/examples/ThreeDSensorAdjustmentPluginExample/App.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/plugins/examples/ThreeDSensorAdjustmentPluginExample/Program.cs b/src/Garmin/FitSdk_prev/plugins/examples/ThreeDSensorAdjustmentPluginExample/Program.cs deleted file mode 100644 index 7f4afb67f..000000000 --- a/src/Garmin/FitSdk_prev/plugins/examples/ThreeDSensorAdjustmentPluginExample/Program.cs +++ /dev/null @@ -1,186 +0,0 @@ -#region copyright -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2016 Garmin Canada Inc. -//////////////////////////////////////////////////////////////////////////////// -#endregion - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Diagnostics; -using System.IO; - -using Dynastream.Fit; - -namespace ThreeDSensorAdjustmentPluginExample -{ - class Program - { - private static FileStream fitSource; - - static void Main(string[] args) - { - StreamWriter sw; - if (args.Length != 1) - { - Console.WriteLine("Usage: ThreeDSensorAdjustmentPluginExample.exe "); - return; - } - try - { - // Attempt to open .FIT file - fitSource = new FileStream(args[0], FileMode.Open); - Console.WriteLine("Opening {0}", args[0]); - - //Attempt to create an output file - string fileName = String.Format("{0}.csv", args[0].Split('.')); //Strip off the first part of the file name - FileStream fs = new FileStream(fileName, FileMode.Create); - - // First, save the standard output. - sw = new StreamWriter(fs); - sw.AutoFlush = true; - Console.SetOut(sw); - } - catch (Exception ex) - { - Console.WriteLine("ThreeDSensorAdjustmentPluginExample caught Exception: " + ex.Message); - return; - } - - Decode decodeDemo = new Decode(); - BufferedMesgBroadcaster mesgBroadcaster = new BufferedMesgBroadcaster(); - - // Connect the Broadcaster to our events (message) source (in this case the Decoder) - decodeDemo.MesgEvent += mesgBroadcaster.OnMesg; - decodeDemo.MesgDefinitionEvent += mesgBroadcaster.OnMesgDefinition; - - //Subscribe to the message events of the interest by connecting to the Broadcaster - mesgBroadcaster.MesgEvent += OnMesg; - - IMesgBroadcastPlugin plugin = new ThreeDSensorAdjustmentPlugin(); - mesgBroadcaster.RegisterMesgBroadcastPlugin(plugin); - - try - { - //Writing headers for columns - int maxFieldNum = 9; - Console.Write("Type,Local Number,Message,"); - for (int i = 1; i <= maxFieldNum; i++) - { - Console.Write("Field {0},Value {0},Units {0},", i); - } - Console.WriteLine(); - - //Attempting to Decode the file - decodeDemo.Read(fitSource); - mesgBroadcaster.Broadcast(); - } - catch (FitException ex) - { - Console.WriteLine("ThreeDSensorAdjustmentPluginExample caught Exception: decoding threw a FitException: " + ex.Message); - } - - fitSource.Close(); - sw.Close(); - return; - } - - static void OnMesg(object sender, MesgEventArgs e) - { - Mesg mesg = e.mesg; - switch (mesg.Num) - { - case MesgNum.FileId: - FileIdMesg fileIdMesg = new FileIdMesg(mesg); - Console.Write("Data,{0},{1},", fileIdMesg.LocalNum, fileIdMesg.Name); - PrintField(fileIdMesg); - break; - - case MesgNum.ThreeDSensorCalibration: - ThreeDSensorCalibrationMesg calMesg = new ThreeDSensorCalibrationMesg(mesg); - Console.Write("Data,{0},{1},", calMesg.LocalNum, calMesg.Name); - PrintField(calMesg); - break; - - case MesgNum.AccelerometerData: - AccelerometerDataMesg accelMesg = new AccelerometerDataMesg(mesg); - Console.Write("Data,{0},{1},", accelMesg.LocalNum, accelMesg.Name); - PrintField(accelMesg); - break; - - case MesgNum.GyroscopeData: - GyroscopeDataMesg gyroMesg = new GyroscopeDataMesg(mesg); - Console.Write("Data,{0},{1},", gyroMesg.LocalNum, gyroMesg.Name); - PrintField(gyroMesg); - break; - - case MesgNum.MagnetometerData: - MagnetometerDataMesg magMesg = new MagnetometerDataMesg(mesg); - Console.Write("Data,{0},{1},", magMesg.LocalNum, magMesg.Name); - PrintField(magMesg); - break; - - default: - break; - } - } - - private static void PrintField(Mesg mesg) - { - ushort activeSubfieldIndex; - string name; - string value; - string units; - - //Loop through each field - foreach (Field field in mesg.Fields) - { - if (mesg.GetFieldValue(field.Num) != null) - { - //Set the name, value, and units to their standard values - name = field.Name; - value = (field.GetValue()).ToString(); - units = field.GetUnits(); - - //Checks if there is an active subfield and updates the name and units appropriately - activeSubfieldIndex = mesg.GetActiveSubFieldIndex(field.Num); - if (activeSubfieldIndex != Fit.SubfieldIndexMainField) - { - name = field.GetName((byte)activeSubfieldIndex); - units = field.GetUnits((byte)activeSubfieldIndex); - } - - //Checks if a field has multiple values and updates value appropriately - if (field.GetNumValues() > 1) - { - value = FieldArrayToString(field); - } - - Console.Write("{0},{1},{2},", name, value, units); - } - } - Console.WriteLine(); - } - - //Grabs all the values in a field and creates a string of them joined together by "|" - private static string FieldArrayToString(Field field) - { - string fieldArrayString = (field.GetValue(0)).ToString(); - int count = field.GetNumValues(); - for (int i = 1; i < count; i++) - { - fieldArrayString = String.Concat(fieldArrayString, ("|" + (field.GetValue((byte)i))).ToString()); - } - return fieldArrayString; - } - } -} diff --git a/src/Garmin/FitSdk_prev/plugins/examples/ThreeDSensorAdjustmentPluginExample/Properties/AssemblyInfo.cs b/src/Garmin/FitSdk_prev/plugins/examples/ThreeDSensorAdjustmentPluginExample/Properties/AssemblyInfo.cs deleted file mode 100644 index 9a03b0666..000000000 --- a/src/Garmin/FitSdk_prev/plugins/examples/ThreeDSensorAdjustmentPluginExample/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("ThreeDSensorAdjustmentPluginExample")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Microsoft")] -[assembly: AssemblyProduct("ThreeDSensorAdjustmentPluginExample")] -[assembly: AssemblyCopyright("Copyright © Microsoft 2016")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("c6b9bd05-1121-4548-b3b0-931bc58bd754")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/Garmin/FitSdk_prev/plugins/examples/ThreeDSensorAdjustmentPluginExample/ThreeDSensorAdjustmentPluginExample.csproj b/src/Garmin/FitSdk_prev/plugins/examples/ThreeDSensorAdjustmentPluginExample/ThreeDSensorAdjustmentPluginExample.csproj deleted file mode 100644 index c86414b35..000000000 --- a/src/Garmin/FitSdk_prev/plugins/examples/ThreeDSensorAdjustmentPluginExample/ThreeDSensorAdjustmentPluginExample.csproj +++ /dev/null @@ -1,98 +0,0 @@ - - - - - Debug - AnyCPU - {1744F547-0A1B-48AA-A944-6AB04243E6C5} - Exe - Properties - ThreeDSensorAdjustmentPluginExample - ThreeDSensorAdjustmentPluginExample - v4.5 - 512 - false - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - true - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - ThreeDSensorAdjustmentPluginExample.Program - - - - ..\..\..\Fit.dll - - - - - - - - - - - - - ThreeDSensorAdjustmentPlugin.cs - - - - - - - - False - Microsoft .NET Framework 4.5 %28x86 and x64%29 - true - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - false - - - - - \ No newline at end of file diff --git a/src/Garmin/FitSdk_prev/plugins/examples/pluginExamples.sln b/src/Garmin/FitSdk_prev/plugins/examples/pluginExamples.sln deleted file mode 100644 index ed330c810..000000000 --- a/src/Garmin/FitSdk_prev/plugins/examples/pluginExamples.sln +++ /dev/null @@ -1,45 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.21005.1 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HrToMessageBroadcastExample", "HrToMessageBroadcastExample\HrToMessageBroadcastExample.csproj", "{DDA43731-2575-4B5D-8FB0-E015B0C3BE78}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ThreeDSensorAdjustmentPluginExample", "ThreeDSensorAdjustmentPluginExample\ThreeDSensorAdjustmentPluginExample.csproj", "{1744F547-0A1B-48AA-A944-6AB04243E6C5}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|Mixed Platforms = Debug|Mixed Platforms - Debug|Win32 = Debug|Win32 - Release|Any CPU = Release|Any CPU - Release|Mixed Platforms = Release|Mixed Platforms - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78}.Debug|Win32.ActiveCfg = Release|Any CPU - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78}.Debug|Win32.Build.0 = Release|Any CPU - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78}.Release|Any CPU.Build.0 = Release|Any CPU - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {DDA43731-2575-4B5D-8FB0-E015B0C3BE78}.Release|Win32.ActiveCfg = Release|Any CPU - {1744F547-0A1B-48AA-A944-6AB04243E6C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1744F547-0A1B-48AA-A944-6AB04243E6C5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1744F547-0A1B-48AA-A944-6AB04243E6C5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {1744F547-0A1B-48AA-A944-6AB04243E6C5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {1744F547-0A1B-48AA-A944-6AB04243E6C5}.Debug|Win32.ActiveCfg = Debug|Any CPU - {1744F547-0A1B-48AA-A944-6AB04243E6C5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1744F547-0A1B-48AA-A944-6AB04243E6C5}.Release|Any CPU.Build.0 = Release|Any CPU - {1744F547-0A1B-48AA-A944-6AB04243E6C5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {1744F547-0A1B-48AA-A944-6AB04243E6C5}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {1744F547-0A1B-48AA-A944-6AB04243E6C5}.Release|Win32.ActiveCfg = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/src/Garmin/FitSdk_prev/v21.101.txt b/src/Garmin/FitSdk_prev/v21.101.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/Garmin/Garmin.csproj b/src/Garmin/Garmin.csproj index 553883ff4..3dafe7219 100644 --- a/src/Garmin/Garmin.csproj +++ b/src/Garmin/Garmin.csproj @@ -6,24 +6,6 @@ $(NoWarn);1591 - - - - - - - - - - - - - - - - - - diff --git a/src/SharedUI/SharedUI.csproj b/src/SharedUI/SharedUI.csproj index 997ffa7cd..8c9464f87 100644 --- a/src/SharedUI/SharedUI.csproj +++ b/src/SharedUI/SharedUI.csproj @@ -12,7 +12,7 @@ - + diff --git a/src/SharedUI/libman.json b/src/SharedUI/libman.json index 7f2112ebe..5307d73e5 100644 --- a/src/SharedUI/libman.json +++ b/src/SharedUI/libman.json @@ -7,7 +7,7 @@ "destination": "wwwroot/lib/font-awesome/" }, { - "library": "bootstrap@5.3.0", + "library": "bootstrap@5.3.3", "destination": "wwwroot/lib/bootstrap/" }, { diff --git a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.css b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.css index 37d2d3dc5..3882a8199 100644 --- a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.css +++ b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.css @@ -1,6 +1,6 @@ /*! - * Bootstrap Grid v5.3.0 (https://getbootstrap.com/) - * Copyright 2011-2023 The Bootstrap Authors + * Bootstrap Grid v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ .container, @@ -93,7 +93,7 @@ .row-cols-3 > * { flex: 0 0 auto; - width: 33.3333333333%; + width: 33.33333333%; } .row-cols-4 > * { @@ -108,7 +108,7 @@ .row-cols-6 > * { flex: 0 0 auto; - width: 16.6666666667%; + width: 16.66666667%; } .col-auto { @@ -298,7 +298,7 @@ } .row-cols-sm-3 > * { flex: 0 0 auto; - width: 33.3333333333%; + width: 33.33333333%; } .row-cols-sm-4 > * { flex: 0 0 auto; @@ -310,7 +310,7 @@ } .row-cols-sm-6 > * { flex: 0 0 auto; - width: 16.6666666667%; + width: 16.66666667%; } .col-sm-auto { flex: 0 0 auto; @@ -467,7 +467,7 @@ } .row-cols-md-3 > * { flex: 0 0 auto; - width: 33.3333333333%; + width: 33.33333333%; } .row-cols-md-4 > * { flex: 0 0 auto; @@ -479,7 +479,7 @@ } .row-cols-md-6 > * { flex: 0 0 auto; - width: 16.6666666667%; + width: 16.66666667%; } .col-md-auto { flex: 0 0 auto; @@ -636,7 +636,7 @@ } .row-cols-lg-3 > * { flex: 0 0 auto; - width: 33.3333333333%; + width: 33.33333333%; } .row-cols-lg-4 > * { flex: 0 0 auto; @@ -648,7 +648,7 @@ } .row-cols-lg-6 > * { flex: 0 0 auto; - width: 16.6666666667%; + width: 16.66666667%; } .col-lg-auto { flex: 0 0 auto; @@ -805,7 +805,7 @@ } .row-cols-xl-3 > * { flex: 0 0 auto; - width: 33.3333333333%; + width: 33.33333333%; } .row-cols-xl-4 > * { flex: 0 0 auto; @@ -817,7 +817,7 @@ } .row-cols-xl-6 > * { flex: 0 0 auto; - width: 16.6666666667%; + width: 16.66666667%; } .col-xl-auto { flex: 0 0 auto; @@ -974,7 +974,7 @@ } .row-cols-xxl-3 > * { flex: 0 0 auto; - width: 33.3333333333%; + width: 33.33333333%; } .row-cols-xxl-4 > * { flex: 0 0 auto; @@ -986,7 +986,7 @@ } .row-cols-xxl-6 > * { flex: 0 0 auto; - width: 16.6666666667%; + width: 16.66666667%; } .col-xxl-auto { flex: 0 0 auto; diff --git a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.css.map b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.css.map index 2f2887337..ce99ec196 100644 --- a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.css.map +++ b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.css.map @@ -1 +1 @@ -{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","bootstrap-grid.css","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"AACE;;;;EAAA;ACKA;;;;;;;ECHA,qBAAA;EACA,gBAAA;EACA,WAAA;EACA,6CAAA;EACA,4CAAA;EACA,kBAAA;EACA,iBAAA;ACUF;;AC4CI;EH5CE;IACE,gBIkee;EF9drB;AACF;ACsCI;EH5CE;IACE,gBIkee;EFzdrB;AACF;ACiCI;EH5CE;IACE,gBIkee;EFpdrB;AACF;AC4BI;EH5CE;IACE,iBIkee;EF/crB;AACF;ACuBI;EH5CE;IACE,iBIkee;EF1crB;AACF;AGzCA;EAEI,qBAAA;EAAA,yBAAA;EAAA,yBAAA;EAAA,yBAAA;EAAA,0BAAA;EAAA,2BAAA;AH+CJ;;AG1CE;ECNA,qBAAA;EACA,gBAAA;EACA,aAAA;EACA,eAAA;EAEA,yCAAA;EACA,6CAAA;EACA,4CAAA;AJmDF;AGjDI;ECGF,sBAAA;EAIA,cAAA;EACA,WAAA;EACA,eAAA;EACA,6CAAA;EACA,4CAAA;EACA,8BAAA;AJ8CF;;AICM;EACE,YAAA;AJER;;AICM;EApCJ,cAAA;EACA,WAAA;AJuCF;;AIzBE;EACE,cAAA;EACA,WAAA;AJ4BJ;;AI9BE;EACE,cAAA;EACA,UAAA;AJiCJ;;AInCE;EACE,cAAA;EACA,qBAAA;AJsCJ;;AIxCE;EACE,cAAA;EACA,UAAA;AJ2CJ;;AI7CE;EACE,cAAA;EACA,UAAA;AJgDJ;;AIlDE;EACE,cAAA;EACA,qBAAA;AJqDJ;;AItBM;EAhDJ,cAAA;EACA,WAAA;AJ0EF;;AIrBU;EAhEN,cAAA;EACA,kBAAA;AJyFJ;;AI1BU;EAhEN,cAAA;EACA,mBAAA;AJ8FJ;;AI/BU;EAhEN,cAAA;EACA,UAAA;AJmGJ;;AIpCU;EAhEN,cAAA;EACA,mBAAA;AJwGJ;;AIzCU;EAhEN,cAAA;EACA,mBAAA;AJ6GJ;;AI9CU;EAhEN,cAAA;EACA,UAAA;AJkHJ;;AInDU;EAhEN,cAAA;EACA,mBAAA;AJuHJ;;AIxDU;EAhEN,cAAA;EACA,mBAAA;AJ4HJ;;AI7DU;EAhEN,cAAA;EACA,UAAA;AJiIJ;;AIlEU;EAhEN,cAAA;EACA,mBAAA;AJsIJ;;AIvEU;EAhEN,cAAA;EACA,mBAAA;AJ2IJ;;AI5EU;EAhEN,cAAA;EACA,WAAA;AJgJJ;;AIzEY;EAxDV,wBAAA;AJqIF;;AI7EY;EAxDV,yBAAA;AJyIF;;AIjFY;EAxDV,gBAAA;AJ6IF;;AIrFY;EAxDV,yBAAA;AJiJF;;AIzFY;EAxDV,yBAAA;AJqJF;;AI7FY;EAxDV,gBAAA;AJyJF;;AIjGY;EAxDV,yBAAA;AJ6JF;;AIrGY;EAxDV,yBAAA;AJiKF;;AIzGY;EAxDV,gBAAA;AJqKF;;AI7GY;EAxDV,yBAAA;AJyKF;;AIjHY;EAxDV,yBAAA;AJ6KF;;AI1GQ;;EAEE,gBAAA;AJ6GV;;AI1GQ;;EAEE,gBAAA;AJ6GV;;AIpHQ;;EAEE,sBAAA;AJuHV;;AIpHQ;;EAEE,sBAAA;AJuHV;;AI9HQ;;EAEE,qBAAA;AJiIV;;AI9HQ;;EAEE,qBAAA;AJiIV;;AIxIQ;;EAEE,mBAAA;AJ2IV;;AIxIQ;;EAEE,mBAAA;AJ2IV;;AIlJQ;;EAEE,qBAAA;AJqJV;;AIlJQ;;EAEE,qBAAA;AJqJV;;AI5JQ;;EAEE,mBAAA;AJ+JV;;AI5JQ;;EAEE,mBAAA;AJ+JV;;ACzNI;EGUE;IACE,YAAA;EJmNN;EIhNI;IApCJ,cAAA;IACA,WAAA;EJuPA;EIzOA;IACE,cAAA;IACA,WAAA;EJ2OF;EI7OA;IACE,cAAA;IACA,UAAA;EJ+OF;EIjPA;IACE,cAAA;IACA,qBAAA;EJmPF;EIrPA;IACE,cAAA;IACA,UAAA;EJuPF;EIzPA;IACE,cAAA;IACA,UAAA;EJ2PF;EI7PA;IACE,cAAA;IACA,qBAAA;EJ+PF;EIhOI;IAhDJ,cAAA;IACA,WAAA;EJmRA;EI9NQ;IAhEN,cAAA;IACA,kBAAA;EJiSF;EIlOQ;IAhEN,cAAA;IACA,mBAAA;EJqSF;EItOQ;IAhEN,cAAA;IACA,UAAA;EJySF;EI1OQ;IAhEN,cAAA;IACA,mBAAA;EJ6SF;EI9OQ;IAhEN,cAAA;IACA,mBAAA;EJiTF;EIlPQ;IAhEN,cAAA;IACA,UAAA;EJqTF;EItPQ;IAhEN,cAAA;IACA,mBAAA;EJyTF;EI1PQ;IAhEN,cAAA;IACA,mBAAA;EJ6TF;EI9PQ;IAhEN,cAAA;IACA,UAAA;EJiUF;EIlQQ;IAhEN,cAAA;IACA,mBAAA;EJqUF;EItQQ;IAhEN,cAAA;IACA,mBAAA;EJyUF;EI1QQ;IAhEN,cAAA;IACA,WAAA;EJ6UF;EItQU;IAxDV,cAAA;EJiUA;EIzQU;IAxDV,wBAAA;EJoUA;EI5QU;IAxDV,yBAAA;EJuUA;EI/QU;IAxDV,gBAAA;EJ0UA;EIlRU;IAxDV,yBAAA;EJ6UA;EIrRU;IAxDV,yBAAA;EJgVA;EIxRU;IAxDV,gBAAA;EJmVA;EI3RU;IAxDV,yBAAA;EJsVA;EI9RU;IAxDV,yBAAA;EJyVA;EIjSU;IAxDV,gBAAA;EJ4VA;EIpSU;IAxDV,yBAAA;EJ+VA;EIvSU;IAxDV,yBAAA;EJkWA;EI/RM;;IAEE,gBAAA;EJiSR;EI9RM;;IAEE,gBAAA;EJgSR;EIvSM;;IAEE,sBAAA;EJySR;EItSM;;IAEE,sBAAA;EJwSR;EI/SM;;IAEE,qBAAA;EJiTR;EI9SM;;IAEE,qBAAA;EJgTR;EIvTM;;IAEE,mBAAA;EJyTR;EItTM;;IAEE,mBAAA;EJwTR;EI/TM;;IAEE,qBAAA;EJiUR;EI9TM;;IAEE,qBAAA;EJgUR;EIvUM;;IAEE,mBAAA;EJyUR;EItUM;;IAEE,mBAAA;EJwUR;AACF;ACnYI;EGUE;IACE,YAAA;EJ4XN;EIzXI;IApCJ,cAAA;IACA,WAAA;EJgaA;EIlZA;IACE,cAAA;IACA,WAAA;EJoZF;EItZA;IACE,cAAA;IACA,UAAA;EJwZF;EI1ZA;IACE,cAAA;IACA,qBAAA;EJ4ZF;EI9ZA;IACE,cAAA;IACA,UAAA;EJgaF;EIlaA;IACE,cAAA;IACA,UAAA;EJoaF;EItaA;IACE,cAAA;IACA,qBAAA;EJwaF;EIzYI;IAhDJ,cAAA;IACA,WAAA;EJ4bA;EIvYQ;IAhEN,cAAA;IACA,kBAAA;EJ0cF;EI3YQ;IAhEN,cAAA;IACA,mBAAA;EJ8cF;EI/YQ;IAhEN,cAAA;IACA,UAAA;EJkdF;EInZQ;IAhEN,cAAA;IACA,mBAAA;EJsdF;EIvZQ;IAhEN,cAAA;IACA,mBAAA;EJ0dF;EI3ZQ;IAhEN,cAAA;IACA,UAAA;EJ8dF;EI/ZQ;IAhEN,cAAA;IACA,mBAAA;EJkeF;EInaQ;IAhEN,cAAA;IACA,mBAAA;EJseF;EIvaQ;IAhEN,cAAA;IACA,UAAA;EJ0eF;EI3aQ;IAhEN,cAAA;IACA,mBAAA;EJ8eF;EI/aQ;IAhEN,cAAA;IACA,mBAAA;EJkfF;EInbQ;IAhEN,cAAA;IACA,WAAA;EJsfF;EI/aU;IAxDV,cAAA;EJ0eA;EIlbU;IAxDV,wBAAA;EJ6eA;EIrbU;IAxDV,yBAAA;EJgfA;EIxbU;IAxDV,gBAAA;EJmfA;EI3bU;IAxDV,yBAAA;EJsfA;EI9bU;IAxDV,yBAAA;EJyfA;EIjcU;IAxDV,gBAAA;EJ4fA;EIpcU;IAxDV,yBAAA;EJ+fA;EIvcU;IAxDV,yBAAA;EJkgBA;EI1cU;IAxDV,gBAAA;EJqgBA;EI7cU;IAxDV,yBAAA;EJwgBA;EIhdU;IAxDV,yBAAA;EJ2gBA;EIxcM;;IAEE,gBAAA;EJ0cR;EIvcM;;IAEE,gBAAA;EJycR;EIhdM;;IAEE,sBAAA;EJkdR;EI/cM;;IAEE,sBAAA;EJidR;EIxdM;;IAEE,qBAAA;EJ0dR;EIvdM;;IAEE,qBAAA;EJydR;EIheM;;IAEE,mBAAA;EJkeR;EI/dM;;IAEE,mBAAA;EJieR;EIxeM;;IAEE,qBAAA;EJ0eR;EIveM;;IAEE,qBAAA;EJyeR;EIhfM;;IAEE,mBAAA;EJkfR;EI/eM;;IAEE,mBAAA;EJifR;AACF;AC5iBI;EGUE;IACE,YAAA;EJqiBN;EIliBI;IApCJ,cAAA;IACA,WAAA;EJykBA;EI3jBA;IACE,cAAA;IACA,WAAA;EJ6jBF;EI/jBA;IACE,cAAA;IACA,UAAA;EJikBF;EInkBA;IACE,cAAA;IACA,qBAAA;EJqkBF;EIvkBA;IACE,cAAA;IACA,UAAA;EJykBF;EI3kBA;IACE,cAAA;IACA,UAAA;EJ6kBF;EI/kBA;IACE,cAAA;IACA,qBAAA;EJilBF;EIljBI;IAhDJ,cAAA;IACA,WAAA;EJqmBA;EIhjBQ;IAhEN,cAAA;IACA,kBAAA;EJmnBF;EIpjBQ;IAhEN,cAAA;IACA,mBAAA;EJunBF;EIxjBQ;IAhEN,cAAA;IACA,UAAA;EJ2nBF;EI5jBQ;IAhEN,cAAA;IACA,mBAAA;EJ+nBF;EIhkBQ;IAhEN,cAAA;IACA,mBAAA;EJmoBF;EIpkBQ;IAhEN,cAAA;IACA,UAAA;EJuoBF;EIxkBQ;IAhEN,cAAA;IACA,mBAAA;EJ2oBF;EI5kBQ;IAhEN,cAAA;IACA,mBAAA;EJ+oBF;EIhlBQ;IAhEN,cAAA;IACA,UAAA;EJmpBF;EIplBQ;IAhEN,cAAA;IACA,mBAAA;EJupBF;EIxlBQ;IAhEN,cAAA;IACA,mBAAA;EJ2pBF;EI5lBQ;IAhEN,cAAA;IACA,WAAA;EJ+pBF;EIxlBU;IAxDV,cAAA;EJmpBA;EI3lBU;IAxDV,wBAAA;EJspBA;EI9lBU;IAxDV,yBAAA;EJypBA;EIjmBU;IAxDV,gBAAA;EJ4pBA;EIpmBU;IAxDV,yBAAA;EJ+pBA;EIvmBU;IAxDV,yBAAA;EJkqBA;EI1mBU;IAxDV,gBAAA;EJqqBA;EI7mBU;IAxDV,yBAAA;EJwqBA;EIhnBU;IAxDV,yBAAA;EJ2qBA;EInnBU;IAxDV,gBAAA;EJ8qBA;EItnBU;IAxDV,yBAAA;EJirBA;EIznBU;IAxDV,yBAAA;EJorBA;EIjnBM;;IAEE,gBAAA;EJmnBR;EIhnBM;;IAEE,gBAAA;EJknBR;EIznBM;;IAEE,sBAAA;EJ2nBR;EIxnBM;;IAEE,sBAAA;EJ0nBR;EIjoBM;;IAEE,qBAAA;EJmoBR;EIhoBM;;IAEE,qBAAA;EJkoBR;EIzoBM;;IAEE,mBAAA;EJ2oBR;EIxoBM;;IAEE,mBAAA;EJ0oBR;EIjpBM;;IAEE,qBAAA;EJmpBR;EIhpBM;;IAEE,qBAAA;EJkpBR;EIzpBM;;IAEE,mBAAA;EJ2pBR;EIxpBM;;IAEE,mBAAA;EJ0pBR;AACF;ACrtBI;EGUE;IACE,YAAA;EJ8sBN;EI3sBI;IApCJ,cAAA;IACA,WAAA;EJkvBA;EIpuBA;IACE,cAAA;IACA,WAAA;EJsuBF;EIxuBA;IACE,cAAA;IACA,UAAA;EJ0uBF;EI5uBA;IACE,cAAA;IACA,qBAAA;EJ8uBF;EIhvBA;IACE,cAAA;IACA,UAAA;EJkvBF;EIpvBA;IACE,cAAA;IACA,UAAA;EJsvBF;EIxvBA;IACE,cAAA;IACA,qBAAA;EJ0vBF;EI3tBI;IAhDJ,cAAA;IACA,WAAA;EJ8wBA;EIztBQ;IAhEN,cAAA;IACA,kBAAA;EJ4xBF;EI7tBQ;IAhEN,cAAA;IACA,mBAAA;EJgyBF;EIjuBQ;IAhEN,cAAA;IACA,UAAA;EJoyBF;EIruBQ;IAhEN,cAAA;IACA,mBAAA;EJwyBF;EIzuBQ;IAhEN,cAAA;IACA,mBAAA;EJ4yBF;EI7uBQ;IAhEN,cAAA;IACA,UAAA;EJgzBF;EIjvBQ;IAhEN,cAAA;IACA,mBAAA;EJozBF;EIrvBQ;IAhEN,cAAA;IACA,mBAAA;EJwzBF;EIzvBQ;IAhEN,cAAA;IACA,UAAA;EJ4zBF;EI7vBQ;IAhEN,cAAA;IACA,mBAAA;EJg0BF;EIjwBQ;IAhEN,cAAA;IACA,mBAAA;EJo0BF;EIrwBQ;IAhEN,cAAA;IACA,WAAA;EJw0BF;EIjwBU;IAxDV,cAAA;EJ4zBA;EIpwBU;IAxDV,wBAAA;EJ+zBA;EIvwBU;IAxDV,yBAAA;EJk0BA;EI1wBU;IAxDV,gBAAA;EJq0BA;EI7wBU;IAxDV,yBAAA;EJw0BA;EIhxBU;IAxDV,yBAAA;EJ20BA;EInxBU;IAxDV,gBAAA;EJ80BA;EItxBU;IAxDV,yBAAA;EJi1BA;EIzxBU;IAxDV,yBAAA;EJo1BA;EI5xBU;IAxDV,gBAAA;EJu1BA;EI/xBU;IAxDV,yBAAA;EJ01BA;EIlyBU;IAxDV,yBAAA;EJ61BA;EI1xBM;;IAEE,gBAAA;EJ4xBR;EIzxBM;;IAEE,gBAAA;EJ2xBR;EIlyBM;;IAEE,sBAAA;EJoyBR;EIjyBM;;IAEE,sBAAA;EJmyBR;EI1yBM;;IAEE,qBAAA;EJ4yBR;EIzyBM;;IAEE,qBAAA;EJ2yBR;EIlzBM;;IAEE,mBAAA;EJozBR;EIjzBM;;IAEE,mBAAA;EJmzBR;EI1zBM;;IAEE,qBAAA;EJ4zBR;EIzzBM;;IAEE,qBAAA;EJ2zBR;EIl0BM;;IAEE,mBAAA;EJo0BR;EIj0BM;;IAEE,mBAAA;EJm0BR;AACF;AC93BI;EGUE;IACE,YAAA;EJu3BN;EIp3BI;IApCJ,cAAA;IACA,WAAA;EJ25BA;EI74BA;IACE,cAAA;IACA,WAAA;EJ+4BF;EIj5BA;IACE,cAAA;IACA,UAAA;EJm5BF;EIr5BA;IACE,cAAA;IACA,qBAAA;EJu5BF;EIz5BA;IACE,cAAA;IACA,UAAA;EJ25BF;EI75BA;IACE,cAAA;IACA,UAAA;EJ+5BF;EIj6BA;IACE,cAAA;IACA,qBAAA;EJm6BF;EIp4BI;IAhDJ,cAAA;IACA,WAAA;EJu7BA;EIl4BQ;IAhEN,cAAA;IACA,kBAAA;EJq8BF;EIt4BQ;IAhEN,cAAA;IACA,mBAAA;EJy8BF;EI14BQ;IAhEN,cAAA;IACA,UAAA;EJ68BF;EI94BQ;IAhEN,cAAA;IACA,mBAAA;EJi9BF;EIl5BQ;IAhEN,cAAA;IACA,mBAAA;EJq9BF;EIt5BQ;IAhEN,cAAA;IACA,UAAA;EJy9BF;EI15BQ;IAhEN,cAAA;IACA,mBAAA;EJ69BF;EI95BQ;IAhEN,cAAA;IACA,mBAAA;EJi+BF;EIl6BQ;IAhEN,cAAA;IACA,UAAA;EJq+BF;EIt6BQ;IAhEN,cAAA;IACA,mBAAA;EJy+BF;EI16BQ;IAhEN,cAAA;IACA,mBAAA;EJ6+BF;EI96BQ;IAhEN,cAAA;IACA,WAAA;EJi/BF;EI16BU;IAxDV,cAAA;EJq+BA;EI76BU;IAxDV,wBAAA;EJw+BA;EIh7BU;IAxDV,yBAAA;EJ2+BA;EIn7BU;IAxDV,gBAAA;EJ8+BA;EIt7BU;IAxDV,yBAAA;EJi/BA;EIz7BU;IAxDV,yBAAA;EJo/BA;EI57BU;IAxDV,gBAAA;EJu/BA;EI/7BU;IAxDV,yBAAA;EJ0/BA;EIl8BU;IAxDV,yBAAA;EJ6/BA;EIr8BU;IAxDV,gBAAA;EJggCA;EIx8BU;IAxDV,yBAAA;EJmgCA;EI38BU;IAxDV,yBAAA;EJsgCA;EIn8BM;;IAEE,gBAAA;EJq8BR;EIl8BM;;IAEE,gBAAA;EJo8BR;EI38BM;;IAEE,sBAAA;EJ68BR;EI18BM;;IAEE,sBAAA;EJ48BR;EIn9BM;;IAEE,qBAAA;EJq9BR;EIl9BM;;IAEE,qBAAA;EJo9BR;EI39BM;;IAEE,mBAAA;EJ69BR;EI19BM;;IAEE,mBAAA;EJ49BR;EIn+BM;;IAEE,qBAAA;EJq+BR;EIl+BM;;IAEE,qBAAA;EJo+BR;EI3+BM;;IAEE,mBAAA;EJ6+BR;EI1+BM;;IAEE,mBAAA;EJ4+BR;AACF;AKpiCQ;EAOI,0BAAA;ALgiCZ;;AKviCQ;EAOI,gCAAA;ALoiCZ;;AK3iCQ;EAOI,yBAAA;ALwiCZ;;AK/iCQ;EAOI,wBAAA;AL4iCZ;;AKnjCQ;EAOI,+BAAA;ALgjCZ;;AKvjCQ;EAOI,yBAAA;ALojCZ;;AK3jCQ;EAOI,6BAAA;ALwjCZ;;AK/jCQ;EAOI,8BAAA;AL4jCZ;;AKnkCQ;EAOI,wBAAA;ALgkCZ;;AKvkCQ;EAOI,+BAAA;ALokCZ;;AK3kCQ;EAOI,wBAAA;ALwkCZ;;AK/kCQ;EAOI,yBAAA;AL4kCZ;;AKnlCQ;EAOI,8BAAA;ALglCZ;;AKvlCQ;EAOI,iCAAA;ALolCZ;;AK3lCQ;EAOI,sCAAA;ALwlCZ;;AK/lCQ;EAOI,yCAAA;AL4lCZ;;AKnmCQ;EAOI,uBAAA;ALgmCZ;;AKvmCQ;EAOI,uBAAA;ALomCZ;;AK3mCQ;EAOI,yBAAA;ALwmCZ;;AK/mCQ;EAOI,yBAAA;AL4mCZ;;AKnnCQ;EAOI,0BAAA;ALgnCZ;;AKvnCQ;EAOI,4BAAA;ALonCZ;;AK3nCQ;EAOI,kCAAA;ALwnCZ;;AK/nCQ;EAOI,sCAAA;AL4nCZ;;AKnoCQ;EAOI,oCAAA;ALgoCZ;;AKvoCQ;EAOI,kCAAA;ALooCZ;;AK3oCQ;EAOI,yCAAA;ALwoCZ;;AK/oCQ;EAOI,wCAAA;AL4oCZ;;AKnpCQ;EAOI,wCAAA;ALgpCZ;;AKvpCQ;EAOI,kCAAA;ALopCZ;;AK3pCQ;EAOI,gCAAA;ALwpCZ;;AK/pCQ;EAOI,8BAAA;AL4pCZ;;AKnqCQ;EAOI,gCAAA;ALgqCZ;;AKvqCQ;EAOI,+BAAA;ALoqCZ;;AK3qCQ;EAOI,oCAAA;ALwqCZ;;AK/qCQ;EAOI,kCAAA;AL4qCZ;;AKnrCQ;EAOI,gCAAA;ALgrCZ;;AKvrCQ;EAOI,uCAAA;ALorCZ;;AK3rCQ;EAOI,sCAAA;ALwrCZ;;AK/rCQ;EAOI,iCAAA;AL4rCZ;;AKnsCQ;EAOI,2BAAA;ALgsCZ;;AKvsCQ;EAOI,iCAAA;ALosCZ;;AK3sCQ;EAOI,+BAAA;ALwsCZ;;AK/sCQ;EAOI,6BAAA;AL4sCZ;;AKntCQ;EAOI,+BAAA;ALgtCZ;;AKvtCQ;EAOI,8BAAA;ALotCZ;;AK3tCQ;EAOI,oBAAA;ALwtCZ;;AK/tCQ;EAOI,mBAAA;AL4tCZ;;AKnuCQ;EAOI,mBAAA;ALguCZ;;AKvuCQ;EAOI,mBAAA;ALouCZ;;AK3uCQ;EAOI,mBAAA;ALwuCZ;;AK/uCQ;EAOI,mBAAA;AL4uCZ;;AKnvCQ;EAOI,mBAAA;ALgvCZ;;AKvvCQ;EAOI,mBAAA;ALovCZ;;AK3vCQ;EAOI,oBAAA;ALwvCZ;;AK/vCQ;EAOI,0BAAA;AL4vCZ;;AKnwCQ;EAOI,yBAAA;ALgwCZ;;AKvwCQ;EAOI,uBAAA;ALowCZ;;AK3wCQ;EAOI,yBAAA;ALwwCZ;;AK/wCQ;EAOI,uBAAA;AL4wCZ;;AKnxCQ;EAOI,uBAAA;ALgxCZ;;AKvxCQ;EAOI,0BAAA;EAAA,yBAAA;ALqxCZ;;AK5xCQ;EAOI,gCAAA;EAAA,+BAAA;AL0xCZ;;AKjyCQ;EAOI,+BAAA;EAAA,8BAAA;AL+xCZ;;AKtyCQ;EAOI,6BAAA;EAAA,4BAAA;ALoyCZ;;AK3yCQ;EAOI,+BAAA;EAAA,8BAAA;ALyyCZ;;AKhzCQ;EAOI,6BAAA;EAAA,4BAAA;AL8yCZ;;AKrzCQ;EAOI,6BAAA;EAAA,4BAAA;ALmzCZ;;AK1zCQ;EAOI,wBAAA;EAAA,2BAAA;ALwzCZ;;AK/zCQ;EAOI,8BAAA;EAAA,iCAAA;AL6zCZ;;AKp0CQ;EAOI,6BAAA;EAAA,gCAAA;ALk0CZ;;AKz0CQ;EAOI,2BAAA;EAAA,8BAAA;ALu0CZ;;AK90CQ;EAOI,6BAAA;EAAA,gCAAA;AL40CZ;;AKn1CQ;EAOI,2BAAA;EAAA,8BAAA;ALi1CZ;;AKx1CQ;EAOI,2BAAA;EAAA,8BAAA;ALs1CZ;;AK71CQ;EAOI,wBAAA;AL01CZ;;AKj2CQ;EAOI,8BAAA;AL81CZ;;AKr2CQ;EAOI,6BAAA;ALk2CZ;;AKz2CQ;EAOI,2BAAA;ALs2CZ;;AK72CQ;EAOI,6BAAA;AL02CZ;;AKj3CQ;EAOI,2BAAA;AL82CZ;;AKr3CQ;EAOI,2BAAA;ALk3CZ;;AKz3CQ;EAOI,0BAAA;ALs3CZ;;AK73CQ;EAOI,gCAAA;AL03CZ;;AKj4CQ;EAOI,+BAAA;AL83CZ;;AKr4CQ;EAOI,6BAAA;ALk4CZ;;AKz4CQ;EAOI,+BAAA;ALs4CZ;;AK74CQ;EAOI,6BAAA;AL04CZ;;AKj5CQ;EAOI,6BAAA;AL84CZ;;AKr5CQ;EAOI,2BAAA;ALk5CZ;;AKz5CQ;EAOI,iCAAA;ALs5CZ;;AK75CQ;EAOI,gCAAA;AL05CZ;;AKj6CQ;EAOI,8BAAA;AL85CZ;;AKr6CQ;EAOI,gCAAA;ALk6CZ;;AKz6CQ;EAOI,8BAAA;ALs6CZ;;AK76CQ;EAOI,8BAAA;AL06CZ;;AKj7CQ;EAOI,yBAAA;AL86CZ;;AKr7CQ;EAOI,+BAAA;ALk7CZ;;AKz7CQ;EAOI,8BAAA;ALs7CZ;;AK77CQ;EAOI,4BAAA;AL07CZ;;AKj8CQ;EAOI,8BAAA;AL87CZ;;AKr8CQ;EAOI,4BAAA;ALk8CZ;;AKz8CQ;EAOI,4BAAA;ALs8CZ;;AK78CQ;EAOI,qBAAA;AL08CZ;;AKj9CQ;EAOI,2BAAA;AL88CZ;;AKr9CQ;EAOI,0BAAA;ALk9CZ;;AKz9CQ;EAOI,wBAAA;ALs9CZ;;AK79CQ;EAOI,0BAAA;AL09CZ;;AKj+CQ;EAOI,wBAAA;AL89CZ;;AKr+CQ;EAOI,2BAAA;EAAA,0BAAA;ALm+CZ;;AK1+CQ;EAOI,iCAAA;EAAA,gCAAA;ALw+CZ;;AK/+CQ;EAOI,gCAAA;EAAA,+BAAA;AL6+CZ;;AKp/CQ;EAOI,8BAAA;EAAA,6BAAA;ALk/CZ;;AKz/CQ;EAOI,gCAAA;EAAA,+BAAA;ALu/CZ;;AK9/CQ;EAOI,8BAAA;EAAA,6BAAA;AL4/CZ;;AKngDQ;EAOI,yBAAA;EAAA,4BAAA;ALigDZ;;AKxgDQ;EAOI,+BAAA;EAAA,kCAAA;ALsgDZ;;AK7gDQ;EAOI,8BAAA;EAAA,iCAAA;AL2gDZ;;AKlhDQ;EAOI,4BAAA;EAAA,+BAAA;ALghDZ;;AKvhDQ;EAOI,8BAAA;EAAA,iCAAA;ALqhDZ;;AK5hDQ;EAOI,4BAAA;EAAA,+BAAA;AL0hDZ;;AKjiDQ;EAOI,yBAAA;AL8hDZ;;AKriDQ;EAOI,+BAAA;ALkiDZ;;AKziDQ;EAOI,8BAAA;ALsiDZ;;AK7iDQ;EAOI,4BAAA;AL0iDZ;;AKjjDQ;EAOI,8BAAA;AL8iDZ;;AKrjDQ;EAOI,4BAAA;ALkjDZ;;AKzjDQ;EAOI,2BAAA;ALsjDZ;;AK7jDQ;EAOI,iCAAA;AL0jDZ;;AKjkDQ;EAOI,gCAAA;AL8jDZ;;AKrkDQ;EAOI,8BAAA;ALkkDZ;;AKzkDQ;EAOI,gCAAA;ALskDZ;;AK7kDQ;EAOI,8BAAA;AL0kDZ;;AKjlDQ;EAOI,4BAAA;AL8kDZ;;AKrlDQ;EAOI,kCAAA;ALklDZ;;AKzlDQ;EAOI,iCAAA;ALslDZ;;AK7lDQ;EAOI,+BAAA;AL0lDZ;;AKjmDQ;EAOI,iCAAA;AL8lDZ;;AKrmDQ;EAOI,+BAAA;ALkmDZ;;AKzmDQ;EAOI,0BAAA;ALsmDZ;;AK7mDQ;EAOI,gCAAA;AL0mDZ;;AKjnDQ;EAOI,+BAAA;AL8mDZ;;AKrnDQ;EAOI,6BAAA;ALknDZ;;AKznDQ;EAOI,+BAAA;ALsnDZ;;AK7nDQ;EAOI,6BAAA;AL0nDZ;;ACpoDI;EIGI;IAOI,0BAAA;EL+nDV;EKtoDM;IAOI,gCAAA;ELkoDV;EKzoDM;IAOI,yBAAA;ELqoDV;EK5oDM;IAOI,wBAAA;ELwoDV;EK/oDM;IAOI,+BAAA;EL2oDV;EKlpDM;IAOI,yBAAA;EL8oDV;EKrpDM;IAOI,6BAAA;ELipDV;EKxpDM;IAOI,8BAAA;ELopDV;EK3pDM;IAOI,wBAAA;ELupDV;EK9pDM;IAOI,+BAAA;EL0pDV;EKjqDM;IAOI,wBAAA;EL6pDV;EKpqDM;IAOI,yBAAA;ELgqDV;EKvqDM;IAOI,8BAAA;ELmqDV;EK1qDM;IAOI,iCAAA;ELsqDV;EK7qDM;IAOI,sCAAA;ELyqDV;EKhrDM;IAOI,yCAAA;EL4qDV;EKnrDM;IAOI,uBAAA;EL+qDV;EKtrDM;IAOI,uBAAA;ELkrDV;EKzrDM;IAOI,yBAAA;ELqrDV;EK5rDM;IAOI,yBAAA;ELwrDV;EK/rDM;IAOI,0BAAA;EL2rDV;EKlsDM;IAOI,4BAAA;EL8rDV;EKrsDM;IAOI,kCAAA;ELisDV;EKxsDM;IAOI,sCAAA;ELosDV;EK3sDM;IAOI,oCAAA;ELusDV;EK9sDM;IAOI,kCAAA;EL0sDV;EKjtDM;IAOI,yCAAA;EL6sDV;EKptDM;IAOI,wCAAA;ELgtDV;EKvtDM;IAOI,wCAAA;ELmtDV;EK1tDM;IAOI,kCAAA;ELstDV;EK7tDM;IAOI,gCAAA;ELytDV;EKhuDM;IAOI,8BAAA;EL4tDV;EKnuDM;IAOI,gCAAA;EL+tDV;EKtuDM;IAOI,+BAAA;ELkuDV;EKzuDM;IAOI,oCAAA;ELquDV;EK5uDM;IAOI,kCAAA;ELwuDV;EK/uDM;IAOI,gCAAA;EL2uDV;EKlvDM;IAOI,uCAAA;EL8uDV;EKrvDM;IAOI,sCAAA;ELivDV;EKxvDM;IAOI,iCAAA;ELovDV;EK3vDM;IAOI,2BAAA;ELuvDV;EK9vDM;IAOI,iCAAA;EL0vDV;EKjwDM;IAOI,+BAAA;EL6vDV;EKpwDM;IAOI,6BAAA;ELgwDV;EKvwDM;IAOI,+BAAA;ELmwDV;EK1wDM;IAOI,8BAAA;ELswDV;EK7wDM;IAOI,oBAAA;ELywDV;EKhxDM;IAOI,mBAAA;EL4wDV;EKnxDM;IAOI,mBAAA;EL+wDV;EKtxDM;IAOI,mBAAA;ELkxDV;EKzxDM;IAOI,mBAAA;ELqxDV;EK5xDM;IAOI,mBAAA;ELwxDV;EK/xDM;IAOI,mBAAA;EL2xDV;EKlyDM;IAOI,mBAAA;EL8xDV;EKryDM;IAOI,oBAAA;ELiyDV;EKxyDM;IAOI,0BAAA;ELoyDV;EK3yDM;IAOI,yBAAA;ELuyDV;EK9yDM;IAOI,uBAAA;EL0yDV;EKjzDM;IAOI,yBAAA;EL6yDV;EKpzDM;IAOI,uBAAA;ELgzDV;EKvzDM;IAOI,uBAAA;ELmzDV;EK1zDM;IAOI,0BAAA;IAAA,yBAAA;ELuzDV;EK9zDM;IAOI,gCAAA;IAAA,+BAAA;EL2zDV;EKl0DM;IAOI,+BAAA;IAAA,8BAAA;EL+zDV;EKt0DM;IAOI,6BAAA;IAAA,4BAAA;ELm0DV;EK10DM;IAOI,+BAAA;IAAA,8BAAA;ELu0DV;EK90DM;IAOI,6BAAA;IAAA,4BAAA;EL20DV;EKl1DM;IAOI,6BAAA;IAAA,4BAAA;EL+0DV;EKt1DM;IAOI,wBAAA;IAAA,2BAAA;ELm1DV;EK11DM;IAOI,8BAAA;IAAA,iCAAA;ELu1DV;EK91DM;IAOI,6BAAA;IAAA,gCAAA;EL21DV;EKl2DM;IAOI,2BAAA;IAAA,8BAAA;EL+1DV;EKt2DM;IAOI,6BAAA;IAAA,gCAAA;ELm2DV;EK12DM;IAOI,2BAAA;IAAA,8BAAA;ELu2DV;EK92DM;IAOI,2BAAA;IAAA,8BAAA;EL22DV;EKl3DM;IAOI,wBAAA;EL82DV;EKr3DM;IAOI,8BAAA;ELi3DV;EKx3DM;IAOI,6BAAA;ELo3DV;EK33DM;IAOI,2BAAA;ELu3DV;EK93DM;IAOI,6BAAA;EL03DV;EKj4DM;IAOI,2BAAA;EL63DV;EKp4DM;IAOI,2BAAA;ELg4DV;EKv4DM;IAOI,0BAAA;ELm4DV;EK14DM;IAOI,gCAAA;ELs4DV;EK74DM;IAOI,+BAAA;ELy4DV;EKh5DM;IAOI,6BAAA;EL44DV;EKn5DM;IAOI,+BAAA;EL+4DV;EKt5DM;IAOI,6BAAA;ELk5DV;EKz5DM;IAOI,6BAAA;ELq5DV;EK55DM;IAOI,2BAAA;ELw5DV;EK/5DM;IAOI,iCAAA;EL25DV;EKl6DM;IAOI,gCAAA;EL85DV;EKr6DM;IAOI,8BAAA;ELi6DV;EKx6DM;IAOI,gCAAA;ELo6DV;EK36DM;IAOI,8BAAA;ELu6DV;EK96DM;IAOI,8BAAA;EL06DV;EKj7DM;IAOI,yBAAA;EL66DV;EKp7DM;IAOI,+BAAA;ELg7DV;EKv7DM;IAOI,8BAAA;ELm7DV;EK17DM;IAOI,4BAAA;ELs7DV;EK77DM;IAOI,8BAAA;ELy7DV;EKh8DM;IAOI,4BAAA;EL47DV;EKn8DM;IAOI,4BAAA;EL+7DV;EKt8DM;IAOI,qBAAA;ELk8DV;EKz8DM;IAOI,2BAAA;ELq8DV;EK58DM;IAOI,0BAAA;ELw8DV;EK/8DM;IAOI,wBAAA;EL28DV;EKl9DM;IAOI,0BAAA;EL88DV;EKr9DM;IAOI,wBAAA;ELi9DV;EKx9DM;IAOI,2BAAA;IAAA,0BAAA;ELq9DV;EK59DM;IAOI,iCAAA;IAAA,gCAAA;ELy9DV;EKh+DM;IAOI,gCAAA;IAAA,+BAAA;EL69DV;EKp+DM;IAOI,8BAAA;IAAA,6BAAA;ELi+DV;EKx+DM;IAOI,gCAAA;IAAA,+BAAA;ELq+DV;EK5+DM;IAOI,8BAAA;IAAA,6BAAA;ELy+DV;EKh/DM;IAOI,yBAAA;IAAA,4BAAA;EL6+DV;EKp/DM;IAOI,+BAAA;IAAA,kCAAA;ELi/DV;EKx/DM;IAOI,8BAAA;IAAA,iCAAA;ELq/DV;EK5/DM;IAOI,4BAAA;IAAA,+BAAA;ELy/DV;EKhgEM;IAOI,8BAAA;IAAA,iCAAA;EL6/DV;EKpgEM;IAOI,4BAAA;IAAA,+BAAA;ELigEV;EKxgEM;IAOI,yBAAA;ELogEV;EK3gEM;IAOI,+BAAA;ELugEV;EK9gEM;IAOI,8BAAA;EL0gEV;EKjhEM;IAOI,4BAAA;EL6gEV;EKphEM;IAOI,8BAAA;ELghEV;EKvhEM;IAOI,4BAAA;ELmhEV;EK1hEM;IAOI,2BAAA;ELshEV;EK7hEM;IAOI,iCAAA;ELyhEV;EKhiEM;IAOI,gCAAA;EL4hEV;EKniEM;IAOI,8BAAA;EL+hEV;EKtiEM;IAOI,gCAAA;ELkiEV;EKziEM;IAOI,8BAAA;ELqiEV;EK5iEM;IAOI,4BAAA;ELwiEV;EK/iEM;IAOI,kCAAA;EL2iEV;EKljEM;IAOI,iCAAA;EL8iEV;EKrjEM;IAOI,+BAAA;ELijEV;EKxjEM;IAOI,iCAAA;ELojEV;EK3jEM;IAOI,+BAAA;ELujEV;EK9jEM;IAOI,0BAAA;EL0jEV;EKjkEM;IAOI,gCAAA;EL6jEV;EKpkEM;IAOI,+BAAA;ELgkEV;EKvkEM;IAOI,6BAAA;ELmkEV;EK1kEM;IAOI,+BAAA;ELskEV;EK7kEM;IAOI,6BAAA;ELykEV;AACF;ACplEI;EIGI;IAOI,0BAAA;EL8kEV;EKrlEM;IAOI,gCAAA;ELilEV;EKxlEM;IAOI,yBAAA;ELolEV;EK3lEM;IAOI,wBAAA;ELulEV;EK9lEM;IAOI,+BAAA;EL0lEV;EKjmEM;IAOI,yBAAA;EL6lEV;EKpmEM;IAOI,6BAAA;ELgmEV;EKvmEM;IAOI,8BAAA;ELmmEV;EK1mEM;IAOI,wBAAA;ELsmEV;EK7mEM;IAOI,+BAAA;ELymEV;EKhnEM;IAOI,wBAAA;EL4mEV;EKnnEM;IAOI,yBAAA;EL+mEV;EKtnEM;IAOI,8BAAA;ELknEV;EKznEM;IAOI,iCAAA;ELqnEV;EK5nEM;IAOI,sCAAA;ELwnEV;EK/nEM;IAOI,yCAAA;EL2nEV;EKloEM;IAOI,uBAAA;EL8nEV;EKroEM;IAOI,uBAAA;ELioEV;EKxoEM;IAOI,yBAAA;ELooEV;EK3oEM;IAOI,yBAAA;ELuoEV;EK9oEM;IAOI,0BAAA;EL0oEV;EKjpEM;IAOI,4BAAA;EL6oEV;EKppEM;IAOI,kCAAA;ELgpEV;EKvpEM;IAOI,sCAAA;ELmpEV;EK1pEM;IAOI,oCAAA;ELspEV;EK7pEM;IAOI,kCAAA;ELypEV;EKhqEM;IAOI,yCAAA;EL4pEV;EKnqEM;IAOI,wCAAA;EL+pEV;EKtqEM;IAOI,wCAAA;ELkqEV;EKzqEM;IAOI,kCAAA;ELqqEV;EK5qEM;IAOI,gCAAA;ELwqEV;EK/qEM;IAOI,8BAAA;EL2qEV;EKlrEM;IAOI,gCAAA;EL8qEV;EKrrEM;IAOI,+BAAA;ELirEV;EKxrEM;IAOI,oCAAA;ELorEV;EK3rEM;IAOI,kCAAA;ELurEV;EK9rEM;IAOI,gCAAA;EL0rEV;EKjsEM;IAOI,uCAAA;EL6rEV;EKpsEM;IAOI,sCAAA;ELgsEV;EKvsEM;IAOI,iCAAA;ELmsEV;EK1sEM;IAOI,2BAAA;ELssEV;EK7sEM;IAOI,iCAAA;ELysEV;EKhtEM;IAOI,+BAAA;EL4sEV;EKntEM;IAOI,6BAAA;EL+sEV;EKttEM;IAOI,+BAAA;ELktEV;EKztEM;IAOI,8BAAA;ELqtEV;EK5tEM;IAOI,oBAAA;ELwtEV;EK/tEM;IAOI,mBAAA;EL2tEV;EKluEM;IAOI,mBAAA;EL8tEV;EKruEM;IAOI,mBAAA;ELiuEV;EKxuEM;IAOI,mBAAA;ELouEV;EK3uEM;IAOI,mBAAA;ELuuEV;EK9uEM;IAOI,mBAAA;EL0uEV;EKjvEM;IAOI,mBAAA;EL6uEV;EKpvEM;IAOI,oBAAA;ELgvEV;EKvvEM;IAOI,0BAAA;ELmvEV;EK1vEM;IAOI,yBAAA;ELsvEV;EK7vEM;IAOI,uBAAA;ELyvEV;EKhwEM;IAOI,yBAAA;EL4vEV;EKnwEM;IAOI,uBAAA;EL+vEV;EKtwEM;IAOI,uBAAA;ELkwEV;EKzwEM;IAOI,0BAAA;IAAA,yBAAA;ELswEV;EK7wEM;IAOI,gCAAA;IAAA,+BAAA;EL0wEV;EKjxEM;IAOI,+BAAA;IAAA,8BAAA;EL8wEV;EKrxEM;IAOI,6BAAA;IAAA,4BAAA;ELkxEV;EKzxEM;IAOI,+BAAA;IAAA,8BAAA;ELsxEV;EK7xEM;IAOI,6BAAA;IAAA,4BAAA;EL0xEV;EKjyEM;IAOI,6BAAA;IAAA,4BAAA;EL8xEV;EKryEM;IAOI,wBAAA;IAAA,2BAAA;ELkyEV;EKzyEM;IAOI,8BAAA;IAAA,iCAAA;ELsyEV;EK7yEM;IAOI,6BAAA;IAAA,gCAAA;EL0yEV;EKjzEM;IAOI,2BAAA;IAAA,8BAAA;EL8yEV;EKrzEM;IAOI,6BAAA;IAAA,gCAAA;ELkzEV;EKzzEM;IAOI,2BAAA;IAAA,8BAAA;ELszEV;EK7zEM;IAOI,2BAAA;IAAA,8BAAA;EL0zEV;EKj0EM;IAOI,wBAAA;EL6zEV;EKp0EM;IAOI,8BAAA;ELg0EV;EKv0EM;IAOI,6BAAA;ELm0EV;EK10EM;IAOI,2BAAA;ELs0EV;EK70EM;IAOI,6BAAA;ELy0EV;EKh1EM;IAOI,2BAAA;EL40EV;EKn1EM;IAOI,2BAAA;EL+0EV;EKt1EM;IAOI,0BAAA;ELk1EV;EKz1EM;IAOI,gCAAA;ELq1EV;EK51EM;IAOI,+BAAA;ELw1EV;EK/1EM;IAOI,6BAAA;EL21EV;EKl2EM;IAOI,+BAAA;EL81EV;EKr2EM;IAOI,6BAAA;ELi2EV;EKx2EM;IAOI,6BAAA;ELo2EV;EK32EM;IAOI,2BAAA;ELu2EV;EK92EM;IAOI,iCAAA;EL02EV;EKj3EM;IAOI,gCAAA;EL62EV;EKp3EM;IAOI,8BAAA;ELg3EV;EKv3EM;IAOI,gCAAA;ELm3EV;EK13EM;IAOI,8BAAA;ELs3EV;EK73EM;IAOI,8BAAA;ELy3EV;EKh4EM;IAOI,yBAAA;EL43EV;EKn4EM;IAOI,+BAAA;EL+3EV;EKt4EM;IAOI,8BAAA;ELk4EV;EKz4EM;IAOI,4BAAA;ELq4EV;EK54EM;IAOI,8BAAA;ELw4EV;EK/4EM;IAOI,4BAAA;EL24EV;EKl5EM;IAOI,4BAAA;EL84EV;EKr5EM;IAOI,qBAAA;ELi5EV;EKx5EM;IAOI,2BAAA;ELo5EV;EK35EM;IAOI,0BAAA;ELu5EV;EK95EM;IAOI,wBAAA;EL05EV;EKj6EM;IAOI,0BAAA;EL65EV;EKp6EM;IAOI,wBAAA;ELg6EV;EKv6EM;IAOI,2BAAA;IAAA,0BAAA;ELo6EV;EK36EM;IAOI,iCAAA;IAAA,gCAAA;ELw6EV;EK/6EM;IAOI,gCAAA;IAAA,+BAAA;EL46EV;EKn7EM;IAOI,8BAAA;IAAA,6BAAA;ELg7EV;EKv7EM;IAOI,gCAAA;IAAA,+BAAA;ELo7EV;EK37EM;IAOI,8BAAA;IAAA,6BAAA;ELw7EV;EK/7EM;IAOI,yBAAA;IAAA,4BAAA;EL47EV;EKn8EM;IAOI,+BAAA;IAAA,kCAAA;ELg8EV;EKv8EM;IAOI,8BAAA;IAAA,iCAAA;ELo8EV;EK38EM;IAOI,4BAAA;IAAA,+BAAA;ELw8EV;EK/8EM;IAOI,8BAAA;IAAA,iCAAA;EL48EV;EKn9EM;IAOI,4BAAA;IAAA,+BAAA;ELg9EV;EKv9EM;IAOI,yBAAA;ELm9EV;EK19EM;IAOI,+BAAA;ELs9EV;EK79EM;IAOI,8BAAA;ELy9EV;EKh+EM;IAOI,4BAAA;EL49EV;EKn+EM;IAOI,8BAAA;EL+9EV;EKt+EM;IAOI,4BAAA;ELk+EV;EKz+EM;IAOI,2BAAA;ELq+EV;EK5+EM;IAOI,iCAAA;ELw+EV;EK/+EM;IAOI,gCAAA;EL2+EV;EKl/EM;IAOI,8BAAA;EL8+EV;EKr/EM;IAOI,gCAAA;ELi/EV;EKx/EM;IAOI,8BAAA;ELo/EV;EK3/EM;IAOI,4BAAA;ELu/EV;EK9/EM;IAOI,kCAAA;EL0/EV;EKjgFM;IAOI,iCAAA;EL6/EV;EKpgFM;IAOI,+BAAA;ELggFV;EKvgFM;IAOI,iCAAA;ELmgFV;EK1gFM;IAOI,+BAAA;ELsgFV;EK7gFM;IAOI,0BAAA;ELygFV;EKhhFM;IAOI,gCAAA;EL4gFV;EKnhFM;IAOI,+BAAA;EL+gFV;EKthFM;IAOI,6BAAA;ELkhFV;EKzhFM;IAOI,+BAAA;ELqhFV;EK5hFM;IAOI,6BAAA;ELwhFV;AACF;ACniFI;EIGI;IAOI,0BAAA;EL6hFV;EKpiFM;IAOI,gCAAA;ELgiFV;EKviFM;IAOI,yBAAA;ELmiFV;EK1iFM;IAOI,wBAAA;ELsiFV;EK7iFM;IAOI,+BAAA;ELyiFV;EKhjFM;IAOI,yBAAA;EL4iFV;EKnjFM;IAOI,6BAAA;EL+iFV;EKtjFM;IAOI,8BAAA;ELkjFV;EKzjFM;IAOI,wBAAA;ELqjFV;EK5jFM;IAOI,+BAAA;ELwjFV;EK/jFM;IAOI,wBAAA;EL2jFV;EKlkFM;IAOI,yBAAA;EL8jFV;EKrkFM;IAOI,8BAAA;ELikFV;EKxkFM;IAOI,iCAAA;ELokFV;EK3kFM;IAOI,sCAAA;ELukFV;EK9kFM;IAOI,yCAAA;EL0kFV;EKjlFM;IAOI,uBAAA;EL6kFV;EKplFM;IAOI,uBAAA;ELglFV;EKvlFM;IAOI,yBAAA;ELmlFV;EK1lFM;IAOI,yBAAA;ELslFV;EK7lFM;IAOI,0BAAA;ELylFV;EKhmFM;IAOI,4BAAA;EL4lFV;EKnmFM;IAOI,kCAAA;EL+lFV;EKtmFM;IAOI,sCAAA;ELkmFV;EKzmFM;IAOI,oCAAA;ELqmFV;EK5mFM;IAOI,kCAAA;ELwmFV;EK/mFM;IAOI,yCAAA;EL2mFV;EKlnFM;IAOI,wCAAA;EL8mFV;EKrnFM;IAOI,wCAAA;ELinFV;EKxnFM;IAOI,kCAAA;ELonFV;EK3nFM;IAOI,gCAAA;ELunFV;EK9nFM;IAOI,8BAAA;EL0nFV;EKjoFM;IAOI,gCAAA;EL6nFV;EKpoFM;IAOI,+BAAA;ELgoFV;EKvoFM;IAOI,oCAAA;ELmoFV;EK1oFM;IAOI,kCAAA;ELsoFV;EK7oFM;IAOI,gCAAA;ELyoFV;EKhpFM;IAOI,uCAAA;EL4oFV;EKnpFM;IAOI,sCAAA;EL+oFV;EKtpFM;IAOI,iCAAA;ELkpFV;EKzpFM;IAOI,2BAAA;ELqpFV;EK5pFM;IAOI,iCAAA;ELwpFV;EK/pFM;IAOI,+BAAA;EL2pFV;EKlqFM;IAOI,6BAAA;EL8pFV;EKrqFM;IAOI,+BAAA;ELiqFV;EKxqFM;IAOI,8BAAA;ELoqFV;EK3qFM;IAOI,oBAAA;ELuqFV;EK9qFM;IAOI,mBAAA;EL0qFV;EKjrFM;IAOI,mBAAA;EL6qFV;EKprFM;IAOI,mBAAA;ELgrFV;EKvrFM;IAOI,mBAAA;ELmrFV;EK1rFM;IAOI,mBAAA;ELsrFV;EK7rFM;IAOI,mBAAA;ELyrFV;EKhsFM;IAOI,mBAAA;EL4rFV;EKnsFM;IAOI,oBAAA;EL+rFV;EKtsFM;IAOI,0BAAA;ELksFV;EKzsFM;IAOI,yBAAA;ELqsFV;EK5sFM;IAOI,uBAAA;ELwsFV;EK/sFM;IAOI,yBAAA;EL2sFV;EKltFM;IAOI,uBAAA;EL8sFV;EKrtFM;IAOI,uBAAA;ELitFV;EKxtFM;IAOI,0BAAA;IAAA,yBAAA;ELqtFV;EK5tFM;IAOI,gCAAA;IAAA,+BAAA;ELytFV;EKhuFM;IAOI,+BAAA;IAAA,8BAAA;EL6tFV;EKpuFM;IAOI,6BAAA;IAAA,4BAAA;ELiuFV;EKxuFM;IAOI,+BAAA;IAAA,8BAAA;ELquFV;EK5uFM;IAOI,6BAAA;IAAA,4BAAA;ELyuFV;EKhvFM;IAOI,6BAAA;IAAA,4BAAA;EL6uFV;EKpvFM;IAOI,wBAAA;IAAA,2BAAA;ELivFV;EKxvFM;IAOI,8BAAA;IAAA,iCAAA;ELqvFV;EK5vFM;IAOI,6BAAA;IAAA,gCAAA;ELyvFV;EKhwFM;IAOI,2BAAA;IAAA,8BAAA;EL6vFV;EKpwFM;IAOI,6BAAA;IAAA,gCAAA;ELiwFV;EKxwFM;IAOI,2BAAA;IAAA,8BAAA;ELqwFV;EK5wFM;IAOI,2BAAA;IAAA,8BAAA;ELywFV;EKhxFM;IAOI,wBAAA;EL4wFV;EKnxFM;IAOI,8BAAA;EL+wFV;EKtxFM;IAOI,6BAAA;ELkxFV;EKzxFM;IAOI,2BAAA;ELqxFV;EK5xFM;IAOI,6BAAA;ELwxFV;EK/xFM;IAOI,2BAAA;EL2xFV;EKlyFM;IAOI,2BAAA;EL8xFV;EKryFM;IAOI,0BAAA;ELiyFV;EKxyFM;IAOI,gCAAA;ELoyFV;EK3yFM;IAOI,+BAAA;ELuyFV;EK9yFM;IAOI,6BAAA;EL0yFV;EKjzFM;IAOI,+BAAA;EL6yFV;EKpzFM;IAOI,6BAAA;ELgzFV;EKvzFM;IAOI,6BAAA;ELmzFV;EK1zFM;IAOI,2BAAA;ELszFV;EK7zFM;IAOI,iCAAA;ELyzFV;EKh0FM;IAOI,gCAAA;EL4zFV;EKn0FM;IAOI,8BAAA;EL+zFV;EKt0FM;IAOI,gCAAA;ELk0FV;EKz0FM;IAOI,8BAAA;ELq0FV;EK50FM;IAOI,8BAAA;ELw0FV;EK/0FM;IAOI,yBAAA;EL20FV;EKl1FM;IAOI,+BAAA;EL80FV;EKr1FM;IAOI,8BAAA;ELi1FV;EKx1FM;IAOI,4BAAA;ELo1FV;EK31FM;IAOI,8BAAA;ELu1FV;EK91FM;IAOI,4BAAA;EL01FV;EKj2FM;IAOI,4BAAA;EL61FV;EKp2FM;IAOI,qBAAA;ELg2FV;EKv2FM;IAOI,2BAAA;ELm2FV;EK12FM;IAOI,0BAAA;ELs2FV;EK72FM;IAOI,wBAAA;ELy2FV;EKh3FM;IAOI,0BAAA;EL42FV;EKn3FM;IAOI,wBAAA;EL+2FV;EKt3FM;IAOI,2BAAA;IAAA,0BAAA;ELm3FV;EK13FM;IAOI,iCAAA;IAAA,gCAAA;ELu3FV;EK93FM;IAOI,gCAAA;IAAA,+BAAA;EL23FV;EKl4FM;IAOI,8BAAA;IAAA,6BAAA;EL+3FV;EKt4FM;IAOI,gCAAA;IAAA,+BAAA;ELm4FV;EK14FM;IAOI,8BAAA;IAAA,6BAAA;ELu4FV;EK94FM;IAOI,yBAAA;IAAA,4BAAA;EL24FV;EKl5FM;IAOI,+BAAA;IAAA,kCAAA;EL+4FV;EKt5FM;IAOI,8BAAA;IAAA,iCAAA;ELm5FV;EK15FM;IAOI,4BAAA;IAAA,+BAAA;ELu5FV;EK95FM;IAOI,8BAAA;IAAA,iCAAA;EL25FV;EKl6FM;IAOI,4BAAA;IAAA,+BAAA;EL+5FV;EKt6FM;IAOI,yBAAA;ELk6FV;EKz6FM;IAOI,+BAAA;ELq6FV;EK56FM;IAOI,8BAAA;ELw6FV;EK/6FM;IAOI,4BAAA;EL26FV;EKl7FM;IAOI,8BAAA;EL86FV;EKr7FM;IAOI,4BAAA;ELi7FV;EKx7FM;IAOI,2BAAA;ELo7FV;EK37FM;IAOI,iCAAA;ELu7FV;EK97FM;IAOI,gCAAA;EL07FV;EKj8FM;IAOI,8BAAA;EL67FV;EKp8FM;IAOI,gCAAA;ELg8FV;EKv8FM;IAOI,8BAAA;ELm8FV;EK18FM;IAOI,4BAAA;ELs8FV;EK78FM;IAOI,kCAAA;ELy8FV;EKh9FM;IAOI,iCAAA;EL48FV;EKn9FM;IAOI,+BAAA;EL+8FV;EKt9FM;IAOI,iCAAA;ELk9FV;EKz9FM;IAOI,+BAAA;ELq9FV;EK59FM;IAOI,0BAAA;ELw9FV;EK/9FM;IAOI,gCAAA;EL29FV;EKl+FM;IAOI,+BAAA;EL89FV;EKr+FM;IAOI,6BAAA;ELi+FV;EKx+FM;IAOI,+BAAA;ELo+FV;EK3+FM;IAOI,6BAAA;ELu+FV;AACF;ACl/FI;EIGI;IAOI,0BAAA;EL4+FV;EKn/FM;IAOI,gCAAA;EL++FV;EKt/FM;IAOI,yBAAA;ELk/FV;EKz/FM;IAOI,wBAAA;ELq/FV;EK5/FM;IAOI,+BAAA;ELw/FV;EK//FM;IAOI,yBAAA;EL2/FV;EKlgGM;IAOI,6BAAA;EL8/FV;EKrgGM;IAOI,8BAAA;ELigGV;EKxgGM;IAOI,wBAAA;ELogGV;EK3gGM;IAOI,+BAAA;ELugGV;EK9gGM;IAOI,wBAAA;EL0gGV;EKjhGM;IAOI,yBAAA;EL6gGV;EKphGM;IAOI,8BAAA;ELghGV;EKvhGM;IAOI,iCAAA;ELmhGV;EK1hGM;IAOI,sCAAA;ELshGV;EK7hGM;IAOI,yCAAA;ELyhGV;EKhiGM;IAOI,uBAAA;EL4hGV;EKniGM;IAOI,uBAAA;EL+hGV;EKtiGM;IAOI,yBAAA;ELkiGV;EKziGM;IAOI,yBAAA;ELqiGV;EK5iGM;IAOI,0BAAA;ELwiGV;EK/iGM;IAOI,4BAAA;EL2iGV;EKljGM;IAOI,kCAAA;EL8iGV;EKrjGM;IAOI,sCAAA;ELijGV;EKxjGM;IAOI,oCAAA;ELojGV;EK3jGM;IAOI,kCAAA;ELujGV;EK9jGM;IAOI,yCAAA;EL0jGV;EKjkGM;IAOI,wCAAA;EL6jGV;EKpkGM;IAOI,wCAAA;ELgkGV;EKvkGM;IAOI,kCAAA;ELmkGV;EK1kGM;IAOI,gCAAA;ELskGV;EK7kGM;IAOI,8BAAA;ELykGV;EKhlGM;IAOI,gCAAA;EL4kGV;EKnlGM;IAOI,+BAAA;EL+kGV;EKtlGM;IAOI,oCAAA;ELklGV;EKzlGM;IAOI,kCAAA;ELqlGV;EK5lGM;IAOI,gCAAA;ELwlGV;EK/lGM;IAOI,uCAAA;EL2lGV;EKlmGM;IAOI,sCAAA;EL8lGV;EKrmGM;IAOI,iCAAA;ELimGV;EKxmGM;IAOI,2BAAA;ELomGV;EK3mGM;IAOI,iCAAA;ELumGV;EK9mGM;IAOI,+BAAA;EL0mGV;EKjnGM;IAOI,6BAAA;EL6mGV;EKpnGM;IAOI,+BAAA;ELgnGV;EKvnGM;IAOI,8BAAA;ELmnGV;EK1nGM;IAOI,oBAAA;ELsnGV;EK7nGM;IAOI,mBAAA;ELynGV;EKhoGM;IAOI,mBAAA;EL4nGV;EKnoGM;IAOI,mBAAA;EL+nGV;EKtoGM;IAOI,mBAAA;ELkoGV;EKzoGM;IAOI,mBAAA;ELqoGV;EK5oGM;IAOI,mBAAA;ELwoGV;EK/oGM;IAOI,mBAAA;EL2oGV;EKlpGM;IAOI,oBAAA;EL8oGV;EKrpGM;IAOI,0BAAA;ELipGV;EKxpGM;IAOI,yBAAA;ELopGV;EK3pGM;IAOI,uBAAA;ELupGV;EK9pGM;IAOI,yBAAA;EL0pGV;EKjqGM;IAOI,uBAAA;EL6pGV;EKpqGM;IAOI,uBAAA;ELgqGV;EKvqGM;IAOI,0BAAA;IAAA,yBAAA;ELoqGV;EK3qGM;IAOI,gCAAA;IAAA,+BAAA;ELwqGV;EK/qGM;IAOI,+BAAA;IAAA,8BAAA;EL4qGV;EKnrGM;IAOI,6BAAA;IAAA,4BAAA;ELgrGV;EKvrGM;IAOI,+BAAA;IAAA,8BAAA;ELorGV;EK3rGM;IAOI,6BAAA;IAAA,4BAAA;ELwrGV;EK/rGM;IAOI,6BAAA;IAAA,4BAAA;EL4rGV;EKnsGM;IAOI,wBAAA;IAAA,2BAAA;ELgsGV;EKvsGM;IAOI,8BAAA;IAAA,iCAAA;ELosGV;EK3sGM;IAOI,6BAAA;IAAA,gCAAA;ELwsGV;EK/sGM;IAOI,2BAAA;IAAA,8BAAA;EL4sGV;EKntGM;IAOI,6BAAA;IAAA,gCAAA;ELgtGV;EKvtGM;IAOI,2BAAA;IAAA,8BAAA;ELotGV;EK3tGM;IAOI,2BAAA;IAAA,8BAAA;ELwtGV;EK/tGM;IAOI,wBAAA;EL2tGV;EKluGM;IAOI,8BAAA;EL8tGV;EKruGM;IAOI,6BAAA;ELiuGV;EKxuGM;IAOI,2BAAA;ELouGV;EK3uGM;IAOI,6BAAA;ELuuGV;EK9uGM;IAOI,2BAAA;EL0uGV;EKjvGM;IAOI,2BAAA;EL6uGV;EKpvGM;IAOI,0BAAA;ELgvGV;EKvvGM;IAOI,gCAAA;ELmvGV;EK1vGM;IAOI,+BAAA;ELsvGV;EK7vGM;IAOI,6BAAA;ELyvGV;EKhwGM;IAOI,+BAAA;EL4vGV;EKnwGM;IAOI,6BAAA;EL+vGV;EKtwGM;IAOI,6BAAA;ELkwGV;EKzwGM;IAOI,2BAAA;ELqwGV;EK5wGM;IAOI,iCAAA;ELwwGV;EK/wGM;IAOI,gCAAA;EL2wGV;EKlxGM;IAOI,8BAAA;EL8wGV;EKrxGM;IAOI,gCAAA;ELixGV;EKxxGM;IAOI,8BAAA;ELoxGV;EK3xGM;IAOI,8BAAA;ELuxGV;EK9xGM;IAOI,yBAAA;EL0xGV;EKjyGM;IAOI,+BAAA;EL6xGV;EKpyGM;IAOI,8BAAA;ELgyGV;EKvyGM;IAOI,4BAAA;ELmyGV;EK1yGM;IAOI,8BAAA;ELsyGV;EK7yGM;IAOI,4BAAA;ELyyGV;EKhzGM;IAOI,4BAAA;EL4yGV;EKnzGM;IAOI,qBAAA;EL+yGV;EKtzGM;IAOI,2BAAA;ELkzGV;EKzzGM;IAOI,0BAAA;ELqzGV;EK5zGM;IAOI,wBAAA;ELwzGV;EK/zGM;IAOI,0BAAA;EL2zGV;EKl0GM;IAOI,wBAAA;EL8zGV;EKr0GM;IAOI,2BAAA;IAAA,0BAAA;ELk0GV;EKz0GM;IAOI,iCAAA;IAAA,gCAAA;ELs0GV;EK70GM;IAOI,gCAAA;IAAA,+BAAA;EL00GV;EKj1GM;IAOI,8BAAA;IAAA,6BAAA;EL80GV;EKr1GM;IAOI,gCAAA;IAAA,+BAAA;ELk1GV;EKz1GM;IAOI,8BAAA;IAAA,6BAAA;ELs1GV;EK71GM;IAOI,yBAAA;IAAA,4BAAA;EL01GV;EKj2GM;IAOI,+BAAA;IAAA,kCAAA;EL81GV;EKr2GM;IAOI,8BAAA;IAAA,iCAAA;ELk2GV;EKz2GM;IAOI,4BAAA;IAAA,+BAAA;ELs2GV;EK72GM;IAOI,8BAAA;IAAA,iCAAA;EL02GV;EKj3GM;IAOI,4BAAA;IAAA,+BAAA;EL82GV;EKr3GM;IAOI,yBAAA;ELi3GV;EKx3GM;IAOI,+BAAA;ELo3GV;EK33GM;IAOI,8BAAA;ELu3GV;EK93GM;IAOI,4BAAA;EL03GV;EKj4GM;IAOI,8BAAA;EL63GV;EKp4GM;IAOI,4BAAA;ELg4GV;EKv4GM;IAOI,2BAAA;ELm4GV;EK14GM;IAOI,iCAAA;ELs4GV;EK74GM;IAOI,gCAAA;ELy4GV;EKh5GM;IAOI,8BAAA;EL44GV;EKn5GM;IAOI,gCAAA;EL+4GV;EKt5GM;IAOI,8BAAA;ELk5GV;EKz5GM;IAOI,4BAAA;ELq5GV;EK55GM;IAOI,kCAAA;ELw5GV;EK/5GM;IAOI,iCAAA;EL25GV;EKl6GM;IAOI,+BAAA;EL85GV;EKr6GM;IAOI,iCAAA;ELi6GV;EKx6GM;IAOI,+BAAA;ELo6GV;EK36GM;IAOI,0BAAA;ELu6GV;EK96GM;IAOI,gCAAA;EL06GV;EKj7GM;IAOI,+BAAA;EL66GV;EKp7GM;IAOI,6BAAA;ELg7GV;EKv7GM;IAOI,+BAAA;ELm7GV;EK17GM;IAOI,6BAAA;ELs7GV;AACF;ACj8GI;EIGI;IAOI,0BAAA;EL27GV;EKl8GM;IAOI,gCAAA;EL87GV;EKr8GM;IAOI,yBAAA;ELi8GV;EKx8GM;IAOI,wBAAA;ELo8GV;EK38GM;IAOI,+BAAA;ELu8GV;EK98GM;IAOI,yBAAA;EL08GV;EKj9GM;IAOI,6BAAA;EL68GV;EKp9GM;IAOI,8BAAA;ELg9GV;EKv9GM;IAOI,wBAAA;ELm9GV;EK19GM;IAOI,+BAAA;ELs9GV;EK79GM;IAOI,wBAAA;ELy9GV;EKh+GM;IAOI,yBAAA;EL49GV;EKn+GM;IAOI,8BAAA;EL+9GV;EKt+GM;IAOI,iCAAA;ELk+GV;EKz+GM;IAOI,sCAAA;ELq+GV;EK5+GM;IAOI,yCAAA;ELw+GV;EK/+GM;IAOI,uBAAA;EL2+GV;EKl/GM;IAOI,uBAAA;EL8+GV;EKr/GM;IAOI,yBAAA;ELi/GV;EKx/GM;IAOI,yBAAA;ELo/GV;EK3/GM;IAOI,0BAAA;ELu/GV;EK9/GM;IAOI,4BAAA;EL0/GV;EKjgHM;IAOI,kCAAA;EL6/GV;EKpgHM;IAOI,sCAAA;ELggHV;EKvgHM;IAOI,oCAAA;ELmgHV;EK1gHM;IAOI,kCAAA;ELsgHV;EK7gHM;IAOI,yCAAA;ELygHV;EKhhHM;IAOI,wCAAA;EL4gHV;EKnhHM;IAOI,wCAAA;EL+gHV;EKthHM;IAOI,kCAAA;ELkhHV;EKzhHM;IAOI,gCAAA;ELqhHV;EK5hHM;IAOI,8BAAA;ELwhHV;EK/hHM;IAOI,gCAAA;EL2hHV;EKliHM;IAOI,+BAAA;EL8hHV;EKriHM;IAOI,oCAAA;ELiiHV;EKxiHM;IAOI,kCAAA;ELoiHV;EK3iHM;IAOI,gCAAA;ELuiHV;EK9iHM;IAOI,uCAAA;EL0iHV;EKjjHM;IAOI,sCAAA;EL6iHV;EKpjHM;IAOI,iCAAA;ELgjHV;EKvjHM;IAOI,2BAAA;ELmjHV;EK1jHM;IAOI,iCAAA;ELsjHV;EK7jHM;IAOI,+BAAA;ELyjHV;EKhkHM;IAOI,6BAAA;EL4jHV;EKnkHM;IAOI,+BAAA;EL+jHV;EKtkHM;IAOI,8BAAA;ELkkHV;EKzkHM;IAOI,oBAAA;ELqkHV;EK5kHM;IAOI,mBAAA;ELwkHV;EK/kHM;IAOI,mBAAA;EL2kHV;EKllHM;IAOI,mBAAA;EL8kHV;EKrlHM;IAOI,mBAAA;ELilHV;EKxlHM;IAOI,mBAAA;ELolHV;EK3lHM;IAOI,mBAAA;ELulHV;EK9lHM;IAOI,mBAAA;EL0lHV;EKjmHM;IAOI,oBAAA;EL6lHV;EKpmHM;IAOI,0BAAA;ELgmHV;EKvmHM;IAOI,yBAAA;ELmmHV;EK1mHM;IAOI,uBAAA;ELsmHV;EK7mHM;IAOI,yBAAA;ELymHV;EKhnHM;IAOI,uBAAA;EL4mHV;EKnnHM;IAOI,uBAAA;EL+mHV;EKtnHM;IAOI,0BAAA;IAAA,yBAAA;ELmnHV;EK1nHM;IAOI,gCAAA;IAAA,+BAAA;ELunHV;EK9nHM;IAOI,+BAAA;IAAA,8BAAA;EL2nHV;EKloHM;IAOI,6BAAA;IAAA,4BAAA;EL+nHV;EKtoHM;IAOI,+BAAA;IAAA,8BAAA;ELmoHV;EK1oHM;IAOI,6BAAA;IAAA,4BAAA;ELuoHV;EK9oHM;IAOI,6BAAA;IAAA,4BAAA;EL2oHV;EKlpHM;IAOI,wBAAA;IAAA,2BAAA;EL+oHV;EKtpHM;IAOI,8BAAA;IAAA,iCAAA;ELmpHV;EK1pHM;IAOI,6BAAA;IAAA,gCAAA;ELupHV;EK9pHM;IAOI,2BAAA;IAAA,8BAAA;EL2pHV;EKlqHM;IAOI,6BAAA;IAAA,gCAAA;EL+pHV;EKtqHM;IAOI,2BAAA;IAAA,8BAAA;ELmqHV;EK1qHM;IAOI,2BAAA;IAAA,8BAAA;ELuqHV;EK9qHM;IAOI,wBAAA;EL0qHV;EKjrHM;IAOI,8BAAA;EL6qHV;EKprHM;IAOI,6BAAA;ELgrHV;EKvrHM;IAOI,2BAAA;ELmrHV;EK1rHM;IAOI,6BAAA;ELsrHV;EK7rHM;IAOI,2BAAA;ELyrHV;EKhsHM;IAOI,2BAAA;EL4rHV;EKnsHM;IAOI,0BAAA;EL+rHV;EKtsHM;IAOI,gCAAA;ELksHV;EKzsHM;IAOI,+BAAA;ELqsHV;EK5sHM;IAOI,6BAAA;ELwsHV;EK/sHM;IAOI,+BAAA;EL2sHV;EKltHM;IAOI,6BAAA;EL8sHV;EKrtHM;IAOI,6BAAA;ELitHV;EKxtHM;IAOI,2BAAA;ELotHV;EK3tHM;IAOI,iCAAA;ELutHV;EK9tHM;IAOI,gCAAA;EL0tHV;EKjuHM;IAOI,8BAAA;EL6tHV;EKpuHM;IAOI,gCAAA;ELguHV;EKvuHM;IAOI,8BAAA;ELmuHV;EK1uHM;IAOI,8BAAA;ELsuHV;EK7uHM;IAOI,yBAAA;ELyuHV;EKhvHM;IAOI,+BAAA;EL4uHV;EKnvHM;IAOI,8BAAA;EL+uHV;EKtvHM;IAOI,4BAAA;ELkvHV;EKzvHM;IAOI,8BAAA;ELqvHV;EK5vHM;IAOI,4BAAA;ELwvHV;EK/vHM;IAOI,4BAAA;EL2vHV;EKlwHM;IAOI,qBAAA;EL8vHV;EKrwHM;IAOI,2BAAA;ELiwHV;EKxwHM;IAOI,0BAAA;ELowHV;EK3wHM;IAOI,wBAAA;ELuwHV;EK9wHM;IAOI,0BAAA;EL0wHV;EKjxHM;IAOI,wBAAA;EL6wHV;EKpxHM;IAOI,2BAAA;IAAA,0BAAA;ELixHV;EKxxHM;IAOI,iCAAA;IAAA,gCAAA;ELqxHV;EK5xHM;IAOI,gCAAA;IAAA,+BAAA;ELyxHV;EKhyHM;IAOI,8BAAA;IAAA,6BAAA;EL6xHV;EKpyHM;IAOI,gCAAA;IAAA,+BAAA;ELiyHV;EKxyHM;IAOI,8BAAA;IAAA,6BAAA;ELqyHV;EK5yHM;IAOI,yBAAA;IAAA,4BAAA;ELyyHV;EKhzHM;IAOI,+BAAA;IAAA,kCAAA;EL6yHV;EKpzHM;IAOI,8BAAA;IAAA,iCAAA;ELizHV;EKxzHM;IAOI,4BAAA;IAAA,+BAAA;ELqzHV;EK5zHM;IAOI,8BAAA;IAAA,iCAAA;ELyzHV;EKh0HM;IAOI,4BAAA;IAAA,+BAAA;EL6zHV;EKp0HM;IAOI,yBAAA;ELg0HV;EKv0HM;IAOI,+BAAA;ELm0HV;EK10HM;IAOI,8BAAA;ELs0HV;EK70HM;IAOI,4BAAA;ELy0HV;EKh1HM;IAOI,8BAAA;EL40HV;EKn1HM;IAOI,4BAAA;EL+0HV;EKt1HM;IAOI,2BAAA;ELk1HV;EKz1HM;IAOI,iCAAA;ELq1HV;EK51HM;IAOI,gCAAA;ELw1HV;EK/1HM;IAOI,8BAAA;EL21HV;EKl2HM;IAOI,gCAAA;EL81HV;EKr2HM;IAOI,8BAAA;ELi2HV;EKx2HM;IAOI,4BAAA;ELo2HV;EK32HM;IAOI,kCAAA;ELu2HV;EK92HM;IAOI,iCAAA;EL02HV;EKj3HM;IAOI,+BAAA;EL62HV;EKp3HM;IAOI,iCAAA;ELg3HV;EKv3HM;IAOI,+BAAA;ELm3HV;EK13HM;IAOI,0BAAA;ELs3HV;EK73HM;IAOI,gCAAA;ELy3HV;EKh4HM;IAOI,+BAAA;EL43HV;EKn4HM;IAOI,6BAAA;EL+3HV;EKt4HM;IAOI,+BAAA;ELk4HV;EKz4HM;IAOI,6BAAA;ELq4HV;AACF;AMz6HA;ED4BQ;IAOI,0BAAA;EL04HV;EKj5HM;IAOI,gCAAA;EL64HV;EKp5HM;IAOI,yBAAA;ELg5HV;EKv5HM;IAOI,wBAAA;ELm5HV;EK15HM;IAOI,+BAAA;ELs5HV;EK75HM;IAOI,yBAAA;ELy5HV;EKh6HM;IAOI,6BAAA;EL45HV;EKn6HM;IAOI,8BAAA;EL+5HV;EKt6HM;IAOI,wBAAA;ELk6HV;EKz6HM;IAOI,+BAAA;ELq6HV;EK56HM;IAOI,wBAAA;ELw6HV;AACF","file":"bootstrap-grid.css","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.0 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","/*!\n * Bootstrap Grid v5.3.0 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue: #0d6efd !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #d63384 !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #198754 !default;\n$teal: #20c997 !default;\n$cyan: #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"black\": $black,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio: 4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark: $black !default;\n$color-contrast-light: $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n \"blue-100\": $blue-100,\n \"blue-200\": $blue-200,\n \"blue-300\": $blue-300,\n \"blue-400\": $blue-400,\n \"blue-500\": $blue-500,\n \"blue-600\": $blue-600,\n \"blue-700\": $blue-700,\n \"blue-800\": $blue-800,\n \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n \"indigo-100\": $indigo-100,\n \"indigo-200\": $indigo-200,\n \"indigo-300\": $indigo-300,\n \"indigo-400\": $indigo-400,\n \"indigo-500\": $indigo-500,\n \"indigo-600\": $indigo-600,\n \"indigo-700\": $indigo-700,\n \"indigo-800\": $indigo-800,\n \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n \"purple-100\": $purple-100,\n \"purple-200\": $purple-200,\n \"purple-300\": $purple-300,\n \"purple-400\": $purple-400,\n \"purple-500\": $purple-500,\n \"purple-600\": $purple-600,\n \"purple-700\": $purple-700,\n \"purple-800\": $purple-800,\n \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n \"pink-100\": $pink-100,\n \"pink-200\": $pink-200,\n \"pink-300\": $pink-300,\n \"pink-400\": $pink-400,\n \"pink-500\": $pink-500,\n \"pink-600\": $pink-600,\n \"pink-700\": $pink-700,\n \"pink-800\": $pink-800,\n \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n \"red-100\": $red-100,\n \"red-200\": $red-200,\n \"red-300\": $red-300,\n \"red-400\": $red-400,\n \"red-500\": $red-500,\n \"red-600\": $red-600,\n \"red-700\": $red-700,\n \"red-800\": $red-800,\n \"red-900\": $red-900\n) !default;\n\n$oranges: (\n \"orange-100\": $orange-100,\n \"orange-200\": $orange-200,\n \"orange-300\": $orange-300,\n \"orange-400\": $orange-400,\n \"orange-500\": $orange-500,\n \"orange-600\": $orange-600,\n \"orange-700\": $orange-700,\n \"orange-800\": $orange-800,\n \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n \"yellow-100\": $yellow-100,\n \"yellow-200\": $yellow-200,\n \"yellow-300\": $yellow-300,\n \"yellow-400\": $yellow-400,\n \"yellow-500\": $yellow-500,\n \"yellow-600\": $yellow-600,\n \"yellow-700\": $yellow-700,\n \"yellow-800\": $yellow-800,\n \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n \"green-100\": $green-100,\n \"green-200\": $green-200,\n \"green-300\": $green-300,\n \"green-400\": $green-400,\n \"green-500\": $green-500,\n \"green-600\": $green-600,\n \"green-700\": $green-700,\n \"green-800\": $green-800,\n \"green-900\": $green-900\n) !default;\n\n$teals: (\n \"teal-100\": $teal-100,\n \"teal-200\": $teal-200,\n \"teal-300\": $teal-300,\n \"teal-400\": $teal-400,\n \"teal-500\": $teal-500,\n \"teal-600\": $teal-600,\n \"teal-700\": $teal-700,\n \"teal-800\": $teal-800,\n \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n \"cyan-100\": $cyan-100,\n \"cyan-200\": $cyan-200,\n \"cyan-300\": $cyan-300,\n \"cyan-400\": $cyan-400,\n \"cyan-500\": $cyan-500,\n \"cyan-600\": $cyan-600,\n \"cyan-700\": $cyan-700,\n \"cyan-800\": $cyan-800,\n \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// scss-docs-start theme-color-variables\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// scss-docs-start theme-text-variables\n$primary-text-emphasis: shade-color($primary, 60%) !default;\n$secondary-text-emphasis: shade-color($secondary, 60%) !default;\n$success-text-emphasis: shade-color($success, 60%) !default;\n$info-text-emphasis: shade-color($info, 60%) !default;\n$warning-text-emphasis: shade-color($warning, 60%) !default;\n$danger-text-emphasis: shade-color($danger, 60%) !default;\n$light-text-emphasis: $gray-700 !default;\n$dark-text-emphasis: $gray-700 !default;\n// scss-docs-end theme-text-variables\n\n// scss-docs-start theme-bg-subtle-variables\n$primary-bg-subtle: tint-color($primary, 80%) !default;\n$secondary-bg-subtle: tint-color($secondary, 80%) !default;\n$success-bg-subtle: tint-color($success, 80%) !default;\n$info-bg-subtle: tint-color($info, 80%) !default;\n$warning-bg-subtle: tint-color($warning, 80%) !default;\n$danger-bg-subtle: tint-color($danger, 80%) !default;\n$light-bg-subtle: mix($gray-100, $white) !default;\n$dark-bg-subtle: $gray-400 !default;\n// scss-docs-end theme-bg-subtle-variables\n\n// scss-docs-start theme-border-subtle-variables\n$primary-border-subtle: tint-color($primary, 60%) !default;\n$secondary-border-subtle: tint-color($secondary, 60%) !default;\n$success-border-subtle: tint-color($success, 60%) !default;\n$info-border-subtle: tint-color($info, 60%) !default;\n$warning-border-subtle: tint-color($warning, 60%) !default;\n$danger-border-subtle: tint-color($danger, 60%) !default;\n$light-border-subtle: $gray-200 !default;\n$dark-border-subtle: $gray-500 !default;\n// scss-docs-end theme-border-subtle-variables\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n (\"<\", \"%3c\"),\n (\">\", \"%3e\"),\n (\"#\", \"%23\"),\n (\"(\", \"%28\"),\n (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-reduced-motion: true !default;\n$enable-smooth-scroll: true !default;\n$enable-grid-classes: true !default;\n$enable-container-classes: true !default;\n$enable-cssgrid: false !default;\n$enable-button-pointers: true !default;\n$enable-rfs: true !default;\n$enable-validation-icons: true !default;\n$enable-negative-margins: false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities: true !default;\n\n$enable-dark-mode: true !default;\n$color-mode-type: data !default; // `data` or `media-query`\n\n// Prefix for :root CSS variables\n\n$variable-prefix: bs- !default; // Deprecated in v5.2.0 for the shorter `$prefix`\n$prefix: $variable-prefix !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: $spacer * .25,\n 2: $spacer * .5,\n 3: $spacer,\n 4: $spacer * 1.5,\n 5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n 0: 0,\n 50: 50%,\n 100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `` element.\n\n$body-text-align: null !default;\n$body-color: $gray-900 !default;\n$body-bg: $white !default;\n\n$body-secondary-color: rgba($body-color, .75) !default;\n$body-secondary-bg: $gray-200 !default;\n\n$body-tertiary-color: rgba($body-color, .5) !default;\n$body-tertiary-bg: $gray-100 !default;\n\n$body-emphasis-color: $black !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: $primary !default;\n$link-decoration: underline !default;\n$link-shade-percentage: 20% !default;\n$link-hover-color: shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration: null !default;\n\n$stretched-link-pseudo-element: after !default;\n$stretched-link-z-index: 1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap: .375rem !default;\n$icon-link-underline-offset: .25em !default;\n$icon-link-icon-size: 1em !default;\n$icon-link-icon-transition: .2s ease-in-out transform !default;\n$icon-link-icon-transform: translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px,\n xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px,\n xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 1.5rem !default;\n$grid-row-columns: 6 !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width: 1px !default;\n$border-widths: (\n 1: 1px,\n 2: 2px,\n 3: 3px,\n 4: 4px,\n 5: 5px\n) !default;\n$border-style: solid !default;\n$border-color: $gray-300 !default;\n$border-color-translucent: rgba($black, .175) !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius: .375rem !default;\n$border-radius-sm: .25rem !default;\n$border-radius-lg: .5rem !default;\n$border-radius-xl: 1rem !default;\n$border-radius-xxl: 2rem !default;\n$border-radius-pill: 50rem !default;\n// scss-docs-end border-radius-variables\n// fusv-disable\n$border-radius-2xl: $border-radius-xxl !default; // Deprecated in v5.3.0\n// fusv-enable\n\n// scss-docs-start box-shadow-variables\n$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset: inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color: $white !default;\n$component-active-bg: $primary !default;\n\n// scss-docs-start focus-ring-variables\n$focus-ring-width: .25rem !default;\n$focus-ring-opacity: .25 !default;\n$focus-ring-color: rgba($primary, $focus-ring-opacity) !default;\n$focus-ring-blur: 0 !default;\n$focus-ring-box-shadow: 0 0 $focus-ring-blur $focus-ring-width $focus-ring-color !default;\n// scss-docs-end focus-ring-variables\n\n// scss-docs-start caret-variables\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse: height .35s ease !default;\n$transition-collapse-width: width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n \"1x1\": 100%,\n \"4x3\": calc(3 / 4 * 100%),\n \"16x9\": calc(9 / 16 * 100%),\n \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base: var(--#{$prefix}font-sans-serif) !default;\n$font-family-code: var(--#{$prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root: null !default;\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm: $font-size-base * .875 !default;\n$font-size-lg: $font-size-base * 1.25 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-medium: 500 !default;\n$font-weight-semibold: 600 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n\n$line-height-base: 1.5 !default;\n$line-height-sm: 1.25 !default;\n$line-height-lg: 2 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n 1: $h1-font-size,\n 2: $h2-font-size,\n 3: $h3-font-size,\n 4: $h4-font-size,\n 5: $h5-font-size,\n 6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom: $spacer * .5 !default;\n$headings-font-family: null !default;\n$headings-font-style: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n 1: 5rem,\n 2: 4.5rem,\n 3: 4rem,\n 4: 3.5rem,\n 5: 3rem,\n 6: 2.5rem\n) !default;\n\n$display-font-family: null !default;\n$display-font-style: null !default;\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: .875em !default;\n\n$sub-sup-font-size: .75em !default;\n\n// fusv-disable\n$text-muted: var(--#{$prefix}secondary-color) !default; // Deprecated in 5.3.0\n// fusv-enable\n\n$initialism-font-size: $small-font-size !default;\n\n$blockquote-margin-y: $spacer !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n$blockquote-footer-color: $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y: $spacer !default;\n$hr-color: inherit !default;\n\n// fusv-disable\n$hr-bg-color: null !default; // Deprecated in v5.2.0\n$hr-height: null !default; // Deprecated in v5.2.0\n// fusv-enable\n\n$hr-border-color: null !default; // Allows for inherited colors\n$hr-border-width: var(--#{$prefix}border-width) !default;\n$hr-opacity: .25 !default;\n\n$legend-margin-bottom: .5rem !default;\n$legend-font-size: 1.5rem !default;\n$legend-font-weight: null !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-padding: .1875em !default;\n$mark-bg: $yellow-100 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y: .5rem !default;\n$table-cell-padding-x: .5rem !default;\n$table-cell-padding-y-sm: .25rem !default;\n$table-cell-padding-x-sm: .25rem !default;\n\n$table-cell-vertical-align: top !default;\n\n$table-color: var(--#{$prefix}body-color) !default;\n$table-bg: var(--#{$prefix}body-bg) !default;\n$table-accent-bg: transparent !default;\n\n$table-th-font-weight: null !default;\n\n$table-striped-color: $table-color !default;\n$table-striped-bg-factor: .05 !default;\n$table-striped-bg: rgba($black, $table-striped-bg-factor) !default;\n\n$table-active-color: $table-color !default;\n$table-active-bg-factor: .1 !default;\n$table-active-bg: rgba($black, $table-active-bg-factor) !default;\n\n$table-hover-color: $table-color !default;\n$table-hover-bg-factor: .075 !default;\n$table-hover-bg: rgba($black, $table-hover-bg-factor) !default;\n\n$table-border-factor: .1 !default;\n$table-border-width: var(--#{$prefix}border-width) !default;\n$table-border-color: var(--#{$prefix}border-color) !default;\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n$table-group-separator-color: currentcolor !default;\n\n$table-caption-color: var(--#{$prefix}secondary-color) !default;\n\n$table-bg-scale: -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n \"primary\": shift-color($primary, $table-bg-scale),\n \"secondary\": shift-color($secondary, $table-bg-scale),\n \"success\": shift-color($success, $table-bg-scale),\n \"info\": shift-color($info, $table-bg-scale),\n \"warning\": shift-color($warning, $table-bg-scale),\n \"danger\": shift-color($danger, $table-bg-scale),\n \"light\": $light,\n \"dark\": $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: $focus-ring-width !default;\n$input-btn-focus-color-opacity: $focus-ring-opacity !default;\n$input-btn-focus-color: $focus-ring-color !default;\n$input-btn-focus-blur: $focus-ring-blur !default;\n$input-btn-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n\n$input-btn-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-color: var(--#{$prefix}body-color) !default;\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color: var(--#{$prefix}link-color) !default;\n$btn-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$btn-link-disabled-color: $gray-600 !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: var(--#{$prefix}border-radius) !default;\n$btn-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$btn-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount: 15% !default;\n$btn-hover-bg-tint-amount: 15% !default;\n$btn-hover-border-shade-amount: 20% !default;\n$btn-hover-border-tint-amount: 10% !default;\n$btn-active-bg-shade-amount: 20% !default;\n$btn-active-bg-tint-amount: 20% !default;\n$btn-active-border-shade-amount: 25% !default;\n$btn-active-border-tint-amount: 10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top: .25rem !default;\n$form-text-font-size: $small-font-size !default;\n$form-text-font-style: null !default;\n$form-text-font-weight: null !default;\n$form-text-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom: .5rem !default;\n$form-label-font-size: null !default;\n$form-label-font-style: null !default;\n$form-label-font-weight: null !default;\n$form-label-color: null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n\n$input-bg: var(--#{$prefix}body-bg) !default;\n$input-disabled-color: null !default;\n$input-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$input-disabled-border-color: null !default;\n\n$input-color: var(--#{$prefix}body-color) !default;\n$input-border-color: var(--#{$prefix}border-color) !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: $box-shadow-inset !default;\n\n$input-border-radius: var(--#{$prefix}border-radius) !default;\n$input-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$input-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: tint-color($component-active-bg, 50%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: var(--#{$prefix}secondary-color) !default;\n$input-plaintext-color: var(--#{$prefix}body-color) !default;\n\n$input-height-border: calc(#{$input-border-width} * 2) !default; // stylelint-disable-line function-disallowed-list\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width: 3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width: 1em !default;\n$form-check-min-height: $font-size-base * $line-height-base !default;\n$form-check-padding-start: $form-check-input-width + .5em !default;\n$form-check-margin-bottom: .125rem !default;\n$form-check-label-color: null !default;\n$form-check-label-cursor: null !default;\n$form-check-transition: null !default;\n\n$form-check-input-active-filter: brightness(90%) !default;\n\n$form-check-input-bg: $input-bg !default;\n$form-check-input-border: var(--#{$prefix}border-width) solid var(--#{$prefix}border-color) !default;\n$form-check-input-border-radius: .25em !default;\n$form-check-radio-border-radius: 50% !default;\n$form-check-input-focus-border: $input-focus-border-color !default;\n$form-check-input-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$form-check-input-checked-color: $component-active-color !default;\n$form-check-input-checked-bg-color: $component-active-bg !default;\n$form-check-input-checked-border-color: $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-check-radio-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-indeterminate-color: $component-active-color !default;\n$form-check-input-indeterminate-bg-color: $component-active-bg !default;\n$form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-disabled-opacity: .5 !default;\n$form-check-label-disabled-opacity: $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity: $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end: 1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color: rgba($black, .25) !default;\n$form-switch-width: 2em !default;\n$form-switch-padding-start: $form-switch-width + .5em !default;\n$form-switch-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-border-radius: $form-switch-width !default;\n$form-switch-transition: background-position .15s ease-in-out !default;\n\n$form-switch-focus-color: $input-focus-border-color !default;\n$form-switch-focus-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-switch-checked-color: $component-active-color !default;\n$form-switch-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y: $input-padding-y !default;\n$input-group-addon-padding-x: $input-padding-x !default;\n$input-group-addon-font-weight: $input-font-weight !default;\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: var(--#{$prefix}tertiary-bg) !default;\n$input-group-addon-border-color: $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y: $input-padding-y !default;\n$form-select-padding-x: $input-padding-x !default;\n$form-select-font-family: $input-font-family !default;\n$form-select-font-size: $input-font-size !default;\n$form-select-indicator-padding: $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight: $input-font-weight !default;\n$form-select-line-height: $input-line-height !default;\n$form-select-color: $input-color !default;\n$form-select-bg: $input-bg !default;\n$form-select-disabled-color: null !default;\n$form-select-disabled-bg: $input-disabled-bg !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position: right $form-select-padding-x center !default;\n$form-select-bg-size: 16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color: $gray-800 !default;\n$form-select-indicator: url(\"data:image/svg+xml,\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position: center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width: $input-border-width !default;\n$form-select-border-color: $input-border-color !default;\n$form-select-border-radius: $input-border-radius !default;\n$form-select-box-shadow: $box-shadow-inset !default;\n\n$form-select-focus-border-color: $input-focus-border-color !default;\n$form-select-focus-width: $input-focus-width !default;\n$form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm: $input-padding-y-sm !default;\n$form-select-padding-x-sm: $input-padding-x-sm !default;\n$form-select-font-size-sm: $input-font-size-sm !default;\n$form-select-border-radius-sm: $input-border-radius-sm !default;\n\n$form-select-padding-y-lg: $input-padding-y-lg !default;\n$form-select-padding-x-lg: $input-padding-x-lg !default;\n$form-select-font-size-lg: $input-font-size-lg !default;\n$form-select-border-radius-lg: $input-border-radius-lg !default;\n\n$form-select-transition: $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width: 100% !default;\n$form-range-track-height: .5rem !default;\n$form-range-track-cursor: pointer !default;\n$form-range-track-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-range-track-border-radius: 1rem !default;\n$form-range-track-box-shadow: $box-shadow-inset !default;\n\n$form-range-thumb-width: 1rem !default;\n$form-range-thumb-height: $form-range-thumb-width !default;\n$form-range-thumb-bg: $component-active-bg !default;\n$form-range-thumb-border: 0 !default;\n$form-range-thumb-border-radius: 1rem !default;\n$form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg: var(--#{$prefix}secondary-color) !default;\n$form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color: $input-color !default;\n$form-file-button-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-file-button-hover-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height: add(3.5rem, $input-height-border) !default;\n$form-floating-line-height: 1.25 !default;\n$form-floating-padding-x: $input-padding-x !default;\n$form-floating-padding-y: 1rem !default;\n$form-floating-input-padding-t: 1.625rem !default;\n$form-floating-input-padding-b: .625rem !default;\n$form-floating-label-height: 1.5em !default;\n$form-floating-label-opacity: .65 !default;\n$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-label-disabled-color: $gray-600 !default;\n$form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $form-text-font-size !default;\n$form-feedback-font-style: $form-text-font-style !default;\n$form-feedback-valid-color: $success !default;\n$form-feedback-invalid-color: $danger !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url(\"data:image/svg+xml,\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-colors\n$form-valid-color: $form-feedback-valid-color !default;\n$form-valid-border-color: $form-feedback-valid-color !default;\n$form-invalid-color: $form-feedback-invalid-color !default;\n$form-invalid-border-color: $form-feedback-invalid-color !default;\n// scss-docs-end form-validation-colors\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n \"valid\": (\n \"color\": var(--#{$prefix}form-valid-color),\n \"icon\": $form-feedback-icon-valid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}success),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}success-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-valid-border-color),\n ),\n \"invalid\": (\n \"color\": var(--#{$prefix}form-invalid-color),\n \"icon\": $form-feedback-icon-invalid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}danger),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}danger-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-invalid-border-color),\n )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-offcanvas-backdrop: 1040 !default;\n$zindex-offcanvas: 1045 !default;\n$zindex-modal-backdrop: 1050 !default;\n$zindex-modal: 1055 !default;\n$zindex-popover: 1070 !default;\n$zindex-tooltip: 1080 !default;\n$zindex-toast: 1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n n1: -1,\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-font-size: null !default;\n$nav-link-font-weight: null !default;\n$nav-link-color: var(--#{$prefix}link-color) !default;\n$nav-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color: var(--#{$prefix}secondary-color) !default;\n$nav-link-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$nav-tabs-border-color: var(--#{$prefix}border-color) !default;\n$nav-tabs-border-width: var(--#{$prefix}border-width) !default;\n$nav-tabs-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-tabs-link-hover-border-color: var(--#{$prefix}secondary-bg) var(--#{$prefix}secondary-bg) $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: var(--#{$prefix}emphasis-color) !default;\n$nav-tabs-link-active-bg: var(--#{$prefix}body-bg) !default;\n$nav-tabs-link-active-border-color: var(--#{$prefix}border-color) var(--#{$prefix}border-color) $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n$nav-underline-gap: 1rem !default;\n$nav-underline-border-width: .125rem !default;\n$nav-underline-link-active-color: var(--#{$prefix}emphasis-color) !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y: $spacer * .5 !default;\n$navbar-padding-x: null !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end: 1rem !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n$navbar-toggler-focus-width: $btn-focus-width !default;\n$navbar-toggler-transition: box-shadow .15s ease-in-out !default;\n\n$navbar-light-color: rgba(var(--#{$prefix}emphasis-color-rgb), .65) !default;\n$navbar-light-hover-color: rgba(var(--#{$prefix}emphasis-color-rgb), .8) !default;\n$navbar-light-active-color: rgba(var(--#{$prefix}emphasis-color-rgb), 1) !default;\n$navbar-light-disabled-color: rgba(var(--#{$prefix}emphasis-color-rgb), .3) !default;\n$navbar-light-icon-color: rgba($body-color, .75) !default;\n$navbar-light-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-light-toggler-border-color: rgba(var(--#{$prefix}emphasis-color-rgb), .15) !default;\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-dark-variables\n$navbar-dark-color: rgba($white, .55) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n// scss-docs-end navbar-dark-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-x: 0 !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: var(--#{$prefix}body-color) !default;\n$dropdown-bg: var(--#{$prefix}body-bg) !default;\n$dropdown-border-color: var(--#{$prefix}border-color-translucent) !default;\n$dropdown-border-radius: var(--#{$prefix}border-radius) !default;\n$dropdown-border-width: var(--#{$prefix}border-width) !default;\n$dropdown-inner-border-radius: calc(#{$dropdown-border-radius} - #{$dropdown-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$dropdown-divider-bg: $dropdown-border-color !default;\n$dropdown-divider-margin-y: $spacer * .5 !default;\n$dropdown-box-shadow: $box-shadow !default;\n\n$dropdown-link-color: var(--#{$prefix}body-color) !default;\n$dropdown-link-hover-color: $dropdown-link-color !default;\n$dropdown-link-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: var(--#{$prefix}tertiary-color) !default;\n\n$dropdown-item-padding-y: $spacer * .25 !default;\n$dropdown-item-padding-x: $spacer !default;\n\n$dropdown-header-color: $gray-600 !default;\n$dropdown-header-padding-x: $dropdown-item-padding-x !default;\n$dropdown-header-padding-y: $dropdown-padding-y !default;\n// fusv-disable\n$dropdown-header-padding: $dropdown-header-padding-y $dropdown-header-padding-x !default; // Deprecated in v5.2.0\n// fusv-enable\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color: $gray-300 !default;\n$dropdown-dark-bg: $gray-800 !default;\n$dropdown-dark-border-color: $dropdown-border-color !default;\n$dropdown-dark-divider-bg: $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow: null !default;\n$dropdown-dark-link-color: $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color: $white !default;\n$dropdown-dark-link-hover-bg: rgba($white, .15) !default;\n$dropdown-dark-link-active-color: $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg: $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color: $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y: .375rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n\n$pagination-font-size: $font-size-base !default;\n\n$pagination-color: var(--#{$prefix}link-color) !default;\n$pagination-bg: var(--#{$prefix}body-bg) !default;\n$pagination-border-radius: var(--#{$prefix}border-radius) !default;\n$pagination-border-width: var(--#{$prefix}border-width) !default;\n$pagination-margin-start: calc(#{$pagination-border-width} * -1) !default; // stylelint-disable-line function-disallowed-list\n$pagination-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-focus-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-focus-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-focus-box-shadow: $focus-ring-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$pagination-hover-border-color: var(--#{$prefix}border-color) !default; // Todo in v6: remove this?\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $component-active-bg !default;\n\n$pagination-disabled-color: var(--#{$prefix}secondary-color) !default;\n$pagination-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-disabled-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$pagination-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max: .5 !default;\n$placeholder-opacity-min: .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y: $spacer !default;\n$card-spacer-x: $spacer !default;\n$card-title-spacer-y: $spacer * .5 !default;\n$card-title-color: null !default;\n$card-subtitle-color: null !default;\n$card-border-width: var(--#{$prefix}border-width) !default;\n$card-border-color: var(--#{$prefix}border-color-translucent) !default;\n$card-border-radius: var(--#{$prefix}border-radius) !default;\n$card-box-shadow: null !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y: $card-spacer-y * .5 !default;\n$card-cap-padding-x: $card-spacer-x !default;\n$card-cap-bg: rgba(var(--#{$prefix}body-color-rgb), .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: var(--#{$prefix}body-bg) !default;\n$card-img-overlay-padding: $spacer !default;\n$card-group-margin: $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y: 1rem !default;\n$accordion-padding-x: 1.25rem !default;\n$accordion-color: var(--#{$prefix}body-color) !default;\n$accordion-bg: var(--#{$prefix}body-bg) !default;\n$accordion-border-width: var(--#{$prefix}border-width) !default;\n$accordion-border-color: var(--#{$prefix}border-color) !default;\n$accordion-border-radius: var(--#{$prefix}border-radius) !default;\n$accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y: $accordion-padding-y !default;\n$accordion-body-padding-x: $accordion-padding-x !default;\n\n$accordion-button-padding-y: $accordion-padding-y !default;\n$accordion-button-padding-x: $accordion-padding-x !default;\n$accordion-button-color: var(--#{$prefix}body-color) !default;\n$accordion-button-bg: var(--#{$prefix}accordion-bg) !default;\n$accordion-transition: $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg: var(--#{$prefix}primary-bg-subtle) !default;\n$accordion-button-active-color: var(--#{$prefix}primary-text-emphasis) !default;\n\n$accordion-button-focus-border-color: $input-focus-border-color !default;\n$accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;\n\n$accordion-icon-width: 1.25rem !default;\n$accordion-icon-color: $body-color !default;\n$accordion-icon-active-color: $primary-text-emphasis !default;\n$accordion-icon-transition: transform .2s ease-in-out !default;\n$accordion-icon-transform: rotate(-180deg) !default;\n\n$accordion-button-icon: url(\"data:image/svg+xml,\") !default;\n$accordion-button-active-icon: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: var(--#{$prefix}body-bg) !default;\n$tooltip-bg: var(--#{$prefix}emphasis-color) !default;\n$tooltip-border-radius: var(--#{$prefix}border-radius) !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: $spacer * .25 !default;\n$tooltip-padding-x: $spacer * .5 !default;\n$tooltip-margin: null !default; // TODO: remove this in v6\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n// fusv-disable\n$tooltip-arrow-color: null !default; // Deprecated in Bootstrap 5.2.0 for CSS variables\n// fusv-enable\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: null !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size: $font-size-sm !default;\n$popover-bg: var(--#{$prefix}body-bg) !default;\n$popover-max-width: 276px !default;\n$popover-border-width: var(--#{$prefix}border-width) !default;\n$popover-border-color: var(--#{$prefix}border-color-translucent) !default;\n$popover-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$popover-inner-border-radius: calc(#{$popover-border-radius} - #{$popover-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$popover-box-shadow: $box-shadow !default;\n\n$popover-header-font-size: $font-size-base !default;\n$popover-header-bg: var(--#{$prefix}secondary-bg) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: $spacer !default;\n\n$popover-body-color: var(--#{$prefix}body-color) !default;\n$popover-body-padding-y: $spacer !default;\n$popover-body-padding-x: $spacer !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n// scss-docs-end popover-variables\n\n// fusv-disable\n// Deprecated in Bootstrap 5.2.0 for CSS variables\n$popover-arrow-color: $popover-bg !default;\n$popover-arrow-outer-color: var(--#{$prefix}border-color-translucent) !default;\n// fusv-enable\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .5rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-border-width: var(--#{$prefix}border-width) !default;\n$toast-border-color: var(--#{$prefix}border-color-translucent) !default;\n$toast-border-radius: var(--#{$prefix}border-radius) !default;\n$toast-box-shadow: var(--#{$prefix}box-shadow) !default;\n$toast-spacing: $container-padding-x !default;\n\n$toast-header-color: var(--#{$prefix}secondary-color) !default;\n$toast-header-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-header-border-color: $toast-border-color !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size: .75em !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-color: $white !default;\n$badge-padding-y: .35em !default;\n$badge-padding-x: .65em !default;\n$badge-border-radius: var(--#{$prefix}border-radius) !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding: $spacer !default;\n\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: var(--#{$prefix}body-bg) !default;\n$modal-content-border-color: var(--#{$prefix}border-color-translucent) !default;\n$modal-content-border-width: var(--#{$prefix}border-width) !default;\n$modal-content-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: $box-shadow-sm !default;\n$modal-content-box-shadow-sm-up: $box-shadow !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n\n$modal-header-border-color: var(--#{$prefix}border-color) !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-header-padding-y: $modal-inner-padding !default;\n$modal-header-padding-x: $modal-inner-padding !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-footer-bg: null !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n\n$modal-sm: 300px !default;\n$modal-md: 500px !default;\n$modal-lg: 800px !default;\n$modal-xl: 1140px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y: $spacer !default;\n$alert-padding-x: $spacer !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: var(--#{$prefix}border-radius) !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: var(--#{$prefix}border-width) !default;\n$alert-bg-scale: -80% !default;\n$alert-border-scale: -70% !default;\n$alert-color-scale: 40% !default;\n$alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n// fusv-disable\n$alert-bg-scale: -80% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-border-scale: -70% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-color-scale: 40% !default; // Deprecated in v5.2.0, to be removed in v6\n// fusv-enable\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: var(--#{$prefix}secondary-bg) !default;\n$progress-border-radius: var(--#{$prefix}border-radius) !default;\n$progress-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: $primary !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color: var(--#{$prefix}body-color) !default;\n$list-group-bg: var(--#{$prefix}body-bg) !default;\n$list-group-border-color: var(--#{$prefix}border-color) !default;\n$list-group-border-width: var(--#{$prefix}border-width) !default;\n$list-group-border-radius: var(--#{$prefix}border-radius) !default;\n\n$list-group-item-padding-y: $spacer * .5 !default;\n$list-group-item-padding-x: $spacer !default;\n// fusv-disable\n$list-group-item-bg-scale: -80% !default; // Deprecated in v5.3.0\n$list-group-item-color-scale: 40% !default; // Deprecated in v5.3.0\n// fusv-enable\n\n$list-group-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: var(--#{$prefix}secondary-color) !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: var(--#{$prefix}secondary-color) !default;\n$list-group-action-hover-color: var(--#{$prefix}emphasis-color) !default;\n\n$list-group-action-active-color: var(--#{$prefix}body-color) !default;\n$list-group-action-active-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: var(--#{$prefix}body-bg) !default;\n$thumbnail-border-width: var(--#{$prefix}border-width) !default;\n$thumbnail-border-color: var(--#{$prefix}border-color) !default;\n$thumbnail-border-radius: var(--#{$prefix}border-radius) !default;\n$thumbnail-box-shadow: var(--#{$prefix}box-shadow-sm) !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size: $small-font-size !default;\n$figure-caption-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size: null !default;\n$breadcrumb-padding-y: 0 !default;\n$breadcrumb-padding-x: 0 !default;\n$breadcrumb-item-padding-x: .5rem !default;\n$breadcrumb-margin-bottom: 1rem !default;\n$breadcrumb-bg: null !default;\n$breadcrumb-divider-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-active-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-divider: quote(\"/\") !default;\n$breadcrumb-divider-flipped: $breadcrumb-divider !default;\n$breadcrumb-border-radius: null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-opacity: .5 !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-active-opacity: 1 !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n$carousel-caption-padding-y: 1.25rem !default;\n$carousel-caption-spacer: 1.25rem !default;\n\n$carousel-control-icon-width: 2rem !default;\n\n$carousel-control-prev-icon-bg: url(\"data:image/svg+xml,\") !default;\n$carousel-control-next-icon-bg: url(\"data:image/svg+xml,\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n// scss-docs-end carousel-variables\n\n// scss-docs-start carousel-dark-variables\n$carousel-dark-indicator-active-bg: $black !default;\n$carousel-dark-caption-color: $black !default;\n$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;\n// scss-docs-end carousel-dark-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-vertical-align: -.125em !default;\n$spinner-border-width: .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width: 1em !default;\n$btn-close-height: $btn-close-width !default;\n$btn-close-padding-x: .25em !default;\n$btn-close-padding-y: $btn-close-padding-x !default;\n$btn-close-color: $black !default;\n$btn-close-bg: url(\"data:image/svg+xml,\") !default;\n$btn-close-focus-shadow: $focus-ring-box-shadow !default;\n$btn-close-opacity: .5 !default;\n$btn-close-hover-opacity: .75 !default;\n$btn-close-focus-opacity: 1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y: $modal-inner-padding !default;\n$offcanvas-padding-x: $modal-inner-padding !default;\n$offcanvas-horizontal-width: 400px !default;\n$offcanvas-vertical-height: 30vh !default;\n$offcanvas-transition-duration: .3s !default;\n$offcanvas-border-color: $modal-content-border-color !default;\n$offcanvas-border-width: $modal-content-border-width !default;\n$offcanvas-title-line-height: $modal-title-line-height !default;\n$offcanvas-bg-color: var(--#{$prefix}body-bg) !default;\n$offcanvas-color: var(--#{$prefix}body-color) !default;\n$offcanvas-box-shadow: $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg: $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity: $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size: $small-font-size !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .1875rem !default;\n$kbd-padding-x: .375rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: var(--#{$prefix}body-bg) !default;\n$kbd-bg: var(--#{$prefix}body-color) !default;\n$nested-kbd-font-weight: null !default; // Deprecated in v5.2.0, removing in v6\n\n$pre-color: null !default;\n","// Row\n//\n// Rows contain your columns.\n\n:root {\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: divide(100%, $count);\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is and invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix: \"\", $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","bootstrap-grid.css","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"AACE;;;;EAAA;ACKA;;;;;;;ECHA,qBAAA;EACA,gBAAA;EACA,WAAA;EACA,6CAAA;EACA,4CAAA;EACA,kBAAA;EACA,iBAAA;ACUF;;AC4CI;EH5CE;IACE,gBIkee;EF9drB;AACF;ACsCI;EH5CE;IACE,gBIkee;EFzdrB;AACF;ACiCI;EH5CE;IACE,gBIkee;EFpdrB;AACF;AC4BI;EH5CE;IACE,iBIkee;EF/crB;AACF;ACuBI;EH5CE;IACE,iBIkee;EF1crB;AACF;AGzCA;EAEI,qBAAA;EAAA,yBAAA;EAAA,yBAAA;EAAA,yBAAA;EAAA,0BAAA;EAAA,2BAAA;AH+CJ;;AG1CE;ECNA,qBAAA;EACA,gBAAA;EACA,aAAA;EACA,eAAA;EAEA,yCAAA;EACA,6CAAA;EACA,4CAAA;AJmDF;AGjDI;ECGF,sBAAA;EAIA,cAAA;EACA,WAAA;EACA,eAAA;EACA,6CAAA;EACA,4CAAA;EACA,8BAAA;AJ8CF;;AICM;EACE,YAAA;AJER;;AICM;EApCJ,cAAA;EACA,WAAA;AJuCF;;AIzBE;EACE,cAAA;EACA,WAAA;AJ4BJ;;AI9BE;EACE,cAAA;EACA,UAAA;AJiCJ;;AInCE;EACE,cAAA;EACA,mBAAA;AJsCJ;;AIxCE;EACE,cAAA;EACA,UAAA;AJ2CJ;;AI7CE;EACE,cAAA;EACA,UAAA;AJgDJ;;AIlDE;EACE,cAAA;EACA,mBAAA;AJqDJ;;AItBM;EAhDJ,cAAA;EACA,WAAA;AJ0EF;;AIrBU;EAhEN,cAAA;EACA,kBAAA;AJyFJ;;AI1BU;EAhEN,cAAA;EACA,mBAAA;AJ8FJ;;AI/BU;EAhEN,cAAA;EACA,UAAA;AJmGJ;;AIpCU;EAhEN,cAAA;EACA,mBAAA;AJwGJ;;AIzCU;EAhEN,cAAA;EACA,mBAAA;AJ6GJ;;AI9CU;EAhEN,cAAA;EACA,UAAA;AJkHJ;;AInDU;EAhEN,cAAA;EACA,mBAAA;AJuHJ;;AIxDU;EAhEN,cAAA;EACA,mBAAA;AJ4HJ;;AI7DU;EAhEN,cAAA;EACA,UAAA;AJiIJ;;AIlEU;EAhEN,cAAA;EACA,mBAAA;AJsIJ;;AIvEU;EAhEN,cAAA;EACA,mBAAA;AJ2IJ;;AI5EU;EAhEN,cAAA;EACA,WAAA;AJgJJ;;AIzEY;EAxDV,wBAAA;AJqIF;;AI7EY;EAxDV,yBAAA;AJyIF;;AIjFY;EAxDV,gBAAA;AJ6IF;;AIrFY;EAxDV,yBAAA;AJiJF;;AIzFY;EAxDV,yBAAA;AJqJF;;AI7FY;EAxDV,gBAAA;AJyJF;;AIjGY;EAxDV,yBAAA;AJ6JF;;AIrGY;EAxDV,yBAAA;AJiKF;;AIzGY;EAxDV,gBAAA;AJqKF;;AI7GY;EAxDV,yBAAA;AJyKF;;AIjHY;EAxDV,yBAAA;AJ6KF;;AI1GQ;;EAEE,gBAAA;AJ6GV;;AI1GQ;;EAEE,gBAAA;AJ6GV;;AIpHQ;;EAEE,sBAAA;AJuHV;;AIpHQ;;EAEE,sBAAA;AJuHV;;AI9HQ;;EAEE,qBAAA;AJiIV;;AI9HQ;;EAEE,qBAAA;AJiIV;;AIxIQ;;EAEE,mBAAA;AJ2IV;;AIxIQ;;EAEE,mBAAA;AJ2IV;;AIlJQ;;EAEE,qBAAA;AJqJV;;AIlJQ;;EAEE,qBAAA;AJqJV;;AI5JQ;;EAEE,mBAAA;AJ+JV;;AI5JQ;;EAEE,mBAAA;AJ+JV;;ACzNI;EGUE;IACE,YAAA;EJmNN;EIhNI;IApCJ,cAAA;IACA,WAAA;EJuPA;EIzOA;IACE,cAAA;IACA,WAAA;EJ2OF;EI7OA;IACE,cAAA;IACA,UAAA;EJ+OF;EIjPA;IACE,cAAA;IACA,mBAAA;EJmPF;EIrPA;IACE,cAAA;IACA,UAAA;EJuPF;EIzPA;IACE,cAAA;IACA,UAAA;EJ2PF;EI7PA;IACE,cAAA;IACA,mBAAA;EJ+PF;EIhOI;IAhDJ,cAAA;IACA,WAAA;EJmRA;EI9NQ;IAhEN,cAAA;IACA,kBAAA;EJiSF;EIlOQ;IAhEN,cAAA;IACA,mBAAA;EJqSF;EItOQ;IAhEN,cAAA;IACA,UAAA;EJySF;EI1OQ;IAhEN,cAAA;IACA,mBAAA;EJ6SF;EI9OQ;IAhEN,cAAA;IACA,mBAAA;EJiTF;EIlPQ;IAhEN,cAAA;IACA,UAAA;EJqTF;EItPQ;IAhEN,cAAA;IACA,mBAAA;EJyTF;EI1PQ;IAhEN,cAAA;IACA,mBAAA;EJ6TF;EI9PQ;IAhEN,cAAA;IACA,UAAA;EJiUF;EIlQQ;IAhEN,cAAA;IACA,mBAAA;EJqUF;EItQQ;IAhEN,cAAA;IACA,mBAAA;EJyUF;EI1QQ;IAhEN,cAAA;IACA,WAAA;EJ6UF;EItQU;IAxDV,cAAA;EJiUA;EIzQU;IAxDV,wBAAA;EJoUA;EI5QU;IAxDV,yBAAA;EJuUA;EI/QU;IAxDV,gBAAA;EJ0UA;EIlRU;IAxDV,yBAAA;EJ6UA;EIrRU;IAxDV,yBAAA;EJgVA;EIxRU;IAxDV,gBAAA;EJmVA;EI3RU;IAxDV,yBAAA;EJsVA;EI9RU;IAxDV,yBAAA;EJyVA;EIjSU;IAxDV,gBAAA;EJ4VA;EIpSU;IAxDV,yBAAA;EJ+VA;EIvSU;IAxDV,yBAAA;EJkWA;EI/RM;;IAEE,gBAAA;EJiSR;EI9RM;;IAEE,gBAAA;EJgSR;EIvSM;;IAEE,sBAAA;EJySR;EItSM;;IAEE,sBAAA;EJwSR;EI/SM;;IAEE,qBAAA;EJiTR;EI9SM;;IAEE,qBAAA;EJgTR;EIvTM;;IAEE,mBAAA;EJyTR;EItTM;;IAEE,mBAAA;EJwTR;EI/TM;;IAEE,qBAAA;EJiUR;EI9TM;;IAEE,qBAAA;EJgUR;EIvUM;;IAEE,mBAAA;EJyUR;EItUM;;IAEE,mBAAA;EJwUR;AACF;ACnYI;EGUE;IACE,YAAA;EJ4XN;EIzXI;IApCJ,cAAA;IACA,WAAA;EJgaA;EIlZA;IACE,cAAA;IACA,WAAA;EJoZF;EItZA;IACE,cAAA;IACA,UAAA;EJwZF;EI1ZA;IACE,cAAA;IACA,mBAAA;EJ4ZF;EI9ZA;IACE,cAAA;IACA,UAAA;EJgaF;EIlaA;IACE,cAAA;IACA,UAAA;EJoaF;EItaA;IACE,cAAA;IACA,mBAAA;EJwaF;EIzYI;IAhDJ,cAAA;IACA,WAAA;EJ4bA;EIvYQ;IAhEN,cAAA;IACA,kBAAA;EJ0cF;EI3YQ;IAhEN,cAAA;IACA,mBAAA;EJ8cF;EI/YQ;IAhEN,cAAA;IACA,UAAA;EJkdF;EInZQ;IAhEN,cAAA;IACA,mBAAA;EJsdF;EIvZQ;IAhEN,cAAA;IACA,mBAAA;EJ0dF;EI3ZQ;IAhEN,cAAA;IACA,UAAA;EJ8dF;EI/ZQ;IAhEN,cAAA;IACA,mBAAA;EJkeF;EInaQ;IAhEN,cAAA;IACA,mBAAA;EJseF;EIvaQ;IAhEN,cAAA;IACA,UAAA;EJ0eF;EI3aQ;IAhEN,cAAA;IACA,mBAAA;EJ8eF;EI/aQ;IAhEN,cAAA;IACA,mBAAA;EJkfF;EInbQ;IAhEN,cAAA;IACA,WAAA;EJsfF;EI/aU;IAxDV,cAAA;EJ0eA;EIlbU;IAxDV,wBAAA;EJ6eA;EIrbU;IAxDV,yBAAA;EJgfA;EIxbU;IAxDV,gBAAA;EJmfA;EI3bU;IAxDV,yBAAA;EJsfA;EI9bU;IAxDV,yBAAA;EJyfA;EIjcU;IAxDV,gBAAA;EJ4fA;EIpcU;IAxDV,yBAAA;EJ+fA;EIvcU;IAxDV,yBAAA;EJkgBA;EI1cU;IAxDV,gBAAA;EJqgBA;EI7cU;IAxDV,yBAAA;EJwgBA;EIhdU;IAxDV,yBAAA;EJ2gBA;EIxcM;;IAEE,gBAAA;EJ0cR;EIvcM;;IAEE,gBAAA;EJycR;EIhdM;;IAEE,sBAAA;EJkdR;EI/cM;;IAEE,sBAAA;EJidR;EIxdM;;IAEE,qBAAA;EJ0dR;EIvdM;;IAEE,qBAAA;EJydR;EIheM;;IAEE,mBAAA;EJkeR;EI/dM;;IAEE,mBAAA;EJieR;EIxeM;;IAEE,qBAAA;EJ0eR;EIveM;;IAEE,qBAAA;EJyeR;EIhfM;;IAEE,mBAAA;EJkfR;EI/eM;;IAEE,mBAAA;EJifR;AACF;AC5iBI;EGUE;IACE,YAAA;EJqiBN;EIliBI;IApCJ,cAAA;IACA,WAAA;EJykBA;EI3jBA;IACE,cAAA;IACA,WAAA;EJ6jBF;EI/jBA;IACE,cAAA;IACA,UAAA;EJikBF;EInkBA;IACE,cAAA;IACA,mBAAA;EJqkBF;EIvkBA;IACE,cAAA;IACA,UAAA;EJykBF;EI3kBA;IACE,cAAA;IACA,UAAA;EJ6kBF;EI/kBA;IACE,cAAA;IACA,mBAAA;EJilBF;EIljBI;IAhDJ,cAAA;IACA,WAAA;EJqmBA;EIhjBQ;IAhEN,cAAA;IACA,kBAAA;EJmnBF;EIpjBQ;IAhEN,cAAA;IACA,mBAAA;EJunBF;EIxjBQ;IAhEN,cAAA;IACA,UAAA;EJ2nBF;EI5jBQ;IAhEN,cAAA;IACA,mBAAA;EJ+nBF;EIhkBQ;IAhEN,cAAA;IACA,mBAAA;EJmoBF;EIpkBQ;IAhEN,cAAA;IACA,UAAA;EJuoBF;EIxkBQ;IAhEN,cAAA;IACA,mBAAA;EJ2oBF;EI5kBQ;IAhEN,cAAA;IACA,mBAAA;EJ+oBF;EIhlBQ;IAhEN,cAAA;IACA,UAAA;EJmpBF;EIplBQ;IAhEN,cAAA;IACA,mBAAA;EJupBF;EIxlBQ;IAhEN,cAAA;IACA,mBAAA;EJ2pBF;EI5lBQ;IAhEN,cAAA;IACA,WAAA;EJ+pBF;EIxlBU;IAxDV,cAAA;EJmpBA;EI3lBU;IAxDV,wBAAA;EJspBA;EI9lBU;IAxDV,yBAAA;EJypBA;EIjmBU;IAxDV,gBAAA;EJ4pBA;EIpmBU;IAxDV,yBAAA;EJ+pBA;EIvmBU;IAxDV,yBAAA;EJkqBA;EI1mBU;IAxDV,gBAAA;EJqqBA;EI7mBU;IAxDV,yBAAA;EJwqBA;EIhnBU;IAxDV,yBAAA;EJ2qBA;EInnBU;IAxDV,gBAAA;EJ8qBA;EItnBU;IAxDV,yBAAA;EJirBA;EIznBU;IAxDV,yBAAA;EJorBA;EIjnBM;;IAEE,gBAAA;EJmnBR;EIhnBM;;IAEE,gBAAA;EJknBR;EIznBM;;IAEE,sBAAA;EJ2nBR;EIxnBM;;IAEE,sBAAA;EJ0nBR;EIjoBM;;IAEE,qBAAA;EJmoBR;EIhoBM;;IAEE,qBAAA;EJkoBR;EIzoBM;;IAEE,mBAAA;EJ2oBR;EIxoBM;;IAEE,mBAAA;EJ0oBR;EIjpBM;;IAEE,qBAAA;EJmpBR;EIhpBM;;IAEE,qBAAA;EJkpBR;EIzpBM;;IAEE,mBAAA;EJ2pBR;EIxpBM;;IAEE,mBAAA;EJ0pBR;AACF;ACrtBI;EGUE;IACE,YAAA;EJ8sBN;EI3sBI;IApCJ,cAAA;IACA,WAAA;EJkvBA;EIpuBA;IACE,cAAA;IACA,WAAA;EJsuBF;EIxuBA;IACE,cAAA;IACA,UAAA;EJ0uBF;EI5uBA;IACE,cAAA;IACA,mBAAA;EJ8uBF;EIhvBA;IACE,cAAA;IACA,UAAA;EJkvBF;EIpvBA;IACE,cAAA;IACA,UAAA;EJsvBF;EIxvBA;IACE,cAAA;IACA,mBAAA;EJ0vBF;EI3tBI;IAhDJ,cAAA;IACA,WAAA;EJ8wBA;EIztBQ;IAhEN,cAAA;IACA,kBAAA;EJ4xBF;EI7tBQ;IAhEN,cAAA;IACA,mBAAA;EJgyBF;EIjuBQ;IAhEN,cAAA;IACA,UAAA;EJoyBF;EIruBQ;IAhEN,cAAA;IACA,mBAAA;EJwyBF;EIzuBQ;IAhEN,cAAA;IACA,mBAAA;EJ4yBF;EI7uBQ;IAhEN,cAAA;IACA,UAAA;EJgzBF;EIjvBQ;IAhEN,cAAA;IACA,mBAAA;EJozBF;EIrvBQ;IAhEN,cAAA;IACA,mBAAA;EJwzBF;EIzvBQ;IAhEN,cAAA;IACA,UAAA;EJ4zBF;EI7vBQ;IAhEN,cAAA;IACA,mBAAA;EJg0BF;EIjwBQ;IAhEN,cAAA;IACA,mBAAA;EJo0BF;EIrwBQ;IAhEN,cAAA;IACA,WAAA;EJw0BF;EIjwBU;IAxDV,cAAA;EJ4zBA;EIpwBU;IAxDV,wBAAA;EJ+zBA;EIvwBU;IAxDV,yBAAA;EJk0BA;EI1wBU;IAxDV,gBAAA;EJq0BA;EI7wBU;IAxDV,yBAAA;EJw0BA;EIhxBU;IAxDV,yBAAA;EJ20BA;EInxBU;IAxDV,gBAAA;EJ80BA;EItxBU;IAxDV,yBAAA;EJi1BA;EIzxBU;IAxDV,yBAAA;EJo1BA;EI5xBU;IAxDV,gBAAA;EJu1BA;EI/xBU;IAxDV,yBAAA;EJ01BA;EIlyBU;IAxDV,yBAAA;EJ61BA;EI1xBM;;IAEE,gBAAA;EJ4xBR;EIzxBM;;IAEE,gBAAA;EJ2xBR;EIlyBM;;IAEE,sBAAA;EJoyBR;EIjyBM;;IAEE,sBAAA;EJmyBR;EI1yBM;;IAEE,qBAAA;EJ4yBR;EIzyBM;;IAEE,qBAAA;EJ2yBR;EIlzBM;;IAEE,mBAAA;EJozBR;EIjzBM;;IAEE,mBAAA;EJmzBR;EI1zBM;;IAEE,qBAAA;EJ4zBR;EIzzBM;;IAEE,qBAAA;EJ2zBR;EIl0BM;;IAEE,mBAAA;EJo0BR;EIj0BM;;IAEE,mBAAA;EJm0BR;AACF;AC93BI;EGUE;IACE,YAAA;EJu3BN;EIp3BI;IApCJ,cAAA;IACA,WAAA;EJ25BA;EI74BA;IACE,cAAA;IACA,WAAA;EJ+4BF;EIj5BA;IACE,cAAA;IACA,UAAA;EJm5BF;EIr5BA;IACE,cAAA;IACA,mBAAA;EJu5BF;EIz5BA;IACE,cAAA;IACA,UAAA;EJ25BF;EI75BA;IACE,cAAA;IACA,UAAA;EJ+5BF;EIj6BA;IACE,cAAA;IACA,mBAAA;EJm6BF;EIp4BI;IAhDJ,cAAA;IACA,WAAA;EJu7BA;EIl4BQ;IAhEN,cAAA;IACA,kBAAA;EJq8BF;EIt4BQ;IAhEN,cAAA;IACA,mBAAA;EJy8BF;EI14BQ;IAhEN,cAAA;IACA,UAAA;EJ68BF;EI94BQ;IAhEN,cAAA;IACA,mBAAA;EJi9BF;EIl5BQ;IAhEN,cAAA;IACA,mBAAA;EJq9BF;EIt5BQ;IAhEN,cAAA;IACA,UAAA;EJy9BF;EI15BQ;IAhEN,cAAA;IACA,mBAAA;EJ69BF;EI95BQ;IAhEN,cAAA;IACA,mBAAA;EJi+BF;EIl6BQ;IAhEN,cAAA;IACA,UAAA;EJq+BF;EIt6BQ;IAhEN,cAAA;IACA,mBAAA;EJy+BF;EI16BQ;IAhEN,cAAA;IACA,mBAAA;EJ6+BF;EI96BQ;IAhEN,cAAA;IACA,WAAA;EJi/BF;EI16BU;IAxDV,cAAA;EJq+BA;EI76BU;IAxDV,wBAAA;EJw+BA;EIh7BU;IAxDV,yBAAA;EJ2+BA;EIn7BU;IAxDV,gBAAA;EJ8+BA;EIt7BU;IAxDV,yBAAA;EJi/BA;EIz7BU;IAxDV,yBAAA;EJo/BA;EI57BU;IAxDV,gBAAA;EJu/BA;EI/7BU;IAxDV,yBAAA;EJ0/BA;EIl8BU;IAxDV,yBAAA;EJ6/BA;EIr8BU;IAxDV,gBAAA;EJggCA;EIx8BU;IAxDV,yBAAA;EJmgCA;EI38BU;IAxDV,yBAAA;EJsgCA;EIn8BM;;IAEE,gBAAA;EJq8BR;EIl8BM;;IAEE,gBAAA;EJo8BR;EI38BM;;IAEE,sBAAA;EJ68BR;EI18BM;;IAEE,sBAAA;EJ48BR;EIn9BM;;IAEE,qBAAA;EJq9BR;EIl9BM;;IAEE,qBAAA;EJo9BR;EI39BM;;IAEE,mBAAA;EJ69BR;EI19BM;;IAEE,mBAAA;EJ49BR;EIn+BM;;IAEE,qBAAA;EJq+BR;EIl+BM;;IAEE,qBAAA;EJo+BR;EI3+BM;;IAEE,mBAAA;EJ6+BR;EI1+BM;;IAEE,mBAAA;EJ4+BR;AACF;AKpiCQ;EAOI,0BAAA;ALgiCZ;;AKviCQ;EAOI,gCAAA;ALoiCZ;;AK3iCQ;EAOI,yBAAA;ALwiCZ;;AK/iCQ;EAOI,wBAAA;AL4iCZ;;AKnjCQ;EAOI,+BAAA;ALgjCZ;;AKvjCQ;EAOI,yBAAA;ALojCZ;;AK3jCQ;EAOI,6BAAA;ALwjCZ;;AK/jCQ;EAOI,8BAAA;AL4jCZ;;AKnkCQ;EAOI,wBAAA;ALgkCZ;;AKvkCQ;EAOI,+BAAA;ALokCZ;;AK3kCQ;EAOI,wBAAA;ALwkCZ;;AK/kCQ;EAOI,yBAAA;AL4kCZ;;AKnlCQ;EAOI,8BAAA;ALglCZ;;AKvlCQ;EAOI,iCAAA;ALolCZ;;AK3lCQ;EAOI,sCAAA;ALwlCZ;;AK/lCQ;EAOI,yCAAA;AL4lCZ;;AKnmCQ;EAOI,uBAAA;ALgmCZ;;AKvmCQ;EAOI,uBAAA;ALomCZ;;AK3mCQ;EAOI,yBAAA;ALwmCZ;;AK/mCQ;EAOI,yBAAA;AL4mCZ;;AKnnCQ;EAOI,0BAAA;ALgnCZ;;AKvnCQ;EAOI,4BAAA;ALonCZ;;AK3nCQ;EAOI,kCAAA;ALwnCZ;;AK/nCQ;EAOI,sCAAA;AL4nCZ;;AKnoCQ;EAOI,oCAAA;ALgoCZ;;AKvoCQ;EAOI,kCAAA;ALooCZ;;AK3oCQ;EAOI,yCAAA;ALwoCZ;;AK/oCQ;EAOI,wCAAA;AL4oCZ;;AKnpCQ;EAOI,wCAAA;ALgpCZ;;AKvpCQ;EAOI,kCAAA;ALopCZ;;AK3pCQ;EAOI,gCAAA;ALwpCZ;;AK/pCQ;EAOI,8BAAA;AL4pCZ;;AKnqCQ;EAOI,gCAAA;ALgqCZ;;AKvqCQ;EAOI,+BAAA;ALoqCZ;;AK3qCQ;EAOI,oCAAA;ALwqCZ;;AK/qCQ;EAOI,kCAAA;AL4qCZ;;AKnrCQ;EAOI,gCAAA;ALgrCZ;;AKvrCQ;EAOI,uCAAA;ALorCZ;;AK3rCQ;EAOI,sCAAA;ALwrCZ;;AK/rCQ;EAOI,iCAAA;AL4rCZ;;AKnsCQ;EAOI,2BAAA;ALgsCZ;;AKvsCQ;EAOI,iCAAA;ALosCZ;;AK3sCQ;EAOI,+BAAA;ALwsCZ;;AK/sCQ;EAOI,6BAAA;AL4sCZ;;AKntCQ;EAOI,+BAAA;ALgtCZ;;AKvtCQ;EAOI,8BAAA;ALotCZ;;AK3tCQ;EAOI,oBAAA;ALwtCZ;;AK/tCQ;EAOI,mBAAA;AL4tCZ;;AKnuCQ;EAOI,mBAAA;ALguCZ;;AKvuCQ;EAOI,mBAAA;ALouCZ;;AK3uCQ;EAOI,mBAAA;ALwuCZ;;AK/uCQ;EAOI,mBAAA;AL4uCZ;;AKnvCQ;EAOI,mBAAA;ALgvCZ;;AKvvCQ;EAOI,mBAAA;ALovCZ;;AK3vCQ;EAOI,oBAAA;ALwvCZ;;AK/vCQ;EAOI,0BAAA;AL4vCZ;;AKnwCQ;EAOI,yBAAA;ALgwCZ;;AKvwCQ;EAOI,uBAAA;ALowCZ;;AK3wCQ;EAOI,yBAAA;ALwwCZ;;AK/wCQ;EAOI,uBAAA;AL4wCZ;;AKnxCQ;EAOI,uBAAA;ALgxCZ;;AKvxCQ;EAOI,0BAAA;EAAA,yBAAA;ALqxCZ;;AK5xCQ;EAOI,gCAAA;EAAA,+BAAA;AL0xCZ;;AKjyCQ;EAOI,+BAAA;EAAA,8BAAA;AL+xCZ;;AKtyCQ;EAOI,6BAAA;EAAA,4BAAA;ALoyCZ;;AK3yCQ;EAOI,+BAAA;EAAA,8BAAA;ALyyCZ;;AKhzCQ;EAOI,6BAAA;EAAA,4BAAA;AL8yCZ;;AKrzCQ;EAOI,6BAAA;EAAA,4BAAA;ALmzCZ;;AK1zCQ;EAOI,wBAAA;EAAA,2BAAA;ALwzCZ;;AK/zCQ;EAOI,8BAAA;EAAA,iCAAA;AL6zCZ;;AKp0CQ;EAOI,6BAAA;EAAA,gCAAA;ALk0CZ;;AKz0CQ;EAOI,2BAAA;EAAA,8BAAA;ALu0CZ;;AK90CQ;EAOI,6BAAA;EAAA,gCAAA;AL40CZ;;AKn1CQ;EAOI,2BAAA;EAAA,8BAAA;ALi1CZ;;AKx1CQ;EAOI,2BAAA;EAAA,8BAAA;ALs1CZ;;AK71CQ;EAOI,wBAAA;AL01CZ;;AKj2CQ;EAOI,8BAAA;AL81CZ;;AKr2CQ;EAOI,6BAAA;ALk2CZ;;AKz2CQ;EAOI,2BAAA;ALs2CZ;;AK72CQ;EAOI,6BAAA;AL02CZ;;AKj3CQ;EAOI,2BAAA;AL82CZ;;AKr3CQ;EAOI,2BAAA;ALk3CZ;;AKz3CQ;EAOI,0BAAA;ALs3CZ;;AK73CQ;EAOI,gCAAA;AL03CZ;;AKj4CQ;EAOI,+BAAA;AL83CZ;;AKr4CQ;EAOI,6BAAA;ALk4CZ;;AKz4CQ;EAOI,+BAAA;ALs4CZ;;AK74CQ;EAOI,6BAAA;AL04CZ;;AKj5CQ;EAOI,6BAAA;AL84CZ;;AKr5CQ;EAOI,2BAAA;ALk5CZ;;AKz5CQ;EAOI,iCAAA;ALs5CZ;;AK75CQ;EAOI,gCAAA;AL05CZ;;AKj6CQ;EAOI,8BAAA;AL85CZ;;AKr6CQ;EAOI,gCAAA;ALk6CZ;;AKz6CQ;EAOI,8BAAA;ALs6CZ;;AK76CQ;EAOI,8BAAA;AL06CZ;;AKj7CQ;EAOI,yBAAA;AL86CZ;;AKr7CQ;EAOI,+BAAA;ALk7CZ;;AKz7CQ;EAOI,8BAAA;ALs7CZ;;AK77CQ;EAOI,4BAAA;AL07CZ;;AKj8CQ;EAOI,8BAAA;AL87CZ;;AKr8CQ;EAOI,4BAAA;ALk8CZ;;AKz8CQ;EAOI,4BAAA;ALs8CZ;;AK78CQ;EAOI,qBAAA;AL08CZ;;AKj9CQ;EAOI,2BAAA;AL88CZ;;AKr9CQ;EAOI,0BAAA;ALk9CZ;;AKz9CQ;EAOI,wBAAA;ALs9CZ;;AK79CQ;EAOI,0BAAA;AL09CZ;;AKj+CQ;EAOI,wBAAA;AL89CZ;;AKr+CQ;EAOI,2BAAA;EAAA,0BAAA;ALm+CZ;;AK1+CQ;EAOI,iCAAA;EAAA,gCAAA;ALw+CZ;;AK/+CQ;EAOI,gCAAA;EAAA,+BAAA;AL6+CZ;;AKp/CQ;EAOI,8BAAA;EAAA,6BAAA;ALk/CZ;;AKz/CQ;EAOI,gCAAA;EAAA,+BAAA;ALu/CZ;;AK9/CQ;EAOI,8BAAA;EAAA,6BAAA;AL4/CZ;;AKngDQ;EAOI,yBAAA;EAAA,4BAAA;ALigDZ;;AKxgDQ;EAOI,+BAAA;EAAA,kCAAA;ALsgDZ;;AK7gDQ;EAOI,8BAAA;EAAA,iCAAA;AL2gDZ;;AKlhDQ;EAOI,4BAAA;EAAA,+BAAA;ALghDZ;;AKvhDQ;EAOI,8BAAA;EAAA,iCAAA;ALqhDZ;;AK5hDQ;EAOI,4BAAA;EAAA,+BAAA;AL0hDZ;;AKjiDQ;EAOI,yBAAA;AL8hDZ;;AKriDQ;EAOI,+BAAA;ALkiDZ;;AKziDQ;EAOI,8BAAA;ALsiDZ;;AK7iDQ;EAOI,4BAAA;AL0iDZ;;AKjjDQ;EAOI,8BAAA;AL8iDZ;;AKrjDQ;EAOI,4BAAA;ALkjDZ;;AKzjDQ;EAOI,2BAAA;ALsjDZ;;AK7jDQ;EAOI,iCAAA;AL0jDZ;;AKjkDQ;EAOI,gCAAA;AL8jDZ;;AKrkDQ;EAOI,8BAAA;ALkkDZ;;AKzkDQ;EAOI,gCAAA;ALskDZ;;AK7kDQ;EAOI,8BAAA;AL0kDZ;;AKjlDQ;EAOI,4BAAA;AL8kDZ;;AKrlDQ;EAOI,kCAAA;ALklDZ;;AKzlDQ;EAOI,iCAAA;ALslDZ;;AK7lDQ;EAOI,+BAAA;AL0lDZ;;AKjmDQ;EAOI,iCAAA;AL8lDZ;;AKrmDQ;EAOI,+BAAA;ALkmDZ;;AKzmDQ;EAOI,0BAAA;ALsmDZ;;AK7mDQ;EAOI,gCAAA;AL0mDZ;;AKjnDQ;EAOI,+BAAA;AL8mDZ;;AKrnDQ;EAOI,6BAAA;ALknDZ;;AKznDQ;EAOI,+BAAA;ALsnDZ;;AK7nDQ;EAOI,6BAAA;AL0nDZ;;ACpoDI;EIGI;IAOI,0BAAA;EL+nDV;EKtoDM;IAOI,gCAAA;ELkoDV;EKzoDM;IAOI,yBAAA;ELqoDV;EK5oDM;IAOI,wBAAA;ELwoDV;EK/oDM;IAOI,+BAAA;EL2oDV;EKlpDM;IAOI,yBAAA;EL8oDV;EKrpDM;IAOI,6BAAA;ELipDV;EKxpDM;IAOI,8BAAA;ELopDV;EK3pDM;IAOI,wBAAA;ELupDV;EK9pDM;IAOI,+BAAA;EL0pDV;EKjqDM;IAOI,wBAAA;EL6pDV;EKpqDM;IAOI,yBAAA;ELgqDV;EKvqDM;IAOI,8BAAA;ELmqDV;EK1qDM;IAOI,iCAAA;ELsqDV;EK7qDM;IAOI,sCAAA;ELyqDV;EKhrDM;IAOI,yCAAA;EL4qDV;EKnrDM;IAOI,uBAAA;EL+qDV;EKtrDM;IAOI,uBAAA;ELkrDV;EKzrDM;IAOI,yBAAA;ELqrDV;EK5rDM;IAOI,yBAAA;ELwrDV;EK/rDM;IAOI,0BAAA;EL2rDV;EKlsDM;IAOI,4BAAA;EL8rDV;EKrsDM;IAOI,kCAAA;ELisDV;EKxsDM;IAOI,sCAAA;ELosDV;EK3sDM;IAOI,oCAAA;ELusDV;EK9sDM;IAOI,kCAAA;EL0sDV;EKjtDM;IAOI,yCAAA;EL6sDV;EKptDM;IAOI,wCAAA;ELgtDV;EKvtDM;IAOI,wCAAA;ELmtDV;EK1tDM;IAOI,kCAAA;ELstDV;EK7tDM;IAOI,gCAAA;ELytDV;EKhuDM;IAOI,8BAAA;EL4tDV;EKnuDM;IAOI,gCAAA;EL+tDV;EKtuDM;IAOI,+BAAA;ELkuDV;EKzuDM;IAOI,oCAAA;ELquDV;EK5uDM;IAOI,kCAAA;ELwuDV;EK/uDM;IAOI,gCAAA;EL2uDV;EKlvDM;IAOI,uCAAA;EL8uDV;EKrvDM;IAOI,sCAAA;ELivDV;EKxvDM;IAOI,iCAAA;ELovDV;EK3vDM;IAOI,2BAAA;ELuvDV;EK9vDM;IAOI,iCAAA;EL0vDV;EKjwDM;IAOI,+BAAA;EL6vDV;EKpwDM;IAOI,6BAAA;ELgwDV;EKvwDM;IAOI,+BAAA;ELmwDV;EK1wDM;IAOI,8BAAA;ELswDV;EK7wDM;IAOI,oBAAA;ELywDV;EKhxDM;IAOI,mBAAA;EL4wDV;EKnxDM;IAOI,mBAAA;EL+wDV;EKtxDM;IAOI,mBAAA;ELkxDV;EKzxDM;IAOI,mBAAA;ELqxDV;EK5xDM;IAOI,mBAAA;ELwxDV;EK/xDM;IAOI,mBAAA;EL2xDV;EKlyDM;IAOI,mBAAA;EL8xDV;EKryDM;IAOI,oBAAA;ELiyDV;EKxyDM;IAOI,0BAAA;ELoyDV;EK3yDM;IAOI,yBAAA;ELuyDV;EK9yDM;IAOI,uBAAA;EL0yDV;EKjzDM;IAOI,yBAAA;EL6yDV;EKpzDM;IAOI,uBAAA;ELgzDV;EKvzDM;IAOI,uBAAA;ELmzDV;EK1zDM;IAOI,0BAAA;IAAA,yBAAA;ELuzDV;EK9zDM;IAOI,gCAAA;IAAA,+BAAA;EL2zDV;EKl0DM;IAOI,+BAAA;IAAA,8BAAA;EL+zDV;EKt0DM;IAOI,6BAAA;IAAA,4BAAA;ELm0DV;EK10DM;IAOI,+BAAA;IAAA,8BAAA;ELu0DV;EK90DM;IAOI,6BAAA;IAAA,4BAAA;EL20DV;EKl1DM;IAOI,6BAAA;IAAA,4BAAA;EL+0DV;EKt1DM;IAOI,wBAAA;IAAA,2BAAA;ELm1DV;EK11DM;IAOI,8BAAA;IAAA,iCAAA;ELu1DV;EK91DM;IAOI,6BAAA;IAAA,gCAAA;EL21DV;EKl2DM;IAOI,2BAAA;IAAA,8BAAA;EL+1DV;EKt2DM;IAOI,6BAAA;IAAA,gCAAA;ELm2DV;EK12DM;IAOI,2BAAA;IAAA,8BAAA;ELu2DV;EK92DM;IAOI,2BAAA;IAAA,8BAAA;EL22DV;EKl3DM;IAOI,wBAAA;EL82DV;EKr3DM;IAOI,8BAAA;ELi3DV;EKx3DM;IAOI,6BAAA;ELo3DV;EK33DM;IAOI,2BAAA;ELu3DV;EK93DM;IAOI,6BAAA;EL03DV;EKj4DM;IAOI,2BAAA;EL63DV;EKp4DM;IAOI,2BAAA;ELg4DV;EKv4DM;IAOI,0BAAA;ELm4DV;EK14DM;IAOI,gCAAA;ELs4DV;EK74DM;IAOI,+BAAA;ELy4DV;EKh5DM;IAOI,6BAAA;EL44DV;EKn5DM;IAOI,+BAAA;EL+4DV;EKt5DM;IAOI,6BAAA;ELk5DV;EKz5DM;IAOI,6BAAA;ELq5DV;EK55DM;IAOI,2BAAA;ELw5DV;EK/5DM;IAOI,iCAAA;EL25DV;EKl6DM;IAOI,gCAAA;EL85DV;EKr6DM;IAOI,8BAAA;ELi6DV;EKx6DM;IAOI,gCAAA;ELo6DV;EK36DM;IAOI,8BAAA;ELu6DV;EK96DM;IAOI,8BAAA;EL06DV;EKj7DM;IAOI,yBAAA;EL66DV;EKp7DM;IAOI,+BAAA;ELg7DV;EKv7DM;IAOI,8BAAA;ELm7DV;EK17DM;IAOI,4BAAA;ELs7DV;EK77DM;IAOI,8BAAA;ELy7DV;EKh8DM;IAOI,4BAAA;EL47DV;EKn8DM;IAOI,4BAAA;EL+7DV;EKt8DM;IAOI,qBAAA;ELk8DV;EKz8DM;IAOI,2BAAA;ELq8DV;EK58DM;IAOI,0BAAA;ELw8DV;EK/8DM;IAOI,wBAAA;EL28DV;EKl9DM;IAOI,0BAAA;EL88DV;EKr9DM;IAOI,wBAAA;ELi9DV;EKx9DM;IAOI,2BAAA;IAAA,0BAAA;ELq9DV;EK59DM;IAOI,iCAAA;IAAA,gCAAA;ELy9DV;EKh+DM;IAOI,gCAAA;IAAA,+BAAA;EL69DV;EKp+DM;IAOI,8BAAA;IAAA,6BAAA;ELi+DV;EKx+DM;IAOI,gCAAA;IAAA,+BAAA;ELq+DV;EK5+DM;IAOI,8BAAA;IAAA,6BAAA;ELy+DV;EKh/DM;IAOI,yBAAA;IAAA,4BAAA;EL6+DV;EKp/DM;IAOI,+BAAA;IAAA,kCAAA;ELi/DV;EKx/DM;IAOI,8BAAA;IAAA,iCAAA;ELq/DV;EK5/DM;IAOI,4BAAA;IAAA,+BAAA;ELy/DV;EKhgEM;IAOI,8BAAA;IAAA,iCAAA;EL6/DV;EKpgEM;IAOI,4BAAA;IAAA,+BAAA;ELigEV;EKxgEM;IAOI,yBAAA;ELogEV;EK3gEM;IAOI,+BAAA;ELugEV;EK9gEM;IAOI,8BAAA;EL0gEV;EKjhEM;IAOI,4BAAA;EL6gEV;EKphEM;IAOI,8BAAA;ELghEV;EKvhEM;IAOI,4BAAA;ELmhEV;EK1hEM;IAOI,2BAAA;ELshEV;EK7hEM;IAOI,iCAAA;ELyhEV;EKhiEM;IAOI,gCAAA;EL4hEV;EKniEM;IAOI,8BAAA;EL+hEV;EKtiEM;IAOI,gCAAA;ELkiEV;EKziEM;IAOI,8BAAA;ELqiEV;EK5iEM;IAOI,4BAAA;ELwiEV;EK/iEM;IAOI,kCAAA;EL2iEV;EKljEM;IAOI,iCAAA;EL8iEV;EKrjEM;IAOI,+BAAA;ELijEV;EKxjEM;IAOI,iCAAA;ELojEV;EK3jEM;IAOI,+BAAA;ELujEV;EK9jEM;IAOI,0BAAA;EL0jEV;EKjkEM;IAOI,gCAAA;EL6jEV;EKpkEM;IAOI,+BAAA;ELgkEV;EKvkEM;IAOI,6BAAA;ELmkEV;EK1kEM;IAOI,+BAAA;ELskEV;EK7kEM;IAOI,6BAAA;ELykEV;AACF;ACplEI;EIGI;IAOI,0BAAA;EL8kEV;EKrlEM;IAOI,gCAAA;ELilEV;EKxlEM;IAOI,yBAAA;ELolEV;EK3lEM;IAOI,wBAAA;ELulEV;EK9lEM;IAOI,+BAAA;EL0lEV;EKjmEM;IAOI,yBAAA;EL6lEV;EKpmEM;IAOI,6BAAA;ELgmEV;EKvmEM;IAOI,8BAAA;ELmmEV;EK1mEM;IAOI,wBAAA;ELsmEV;EK7mEM;IAOI,+BAAA;ELymEV;EKhnEM;IAOI,wBAAA;EL4mEV;EKnnEM;IAOI,yBAAA;EL+mEV;EKtnEM;IAOI,8BAAA;ELknEV;EKznEM;IAOI,iCAAA;ELqnEV;EK5nEM;IAOI,sCAAA;ELwnEV;EK/nEM;IAOI,yCAAA;EL2nEV;EKloEM;IAOI,uBAAA;EL8nEV;EKroEM;IAOI,uBAAA;ELioEV;EKxoEM;IAOI,yBAAA;ELooEV;EK3oEM;IAOI,yBAAA;ELuoEV;EK9oEM;IAOI,0BAAA;EL0oEV;EKjpEM;IAOI,4BAAA;EL6oEV;EKppEM;IAOI,kCAAA;ELgpEV;EKvpEM;IAOI,sCAAA;ELmpEV;EK1pEM;IAOI,oCAAA;ELspEV;EK7pEM;IAOI,kCAAA;ELypEV;EKhqEM;IAOI,yCAAA;EL4pEV;EKnqEM;IAOI,wCAAA;EL+pEV;EKtqEM;IAOI,wCAAA;ELkqEV;EKzqEM;IAOI,kCAAA;ELqqEV;EK5qEM;IAOI,gCAAA;ELwqEV;EK/qEM;IAOI,8BAAA;EL2qEV;EKlrEM;IAOI,gCAAA;EL8qEV;EKrrEM;IAOI,+BAAA;ELirEV;EKxrEM;IAOI,oCAAA;ELorEV;EK3rEM;IAOI,kCAAA;ELurEV;EK9rEM;IAOI,gCAAA;EL0rEV;EKjsEM;IAOI,uCAAA;EL6rEV;EKpsEM;IAOI,sCAAA;ELgsEV;EKvsEM;IAOI,iCAAA;ELmsEV;EK1sEM;IAOI,2BAAA;ELssEV;EK7sEM;IAOI,iCAAA;ELysEV;EKhtEM;IAOI,+BAAA;EL4sEV;EKntEM;IAOI,6BAAA;EL+sEV;EKttEM;IAOI,+BAAA;ELktEV;EKztEM;IAOI,8BAAA;ELqtEV;EK5tEM;IAOI,oBAAA;ELwtEV;EK/tEM;IAOI,mBAAA;EL2tEV;EKluEM;IAOI,mBAAA;EL8tEV;EKruEM;IAOI,mBAAA;ELiuEV;EKxuEM;IAOI,mBAAA;ELouEV;EK3uEM;IAOI,mBAAA;ELuuEV;EK9uEM;IAOI,mBAAA;EL0uEV;EKjvEM;IAOI,mBAAA;EL6uEV;EKpvEM;IAOI,oBAAA;ELgvEV;EKvvEM;IAOI,0BAAA;ELmvEV;EK1vEM;IAOI,yBAAA;ELsvEV;EK7vEM;IAOI,uBAAA;ELyvEV;EKhwEM;IAOI,yBAAA;EL4vEV;EKnwEM;IAOI,uBAAA;EL+vEV;EKtwEM;IAOI,uBAAA;ELkwEV;EKzwEM;IAOI,0BAAA;IAAA,yBAAA;ELswEV;EK7wEM;IAOI,gCAAA;IAAA,+BAAA;EL0wEV;EKjxEM;IAOI,+BAAA;IAAA,8BAAA;EL8wEV;EKrxEM;IAOI,6BAAA;IAAA,4BAAA;ELkxEV;EKzxEM;IAOI,+BAAA;IAAA,8BAAA;ELsxEV;EK7xEM;IAOI,6BAAA;IAAA,4BAAA;EL0xEV;EKjyEM;IAOI,6BAAA;IAAA,4BAAA;EL8xEV;EKryEM;IAOI,wBAAA;IAAA,2BAAA;ELkyEV;EKzyEM;IAOI,8BAAA;IAAA,iCAAA;ELsyEV;EK7yEM;IAOI,6BAAA;IAAA,gCAAA;EL0yEV;EKjzEM;IAOI,2BAAA;IAAA,8BAAA;EL8yEV;EKrzEM;IAOI,6BAAA;IAAA,gCAAA;ELkzEV;EKzzEM;IAOI,2BAAA;IAAA,8BAAA;ELszEV;EK7zEM;IAOI,2BAAA;IAAA,8BAAA;EL0zEV;EKj0EM;IAOI,wBAAA;EL6zEV;EKp0EM;IAOI,8BAAA;ELg0EV;EKv0EM;IAOI,6BAAA;ELm0EV;EK10EM;IAOI,2BAAA;ELs0EV;EK70EM;IAOI,6BAAA;ELy0EV;EKh1EM;IAOI,2BAAA;EL40EV;EKn1EM;IAOI,2BAAA;EL+0EV;EKt1EM;IAOI,0BAAA;ELk1EV;EKz1EM;IAOI,gCAAA;ELq1EV;EK51EM;IAOI,+BAAA;ELw1EV;EK/1EM;IAOI,6BAAA;EL21EV;EKl2EM;IAOI,+BAAA;EL81EV;EKr2EM;IAOI,6BAAA;ELi2EV;EKx2EM;IAOI,6BAAA;ELo2EV;EK32EM;IAOI,2BAAA;ELu2EV;EK92EM;IAOI,iCAAA;EL02EV;EKj3EM;IAOI,gCAAA;EL62EV;EKp3EM;IAOI,8BAAA;ELg3EV;EKv3EM;IAOI,gCAAA;ELm3EV;EK13EM;IAOI,8BAAA;ELs3EV;EK73EM;IAOI,8BAAA;ELy3EV;EKh4EM;IAOI,yBAAA;EL43EV;EKn4EM;IAOI,+BAAA;EL+3EV;EKt4EM;IAOI,8BAAA;ELk4EV;EKz4EM;IAOI,4BAAA;ELq4EV;EK54EM;IAOI,8BAAA;ELw4EV;EK/4EM;IAOI,4BAAA;EL24EV;EKl5EM;IAOI,4BAAA;EL84EV;EKr5EM;IAOI,qBAAA;ELi5EV;EKx5EM;IAOI,2BAAA;ELo5EV;EK35EM;IAOI,0BAAA;ELu5EV;EK95EM;IAOI,wBAAA;EL05EV;EKj6EM;IAOI,0BAAA;EL65EV;EKp6EM;IAOI,wBAAA;ELg6EV;EKv6EM;IAOI,2BAAA;IAAA,0BAAA;ELo6EV;EK36EM;IAOI,iCAAA;IAAA,gCAAA;ELw6EV;EK/6EM;IAOI,gCAAA;IAAA,+BAAA;EL46EV;EKn7EM;IAOI,8BAAA;IAAA,6BAAA;ELg7EV;EKv7EM;IAOI,gCAAA;IAAA,+BAAA;ELo7EV;EK37EM;IAOI,8BAAA;IAAA,6BAAA;ELw7EV;EK/7EM;IAOI,yBAAA;IAAA,4BAAA;EL47EV;EKn8EM;IAOI,+BAAA;IAAA,kCAAA;ELg8EV;EKv8EM;IAOI,8BAAA;IAAA,iCAAA;ELo8EV;EK38EM;IAOI,4BAAA;IAAA,+BAAA;ELw8EV;EK/8EM;IAOI,8BAAA;IAAA,iCAAA;EL48EV;EKn9EM;IAOI,4BAAA;IAAA,+BAAA;ELg9EV;EKv9EM;IAOI,yBAAA;ELm9EV;EK19EM;IAOI,+BAAA;ELs9EV;EK79EM;IAOI,8BAAA;ELy9EV;EKh+EM;IAOI,4BAAA;EL49EV;EKn+EM;IAOI,8BAAA;EL+9EV;EKt+EM;IAOI,4BAAA;ELk+EV;EKz+EM;IAOI,2BAAA;ELq+EV;EK5+EM;IAOI,iCAAA;ELw+EV;EK/+EM;IAOI,gCAAA;EL2+EV;EKl/EM;IAOI,8BAAA;EL8+EV;EKr/EM;IAOI,gCAAA;ELi/EV;EKx/EM;IAOI,8BAAA;ELo/EV;EK3/EM;IAOI,4BAAA;ELu/EV;EK9/EM;IAOI,kCAAA;EL0/EV;EKjgFM;IAOI,iCAAA;EL6/EV;EKpgFM;IAOI,+BAAA;ELggFV;EKvgFM;IAOI,iCAAA;ELmgFV;EK1gFM;IAOI,+BAAA;ELsgFV;EK7gFM;IAOI,0BAAA;ELygFV;EKhhFM;IAOI,gCAAA;EL4gFV;EKnhFM;IAOI,+BAAA;EL+gFV;EKthFM;IAOI,6BAAA;ELkhFV;EKzhFM;IAOI,+BAAA;ELqhFV;EK5hFM;IAOI,6BAAA;ELwhFV;AACF;ACniFI;EIGI;IAOI,0BAAA;EL6hFV;EKpiFM;IAOI,gCAAA;ELgiFV;EKviFM;IAOI,yBAAA;ELmiFV;EK1iFM;IAOI,wBAAA;ELsiFV;EK7iFM;IAOI,+BAAA;ELyiFV;EKhjFM;IAOI,yBAAA;EL4iFV;EKnjFM;IAOI,6BAAA;EL+iFV;EKtjFM;IAOI,8BAAA;ELkjFV;EKzjFM;IAOI,wBAAA;ELqjFV;EK5jFM;IAOI,+BAAA;ELwjFV;EK/jFM;IAOI,wBAAA;EL2jFV;EKlkFM;IAOI,yBAAA;EL8jFV;EKrkFM;IAOI,8BAAA;ELikFV;EKxkFM;IAOI,iCAAA;ELokFV;EK3kFM;IAOI,sCAAA;ELukFV;EK9kFM;IAOI,yCAAA;EL0kFV;EKjlFM;IAOI,uBAAA;EL6kFV;EKplFM;IAOI,uBAAA;ELglFV;EKvlFM;IAOI,yBAAA;ELmlFV;EK1lFM;IAOI,yBAAA;ELslFV;EK7lFM;IAOI,0BAAA;ELylFV;EKhmFM;IAOI,4BAAA;EL4lFV;EKnmFM;IAOI,kCAAA;EL+lFV;EKtmFM;IAOI,sCAAA;ELkmFV;EKzmFM;IAOI,oCAAA;ELqmFV;EK5mFM;IAOI,kCAAA;ELwmFV;EK/mFM;IAOI,yCAAA;EL2mFV;EKlnFM;IAOI,wCAAA;EL8mFV;EKrnFM;IAOI,wCAAA;ELinFV;EKxnFM;IAOI,kCAAA;ELonFV;EK3nFM;IAOI,gCAAA;ELunFV;EK9nFM;IAOI,8BAAA;EL0nFV;EKjoFM;IAOI,gCAAA;EL6nFV;EKpoFM;IAOI,+BAAA;ELgoFV;EKvoFM;IAOI,oCAAA;ELmoFV;EK1oFM;IAOI,kCAAA;ELsoFV;EK7oFM;IAOI,gCAAA;ELyoFV;EKhpFM;IAOI,uCAAA;EL4oFV;EKnpFM;IAOI,sCAAA;EL+oFV;EKtpFM;IAOI,iCAAA;ELkpFV;EKzpFM;IAOI,2BAAA;ELqpFV;EK5pFM;IAOI,iCAAA;ELwpFV;EK/pFM;IAOI,+BAAA;EL2pFV;EKlqFM;IAOI,6BAAA;EL8pFV;EKrqFM;IAOI,+BAAA;ELiqFV;EKxqFM;IAOI,8BAAA;ELoqFV;EK3qFM;IAOI,oBAAA;ELuqFV;EK9qFM;IAOI,mBAAA;EL0qFV;EKjrFM;IAOI,mBAAA;EL6qFV;EKprFM;IAOI,mBAAA;ELgrFV;EKvrFM;IAOI,mBAAA;ELmrFV;EK1rFM;IAOI,mBAAA;ELsrFV;EK7rFM;IAOI,mBAAA;ELyrFV;EKhsFM;IAOI,mBAAA;EL4rFV;EKnsFM;IAOI,oBAAA;EL+rFV;EKtsFM;IAOI,0BAAA;ELksFV;EKzsFM;IAOI,yBAAA;ELqsFV;EK5sFM;IAOI,uBAAA;ELwsFV;EK/sFM;IAOI,yBAAA;EL2sFV;EKltFM;IAOI,uBAAA;EL8sFV;EKrtFM;IAOI,uBAAA;ELitFV;EKxtFM;IAOI,0BAAA;IAAA,yBAAA;ELqtFV;EK5tFM;IAOI,gCAAA;IAAA,+BAAA;ELytFV;EKhuFM;IAOI,+BAAA;IAAA,8BAAA;EL6tFV;EKpuFM;IAOI,6BAAA;IAAA,4BAAA;ELiuFV;EKxuFM;IAOI,+BAAA;IAAA,8BAAA;ELquFV;EK5uFM;IAOI,6BAAA;IAAA,4BAAA;ELyuFV;EKhvFM;IAOI,6BAAA;IAAA,4BAAA;EL6uFV;EKpvFM;IAOI,wBAAA;IAAA,2BAAA;ELivFV;EKxvFM;IAOI,8BAAA;IAAA,iCAAA;ELqvFV;EK5vFM;IAOI,6BAAA;IAAA,gCAAA;ELyvFV;EKhwFM;IAOI,2BAAA;IAAA,8BAAA;EL6vFV;EKpwFM;IAOI,6BAAA;IAAA,gCAAA;ELiwFV;EKxwFM;IAOI,2BAAA;IAAA,8BAAA;ELqwFV;EK5wFM;IAOI,2BAAA;IAAA,8BAAA;ELywFV;EKhxFM;IAOI,wBAAA;EL4wFV;EKnxFM;IAOI,8BAAA;EL+wFV;EKtxFM;IAOI,6BAAA;ELkxFV;EKzxFM;IAOI,2BAAA;ELqxFV;EK5xFM;IAOI,6BAAA;ELwxFV;EK/xFM;IAOI,2BAAA;EL2xFV;EKlyFM;IAOI,2BAAA;EL8xFV;EKryFM;IAOI,0BAAA;ELiyFV;EKxyFM;IAOI,gCAAA;ELoyFV;EK3yFM;IAOI,+BAAA;ELuyFV;EK9yFM;IAOI,6BAAA;EL0yFV;EKjzFM;IAOI,+BAAA;EL6yFV;EKpzFM;IAOI,6BAAA;ELgzFV;EKvzFM;IAOI,6BAAA;ELmzFV;EK1zFM;IAOI,2BAAA;ELszFV;EK7zFM;IAOI,iCAAA;ELyzFV;EKh0FM;IAOI,gCAAA;EL4zFV;EKn0FM;IAOI,8BAAA;EL+zFV;EKt0FM;IAOI,gCAAA;ELk0FV;EKz0FM;IAOI,8BAAA;ELq0FV;EK50FM;IAOI,8BAAA;ELw0FV;EK/0FM;IAOI,yBAAA;EL20FV;EKl1FM;IAOI,+BAAA;EL80FV;EKr1FM;IAOI,8BAAA;ELi1FV;EKx1FM;IAOI,4BAAA;ELo1FV;EK31FM;IAOI,8BAAA;ELu1FV;EK91FM;IAOI,4BAAA;EL01FV;EKj2FM;IAOI,4BAAA;EL61FV;EKp2FM;IAOI,qBAAA;ELg2FV;EKv2FM;IAOI,2BAAA;ELm2FV;EK12FM;IAOI,0BAAA;ELs2FV;EK72FM;IAOI,wBAAA;ELy2FV;EKh3FM;IAOI,0BAAA;EL42FV;EKn3FM;IAOI,wBAAA;EL+2FV;EKt3FM;IAOI,2BAAA;IAAA,0BAAA;ELm3FV;EK13FM;IAOI,iCAAA;IAAA,gCAAA;ELu3FV;EK93FM;IAOI,gCAAA;IAAA,+BAAA;EL23FV;EKl4FM;IAOI,8BAAA;IAAA,6BAAA;EL+3FV;EKt4FM;IAOI,gCAAA;IAAA,+BAAA;ELm4FV;EK14FM;IAOI,8BAAA;IAAA,6BAAA;ELu4FV;EK94FM;IAOI,yBAAA;IAAA,4BAAA;EL24FV;EKl5FM;IAOI,+BAAA;IAAA,kCAAA;EL+4FV;EKt5FM;IAOI,8BAAA;IAAA,iCAAA;ELm5FV;EK15FM;IAOI,4BAAA;IAAA,+BAAA;ELu5FV;EK95FM;IAOI,8BAAA;IAAA,iCAAA;EL25FV;EKl6FM;IAOI,4BAAA;IAAA,+BAAA;EL+5FV;EKt6FM;IAOI,yBAAA;ELk6FV;EKz6FM;IAOI,+BAAA;ELq6FV;EK56FM;IAOI,8BAAA;ELw6FV;EK/6FM;IAOI,4BAAA;EL26FV;EKl7FM;IAOI,8BAAA;EL86FV;EKr7FM;IAOI,4BAAA;ELi7FV;EKx7FM;IAOI,2BAAA;ELo7FV;EK37FM;IAOI,iCAAA;ELu7FV;EK97FM;IAOI,gCAAA;EL07FV;EKj8FM;IAOI,8BAAA;EL67FV;EKp8FM;IAOI,gCAAA;ELg8FV;EKv8FM;IAOI,8BAAA;ELm8FV;EK18FM;IAOI,4BAAA;ELs8FV;EK78FM;IAOI,kCAAA;ELy8FV;EKh9FM;IAOI,iCAAA;EL48FV;EKn9FM;IAOI,+BAAA;EL+8FV;EKt9FM;IAOI,iCAAA;ELk9FV;EKz9FM;IAOI,+BAAA;ELq9FV;EK59FM;IAOI,0BAAA;ELw9FV;EK/9FM;IAOI,gCAAA;EL29FV;EKl+FM;IAOI,+BAAA;EL89FV;EKr+FM;IAOI,6BAAA;ELi+FV;EKx+FM;IAOI,+BAAA;ELo+FV;EK3+FM;IAOI,6BAAA;ELu+FV;AACF;ACl/FI;EIGI;IAOI,0BAAA;EL4+FV;EKn/FM;IAOI,gCAAA;EL++FV;EKt/FM;IAOI,yBAAA;ELk/FV;EKz/FM;IAOI,wBAAA;ELq/FV;EK5/FM;IAOI,+BAAA;ELw/FV;EK//FM;IAOI,yBAAA;EL2/FV;EKlgGM;IAOI,6BAAA;EL8/FV;EKrgGM;IAOI,8BAAA;ELigGV;EKxgGM;IAOI,wBAAA;ELogGV;EK3gGM;IAOI,+BAAA;ELugGV;EK9gGM;IAOI,wBAAA;EL0gGV;EKjhGM;IAOI,yBAAA;EL6gGV;EKphGM;IAOI,8BAAA;ELghGV;EKvhGM;IAOI,iCAAA;ELmhGV;EK1hGM;IAOI,sCAAA;ELshGV;EK7hGM;IAOI,yCAAA;ELyhGV;EKhiGM;IAOI,uBAAA;EL4hGV;EKniGM;IAOI,uBAAA;EL+hGV;EKtiGM;IAOI,yBAAA;ELkiGV;EKziGM;IAOI,yBAAA;ELqiGV;EK5iGM;IAOI,0BAAA;ELwiGV;EK/iGM;IAOI,4BAAA;EL2iGV;EKljGM;IAOI,kCAAA;EL8iGV;EKrjGM;IAOI,sCAAA;ELijGV;EKxjGM;IAOI,oCAAA;ELojGV;EK3jGM;IAOI,kCAAA;ELujGV;EK9jGM;IAOI,yCAAA;EL0jGV;EKjkGM;IAOI,wCAAA;EL6jGV;EKpkGM;IAOI,wCAAA;ELgkGV;EKvkGM;IAOI,kCAAA;ELmkGV;EK1kGM;IAOI,gCAAA;ELskGV;EK7kGM;IAOI,8BAAA;ELykGV;EKhlGM;IAOI,gCAAA;EL4kGV;EKnlGM;IAOI,+BAAA;EL+kGV;EKtlGM;IAOI,oCAAA;ELklGV;EKzlGM;IAOI,kCAAA;ELqlGV;EK5lGM;IAOI,gCAAA;ELwlGV;EK/lGM;IAOI,uCAAA;EL2lGV;EKlmGM;IAOI,sCAAA;EL8lGV;EKrmGM;IAOI,iCAAA;ELimGV;EKxmGM;IAOI,2BAAA;ELomGV;EK3mGM;IAOI,iCAAA;ELumGV;EK9mGM;IAOI,+BAAA;EL0mGV;EKjnGM;IAOI,6BAAA;EL6mGV;EKpnGM;IAOI,+BAAA;ELgnGV;EKvnGM;IAOI,8BAAA;ELmnGV;EK1nGM;IAOI,oBAAA;ELsnGV;EK7nGM;IAOI,mBAAA;ELynGV;EKhoGM;IAOI,mBAAA;EL4nGV;EKnoGM;IAOI,mBAAA;EL+nGV;EKtoGM;IAOI,mBAAA;ELkoGV;EKzoGM;IAOI,mBAAA;ELqoGV;EK5oGM;IAOI,mBAAA;ELwoGV;EK/oGM;IAOI,mBAAA;EL2oGV;EKlpGM;IAOI,oBAAA;EL8oGV;EKrpGM;IAOI,0BAAA;ELipGV;EKxpGM;IAOI,yBAAA;ELopGV;EK3pGM;IAOI,uBAAA;ELupGV;EK9pGM;IAOI,yBAAA;EL0pGV;EKjqGM;IAOI,uBAAA;EL6pGV;EKpqGM;IAOI,uBAAA;ELgqGV;EKvqGM;IAOI,0BAAA;IAAA,yBAAA;ELoqGV;EK3qGM;IAOI,gCAAA;IAAA,+BAAA;ELwqGV;EK/qGM;IAOI,+BAAA;IAAA,8BAAA;EL4qGV;EKnrGM;IAOI,6BAAA;IAAA,4BAAA;ELgrGV;EKvrGM;IAOI,+BAAA;IAAA,8BAAA;ELorGV;EK3rGM;IAOI,6BAAA;IAAA,4BAAA;ELwrGV;EK/rGM;IAOI,6BAAA;IAAA,4BAAA;EL4rGV;EKnsGM;IAOI,wBAAA;IAAA,2BAAA;ELgsGV;EKvsGM;IAOI,8BAAA;IAAA,iCAAA;ELosGV;EK3sGM;IAOI,6BAAA;IAAA,gCAAA;ELwsGV;EK/sGM;IAOI,2BAAA;IAAA,8BAAA;EL4sGV;EKntGM;IAOI,6BAAA;IAAA,gCAAA;ELgtGV;EKvtGM;IAOI,2BAAA;IAAA,8BAAA;ELotGV;EK3tGM;IAOI,2BAAA;IAAA,8BAAA;ELwtGV;EK/tGM;IAOI,wBAAA;EL2tGV;EKluGM;IAOI,8BAAA;EL8tGV;EKruGM;IAOI,6BAAA;ELiuGV;EKxuGM;IAOI,2BAAA;ELouGV;EK3uGM;IAOI,6BAAA;ELuuGV;EK9uGM;IAOI,2BAAA;EL0uGV;EKjvGM;IAOI,2BAAA;EL6uGV;EKpvGM;IAOI,0BAAA;ELgvGV;EKvvGM;IAOI,gCAAA;ELmvGV;EK1vGM;IAOI,+BAAA;ELsvGV;EK7vGM;IAOI,6BAAA;ELyvGV;EKhwGM;IAOI,+BAAA;EL4vGV;EKnwGM;IAOI,6BAAA;EL+vGV;EKtwGM;IAOI,6BAAA;ELkwGV;EKzwGM;IAOI,2BAAA;ELqwGV;EK5wGM;IAOI,iCAAA;ELwwGV;EK/wGM;IAOI,gCAAA;EL2wGV;EKlxGM;IAOI,8BAAA;EL8wGV;EKrxGM;IAOI,gCAAA;ELixGV;EKxxGM;IAOI,8BAAA;ELoxGV;EK3xGM;IAOI,8BAAA;ELuxGV;EK9xGM;IAOI,yBAAA;EL0xGV;EKjyGM;IAOI,+BAAA;EL6xGV;EKpyGM;IAOI,8BAAA;ELgyGV;EKvyGM;IAOI,4BAAA;ELmyGV;EK1yGM;IAOI,8BAAA;ELsyGV;EK7yGM;IAOI,4BAAA;ELyyGV;EKhzGM;IAOI,4BAAA;EL4yGV;EKnzGM;IAOI,qBAAA;EL+yGV;EKtzGM;IAOI,2BAAA;ELkzGV;EKzzGM;IAOI,0BAAA;ELqzGV;EK5zGM;IAOI,wBAAA;ELwzGV;EK/zGM;IAOI,0BAAA;EL2zGV;EKl0GM;IAOI,wBAAA;EL8zGV;EKr0GM;IAOI,2BAAA;IAAA,0BAAA;ELk0GV;EKz0GM;IAOI,iCAAA;IAAA,gCAAA;ELs0GV;EK70GM;IAOI,gCAAA;IAAA,+BAAA;EL00GV;EKj1GM;IAOI,8BAAA;IAAA,6BAAA;EL80GV;EKr1GM;IAOI,gCAAA;IAAA,+BAAA;ELk1GV;EKz1GM;IAOI,8BAAA;IAAA,6BAAA;ELs1GV;EK71GM;IAOI,yBAAA;IAAA,4BAAA;EL01GV;EKj2GM;IAOI,+BAAA;IAAA,kCAAA;EL81GV;EKr2GM;IAOI,8BAAA;IAAA,iCAAA;ELk2GV;EKz2GM;IAOI,4BAAA;IAAA,+BAAA;ELs2GV;EK72GM;IAOI,8BAAA;IAAA,iCAAA;EL02GV;EKj3GM;IAOI,4BAAA;IAAA,+BAAA;EL82GV;EKr3GM;IAOI,yBAAA;ELi3GV;EKx3GM;IAOI,+BAAA;ELo3GV;EK33GM;IAOI,8BAAA;ELu3GV;EK93GM;IAOI,4BAAA;EL03GV;EKj4GM;IAOI,8BAAA;EL63GV;EKp4GM;IAOI,4BAAA;ELg4GV;EKv4GM;IAOI,2BAAA;ELm4GV;EK14GM;IAOI,iCAAA;ELs4GV;EK74GM;IAOI,gCAAA;ELy4GV;EKh5GM;IAOI,8BAAA;EL44GV;EKn5GM;IAOI,gCAAA;EL+4GV;EKt5GM;IAOI,8BAAA;ELk5GV;EKz5GM;IAOI,4BAAA;ELq5GV;EK55GM;IAOI,kCAAA;ELw5GV;EK/5GM;IAOI,iCAAA;EL25GV;EKl6GM;IAOI,+BAAA;EL85GV;EKr6GM;IAOI,iCAAA;ELi6GV;EKx6GM;IAOI,+BAAA;ELo6GV;EK36GM;IAOI,0BAAA;ELu6GV;EK96GM;IAOI,gCAAA;EL06GV;EKj7GM;IAOI,+BAAA;EL66GV;EKp7GM;IAOI,6BAAA;ELg7GV;EKv7GM;IAOI,+BAAA;ELm7GV;EK17GM;IAOI,6BAAA;ELs7GV;AACF;ACj8GI;EIGI;IAOI,0BAAA;EL27GV;EKl8GM;IAOI,gCAAA;EL87GV;EKr8GM;IAOI,yBAAA;ELi8GV;EKx8GM;IAOI,wBAAA;ELo8GV;EK38GM;IAOI,+BAAA;ELu8GV;EK98GM;IAOI,yBAAA;EL08GV;EKj9GM;IAOI,6BAAA;EL68GV;EKp9GM;IAOI,8BAAA;ELg9GV;EKv9GM;IAOI,wBAAA;ELm9GV;EK19GM;IAOI,+BAAA;ELs9GV;EK79GM;IAOI,wBAAA;ELy9GV;EKh+GM;IAOI,yBAAA;EL49GV;EKn+GM;IAOI,8BAAA;EL+9GV;EKt+GM;IAOI,iCAAA;ELk+GV;EKz+GM;IAOI,sCAAA;ELq+GV;EK5+GM;IAOI,yCAAA;ELw+GV;EK/+GM;IAOI,uBAAA;EL2+GV;EKl/GM;IAOI,uBAAA;EL8+GV;EKr/GM;IAOI,yBAAA;ELi/GV;EKx/GM;IAOI,yBAAA;ELo/GV;EK3/GM;IAOI,0BAAA;ELu/GV;EK9/GM;IAOI,4BAAA;EL0/GV;EKjgHM;IAOI,kCAAA;EL6/GV;EKpgHM;IAOI,sCAAA;ELggHV;EKvgHM;IAOI,oCAAA;ELmgHV;EK1gHM;IAOI,kCAAA;ELsgHV;EK7gHM;IAOI,yCAAA;ELygHV;EKhhHM;IAOI,wCAAA;EL4gHV;EKnhHM;IAOI,wCAAA;EL+gHV;EKthHM;IAOI,kCAAA;ELkhHV;EKzhHM;IAOI,gCAAA;ELqhHV;EK5hHM;IAOI,8BAAA;ELwhHV;EK/hHM;IAOI,gCAAA;EL2hHV;EKliHM;IAOI,+BAAA;EL8hHV;EKriHM;IAOI,oCAAA;ELiiHV;EKxiHM;IAOI,kCAAA;ELoiHV;EK3iHM;IAOI,gCAAA;ELuiHV;EK9iHM;IAOI,uCAAA;EL0iHV;EKjjHM;IAOI,sCAAA;EL6iHV;EKpjHM;IAOI,iCAAA;ELgjHV;EKvjHM;IAOI,2BAAA;ELmjHV;EK1jHM;IAOI,iCAAA;ELsjHV;EK7jHM;IAOI,+BAAA;ELyjHV;EKhkHM;IAOI,6BAAA;EL4jHV;EKnkHM;IAOI,+BAAA;EL+jHV;EKtkHM;IAOI,8BAAA;ELkkHV;EKzkHM;IAOI,oBAAA;ELqkHV;EK5kHM;IAOI,mBAAA;ELwkHV;EK/kHM;IAOI,mBAAA;EL2kHV;EKllHM;IAOI,mBAAA;EL8kHV;EKrlHM;IAOI,mBAAA;ELilHV;EKxlHM;IAOI,mBAAA;ELolHV;EK3lHM;IAOI,mBAAA;ELulHV;EK9lHM;IAOI,mBAAA;EL0lHV;EKjmHM;IAOI,oBAAA;EL6lHV;EKpmHM;IAOI,0BAAA;ELgmHV;EKvmHM;IAOI,yBAAA;ELmmHV;EK1mHM;IAOI,uBAAA;ELsmHV;EK7mHM;IAOI,yBAAA;ELymHV;EKhnHM;IAOI,uBAAA;EL4mHV;EKnnHM;IAOI,uBAAA;EL+mHV;EKtnHM;IAOI,0BAAA;IAAA,yBAAA;ELmnHV;EK1nHM;IAOI,gCAAA;IAAA,+BAAA;ELunHV;EK9nHM;IAOI,+BAAA;IAAA,8BAAA;EL2nHV;EKloHM;IAOI,6BAAA;IAAA,4BAAA;EL+nHV;EKtoHM;IAOI,+BAAA;IAAA,8BAAA;ELmoHV;EK1oHM;IAOI,6BAAA;IAAA,4BAAA;ELuoHV;EK9oHM;IAOI,6BAAA;IAAA,4BAAA;EL2oHV;EKlpHM;IAOI,wBAAA;IAAA,2BAAA;EL+oHV;EKtpHM;IAOI,8BAAA;IAAA,iCAAA;ELmpHV;EK1pHM;IAOI,6BAAA;IAAA,gCAAA;ELupHV;EK9pHM;IAOI,2BAAA;IAAA,8BAAA;EL2pHV;EKlqHM;IAOI,6BAAA;IAAA,gCAAA;EL+pHV;EKtqHM;IAOI,2BAAA;IAAA,8BAAA;ELmqHV;EK1qHM;IAOI,2BAAA;IAAA,8BAAA;ELuqHV;EK9qHM;IAOI,wBAAA;EL0qHV;EKjrHM;IAOI,8BAAA;EL6qHV;EKprHM;IAOI,6BAAA;ELgrHV;EKvrHM;IAOI,2BAAA;ELmrHV;EK1rHM;IAOI,6BAAA;ELsrHV;EK7rHM;IAOI,2BAAA;ELyrHV;EKhsHM;IAOI,2BAAA;EL4rHV;EKnsHM;IAOI,0BAAA;EL+rHV;EKtsHM;IAOI,gCAAA;ELksHV;EKzsHM;IAOI,+BAAA;ELqsHV;EK5sHM;IAOI,6BAAA;ELwsHV;EK/sHM;IAOI,+BAAA;EL2sHV;EKltHM;IAOI,6BAAA;EL8sHV;EKrtHM;IAOI,6BAAA;ELitHV;EKxtHM;IAOI,2BAAA;ELotHV;EK3tHM;IAOI,iCAAA;ELutHV;EK9tHM;IAOI,gCAAA;EL0tHV;EKjuHM;IAOI,8BAAA;EL6tHV;EKpuHM;IAOI,gCAAA;ELguHV;EKvuHM;IAOI,8BAAA;ELmuHV;EK1uHM;IAOI,8BAAA;ELsuHV;EK7uHM;IAOI,yBAAA;ELyuHV;EKhvHM;IAOI,+BAAA;EL4uHV;EKnvHM;IAOI,8BAAA;EL+uHV;EKtvHM;IAOI,4BAAA;ELkvHV;EKzvHM;IAOI,8BAAA;ELqvHV;EK5vHM;IAOI,4BAAA;ELwvHV;EK/vHM;IAOI,4BAAA;EL2vHV;EKlwHM;IAOI,qBAAA;EL8vHV;EKrwHM;IAOI,2BAAA;ELiwHV;EKxwHM;IAOI,0BAAA;ELowHV;EK3wHM;IAOI,wBAAA;ELuwHV;EK9wHM;IAOI,0BAAA;EL0wHV;EKjxHM;IAOI,wBAAA;EL6wHV;EKpxHM;IAOI,2BAAA;IAAA,0BAAA;ELixHV;EKxxHM;IAOI,iCAAA;IAAA,gCAAA;ELqxHV;EK5xHM;IAOI,gCAAA;IAAA,+BAAA;ELyxHV;EKhyHM;IAOI,8BAAA;IAAA,6BAAA;EL6xHV;EKpyHM;IAOI,gCAAA;IAAA,+BAAA;ELiyHV;EKxyHM;IAOI,8BAAA;IAAA,6BAAA;ELqyHV;EK5yHM;IAOI,yBAAA;IAAA,4BAAA;ELyyHV;EKhzHM;IAOI,+BAAA;IAAA,kCAAA;EL6yHV;EKpzHM;IAOI,8BAAA;IAAA,iCAAA;ELizHV;EKxzHM;IAOI,4BAAA;IAAA,+BAAA;ELqzHV;EK5zHM;IAOI,8BAAA;IAAA,iCAAA;ELyzHV;EKh0HM;IAOI,4BAAA;IAAA,+BAAA;EL6zHV;EKp0HM;IAOI,yBAAA;ELg0HV;EKv0HM;IAOI,+BAAA;ELm0HV;EK10HM;IAOI,8BAAA;ELs0HV;EK70HM;IAOI,4BAAA;ELy0HV;EKh1HM;IAOI,8BAAA;EL40HV;EKn1HM;IAOI,4BAAA;EL+0HV;EKt1HM;IAOI,2BAAA;ELk1HV;EKz1HM;IAOI,iCAAA;ELq1HV;EK51HM;IAOI,gCAAA;ELw1HV;EK/1HM;IAOI,8BAAA;EL21HV;EKl2HM;IAOI,gCAAA;EL81HV;EKr2HM;IAOI,8BAAA;ELi2HV;EKx2HM;IAOI,4BAAA;ELo2HV;EK32HM;IAOI,kCAAA;ELu2HV;EK92HM;IAOI,iCAAA;EL02HV;EKj3HM;IAOI,+BAAA;EL62HV;EKp3HM;IAOI,iCAAA;ELg3HV;EKv3HM;IAOI,+BAAA;ELm3HV;EK13HM;IAOI,0BAAA;ELs3HV;EK73HM;IAOI,gCAAA;ELy3HV;EKh4HM;IAOI,+BAAA;EL43HV;EKn4HM;IAOI,6BAAA;EL+3HV;EKt4HM;IAOI,+BAAA;ELk4HV;EKz4HM;IAOI,6BAAA;ELq4HV;AACF;AMz6HA;ED4BQ;IAOI,0BAAA;EL04HV;EKj5HM;IAOI,gCAAA;EL64HV;EKp5HM;IAOI,yBAAA;ELg5HV;EKv5HM;IAOI,wBAAA;ELm5HV;EK15HM;IAOI,+BAAA;ELs5HV;EK75HM;IAOI,yBAAA;ELy5HV;EKh6HM;IAOI,6BAAA;EL45HV;EKn6HM;IAOI,8BAAA;EL+5HV;EKt6HM;IAOI,wBAAA;ELk6HV;EKz6HM;IAOI,+BAAA;ELq6HV;EK56HM;IAOI,wBAAA;ELw6HV;AACF","file":"bootstrap-grid.css","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","/*!\n * Bootstrap Grid v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue: #0d6efd !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #d63384 !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #198754 !default;\n$teal: #20c997 !default;\n$cyan: #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"black\": $black,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio: 4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark: $black !default;\n$color-contrast-light: $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n \"blue-100\": $blue-100,\n \"blue-200\": $blue-200,\n \"blue-300\": $blue-300,\n \"blue-400\": $blue-400,\n \"blue-500\": $blue-500,\n \"blue-600\": $blue-600,\n \"blue-700\": $blue-700,\n \"blue-800\": $blue-800,\n \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n \"indigo-100\": $indigo-100,\n \"indigo-200\": $indigo-200,\n \"indigo-300\": $indigo-300,\n \"indigo-400\": $indigo-400,\n \"indigo-500\": $indigo-500,\n \"indigo-600\": $indigo-600,\n \"indigo-700\": $indigo-700,\n \"indigo-800\": $indigo-800,\n \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n \"purple-100\": $purple-100,\n \"purple-200\": $purple-200,\n \"purple-300\": $purple-300,\n \"purple-400\": $purple-400,\n \"purple-500\": $purple-500,\n \"purple-600\": $purple-600,\n \"purple-700\": $purple-700,\n \"purple-800\": $purple-800,\n \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n \"pink-100\": $pink-100,\n \"pink-200\": $pink-200,\n \"pink-300\": $pink-300,\n \"pink-400\": $pink-400,\n \"pink-500\": $pink-500,\n \"pink-600\": $pink-600,\n \"pink-700\": $pink-700,\n \"pink-800\": $pink-800,\n \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n \"red-100\": $red-100,\n \"red-200\": $red-200,\n \"red-300\": $red-300,\n \"red-400\": $red-400,\n \"red-500\": $red-500,\n \"red-600\": $red-600,\n \"red-700\": $red-700,\n \"red-800\": $red-800,\n \"red-900\": $red-900\n) !default;\n\n$oranges: (\n \"orange-100\": $orange-100,\n \"orange-200\": $orange-200,\n \"orange-300\": $orange-300,\n \"orange-400\": $orange-400,\n \"orange-500\": $orange-500,\n \"orange-600\": $orange-600,\n \"orange-700\": $orange-700,\n \"orange-800\": $orange-800,\n \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n \"yellow-100\": $yellow-100,\n \"yellow-200\": $yellow-200,\n \"yellow-300\": $yellow-300,\n \"yellow-400\": $yellow-400,\n \"yellow-500\": $yellow-500,\n \"yellow-600\": $yellow-600,\n \"yellow-700\": $yellow-700,\n \"yellow-800\": $yellow-800,\n \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n \"green-100\": $green-100,\n \"green-200\": $green-200,\n \"green-300\": $green-300,\n \"green-400\": $green-400,\n \"green-500\": $green-500,\n \"green-600\": $green-600,\n \"green-700\": $green-700,\n \"green-800\": $green-800,\n \"green-900\": $green-900\n) !default;\n\n$teals: (\n \"teal-100\": $teal-100,\n \"teal-200\": $teal-200,\n \"teal-300\": $teal-300,\n \"teal-400\": $teal-400,\n \"teal-500\": $teal-500,\n \"teal-600\": $teal-600,\n \"teal-700\": $teal-700,\n \"teal-800\": $teal-800,\n \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n \"cyan-100\": $cyan-100,\n \"cyan-200\": $cyan-200,\n \"cyan-300\": $cyan-300,\n \"cyan-400\": $cyan-400,\n \"cyan-500\": $cyan-500,\n \"cyan-600\": $cyan-600,\n \"cyan-700\": $cyan-700,\n \"cyan-800\": $cyan-800,\n \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// scss-docs-start theme-color-variables\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// scss-docs-start theme-text-variables\n$primary-text-emphasis: shade-color($primary, 60%) !default;\n$secondary-text-emphasis: shade-color($secondary, 60%) !default;\n$success-text-emphasis: shade-color($success, 60%) !default;\n$info-text-emphasis: shade-color($info, 60%) !default;\n$warning-text-emphasis: shade-color($warning, 60%) !default;\n$danger-text-emphasis: shade-color($danger, 60%) !default;\n$light-text-emphasis: $gray-700 !default;\n$dark-text-emphasis: $gray-700 !default;\n// scss-docs-end theme-text-variables\n\n// scss-docs-start theme-bg-subtle-variables\n$primary-bg-subtle: tint-color($primary, 80%) !default;\n$secondary-bg-subtle: tint-color($secondary, 80%) !default;\n$success-bg-subtle: tint-color($success, 80%) !default;\n$info-bg-subtle: tint-color($info, 80%) !default;\n$warning-bg-subtle: tint-color($warning, 80%) !default;\n$danger-bg-subtle: tint-color($danger, 80%) !default;\n$light-bg-subtle: mix($gray-100, $white) !default;\n$dark-bg-subtle: $gray-400 !default;\n// scss-docs-end theme-bg-subtle-variables\n\n// scss-docs-start theme-border-subtle-variables\n$primary-border-subtle: tint-color($primary, 60%) !default;\n$secondary-border-subtle: tint-color($secondary, 60%) !default;\n$success-border-subtle: tint-color($success, 60%) !default;\n$info-border-subtle: tint-color($info, 60%) !default;\n$warning-border-subtle: tint-color($warning, 60%) !default;\n$danger-border-subtle: tint-color($danger, 60%) !default;\n$light-border-subtle: $gray-200 !default;\n$dark-border-subtle: $gray-500 !default;\n// scss-docs-end theme-border-subtle-variables\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n (\"<\", \"%3c\"),\n (\">\", \"%3e\"),\n (\"#\", \"%23\"),\n (\"(\", \"%28\"),\n (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-reduced-motion: true !default;\n$enable-smooth-scroll: true !default;\n$enable-grid-classes: true !default;\n$enable-container-classes: true !default;\n$enable-cssgrid: false !default;\n$enable-button-pointers: true !default;\n$enable-rfs: true !default;\n$enable-validation-icons: true !default;\n$enable-negative-margins: false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities: true !default;\n\n$enable-dark-mode: true !default;\n$color-mode-type: data !default; // `data` or `media-query`\n\n// Prefix for :root CSS variables\n\n$variable-prefix: bs- !default; // Deprecated in v5.2.0 for the shorter `$prefix`\n$prefix: $variable-prefix !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: $spacer * .25,\n 2: $spacer * .5,\n 3: $spacer,\n 4: $spacer * 1.5,\n 5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n 0: 0,\n 50: 50%,\n 100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `` element.\n\n$body-text-align: null !default;\n$body-color: $gray-900 !default;\n$body-bg: $white !default;\n\n$body-secondary-color: rgba($body-color, .75) !default;\n$body-secondary-bg: $gray-200 !default;\n\n$body-tertiary-color: rgba($body-color, .5) !default;\n$body-tertiary-bg: $gray-100 !default;\n\n$body-emphasis-color: $black !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: $primary !default;\n$link-decoration: underline !default;\n$link-shade-percentage: 20% !default;\n$link-hover-color: shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration: null !default;\n\n$stretched-link-pseudo-element: after !default;\n$stretched-link-z-index: 1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap: .375rem !default;\n$icon-link-underline-offset: .25em !default;\n$icon-link-icon-size: 1em !default;\n$icon-link-icon-transition: .2s ease-in-out transform !default;\n$icon-link-icon-transform: translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px,\n xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px,\n xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 1.5rem !default;\n$grid-row-columns: 6 !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width: 1px !default;\n$border-widths: (\n 1: 1px,\n 2: 2px,\n 3: 3px,\n 4: 4px,\n 5: 5px\n) !default;\n$border-style: solid !default;\n$border-color: $gray-300 !default;\n$border-color-translucent: rgba($black, .175) !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius: .375rem !default;\n$border-radius-sm: .25rem !default;\n$border-radius-lg: .5rem !default;\n$border-radius-xl: 1rem !default;\n$border-radius-xxl: 2rem !default;\n$border-radius-pill: 50rem !default;\n// scss-docs-end border-radius-variables\n// fusv-disable\n$border-radius-2xl: $border-radius-xxl !default; // Deprecated in v5.3.0\n// fusv-enable\n\n// scss-docs-start box-shadow-variables\n$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset: inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color: $white !default;\n$component-active-bg: $primary !default;\n\n// scss-docs-start focus-ring-variables\n$focus-ring-width: .25rem !default;\n$focus-ring-opacity: .25 !default;\n$focus-ring-color: rgba($primary, $focus-ring-opacity) !default;\n$focus-ring-blur: 0 !default;\n$focus-ring-box-shadow: 0 0 $focus-ring-blur $focus-ring-width $focus-ring-color !default;\n// scss-docs-end focus-ring-variables\n\n// scss-docs-start caret-variables\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse: height .35s ease !default;\n$transition-collapse-width: width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n \"1x1\": 100%,\n \"4x3\": calc(3 / 4 * 100%),\n \"16x9\": calc(9 / 16 * 100%),\n \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base: var(--#{$prefix}font-sans-serif) !default;\n$font-family-code: var(--#{$prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root: null !default;\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm: $font-size-base * .875 !default;\n$font-size-lg: $font-size-base * 1.25 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-medium: 500 !default;\n$font-weight-semibold: 600 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n\n$line-height-base: 1.5 !default;\n$line-height-sm: 1.25 !default;\n$line-height-lg: 2 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n 1: $h1-font-size,\n 2: $h2-font-size,\n 3: $h3-font-size,\n 4: $h4-font-size,\n 5: $h5-font-size,\n 6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom: $spacer * .5 !default;\n$headings-font-family: null !default;\n$headings-font-style: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n 1: 5rem,\n 2: 4.5rem,\n 3: 4rem,\n 4: 3.5rem,\n 5: 3rem,\n 6: 2.5rem\n) !default;\n\n$display-font-family: null !default;\n$display-font-style: null !default;\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: .875em !default;\n\n$sub-sup-font-size: .75em !default;\n\n// fusv-disable\n$text-muted: var(--#{$prefix}secondary-color) !default; // Deprecated in 5.3.0\n// fusv-enable\n\n$initialism-font-size: $small-font-size !default;\n\n$blockquote-margin-y: $spacer !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n$blockquote-footer-color: $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y: $spacer !default;\n$hr-color: inherit !default;\n\n// fusv-disable\n$hr-bg-color: null !default; // Deprecated in v5.2.0\n$hr-height: null !default; // Deprecated in v5.2.0\n// fusv-enable\n\n$hr-border-color: null !default; // Allows for inherited colors\n$hr-border-width: var(--#{$prefix}border-width) !default;\n$hr-opacity: .25 !default;\n\n// scss-docs-start vr-variables\n$vr-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end vr-variables\n\n$legend-margin-bottom: .5rem !default;\n$legend-font-size: 1.5rem !default;\n$legend-font-weight: null !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-padding: .1875em !default;\n$mark-color: $body-color !default;\n$mark-bg: $yellow-100 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y: .5rem !default;\n$table-cell-padding-x: .5rem !default;\n$table-cell-padding-y-sm: .25rem !default;\n$table-cell-padding-x-sm: .25rem !default;\n\n$table-cell-vertical-align: top !default;\n\n$table-color: var(--#{$prefix}emphasis-color) !default;\n$table-bg: var(--#{$prefix}body-bg) !default;\n$table-accent-bg: transparent !default;\n\n$table-th-font-weight: null !default;\n\n$table-striped-color: $table-color !default;\n$table-striped-bg-factor: .05 !default;\n$table-striped-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-striped-bg-factor) !default;\n\n$table-active-color: $table-color !default;\n$table-active-bg-factor: .1 !default;\n$table-active-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-active-bg-factor) !default;\n\n$table-hover-color: $table-color !default;\n$table-hover-bg-factor: .075 !default;\n$table-hover-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-hover-bg-factor) !default;\n\n$table-border-factor: .2 !default;\n$table-border-width: var(--#{$prefix}border-width) !default;\n$table-border-color: var(--#{$prefix}border-color) !default;\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n$table-group-separator-color: currentcolor !default;\n\n$table-caption-color: var(--#{$prefix}secondary-color) !default;\n\n$table-bg-scale: -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n \"primary\": shift-color($primary, $table-bg-scale),\n \"secondary\": shift-color($secondary, $table-bg-scale),\n \"success\": shift-color($success, $table-bg-scale),\n \"info\": shift-color($info, $table-bg-scale),\n \"warning\": shift-color($warning, $table-bg-scale),\n \"danger\": shift-color($danger, $table-bg-scale),\n \"light\": $light,\n \"dark\": $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: $focus-ring-width !default;\n$input-btn-focus-color-opacity: $focus-ring-opacity !default;\n$input-btn-focus-color: $focus-ring-color !default;\n$input-btn-focus-blur: $focus-ring-blur !default;\n$input-btn-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n\n$input-btn-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-color: var(--#{$prefix}body-color) !default;\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color: var(--#{$prefix}link-color) !default;\n$btn-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$btn-link-disabled-color: $gray-600 !default;\n$btn-link-focus-shadow-rgb: to-rgb(mix(color-contrast($link-color), $link-color, 15%)) !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: var(--#{$prefix}border-radius) !default;\n$btn-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$btn-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount: 15% !default;\n$btn-hover-bg-tint-amount: 15% !default;\n$btn-hover-border-shade-amount: 20% !default;\n$btn-hover-border-tint-amount: 10% !default;\n$btn-active-bg-shade-amount: 20% !default;\n$btn-active-bg-tint-amount: 20% !default;\n$btn-active-border-shade-amount: 25% !default;\n$btn-active-border-tint-amount: 10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top: .25rem !default;\n$form-text-font-size: $small-font-size !default;\n$form-text-font-style: null !default;\n$form-text-font-weight: null !default;\n$form-text-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom: .5rem !default;\n$form-label-font-size: null !default;\n$form-label-font-style: null !default;\n$form-label-font-weight: null !default;\n$form-label-color: null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n\n$input-bg: var(--#{$prefix}body-bg) !default;\n$input-disabled-color: null !default;\n$input-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$input-disabled-border-color: null !default;\n\n$input-color: var(--#{$prefix}body-color) !default;\n$input-border-color: var(--#{$prefix}border-color) !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$input-border-radius: var(--#{$prefix}border-radius) !default;\n$input-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$input-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: tint-color($component-active-bg, 50%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: var(--#{$prefix}secondary-color) !default;\n$input-plaintext-color: var(--#{$prefix}body-color) !default;\n\n$input-height-border: calc(#{$input-border-width} * 2) !default; // stylelint-disable-line function-disallowed-list\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width: 3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width: 1em !default;\n$form-check-min-height: $font-size-base * $line-height-base !default;\n$form-check-padding-start: $form-check-input-width + .5em !default;\n$form-check-margin-bottom: .125rem !default;\n$form-check-label-color: null !default;\n$form-check-label-cursor: null !default;\n$form-check-transition: null !default;\n\n$form-check-input-active-filter: brightness(90%) !default;\n\n$form-check-input-bg: $input-bg !default;\n$form-check-input-border: var(--#{$prefix}border-width) solid var(--#{$prefix}border-color) !default;\n$form-check-input-border-radius: .25em !default;\n$form-check-radio-border-radius: 50% !default;\n$form-check-input-focus-border: $input-focus-border-color !default;\n$form-check-input-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$form-check-input-checked-color: $component-active-color !default;\n$form-check-input-checked-bg-color: $component-active-bg !default;\n$form-check-input-checked-border-color: $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-check-radio-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-indeterminate-color: $component-active-color !default;\n$form-check-input-indeterminate-bg-color: $component-active-bg !default;\n$form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-disabled-opacity: .5 !default;\n$form-check-label-disabled-opacity: $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity: $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end: 1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color: rgba($black, .25) !default;\n$form-switch-width: 2em !default;\n$form-switch-padding-start: $form-switch-width + .5em !default;\n$form-switch-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-border-radius: $form-switch-width !default;\n$form-switch-transition: background-position .15s ease-in-out !default;\n\n$form-switch-focus-color: $input-focus-border-color !default;\n$form-switch-focus-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-switch-checked-color: $component-active-color !default;\n$form-switch-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y: $input-padding-y !default;\n$input-group-addon-padding-x: $input-padding-x !default;\n$input-group-addon-font-weight: $input-font-weight !default;\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: var(--#{$prefix}tertiary-bg) !default;\n$input-group-addon-border-color: $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y: $input-padding-y !default;\n$form-select-padding-x: $input-padding-x !default;\n$form-select-font-family: $input-font-family !default;\n$form-select-font-size: $input-font-size !default;\n$form-select-indicator-padding: $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight: $input-font-weight !default;\n$form-select-line-height: $input-line-height !default;\n$form-select-color: $input-color !default;\n$form-select-bg: $input-bg !default;\n$form-select-disabled-color: null !default;\n$form-select-disabled-bg: $input-disabled-bg !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position: right $form-select-padding-x center !default;\n$form-select-bg-size: 16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color: $gray-800 !default;\n$form-select-indicator: url(\"data:image/svg+xml,\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position: center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width: $input-border-width !default;\n$form-select-border-color: $input-border-color !default;\n$form-select-border-radius: $input-border-radius !default;\n$form-select-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$form-select-focus-border-color: $input-focus-border-color !default;\n$form-select-focus-width: $input-focus-width !default;\n$form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm: $input-padding-y-sm !default;\n$form-select-padding-x-sm: $input-padding-x-sm !default;\n$form-select-font-size-sm: $input-font-size-sm !default;\n$form-select-border-radius-sm: $input-border-radius-sm !default;\n\n$form-select-padding-y-lg: $input-padding-y-lg !default;\n$form-select-padding-x-lg: $input-padding-x-lg !default;\n$form-select-font-size-lg: $input-font-size-lg !default;\n$form-select-border-radius-lg: $input-border-radius-lg !default;\n\n$form-select-transition: $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width: 100% !default;\n$form-range-track-height: .5rem !default;\n$form-range-track-cursor: pointer !default;\n$form-range-track-bg: var(--#{$prefix}secondary-bg) !default;\n$form-range-track-border-radius: 1rem !default;\n$form-range-track-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$form-range-thumb-width: 1rem !default;\n$form-range-thumb-height: $form-range-thumb-width !default;\n$form-range-thumb-bg: $component-active-bg !default;\n$form-range-thumb-border: 0 !default;\n$form-range-thumb-border-radius: 1rem !default;\n$form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg: var(--#{$prefix}secondary-color) !default;\n$form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color: $input-color !default;\n$form-file-button-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-file-button-hover-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height: add(3.5rem, $input-height-border) !default;\n$form-floating-line-height: 1.25 !default;\n$form-floating-padding-x: $input-padding-x !default;\n$form-floating-padding-y: 1rem !default;\n$form-floating-input-padding-t: 1.625rem !default;\n$form-floating-input-padding-b: .625rem !default;\n$form-floating-label-height: 1.5em !default;\n$form-floating-label-opacity: .65 !default;\n$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-label-disabled-color: $gray-600 !default;\n$form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $form-text-font-size !default;\n$form-feedback-font-style: $form-text-font-style !default;\n$form-feedback-valid-color: $success !default;\n$form-feedback-invalid-color: $danger !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url(\"data:image/svg+xml,\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-colors\n$form-valid-color: $form-feedback-valid-color !default;\n$form-valid-border-color: $form-feedback-valid-color !default;\n$form-invalid-color: $form-feedback-invalid-color !default;\n$form-invalid-border-color: $form-feedback-invalid-color !default;\n// scss-docs-end form-validation-colors\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n \"valid\": (\n \"color\": var(--#{$prefix}form-valid-color),\n \"icon\": $form-feedback-icon-valid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}success),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}success-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-valid-border-color),\n ),\n \"invalid\": (\n \"color\": var(--#{$prefix}form-invalid-color),\n \"icon\": $form-feedback-icon-invalid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}danger),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}danger-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-invalid-border-color),\n )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-offcanvas-backdrop: 1040 !default;\n$zindex-offcanvas: 1045 !default;\n$zindex-modal-backdrop: 1050 !default;\n$zindex-modal: 1055 !default;\n$zindex-popover: 1070 !default;\n$zindex-tooltip: 1080 !default;\n$zindex-toast: 1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n n1: -1,\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-font-size: null !default;\n$nav-link-font-weight: null !default;\n$nav-link-color: var(--#{$prefix}link-color) !default;\n$nav-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color: var(--#{$prefix}secondary-color) !default;\n$nav-link-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$nav-tabs-border-color: var(--#{$prefix}border-color) !default;\n$nav-tabs-border-width: var(--#{$prefix}border-width) !default;\n$nav-tabs-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-tabs-link-hover-border-color: var(--#{$prefix}secondary-bg) var(--#{$prefix}secondary-bg) $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: var(--#{$prefix}emphasis-color) !default;\n$nav-tabs-link-active-bg: var(--#{$prefix}body-bg) !default;\n$nav-tabs-link-active-border-color: var(--#{$prefix}border-color) var(--#{$prefix}border-color) $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n$nav-underline-gap: 1rem !default;\n$nav-underline-border-width: .125rem !default;\n$nav-underline-link-active-color: var(--#{$prefix}emphasis-color) !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y: $spacer * .5 !default;\n$navbar-padding-x: null !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end: 1rem !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n$navbar-toggler-focus-width: $btn-focus-width !default;\n$navbar-toggler-transition: box-shadow .15s ease-in-out !default;\n\n$navbar-light-color: rgba(var(--#{$prefix}emphasis-color-rgb), .65) !default;\n$navbar-light-hover-color: rgba(var(--#{$prefix}emphasis-color-rgb), .8) !default;\n$navbar-light-active-color: rgba(var(--#{$prefix}emphasis-color-rgb), 1) !default;\n$navbar-light-disabled-color: rgba(var(--#{$prefix}emphasis-color-rgb), .3) !default;\n$navbar-light-icon-color: rgba($body-color, .75) !default;\n$navbar-light-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-light-toggler-border-color: rgba(var(--#{$prefix}emphasis-color-rgb), .15) !default;\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-dark-variables\n$navbar-dark-color: rgba($white, .55) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-icon-color: $navbar-dark-color !default;\n$navbar-dark-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n// scss-docs-end navbar-dark-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-x: 0 !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: var(--#{$prefix}body-color) !default;\n$dropdown-bg: var(--#{$prefix}body-bg) !default;\n$dropdown-border-color: var(--#{$prefix}border-color-translucent) !default;\n$dropdown-border-radius: var(--#{$prefix}border-radius) !default;\n$dropdown-border-width: var(--#{$prefix}border-width) !default;\n$dropdown-inner-border-radius: calc(#{$dropdown-border-radius} - #{$dropdown-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$dropdown-divider-bg: $dropdown-border-color !default;\n$dropdown-divider-margin-y: $spacer * .5 !default;\n$dropdown-box-shadow: var(--#{$prefix}box-shadow) !default;\n\n$dropdown-link-color: var(--#{$prefix}body-color) !default;\n$dropdown-link-hover-color: $dropdown-link-color !default;\n$dropdown-link-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: var(--#{$prefix}tertiary-color) !default;\n\n$dropdown-item-padding-y: $spacer * .25 !default;\n$dropdown-item-padding-x: $spacer !default;\n\n$dropdown-header-color: $gray-600 !default;\n$dropdown-header-padding-x: $dropdown-item-padding-x !default;\n$dropdown-header-padding-y: $dropdown-padding-y !default;\n// fusv-disable\n$dropdown-header-padding: $dropdown-header-padding-y $dropdown-header-padding-x !default; // Deprecated in v5.2.0\n// fusv-enable\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color: $gray-300 !default;\n$dropdown-dark-bg: $gray-800 !default;\n$dropdown-dark-border-color: $dropdown-border-color !default;\n$dropdown-dark-divider-bg: $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow: null !default;\n$dropdown-dark-link-color: $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color: $white !default;\n$dropdown-dark-link-hover-bg: rgba($white, .15) !default;\n$dropdown-dark-link-active-color: $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg: $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color: $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y: .375rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n\n$pagination-font-size: $font-size-base !default;\n\n$pagination-color: var(--#{$prefix}link-color) !default;\n$pagination-bg: var(--#{$prefix}body-bg) !default;\n$pagination-border-radius: var(--#{$prefix}border-radius) !default;\n$pagination-border-width: var(--#{$prefix}border-width) !default;\n$pagination-margin-start: calc(#{$pagination-border-width} * -1) !default; // stylelint-disable-line function-disallowed-list\n$pagination-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-focus-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-focus-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-focus-box-shadow: $focus-ring-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$pagination-hover-border-color: var(--#{$prefix}border-color) !default; // Todo in v6: remove this?\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $component-active-bg !default;\n\n$pagination-disabled-color: var(--#{$prefix}secondary-color) !default;\n$pagination-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-disabled-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$pagination-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max: .5 !default;\n$placeholder-opacity-min: .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y: $spacer !default;\n$card-spacer-x: $spacer !default;\n$card-title-spacer-y: $spacer * .5 !default;\n$card-title-color: null !default;\n$card-subtitle-color: null !default;\n$card-border-width: var(--#{$prefix}border-width) !default;\n$card-border-color: var(--#{$prefix}border-color-translucent) !default;\n$card-border-radius: var(--#{$prefix}border-radius) !default;\n$card-box-shadow: null !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y: $card-spacer-y * .5 !default;\n$card-cap-padding-x: $card-spacer-x !default;\n$card-cap-bg: rgba(var(--#{$prefix}body-color-rgb), .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: var(--#{$prefix}body-bg) !default;\n$card-img-overlay-padding: $spacer !default;\n$card-group-margin: $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y: 1rem !default;\n$accordion-padding-x: 1.25rem !default;\n$accordion-color: var(--#{$prefix}body-color) !default;\n$accordion-bg: var(--#{$prefix}body-bg) !default;\n$accordion-border-width: var(--#{$prefix}border-width) !default;\n$accordion-border-color: var(--#{$prefix}border-color) !default;\n$accordion-border-radius: var(--#{$prefix}border-radius) !default;\n$accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y: $accordion-padding-y !default;\n$accordion-body-padding-x: $accordion-padding-x !default;\n\n$accordion-button-padding-y: $accordion-padding-y !default;\n$accordion-button-padding-x: $accordion-padding-x !default;\n$accordion-button-color: var(--#{$prefix}body-color) !default;\n$accordion-button-bg: var(--#{$prefix}accordion-bg) !default;\n$accordion-transition: $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg: var(--#{$prefix}primary-bg-subtle) !default;\n$accordion-button-active-color: var(--#{$prefix}primary-text-emphasis) !default;\n\n// fusv-disable\n$accordion-button-focus-border-color: $input-focus-border-color !default; // Deprecated in v5.3.3\n// fusv-enable\n$accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;\n\n$accordion-icon-width: 1.25rem !default;\n$accordion-icon-color: $body-color !default;\n$accordion-icon-active-color: $primary-text-emphasis !default;\n$accordion-icon-transition: transform .2s ease-in-out !default;\n$accordion-icon-transform: rotate(-180deg) !default;\n\n$accordion-button-icon: url(\"data:image/svg+xml,\") !default;\n$accordion-button-active-icon: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: var(--#{$prefix}body-bg) !default;\n$tooltip-bg: var(--#{$prefix}emphasis-color) !default;\n$tooltip-border-radius: var(--#{$prefix}border-radius) !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: $spacer * .25 !default;\n$tooltip-padding-x: $spacer * .5 !default;\n$tooltip-margin: null !default; // TODO: remove this in v6\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n// fusv-disable\n$tooltip-arrow-color: null !default; // Deprecated in Bootstrap 5.2.0 for CSS variables\n// fusv-enable\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: null !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size: $font-size-sm !default;\n$popover-bg: var(--#{$prefix}body-bg) !default;\n$popover-max-width: 276px !default;\n$popover-border-width: var(--#{$prefix}border-width) !default;\n$popover-border-color: var(--#{$prefix}border-color-translucent) !default;\n$popover-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$popover-inner-border-radius: calc(#{$popover-border-radius} - #{$popover-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$popover-box-shadow: var(--#{$prefix}box-shadow) !default;\n\n$popover-header-font-size: $font-size-base !default;\n$popover-header-bg: var(--#{$prefix}secondary-bg) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: $spacer !default;\n\n$popover-body-color: var(--#{$prefix}body-color) !default;\n$popover-body-padding-y: $spacer !default;\n$popover-body-padding-x: $spacer !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n// scss-docs-end popover-variables\n\n// fusv-disable\n// Deprecated in Bootstrap 5.2.0 for CSS variables\n$popover-arrow-color: $popover-bg !default;\n$popover-arrow-outer-color: var(--#{$prefix}border-color-translucent) !default;\n// fusv-enable\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .5rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-border-width: var(--#{$prefix}border-width) !default;\n$toast-border-color: var(--#{$prefix}border-color-translucent) !default;\n$toast-border-radius: var(--#{$prefix}border-radius) !default;\n$toast-box-shadow: var(--#{$prefix}box-shadow) !default;\n$toast-spacing: $container-padding-x !default;\n\n$toast-header-color: var(--#{$prefix}secondary-color) !default;\n$toast-header-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-header-border-color: $toast-border-color !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size: .75em !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-color: $white !default;\n$badge-padding-y: .35em !default;\n$badge-padding-x: .65em !default;\n$badge-border-radius: var(--#{$prefix}border-radius) !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding: $spacer !default;\n\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: var(--#{$prefix}body-bg) !default;\n$modal-content-border-color: var(--#{$prefix}border-color-translucent) !default;\n$modal-content-border-width: var(--#{$prefix}border-width) !default;\n$modal-content-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: var(--#{$prefix}box-shadow-sm) !default;\n$modal-content-box-shadow-sm-up: var(--#{$prefix}box-shadow) !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n\n$modal-header-border-color: var(--#{$prefix}border-color) !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-header-padding-y: $modal-inner-padding !default;\n$modal-header-padding-x: $modal-inner-padding !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-footer-bg: null !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n\n$modal-sm: 300px !default;\n$modal-md: 500px !default;\n$modal-lg: 800px !default;\n$modal-xl: 1140px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y: $spacer !default;\n$alert-padding-x: $spacer !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: var(--#{$prefix}border-radius) !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: var(--#{$prefix}border-width) !default;\n$alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n// fusv-disable\n$alert-bg-scale: -80% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-border-scale: -70% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-color-scale: 40% !default; // Deprecated in v5.2.0, to be removed in v6\n// fusv-enable\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: var(--#{$prefix}secondary-bg) !default;\n$progress-border-radius: var(--#{$prefix}border-radius) !default;\n$progress-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: $primary !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color: var(--#{$prefix}body-color) !default;\n$list-group-bg: var(--#{$prefix}body-bg) !default;\n$list-group-border-color: var(--#{$prefix}border-color) !default;\n$list-group-border-width: var(--#{$prefix}border-width) !default;\n$list-group-border-radius: var(--#{$prefix}border-radius) !default;\n\n$list-group-item-padding-y: $spacer * .5 !default;\n$list-group-item-padding-x: $spacer !default;\n// fusv-disable\n$list-group-item-bg-scale: -80% !default; // Deprecated in v5.3.0\n$list-group-item-color-scale: 40% !default; // Deprecated in v5.3.0\n// fusv-enable\n\n$list-group-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: var(--#{$prefix}secondary-color) !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: var(--#{$prefix}secondary-color) !default;\n$list-group-action-hover-color: var(--#{$prefix}emphasis-color) !default;\n\n$list-group-action-active-color: var(--#{$prefix}body-color) !default;\n$list-group-action-active-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: var(--#{$prefix}body-bg) !default;\n$thumbnail-border-width: var(--#{$prefix}border-width) !default;\n$thumbnail-border-color: var(--#{$prefix}border-color) !default;\n$thumbnail-border-radius: var(--#{$prefix}border-radius) !default;\n$thumbnail-box-shadow: var(--#{$prefix}box-shadow-sm) !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size: $small-font-size !default;\n$figure-caption-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size: null !default;\n$breadcrumb-padding-y: 0 !default;\n$breadcrumb-padding-x: 0 !default;\n$breadcrumb-item-padding-x: .5rem !default;\n$breadcrumb-margin-bottom: 1rem !default;\n$breadcrumb-bg: null !default;\n$breadcrumb-divider-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-active-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-divider: quote(\"/\") !default;\n$breadcrumb-divider-flipped: $breadcrumb-divider !default;\n$breadcrumb-border-radius: null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-opacity: .5 !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-active-opacity: 1 !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n$carousel-caption-padding-y: 1.25rem !default;\n$carousel-caption-spacer: 1.25rem !default;\n\n$carousel-control-icon-width: 2rem !default;\n\n$carousel-control-prev-icon-bg: url(\"data:image/svg+xml,\") !default;\n$carousel-control-next-icon-bg: url(\"data:image/svg+xml,\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n// scss-docs-end carousel-variables\n\n// scss-docs-start carousel-dark-variables\n$carousel-dark-indicator-active-bg: $black !default;\n$carousel-dark-caption-color: $black !default;\n$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;\n// scss-docs-end carousel-dark-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-vertical-align: -.125em !default;\n$spinner-border-width: .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width: 1em !default;\n$btn-close-height: $btn-close-width !default;\n$btn-close-padding-x: .25em !default;\n$btn-close-padding-y: $btn-close-padding-x !default;\n$btn-close-color: $black !default;\n$btn-close-bg: url(\"data:image/svg+xml,\") !default;\n$btn-close-focus-shadow: $focus-ring-box-shadow !default;\n$btn-close-opacity: .5 !default;\n$btn-close-hover-opacity: .75 !default;\n$btn-close-focus-opacity: 1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y: $modal-inner-padding !default;\n$offcanvas-padding-x: $modal-inner-padding !default;\n$offcanvas-horizontal-width: 400px !default;\n$offcanvas-vertical-height: 30vh !default;\n$offcanvas-transition-duration: .3s !default;\n$offcanvas-border-color: $modal-content-border-color !default;\n$offcanvas-border-width: $modal-content-border-width !default;\n$offcanvas-title-line-height: $modal-title-line-height !default;\n$offcanvas-bg-color: var(--#{$prefix}body-bg) !default;\n$offcanvas-color: var(--#{$prefix}body-color) !default;\n$offcanvas-box-shadow: $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg: $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity: $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size: $small-font-size !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .1875rem !default;\n$kbd-padding-x: .375rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: var(--#{$prefix}body-bg) !default;\n$kbd-bg: var(--#{$prefix}body-color) !default;\n$nested-kbd-font-weight: null !default; // Deprecated in v5.2.0, removing in v6\n\n$pre-color: null !default;\n\n@import \"variables-dark\"; // TODO: can be removed safely in v6, only here to avoid breaking changes in v5.3\n","// Row\n//\n// Rows contain your columns.\n\n:root {\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: percentage(divide(1, $count));\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is an invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix: \"\", $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.min.css b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.min.css index 8d836d469..49b843b19 100644 --- a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.min.css +++ b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.min.css @@ -1,6 +1,6 @@ /*! - * Bootstrap Grid v5.3.0 (https://getbootstrap.com/) - * Copyright 2011-2023 The Bootstrap Authors + * Bootstrap Grid v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} + */.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} /*# sourceMappingURL=bootstrap-grid.min.css.map */ \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.min.css.map b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.min.css.map index 4811b6f4e..a0db8b57a 100644 --- a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.min.css.map +++ b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_containers.scss","dist/css/bootstrap-grid.css","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"AACE;;;;ACKA,WCAF,iBAGA,cACA,cACA,cAHA,cADA,eCJE,cAAA,OACA,cAAA,EACA,MAAA,KACA,cAAA,8BACA,aAAA,8BACA,aAAA,KACA,YAAA,KCsDE,yBH5CE,WAAA,cACE,UAAA,OG2CJ,yBH5CE,WAAA,cAAA,cACE,UAAA,OG2CJ,yBH5CE,WAAA,cAAA,cAAA,cACE,UAAA,OG2CJ,0BH5CE,WAAA,cAAA,cAAA,cAAA,cACE,UAAA,QG2CJ,0BH5CE,WAAA,cAAA,cAAA,cAAA,cAAA,eACE,UAAA,QIhBR,MAEI,mBAAA,EAAA,mBAAA,MAAA,mBAAA,MAAA,mBAAA,MAAA,mBAAA,OAAA,oBAAA,OAKF,KCNA,cAAA,OACA,cAAA,EACA,QAAA,KACA,UAAA,KAEA,WAAA,8BACA,aAAA,+BACA,YAAA,+BDEE,OCGF,WAAA,WAIA,YAAA,EACA,MAAA,KACA,UAAA,KACA,cAAA,8BACA,aAAA,8BACA,WAAA,mBA+CI,KACE,KAAA,EAAA,EAAA,GAGF,iBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,cACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,UAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,UAxDV,YAAA,YAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,IAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,IAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,IAwDU,WAxDV,YAAA,aAwDU,WAxDV,YAAA,aAmEM,KJ6GR,MI3GU,cAAA,EAGF,KJ6GR,MI3GU,cAAA,EAPF,KJuHR,MIrHU,cAAA,QAGF,KJuHR,MIrHU,cAAA,QAPF,KJiIR,MI/HU,cAAA,OAGF,KJiIR,MI/HU,cAAA,OAPF,KJ2IR,MIzIU,cAAA,KAGF,KJ2IR,MIzIU,cAAA,KAPF,KJqJR,MInJU,cAAA,OAGF,KJqJR,MInJU,cAAA,OAPF,KJ+JR,MI7JU,cAAA,KAGF,KJ+JR,MI7JU,cAAA,KF1DN,yBEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QJiSN,SI/RQ,cAAA,EAGF,QJgSN,SI9RQ,cAAA,EAPF,QJySN,SIvSQ,cAAA,QAGF,QJwSN,SItSQ,cAAA,QAPF,QJiTN,SI/SQ,cAAA,OAGF,QJgTN,SI9SQ,cAAA,OAPF,QJyTN,SIvTQ,cAAA,KAGF,QJwTN,SItTQ,cAAA,KAPF,QJiUN,SI/TQ,cAAA,OAGF,QJgUN,SI9TQ,cAAA,OAPF,QJyUN,SIvUQ,cAAA,KAGF,QJwUN,SItUQ,cAAA,MF1DN,yBEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QJ0cN,SIxcQ,cAAA,EAGF,QJycN,SIvcQ,cAAA,EAPF,QJkdN,SIhdQ,cAAA,QAGF,QJidN,SI/cQ,cAAA,QAPF,QJ0dN,SIxdQ,cAAA,OAGF,QJydN,SIvdQ,cAAA,OAPF,QJkeN,SIheQ,cAAA,KAGF,QJieN,SI/dQ,cAAA,KAPF,QJ0eN,SIxeQ,cAAA,OAGF,QJyeN,SIveQ,cAAA,OAPF,QJkfN,SIhfQ,cAAA,KAGF,QJifN,SI/eQ,cAAA,MF1DN,yBEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QJmnBN,SIjnBQ,cAAA,EAGF,QJknBN,SIhnBQ,cAAA,EAPF,QJ2nBN,SIznBQ,cAAA,QAGF,QJ0nBN,SIxnBQ,cAAA,QAPF,QJmoBN,SIjoBQ,cAAA,OAGF,QJkoBN,SIhoBQ,cAAA,OAPF,QJ2oBN,SIzoBQ,cAAA,KAGF,QJ0oBN,SIxoBQ,cAAA,KAPF,QJmpBN,SIjpBQ,cAAA,OAGF,QJkpBN,SIhpBQ,cAAA,OAPF,QJ2pBN,SIzpBQ,cAAA,KAGF,QJ0pBN,SIxpBQ,cAAA,MF1DN,0BEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QJ4xBN,SI1xBQ,cAAA,EAGF,QJ2xBN,SIzxBQ,cAAA,EAPF,QJoyBN,SIlyBQ,cAAA,QAGF,QJmyBN,SIjyBQ,cAAA,QAPF,QJ4yBN,SI1yBQ,cAAA,OAGF,QJ2yBN,SIzyBQ,cAAA,OAPF,QJozBN,SIlzBQ,cAAA,KAGF,QJmzBN,SIjzBQ,cAAA,KAPF,QJ4zBN,SI1zBQ,cAAA,OAGF,QJ2zBN,SIzzBQ,cAAA,OAPF,QJo0BN,SIl0BQ,cAAA,KAGF,QJm0BN,SIj0BQ,cAAA,MF1DN,0BEUE,SACE,KAAA,EAAA,EAAA,GAGF,qBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,cAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,cAxDV,YAAA,EAwDU,cAxDV,YAAA,YAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,IAwDU,eAxDV,YAAA,aAwDU,eAxDV,YAAA,aAmEM,SJq8BN,UIn8BQ,cAAA,EAGF,SJo8BN,UIl8BQ,cAAA,EAPF,SJ68BN,UI38BQ,cAAA,QAGF,SJ48BN,UI18BQ,cAAA,QAPF,SJq9BN,UIn9BQ,cAAA,OAGF,SJo9BN,UIl9BQ,cAAA,OAPF,SJ69BN,UI39BQ,cAAA,KAGF,SJ49BN,UI19BQ,cAAA,KAPF,SJq+BN,UIn+BQ,cAAA,OAGF,SJo+BN,UIl+BQ,cAAA,OAPF,SJ6+BN,UI3+BQ,cAAA,KAGF,SJ4+BN,UI1+BQ,cAAA,MCvDF,UAOI,QAAA,iBAPJ,gBAOI,QAAA,uBAPJ,SAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,eAOI,QAAA,sBAPJ,SAOI,QAAA,gBAPJ,aAOI,QAAA,oBAPJ,cAOI,QAAA,qBAPJ,QAOI,QAAA,eAPJ,eAOI,QAAA,sBAPJ,QAOI,QAAA,eAPJ,WAOI,KAAA,EAAA,EAAA,eAPJ,UAOI,eAAA,cAPJ,aAOI,eAAA,iBAPJ,kBAOI,eAAA,sBAPJ,qBAOI,eAAA,yBAPJ,aAOI,UAAA,YAPJ,aAOI,UAAA,YAPJ,eAOI,YAAA,YAPJ,eAOI,YAAA,YAPJ,WAOI,UAAA,eAPJ,aAOI,UAAA,iBAPJ,mBAOI,UAAA,uBAPJ,uBAOI,gBAAA,qBAPJ,qBAOI,gBAAA,mBAPJ,wBAOI,gBAAA,iBAPJ,yBAOI,gBAAA,wBAPJ,wBAOI,gBAAA,uBAPJ,wBAOI,gBAAA,uBAPJ,mBAOI,YAAA,qBAPJ,iBAOI,YAAA,mBAPJ,oBAOI,YAAA,iBAPJ,sBAOI,YAAA,mBAPJ,qBAOI,YAAA,kBAPJ,qBAOI,cAAA,qBAPJ,mBAOI,cAAA,mBAPJ,sBAOI,cAAA,iBAPJ,uBAOI,cAAA,wBAPJ,sBAOI,cAAA,uBAPJ,uBAOI,cAAA,kBAPJ,iBAOI,WAAA,eAPJ,kBAOI,WAAA,qBAPJ,gBAOI,WAAA,mBAPJ,mBAOI,WAAA,iBAPJ,qBAOI,WAAA,mBAPJ,oBAOI,WAAA,kBAPJ,aAOI,MAAA,aAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,KAOI,OAAA,YAPJ,KAOI,OAAA,iBAPJ,KAOI,OAAA,gBAPJ,KAOI,OAAA,eAPJ,KAOI,OAAA,iBAPJ,KAOI,OAAA,eAPJ,QAOI,OAAA,eAPJ,MAOI,aAAA,YAAA,YAAA,YAPJ,MAOI,aAAA,iBAAA,YAAA,iBAPJ,MAOI,aAAA,gBAAA,YAAA,gBAPJ,MAOI,aAAA,eAAA,YAAA,eAPJ,MAOI,aAAA,iBAAA,YAAA,iBAPJ,MAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,MAOI,WAAA,YAAA,cAAA,YAPJ,MAOI,WAAA,iBAAA,cAAA,iBAPJ,MAOI,WAAA,gBAAA,cAAA,gBAPJ,MAOI,WAAA,eAAA,cAAA,eAPJ,MAOI,WAAA,iBAAA,cAAA,iBAPJ,MAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,MAOI,WAAA,YAPJ,MAOI,WAAA,iBAPJ,MAOI,WAAA,gBAPJ,MAOI,WAAA,eAPJ,MAOI,WAAA,iBAPJ,MAOI,WAAA,eAPJ,SAOI,WAAA,eAPJ,MAOI,aAAA,YAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,gBAPJ,MAOI,aAAA,eAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,eAPJ,SAOI,aAAA,eAPJ,MAOI,cAAA,YAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,gBAPJ,MAOI,cAAA,eAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,eAPJ,SAOI,cAAA,eAPJ,MAOI,YAAA,YAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,gBAPJ,MAOI,YAAA,eAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,eAPJ,SAOI,YAAA,eAPJ,KAOI,QAAA,YAPJ,KAOI,QAAA,iBAPJ,KAOI,QAAA,gBAPJ,KAOI,QAAA,eAPJ,KAOI,QAAA,iBAPJ,KAOI,QAAA,eAPJ,MAOI,cAAA,YAAA,aAAA,YAPJ,MAOI,cAAA,iBAAA,aAAA,iBAPJ,MAOI,cAAA,gBAAA,aAAA,gBAPJ,MAOI,cAAA,eAAA,aAAA,eAPJ,MAOI,cAAA,iBAAA,aAAA,iBAPJ,MAOI,cAAA,eAAA,aAAA,eAPJ,MAOI,YAAA,YAAA,eAAA,YAPJ,MAOI,YAAA,iBAAA,eAAA,iBAPJ,MAOI,YAAA,gBAAA,eAAA,gBAPJ,MAOI,YAAA,eAAA,eAAA,eAPJ,MAOI,YAAA,iBAAA,eAAA,iBAPJ,MAOI,YAAA,eAAA,eAAA,eAPJ,MAOI,YAAA,YAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,gBAPJ,MAOI,YAAA,eAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,eAPJ,MAOI,cAAA,YAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,gBAPJ,MAOI,cAAA,eAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,eAPJ,MAOI,eAAA,YAPJ,MAOI,eAAA,iBAPJ,MAOI,eAAA,gBAPJ,MAOI,eAAA,eAPJ,MAOI,eAAA,iBAPJ,MAOI,eAAA,eAPJ,MAOI,aAAA,YAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,gBAPJ,MAOI,aAAA,eAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,eHVR,yBGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBHVR,yBGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBHVR,yBGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBHVR,0BGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBHVR,0BGGI,cAOI,QAAA,iBAPJ,oBAOI,QAAA,uBAPJ,aAOI,QAAA,gBAPJ,YAOI,QAAA,eAPJ,mBAOI,QAAA,sBAPJ,aAOI,QAAA,gBAPJ,iBAOI,QAAA,oBAPJ,kBAOI,QAAA,qBAPJ,YAOI,QAAA,eAPJ,mBAOI,QAAA,sBAPJ,YAOI,QAAA,eAPJ,eAOI,KAAA,EAAA,EAAA,eAPJ,cAOI,eAAA,cAPJ,iBAOI,eAAA,iBAPJ,sBAOI,eAAA,sBAPJ,yBAOI,eAAA,yBAPJ,iBAOI,UAAA,YAPJ,iBAOI,UAAA,YAPJ,mBAOI,YAAA,YAPJ,mBAOI,YAAA,YAPJ,eAOI,UAAA,eAPJ,iBAOI,UAAA,iBAPJ,uBAOI,UAAA,uBAPJ,2BAOI,gBAAA,qBAPJ,yBAOI,gBAAA,mBAPJ,4BAOI,gBAAA,iBAPJ,6BAOI,gBAAA,wBAPJ,4BAOI,gBAAA,uBAPJ,4BAOI,gBAAA,uBAPJ,uBAOI,YAAA,qBAPJ,qBAOI,YAAA,mBAPJ,wBAOI,YAAA,iBAPJ,0BAOI,YAAA,mBAPJ,yBAOI,YAAA,kBAPJ,yBAOI,cAAA,qBAPJ,uBAOI,cAAA,mBAPJ,0BAOI,cAAA,iBAPJ,2BAOI,cAAA,wBAPJ,0BAOI,cAAA,uBAPJ,2BAOI,cAAA,kBAPJ,qBAOI,WAAA,eAPJ,sBAOI,WAAA,qBAPJ,oBAOI,WAAA,mBAPJ,uBAOI,WAAA,iBAPJ,yBAOI,WAAA,mBAPJ,wBAOI,WAAA,kBAPJ,iBAOI,MAAA,aAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,gBAOI,MAAA,YAPJ,SAOI,OAAA,YAPJ,SAOI,OAAA,iBAPJ,SAOI,OAAA,gBAPJ,SAOI,OAAA,eAPJ,SAOI,OAAA,iBAPJ,SAOI,OAAA,eAPJ,YAOI,OAAA,eAPJ,UAOI,aAAA,YAAA,YAAA,YAPJ,UAOI,aAAA,iBAAA,YAAA,iBAPJ,UAOI,aAAA,gBAAA,YAAA,gBAPJ,UAOI,aAAA,eAAA,YAAA,eAPJ,UAOI,aAAA,iBAAA,YAAA,iBAPJ,UAOI,aAAA,eAAA,YAAA,eAPJ,aAOI,aAAA,eAAA,YAAA,eAPJ,UAOI,WAAA,YAAA,cAAA,YAPJ,UAOI,WAAA,iBAAA,cAAA,iBAPJ,UAOI,WAAA,gBAAA,cAAA,gBAPJ,UAOI,WAAA,eAAA,cAAA,eAPJ,UAOI,WAAA,iBAAA,cAAA,iBAPJ,UAOI,WAAA,eAAA,cAAA,eAPJ,aAOI,WAAA,eAAA,cAAA,eAPJ,UAOI,WAAA,YAPJ,UAOI,WAAA,iBAPJ,UAOI,WAAA,gBAPJ,UAOI,WAAA,eAPJ,UAOI,WAAA,iBAPJ,UAOI,WAAA,eAPJ,aAOI,WAAA,eAPJ,UAOI,aAAA,YAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,gBAPJ,UAOI,aAAA,eAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,eAPJ,aAOI,aAAA,eAPJ,UAOI,cAAA,YAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBAPJ,UAOI,cAAA,eAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,eAPJ,aAOI,cAAA,eAPJ,UAOI,YAAA,YAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,gBAPJ,UAOI,YAAA,eAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,eAPJ,aAOI,YAAA,eAPJ,SAOI,QAAA,YAPJ,SAOI,QAAA,iBAPJ,SAOI,QAAA,gBAPJ,SAOI,QAAA,eAPJ,SAOI,QAAA,iBAPJ,SAOI,QAAA,eAPJ,UAOI,cAAA,YAAA,aAAA,YAPJ,UAOI,cAAA,iBAAA,aAAA,iBAPJ,UAOI,cAAA,gBAAA,aAAA,gBAPJ,UAOI,cAAA,eAAA,aAAA,eAPJ,UAOI,cAAA,iBAAA,aAAA,iBAPJ,UAOI,cAAA,eAAA,aAAA,eAPJ,UAOI,YAAA,YAAA,eAAA,YAPJ,UAOI,YAAA,iBAAA,eAAA,iBAPJ,UAOI,YAAA,gBAAA,eAAA,gBAPJ,UAOI,YAAA,eAAA,eAAA,eAPJ,UAOI,YAAA,iBAAA,eAAA,iBAPJ,UAOI,YAAA,eAAA,eAAA,eAPJ,UAOI,YAAA,YAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,gBAPJ,UAOI,YAAA,eAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,eAPJ,UAOI,cAAA,YAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBAPJ,UAOI,cAAA,eAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,eAPJ,UAOI,eAAA,YAPJ,UAOI,eAAA,iBAPJ,UAOI,eAAA,gBAPJ,UAOI,eAAA,eAPJ,UAOI,eAAA,iBAPJ,UAOI,eAAA,eAPJ,UAOI,aAAA,YAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,gBAPJ,UAOI,aAAA,eAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,gBCnCZ,aD4BQ,gBAOI,QAAA,iBAPJ,sBAOI,QAAA,uBAPJ,eAOI,QAAA,gBAPJ,cAOI,QAAA,eAPJ,qBAOI,QAAA,sBAPJ,eAOI,QAAA,gBAPJ,mBAOI,QAAA,oBAPJ,oBAOI,QAAA,qBAPJ,cAOI,QAAA,eAPJ,qBAOI,QAAA,sBAPJ,cAOI,QAAA","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.0 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","/*!\n * Bootstrap Grid v5.3.0 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Row\n//\n// Rows contain your columns.\n\n:root {\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: divide(100%, $count);\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is and invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix: \"\", $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_containers.scss","dist/css/bootstrap-grid.css","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"AACE;;;;ACKA,WCAF,iBAGA,cACA,cACA,cAHA,cADA,eCJE,cAAA,OACA,cAAA,EACA,MAAA,KACA,cAAA,8BACA,aAAA,8BACA,aAAA,KACA,YAAA,KCsDE,yBH5CE,WAAA,cACE,UAAA,OG2CJ,yBH5CE,WAAA,cAAA,cACE,UAAA,OG2CJ,yBH5CE,WAAA,cAAA,cAAA,cACE,UAAA,OG2CJ,0BH5CE,WAAA,cAAA,cAAA,cAAA,cACE,UAAA,QG2CJ,0BH5CE,WAAA,cAAA,cAAA,cAAA,cAAA,eACE,UAAA,QIhBR,MAEI,mBAAA,EAAA,mBAAA,MAAA,mBAAA,MAAA,mBAAA,MAAA,mBAAA,OAAA,oBAAA,OAKF,KCNA,cAAA,OACA,cAAA,EACA,QAAA,KACA,UAAA,KAEA,WAAA,8BACA,aAAA,+BACA,YAAA,+BDEE,OCGF,WAAA,WAIA,YAAA,EACA,MAAA,KACA,UAAA,KACA,cAAA,8BACA,aAAA,8BACA,WAAA,mBA+CI,KACE,KAAA,EAAA,EAAA,GAGF,iBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,cACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,aAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,aA+BE,UAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,UAxDV,YAAA,YAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,IAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,IAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,IAwDU,WAxDV,YAAA,aAwDU,WAxDV,YAAA,aAmEM,KJ6GR,MI3GU,cAAA,EAGF,KJ6GR,MI3GU,cAAA,EAPF,KJuHR,MIrHU,cAAA,QAGF,KJuHR,MIrHU,cAAA,QAPF,KJiIR,MI/HU,cAAA,OAGF,KJiIR,MI/HU,cAAA,OAPF,KJ2IR,MIzIU,cAAA,KAGF,KJ2IR,MIzIU,cAAA,KAPF,KJqJR,MInJU,cAAA,OAGF,KJqJR,MInJU,cAAA,OAPF,KJ+JR,MI7JU,cAAA,KAGF,KJ+JR,MI7JU,cAAA,KF1DN,yBEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,aAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,aA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QJiSN,SI/RQ,cAAA,EAGF,QJgSN,SI9RQ,cAAA,EAPF,QJySN,SIvSQ,cAAA,QAGF,QJwSN,SItSQ,cAAA,QAPF,QJiTN,SI/SQ,cAAA,OAGF,QJgTN,SI9SQ,cAAA,OAPF,QJyTN,SIvTQ,cAAA,KAGF,QJwTN,SItTQ,cAAA,KAPF,QJiUN,SI/TQ,cAAA,OAGF,QJgUN,SI9TQ,cAAA,OAPF,QJyUN,SIvUQ,cAAA,KAGF,QJwUN,SItUQ,cAAA,MF1DN,yBEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,aAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,aA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QJ0cN,SIxcQ,cAAA,EAGF,QJycN,SIvcQ,cAAA,EAPF,QJkdN,SIhdQ,cAAA,QAGF,QJidN,SI/cQ,cAAA,QAPF,QJ0dN,SIxdQ,cAAA,OAGF,QJydN,SIvdQ,cAAA,OAPF,QJkeN,SIheQ,cAAA,KAGF,QJieN,SI/dQ,cAAA,KAPF,QJ0eN,SIxeQ,cAAA,OAGF,QJyeN,SIveQ,cAAA,OAPF,QJkfN,SIhfQ,cAAA,KAGF,QJifN,SI/eQ,cAAA,MF1DN,yBEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,aAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,aA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QJmnBN,SIjnBQ,cAAA,EAGF,QJknBN,SIhnBQ,cAAA,EAPF,QJ2nBN,SIznBQ,cAAA,QAGF,QJ0nBN,SIxnBQ,cAAA,QAPF,QJmoBN,SIjoBQ,cAAA,OAGF,QJkoBN,SIhoBQ,cAAA,OAPF,QJ2oBN,SIzoBQ,cAAA,KAGF,QJ0oBN,SIxoBQ,cAAA,KAPF,QJmpBN,SIjpBQ,cAAA,OAGF,QJkpBN,SIhpBQ,cAAA,OAPF,QJ2pBN,SIzpBQ,cAAA,KAGF,QJ0pBN,SIxpBQ,cAAA,MF1DN,0BEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,aAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,aA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QJ4xBN,SI1xBQ,cAAA,EAGF,QJ2xBN,SIzxBQ,cAAA,EAPF,QJoyBN,SIlyBQ,cAAA,QAGF,QJmyBN,SIjyBQ,cAAA,QAPF,QJ4yBN,SI1yBQ,cAAA,OAGF,QJ2yBN,SIzyBQ,cAAA,OAPF,QJozBN,SIlzBQ,cAAA,KAGF,QJmzBN,SIjzBQ,cAAA,KAPF,QJ4zBN,SI1zBQ,cAAA,OAGF,QJ2zBN,SIzzBQ,cAAA,OAPF,QJo0BN,SIl0BQ,cAAA,KAGF,QJm0BN,SIj0BQ,cAAA,MF1DN,0BEUE,SACE,KAAA,EAAA,EAAA,GAGF,qBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,aAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,aA+BE,cAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,cAxDV,YAAA,EAwDU,cAxDV,YAAA,YAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,IAwDU,eAxDV,YAAA,aAwDU,eAxDV,YAAA,aAmEM,SJq8BN,UIn8BQ,cAAA,EAGF,SJo8BN,UIl8BQ,cAAA,EAPF,SJ68BN,UI38BQ,cAAA,QAGF,SJ48BN,UI18BQ,cAAA,QAPF,SJq9BN,UIn9BQ,cAAA,OAGF,SJo9BN,UIl9BQ,cAAA,OAPF,SJ69BN,UI39BQ,cAAA,KAGF,SJ49BN,UI19BQ,cAAA,KAPF,SJq+BN,UIn+BQ,cAAA,OAGF,SJo+BN,UIl+BQ,cAAA,OAPF,SJ6+BN,UI3+BQ,cAAA,KAGF,SJ4+BN,UI1+BQ,cAAA,MCvDF,UAOI,QAAA,iBAPJ,gBAOI,QAAA,uBAPJ,SAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,eAOI,QAAA,sBAPJ,SAOI,QAAA,gBAPJ,aAOI,QAAA,oBAPJ,cAOI,QAAA,qBAPJ,QAOI,QAAA,eAPJ,eAOI,QAAA,sBAPJ,QAOI,QAAA,eAPJ,WAOI,KAAA,EAAA,EAAA,eAPJ,UAOI,eAAA,cAPJ,aAOI,eAAA,iBAPJ,kBAOI,eAAA,sBAPJ,qBAOI,eAAA,yBAPJ,aAOI,UAAA,YAPJ,aAOI,UAAA,YAPJ,eAOI,YAAA,YAPJ,eAOI,YAAA,YAPJ,WAOI,UAAA,eAPJ,aAOI,UAAA,iBAPJ,mBAOI,UAAA,uBAPJ,uBAOI,gBAAA,qBAPJ,qBAOI,gBAAA,mBAPJ,wBAOI,gBAAA,iBAPJ,yBAOI,gBAAA,wBAPJ,wBAOI,gBAAA,uBAPJ,wBAOI,gBAAA,uBAPJ,mBAOI,YAAA,qBAPJ,iBAOI,YAAA,mBAPJ,oBAOI,YAAA,iBAPJ,sBAOI,YAAA,mBAPJ,qBAOI,YAAA,kBAPJ,qBAOI,cAAA,qBAPJ,mBAOI,cAAA,mBAPJ,sBAOI,cAAA,iBAPJ,uBAOI,cAAA,wBAPJ,sBAOI,cAAA,uBAPJ,uBAOI,cAAA,kBAPJ,iBAOI,WAAA,eAPJ,kBAOI,WAAA,qBAPJ,gBAOI,WAAA,mBAPJ,mBAOI,WAAA,iBAPJ,qBAOI,WAAA,mBAPJ,oBAOI,WAAA,kBAPJ,aAOI,MAAA,aAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,KAOI,OAAA,YAPJ,KAOI,OAAA,iBAPJ,KAOI,OAAA,gBAPJ,KAOI,OAAA,eAPJ,KAOI,OAAA,iBAPJ,KAOI,OAAA,eAPJ,QAOI,OAAA,eAPJ,MAOI,aAAA,YAAA,YAAA,YAPJ,MAOI,aAAA,iBAAA,YAAA,iBAPJ,MAOI,aAAA,gBAAA,YAAA,gBAPJ,MAOI,aAAA,eAAA,YAAA,eAPJ,MAOI,aAAA,iBAAA,YAAA,iBAPJ,MAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,MAOI,WAAA,YAAA,cAAA,YAPJ,MAOI,WAAA,iBAAA,cAAA,iBAPJ,MAOI,WAAA,gBAAA,cAAA,gBAPJ,MAOI,WAAA,eAAA,cAAA,eAPJ,MAOI,WAAA,iBAAA,cAAA,iBAPJ,MAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,MAOI,WAAA,YAPJ,MAOI,WAAA,iBAPJ,MAOI,WAAA,gBAPJ,MAOI,WAAA,eAPJ,MAOI,WAAA,iBAPJ,MAOI,WAAA,eAPJ,SAOI,WAAA,eAPJ,MAOI,aAAA,YAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,gBAPJ,MAOI,aAAA,eAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,eAPJ,SAOI,aAAA,eAPJ,MAOI,cAAA,YAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,gBAPJ,MAOI,cAAA,eAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,eAPJ,SAOI,cAAA,eAPJ,MAOI,YAAA,YAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,gBAPJ,MAOI,YAAA,eAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,eAPJ,SAOI,YAAA,eAPJ,KAOI,QAAA,YAPJ,KAOI,QAAA,iBAPJ,KAOI,QAAA,gBAPJ,KAOI,QAAA,eAPJ,KAOI,QAAA,iBAPJ,KAOI,QAAA,eAPJ,MAOI,cAAA,YAAA,aAAA,YAPJ,MAOI,cAAA,iBAAA,aAAA,iBAPJ,MAOI,cAAA,gBAAA,aAAA,gBAPJ,MAOI,cAAA,eAAA,aAAA,eAPJ,MAOI,cAAA,iBAAA,aAAA,iBAPJ,MAOI,cAAA,eAAA,aAAA,eAPJ,MAOI,YAAA,YAAA,eAAA,YAPJ,MAOI,YAAA,iBAAA,eAAA,iBAPJ,MAOI,YAAA,gBAAA,eAAA,gBAPJ,MAOI,YAAA,eAAA,eAAA,eAPJ,MAOI,YAAA,iBAAA,eAAA,iBAPJ,MAOI,YAAA,eAAA,eAAA,eAPJ,MAOI,YAAA,YAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,gBAPJ,MAOI,YAAA,eAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,eAPJ,MAOI,cAAA,YAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,gBAPJ,MAOI,cAAA,eAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,eAPJ,MAOI,eAAA,YAPJ,MAOI,eAAA,iBAPJ,MAOI,eAAA,gBAPJ,MAOI,eAAA,eAPJ,MAOI,eAAA,iBAPJ,MAOI,eAAA,eAPJ,MAOI,aAAA,YAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,gBAPJ,MAOI,aAAA,eAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,eHVR,yBGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBHVR,yBGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBHVR,yBGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBHVR,0BGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBHVR,0BGGI,cAOI,QAAA,iBAPJ,oBAOI,QAAA,uBAPJ,aAOI,QAAA,gBAPJ,YAOI,QAAA,eAPJ,mBAOI,QAAA,sBAPJ,aAOI,QAAA,gBAPJ,iBAOI,QAAA,oBAPJ,kBAOI,QAAA,qBAPJ,YAOI,QAAA,eAPJ,mBAOI,QAAA,sBAPJ,YAOI,QAAA,eAPJ,eAOI,KAAA,EAAA,EAAA,eAPJ,cAOI,eAAA,cAPJ,iBAOI,eAAA,iBAPJ,sBAOI,eAAA,sBAPJ,yBAOI,eAAA,yBAPJ,iBAOI,UAAA,YAPJ,iBAOI,UAAA,YAPJ,mBAOI,YAAA,YAPJ,mBAOI,YAAA,YAPJ,eAOI,UAAA,eAPJ,iBAOI,UAAA,iBAPJ,uBAOI,UAAA,uBAPJ,2BAOI,gBAAA,qBAPJ,yBAOI,gBAAA,mBAPJ,4BAOI,gBAAA,iBAPJ,6BAOI,gBAAA,wBAPJ,4BAOI,gBAAA,uBAPJ,4BAOI,gBAAA,uBAPJ,uBAOI,YAAA,qBAPJ,qBAOI,YAAA,mBAPJ,wBAOI,YAAA,iBAPJ,0BAOI,YAAA,mBAPJ,yBAOI,YAAA,kBAPJ,yBAOI,cAAA,qBAPJ,uBAOI,cAAA,mBAPJ,0BAOI,cAAA,iBAPJ,2BAOI,cAAA,wBAPJ,0BAOI,cAAA,uBAPJ,2BAOI,cAAA,kBAPJ,qBAOI,WAAA,eAPJ,sBAOI,WAAA,qBAPJ,oBAOI,WAAA,mBAPJ,uBAOI,WAAA,iBAPJ,yBAOI,WAAA,mBAPJ,wBAOI,WAAA,kBAPJ,iBAOI,MAAA,aAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,gBAOI,MAAA,YAPJ,SAOI,OAAA,YAPJ,SAOI,OAAA,iBAPJ,SAOI,OAAA,gBAPJ,SAOI,OAAA,eAPJ,SAOI,OAAA,iBAPJ,SAOI,OAAA,eAPJ,YAOI,OAAA,eAPJ,UAOI,aAAA,YAAA,YAAA,YAPJ,UAOI,aAAA,iBAAA,YAAA,iBAPJ,UAOI,aAAA,gBAAA,YAAA,gBAPJ,UAOI,aAAA,eAAA,YAAA,eAPJ,UAOI,aAAA,iBAAA,YAAA,iBAPJ,UAOI,aAAA,eAAA,YAAA,eAPJ,aAOI,aAAA,eAAA,YAAA,eAPJ,UAOI,WAAA,YAAA,cAAA,YAPJ,UAOI,WAAA,iBAAA,cAAA,iBAPJ,UAOI,WAAA,gBAAA,cAAA,gBAPJ,UAOI,WAAA,eAAA,cAAA,eAPJ,UAOI,WAAA,iBAAA,cAAA,iBAPJ,UAOI,WAAA,eAAA,cAAA,eAPJ,aAOI,WAAA,eAAA,cAAA,eAPJ,UAOI,WAAA,YAPJ,UAOI,WAAA,iBAPJ,UAOI,WAAA,gBAPJ,UAOI,WAAA,eAPJ,UAOI,WAAA,iBAPJ,UAOI,WAAA,eAPJ,aAOI,WAAA,eAPJ,UAOI,aAAA,YAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,gBAPJ,UAOI,aAAA,eAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,eAPJ,aAOI,aAAA,eAPJ,UAOI,cAAA,YAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBAPJ,UAOI,cAAA,eAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,eAPJ,aAOI,cAAA,eAPJ,UAOI,YAAA,YAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,gBAPJ,UAOI,YAAA,eAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,eAPJ,aAOI,YAAA,eAPJ,SAOI,QAAA,YAPJ,SAOI,QAAA,iBAPJ,SAOI,QAAA,gBAPJ,SAOI,QAAA,eAPJ,SAOI,QAAA,iBAPJ,SAOI,QAAA,eAPJ,UAOI,cAAA,YAAA,aAAA,YAPJ,UAOI,cAAA,iBAAA,aAAA,iBAPJ,UAOI,cAAA,gBAAA,aAAA,gBAPJ,UAOI,cAAA,eAAA,aAAA,eAPJ,UAOI,cAAA,iBAAA,aAAA,iBAPJ,UAOI,cAAA,eAAA,aAAA,eAPJ,UAOI,YAAA,YAAA,eAAA,YAPJ,UAOI,YAAA,iBAAA,eAAA,iBAPJ,UAOI,YAAA,gBAAA,eAAA,gBAPJ,UAOI,YAAA,eAAA,eAAA,eAPJ,UAOI,YAAA,iBAAA,eAAA,iBAPJ,UAOI,YAAA,eAAA,eAAA,eAPJ,UAOI,YAAA,YAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,gBAPJ,UAOI,YAAA,eAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,eAPJ,UAOI,cAAA,YAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBAPJ,UAOI,cAAA,eAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,eAPJ,UAOI,eAAA,YAPJ,UAOI,eAAA,iBAPJ,UAOI,eAAA,gBAPJ,UAOI,eAAA,eAPJ,UAOI,eAAA,iBAPJ,UAOI,eAAA,eAPJ,UAOI,aAAA,YAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,gBAPJ,UAOI,aAAA,eAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,gBCnCZ,aD4BQ,gBAOI,QAAA,iBAPJ,sBAOI,QAAA,uBAPJ,eAOI,QAAA,gBAPJ,cAOI,QAAA,eAPJ,qBAOI,QAAA,sBAPJ,eAOI,QAAA,gBAPJ,mBAOI,QAAA,oBAPJ,oBAOI,QAAA,qBAPJ,cAOI,QAAA,eAPJ,qBAOI,QAAA,sBAPJ,cAOI,QAAA","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","/*!\n * Bootstrap Grid v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Row\n//\n// Rows contain your columns.\n\n:root {\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: percentage(divide(1, $count));\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is an invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix: \"\", $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.css b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.css index 171129648..1a5d65630 100644 --- a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.css +++ b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.css @@ -1,6 +1,6 @@ /*! - * Bootstrap Grid v5.3.0 (https://getbootstrap.com/) - * Copyright 2011-2023 The Bootstrap Authors + * Bootstrap Grid v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ .container, @@ -93,7 +93,7 @@ .row-cols-3 > * { flex: 0 0 auto; - width: 33.3333333333%; + width: 33.33333333%; } .row-cols-4 > * { @@ -108,7 +108,7 @@ .row-cols-6 > * { flex: 0 0 auto; - width: 16.6666666667%; + width: 16.66666667%; } .col-auto { @@ -298,7 +298,7 @@ } .row-cols-sm-3 > * { flex: 0 0 auto; - width: 33.3333333333%; + width: 33.33333333%; } .row-cols-sm-4 > * { flex: 0 0 auto; @@ -310,7 +310,7 @@ } .row-cols-sm-6 > * { flex: 0 0 auto; - width: 16.6666666667%; + width: 16.66666667%; } .col-sm-auto { flex: 0 0 auto; @@ -467,7 +467,7 @@ } .row-cols-md-3 > * { flex: 0 0 auto; - width: 33.3333333333%; + width: 33.33333333%; } .row-cols-md-4 > * { flex: 0 0 auto; @@ -479,7 +479,7 @@ } .row-cols-md-6 > * { flex: 0 0 auto; - width: 16.6666666667%; + width: 16.66666667%; } .col-md-auto { flex: 0 0 auto; @@ -636,7 +636,7 @@ } .row-cols-lg-3 > * { flex: 0 0 auto; - width: 33.3333333333%; + width: 33.33333333%; } .row-cols-lg-4 > * { flex: 0 0 auto; @@ -648,7 +648,7 @@ } .row-cols-lg-6 > * { flex: 0 0 auto; - width: 16.6666666667%; + width: 16.66666667%; } .col-lg-auto { flex: 0 0 auto; @@ -805,7 +805,7 @@ } .row-cols-xl-3 > * { flex: 0 0 auto; - width: 33.3333333333%; + width: 33.33333333%; } .row-cols-xl-4 > * { flex: 0 0 auto; @@ -817,7 +817,7 @@ } .row-cols-xl-6 > * { flex: 0 0 auto; - width: 16.6666666667%; + width: 16.66666667%; } .col-xl-auto { flex: 0 0 auto; @@ -974,7 +974,7 @@ } .row-cols-xxl-3 > * { flex: 0 0 auto; - width: 33.3333333333%; + width: 33.33333333%; } .row-cols-xxl-4 > * { flex: 0 0 auto; @@ -986,7 +986,7 @@ } .row-cols-xxl-6 > * { flex: 0 0 auto; - width: 16.6666666667%; + width: 16.66666667%; } .col-xxl-auto { flex: 0 0 auto; diff --git a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.css.map b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.css.map index a3c40bb1e..8df43cfcc 100644 --- a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.css.map +++ b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.css.map @@ -1 +1 @@ -{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","bootstrap-grid.css","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"AACE;;;;EAAA;ACKA;;;;;;;ECHA,qBAAA;EACA,gBAAA;EACA,WAAA;EACA,4CAAA;EACA,6CAAA;EACA,iBAAA;EACA,kBAAA;ACUF;;AC4CI;EH5CE;IACE,gBIkee;EF9drB;AACF;ACsCI;EH5CE;IACE,gBIkee;EFzdrB;AACF;ACiCI;EH5CE;IACE,gBIkee;EFpdrB;AACF;AC4BI;EH5CE;IACE,iBIkee;EF/crB;AACF;ACuBI;EH5CE;IACE,iBIkee;EF1crB;AACF;AGzCA;EAEI,qBAAA;EAAA,yBAAA;EAAA,yBAAA;EAAA,yBAAA;EAAA,0BAAA;EAAA,2BAAA;AH+CJ;;AG1CE;ECNA,qBAAA;EACA,gBAAA;EACA,aAAA;EACA,eAAA;EAEA,yCAAA;EACA,4CAAA;EACA,6CAAA;AJmDF;AGjDI;ECGF,sBAAA;EAIA,cAAA;EACA,WAAA;EACA,eAAA;EACA,4CAAA;EACA,6CAAA;EACA,8BAAA;AJ8CF;;AICM;EACE,YAAA;AJER;;AICM;EApCJ,cAAA;EACA,WAAA;AJuCF;;AIzBE;EACE,cAAA;EACA,WAAA;AJ4BJ;;AI9BE;EACE,cAAA;EACA,UAAA;AJiCJ;;AInCE;EACE,cAAA;EACA,qBAAA;AJsCJ;;AIxCE;EACE,cAAA;EACA,UAAA;AJ2CJ;;AI7CE;EACE,cAAA;EACA,UAAA;AJgDJ;;AIlDE;EACE,cAAA;EACA,qBAAA;AJqDJ;;AItBM;EAhDJ,cAAA;EACA,WAAA;AJ0EF;;AIrBU;EAhEN,cAAA;EACA,kBAAA;AJyFJ;;AI1BU;EAhEN,cAAA;EACA,mBAAA;AJ8FJ;;AI/BU;EAhEN,cAAA;EACA,UAAA;AJmGJ;;AIpCU;EAhEN,cAAA;EACA,mBAAA;AJwGJ;;AIzCU;EAhEN,cAAA;EACA,mBAAA;AJ6GJ;;AI9CU;EAhEN,cAAA;EACA,UAAA;AJkHJ;;AInDU;EAhEN,cAAA;EACA,mBAAA;AJuHJ;;AIxDU;EAhEN,cAAA;EACA,mBAAA;AJ4HJ;;AI7DU;EAhEN,cAAA;EACA,UAAA;AJiIJ;;AIlEU;EAhEN,cAAA;EACA,mBAAA;AJsIJ;;AIvEU;EAhEN,cAAA;EACA,mBAAA;AJ2IJ;;AI5EU;EAhEN,cAAA;EACA,WAAA;AJgJJ;;AIzEY;EAxDV,yBAAA;AJqIF;;AI7EY;EAxDV,0BAAA;AJyIF;;AIjFY;EAxDV,iBAAA;AJ6IF;;AIrFY;EAxDV,0BAAA;AJiJF;;AIzFY;EAxDV,0BAAA;AJqJF;;AI7FY;EAxDV,iBAAA;AJyJF;;AIjGY;EAxDV,0BAAA;AJ6JF;;AIrGY;EAxDV,0BAAA;AJiKF;;AIzGY;EAxDV,iBAAA;AJqKF;;AI7GY;EAxDV,0BAAA;AJyKF;;AIjHY;EAxDV,0BAAA;AJ6KF;;AI1GQ;;EAEE,gBAAA;AJ6GV;;AI1GQ;;EAEE,gBAAA;AJ6GV;;AIpHQ;;EAEE,sBAAA;AJuHV;;AIpHQ;;EAEE,sBAAA;AJuHV;;AI9HQ;;EAEE,qBAAA;AJiIV;;AI9HQ;;EAEE,qBAAA;AJiIV;;AIxIQ;;EAEE,mBAAA;AJ2IV;;AIxIQ;;EAEE,mBAAA;AJ2IV;;AIlJQ;;EAEE,qBAAA;AJqJV;;AIlJQ;;EAEE,qBAAA;AJqJV;;AI5JQ;;EAEE,mBAAA;AJ+JV;;AI5JQ;;EAEE,mBAAA;AJ+JV;;ACzNI;EGUE;IACE,YAAA;EJmNN;EIhNI;IApCJ,cAAA;IACA,WAAA;EJuPA;EIzOA;IACE,cAAA;IACA,WAAA;EJ2OF;EI7OA;IACE,cAAA;IACA,UAAA;EJ+OF;EIjPA;IACE,cAAA;IACA,qBAAA;EJmPF;EIrPA;IACE,cAAA;IACA,UAAA;EJuPF;EIzPA;IACE,cAAA;IACA,UAAA;EJ2PF;EI7PA;IACE,cAAA;IACA,qBAAA;EJ+PF;EIhOI;IAhDJ,cAAA;IACA,WAAA;EJmRA;EI9NQ;IAhEN,cAAA;IACA,kBAAA;EJiSF;EIlOQ;IAhEN,cAAA;IACA,mBAAA;EJqSF;EItOQ;IAhEN,cAAA;IACA,UAAA;EJySF;EI1OQ;IAhEN,cAAA;IACA,mBAAA;EJ6SF;EI9OQ;IAhEN,cAAA;IACA,mBAAA;EJiTF;EIlPQ;IAhEN,cAAA;IACA,UAAA;EJqTF;EItPQ;IAhEN,cAAA;IACA,mBAAA;EJyTF;EI1PQ;IAhEN,cAAA;IACA,mBAAA;EJ6TF;EI9PQ;IAhEN,cAAA;IACA,UAAA;EJiUF;EIlQQ;IAhEN,cAAA;IACA,mBAAA;EJqUF;EItQQ;IAhEN,cAAA;IACA,mBAAA;EJyUF;EI1QQ;IAhEN,cAAA;IACA,WAAA;EJ6UF;EItQU;IAxDV,eAAA;EJiUA;EIzQU;IAxDV,yBAAA;EJoUA;EI5QU;IAxDV,0BAAA;EJuUA;EI/QU;IAxDV,iBAAA;EJ0UA;EIlRU;IAxDV,0BAAA;EJ6UA;EIrRU;IAxDV,0BAAA;EJgVA;EIxRU;IAxDV,iBAAA;EJmVA;EI3RU;IAxDV,0BAAA;EJsVA;EI9RU;IAxDV,0BAAA;EJyVA;EIjSU;IAxDV,iBAAA;EJ4VA;EIpSU;IAxDV,0BAAA;EJ+VA;EIvSU;IAxDV,0BAAA;EJkWA;EI/RM;;IAEE,gBAAA;EJiSR;EI9RM;;IAEE,gBAAA;EJgSR;EIvSM;;IAEE,sBAAA;EJySR;EItSM;;IAEE,sBAAA;EJwSR;EI/SM;;IAEE,qBAAA;EJiTR;EI9SM;;IAEE,qBAAA;EJgTR;EIvTM;;IAEE,mBAAA;EJyTR;EItTM;;IAEE,mBAAA;EJwTR;EI/TM;;IAEE,qBAAA;EJiUR;EI9TM;;IAEE,qBAAA;EJgUR;EIvUM;;IAEE,mBAAA;EJyUR;EItUM;;IAEE,mBAAA;EJwUR;AACF;ACnYI;EGUE;IACE,YAAA;EJ4XN;EIzXI;IApCJ,cAAA;IACA,WAAA;EJgaA;EIlZA;IACE,cAAA;IACA,WAAA;EJoZF;EItZA;IACE,cAAA;IACA,UAAA;EJwZF;EI1ZA;IACE,cAAA;IACA,qBAAA;EJ4ZF;EI9ZA;IACE,cAAA;IACA,UAAA;EJgaF;EIlaA;IACE,cAAA;IACA,UAAA;EJoaF;EItaA;IACE,cAAA;IACA,qBAAA;EJwaF;EIzYI;IAhDJ,cAAA;IACA,WAAA;EJ4bA;EIvYQ;IAhEN,cAAA;IACA,kBAAA;EJ0cF;EI3YQ;IAhEN,cAAA;IACA,mBAAA;EJ8cF;EI/YQ;IAhEN,cAAA;IACA,UAAA;EJkdF;EInZQ;IAhEN,cAAA;IACA,mBAAA;EJsdF;EIvZQ;IAhEN,cAAA;IACA,mBAAA;EJ0dF;EI3ZQ;IAhEN,cAAA;IACA,UAAA;EJ8dF;EI/ZQ;IAhEN,cAAA;IACA,mBAAA;EJkeF;EInaQ;IAhEN,cAAA;IACA,mBAAA;EJseF;EIvaQ;IAhEN,cAAA;IACA,UAAA;EJ0eF;EI3aQ;IAhEN,cAAA;IACA,mBAAA;EJ8eF;EI/aQ;IAhEN,cAAA;IACA,mBAAA;EJkfF;EInbQ;IAhEN,cAAA;IACA,WAAA;EJsfF;EI/aU;IAxDV,eAAA;EJ0eA;EIlbU;IAxDV,yBAAA;EJ6eA;EIrbU;IAxDV,0BAAA;EJgfA;EIxbU;IAxDV,iBAAA;EJmfA;EI3bU;IAxDV,0BAAA;EJsfA;EI9bU;IAxDV,0BAAA;EJyfA;EIjcU;IAxDV,iBAAA;EJ4fA;EIpcU;IAxDV,0BAAA;EJ+fA;EIvcU;IAxDV,0BAAA;EJkgBA;EI1cU;IAxDV,iBAAA;EJqgBA;EI7cU;IAxDV,0BAAA;EJwgBA;EIhdU;IAxDV,0BAAA;EJ2gBA;EIxcM;;IAEE,gBAAA;EJ0cR;EIvcM;;IAEE,gBAAA;EJycR;EIhdM;;IAEE,sBAAA;EJkdR;EI/cM;;IAEE,sBAAA;EJidR;EIxdM;;IAEE,qBAAA;EJ0dR;EIvdM;;IAEE,qBAAA;EJydR;EIheM;;IAEE,mBAAA;EJkeR;EI/dM;;IAEE,mBAAA;EJieR;EIxeM;;IAEE,qBAAA;EJ0eR;EIveM;;IAEE,qBAAA;EJyeR;EIhfM;;IAEE,mBAAA;EJkfR;EI/eM;;IAEE,mBAAA;EJifR;AACF;AC5iBI;EGUE;IACE,YAAA;EJqiBN;EIliBI;IApCJ,cAAA;IACA,WAAA;EJykBA;EI3jBA;IACE,cAAA;IACA,WAAA;EJ6jBF;EI/jBA;IACE,cAAA;IACA,UAAA;EJikBF;EInkBA;IACE,cAAA;IACA,qBAAA;EJqkBF;EIvkBA;IACE,cAAA;IACA,UAAA;EJykBF;EI3kBA;IACE,cAAA;IACA,UAAA;EJ6kBF;EI/kBA;IACE,cAAA;IACA,qBAAA;EJilBF;EIljBI;IAhDJ,cAAA;IACA,WAAA;EJqmBA;EIhjBQ;IAhEN,cAAA;IACA,kBAAA;EJmnBF;EIpjBQ;IAhEN,cAAA;IACA,mBAAA;EJunBF;EIxjBQ;IAhEN,cAAA;IACA,UAAA;EJ2nBF;EI5jBQ;IAhEN,cAAA;IACA,mBAAA;EJ+nBF;EIhkBQ;IAhEN,cAAA;IACA,mBAAA;EJmoBF;EIpkBQ;IAhEN,cAAA;IACA,UAAA;EJuoBF;EIxkBQ;IAhEN,cAAA;IACA,mBAAA;EJ2oBF;EI5kBQ;IAhEN,cAAA;IACA,mBAAA;EJ+oBF;EIhlBQ;IAhEN,cAAA;IACA,UAAA;EJmpBF;EIplBQ;IAhEN,cAAA;IACA,mBAAA;EJupBF;EIxlBQ;IAhEN,cAAA;IACA,mBAAA;EJ2pBF;EI5lBQ;IAhEN,cAAA;IACA,WAAA;EJ+pBF;EIxlBU;IAxDV,eAAA;EJmpBA;EI3lBU;IAxDV,yBAAA;EJspBA;EI9lBU;IAxDV,0BAAA;EJypBA;EIjmBU;IAxDV,iBAAA;EJ4pBA;EIpmBU;IAxDV,0BAAA;EJ+pBA;EIvmBU;IAxDV,0BAAA;EJkqBA;EI1mBU;IAxDV,iBAAA;EJqqBA;EI7mBU;IAxDV,0BAAA;EJwqBA;EIhnBU;IAxDV,0BAAA;EJ2qBA;EInnBU;IAxDV,iBAAA;EJ8qBA;EItnBU;IAxDV,0BAAA;EJirBA;EIznBU;IAxDV,0BAAA;EJorBA;EIjnBM;;IAEE,gBAAA;EJmnBR;EIhnBM;;IAEE,gBAAA;EJknBR;EIznBM;;IAEE,sBAAA;EJ2nBR;EIxnBM;;IAEE,sBAAA;EJ0nBR;EIjoBM;;IAEE,qBAAA;EJmoBR;EIhoBM;;IAEE,qBAAA;EJkoBR;EIzoBM;;IAEE,mBAAA;EJ2oBR;EIxoBM;;IAEE,mBAAA;EJ0oBR;EIjpBM;;IAEE,qBAAA;EJmpBR;EIhpBM;;IAEE,qBAAA;EJkpBR;EIzpBM;;IAEE,mBAAA;EJ2pBR;EIxpBM;;IAEE,mBAAA;EJ0pBR;AACF;ACrtBI;EGUE;IACE,YAAA;EJ8sBN;EI3sBI;IApCJ,cAAA;IACA,WAAA;EJkvBA;EIpuBA;IACE,cAAA;IACA,WAAA;EJsuBF;EIxuBA;IACE,cAAA;IACA,UAAA;EJ0uBF;EI5uBA;IACE,cAAA;IACA,qBAAA;EJ8uBF;EIhvBA;IACE,cAAA;IACA,UAAA;EJkvBF;EIpvBA;IACE,cAAA;IACA,UAAA;EJsvBF;EIxvBA;IACE,cAAA;IACA,qBAAA;EJ0vBF;EI3tBI;IAhDJ,cAAA;IACA,WAAA;EJ8wBA;EIztBQ;IAhEN,cAAA;IACA,kBAAA;EJ4xBF;EI7tBQ;IAhEN,cAAA;IACA,mBAAA;EJgyBF;EIjuBQ;IAhEN,cAAA;IACA,UAAA;EJoyBF;EIruBQ;IAhEN,cAAA;IACA,mBAAA;EJwyBF;EIzuBQ;IAhEN,cAAA;IACA,mBAAA;EJ4yBF;EI7uBQ;IAhEN,cAAA;IACA,UAAA;EJgzBF;EIjvBQ;IAhEN,cAAA;IACA,mBAAA;EJozBF;EIrvBQ;IAhEN,cAAA;IACA,mBAAA;EJwzBF;EIzvBQ;IAhEN,cAAA;IACA,UAAA;EJ4zBF;EI7vBQ;IAhEN,cAAA;IACA,mBAAA;EJg0BF;EIjwBQ;IAhEN,cAAA;IACA,mBAAA;EJo0BF;EIrwBQ;IAhEN,cAAA;IACA,WAAA;EJw0BF;EIjwBU;IAxDV,eAAA;EJ4zBA;EIpwBU;IAxDV,yBAAA;EJ+zBA;EIvwBU;IAxDV,0BAAA;EJk0BA;EI1wBU;IAxDV,iBAAA;EJq0BA;EI7wBU;IAxDV,0BAAA;EJw0BA;EIhxBU;IAxDV,0BAAA;EJ20BA;EInxBU;IAxDV,iBAAA;EJ80BA;EItxBU;IAxDV,0BAAA;EJi1BA;EIzxBU;IAxDV,0BAAA;EJo1BA;EI5xBU;IAxDV,iBAAA;EJu1BA;EI/xBU;IAxDV,0BAAA;EJ01BA;EIlyBU;IAxDV,0BAAA;EJ61BA;EI1xBM;;IAEE,gBAAA;EJ4xBR;EIzxBM;;IAEE,gBAAA;EJ2xBR;EIlyBM;;IAEE,sBAAA;EJoyBR;EIjyBM;;IAEE,sBAAA;EJmyBR;EI1yBM;;IAEE,qBAAA;EJ4yBR;EIzyBM;;IAEE,qBAAA;EJ2yBR;EIlzBM;;IAEE,mBAAA;EJozBR;EIjzBM;;IAEE,mBAAA;EJmzBR;EI1zBM;;IAEE,qBAAA;EJ4zBR;EIzzBM;;IAEE,qBAAA;EJ2zBR;EIl0BM;;IAEE,mBAAA;EJo0BR;EIj0BM;;IAEE,mBAAA;EJm0BR;AACF;AC93BI;EGUE;IACE,YAAA;EJu3BN;EIp3BI;IApCJ,cAAA;IACA,WAAA;EJ25BA;EI74BA;IACE,cAAA;IACA,WAAA;EJ+4BF;EIj5BA;IACE,cAAA;IACA,UAAA;EJm5BF;EIr5BA;IACE,cAAA;IACA,qBAAA;EJu5BF;EIz5BA;IACE,cAAA;IACA,UAAA;EJ25BF;EI75BA;IACE,cAAA;IACA,UAAA;EJ+5BF;EIj6BA;IACE,cAAA;IACA,qBAAA;EJm6BF;EIp4BI;IAhDJ,cAAA;IACA,WAAA;EJu7BA;EIl4BQ;IAhEN,cAAA;IACA,kBAAA;EJq8BF;EIt4BQ;IAhEN,cAAA;IACA,mBAAA;EJy8BF;EI14BQ;IAhEN,cAAA;IACA,UAAA;EJ68BF;EI94BQ;IAhEN,cAAA;IACA,mBAAA;EJi9BF;EIl5BQ;IAhEN,cAAA;IACA,mBAAA;EJq9BF;EIt5BQ;IAhEN,cAAA;IACA,UAAA;EJy9BF;EI15BQ;IAhEN,cAAA;IACA,mBAAA;EJ69BF;EI95BQ;IAhEN,cAAA;IACA,mBAAA;EJi+BF;EIl6BQ;IAhEN,cAAA;IACA,UAAA;EJq+BF;EIt6BQ;IAhEN,cAAA;IACA,mBAAA;EJy+BF;EI16BQ;IAhEN,cAAA;IACA,mBAAA;EJ6+BF;EI96BQ;IAhEN,cAAA;IACA,WAAA;EJi/BF;EI16BU;IAxDV,eAAA;EJq+BA;EI76BU;IAxDV,yBAAA;EJw+BA;EIh7BU;IAxDV,0BAAA;EJ2+BA;EIn7BU;IAxDV,iBAAA;EJ8+BA;EIt7BU;IAxDV,0BAAA;EJi/BA;EIz7BU;IAxDV,0BAAA;EJo/BA;EI57BU;IAxDV,iBAAA;EJu/BA;EI/7BU;IAxDV,0BAAA;EJ0/BA;EIl8BU;IAxDV,0BAAA;EJ6/BA;EIr8BU;IAxDV,iBAAA;EJggCA;EIx8BU;IAxDV,0BAAA;EJmgCA;EI38BU;IAxDV,0BAAA;EJsgCA;EIn8BM;;IAEE,gBAAA;EJq8BR;EIl8BM;;IAEE,gBAAA;EJo8BR;EI38BM;;IAEE,sBAAA;EJ68BR;EI18BM;;IAEE,sBAAA;EJ48BR;EIn9BM;;IAEE,qBAAA;EJq9BR;EIl9BM;;IAEE,qBAAA;EJo9BR;EI39BM;;IAEE,mBAAA;EJ69BR;EI19BM;;IAEE,mBAAA;EJ49BR;EIn+BM;;IAEE,qBAAA;EJq+BR;EIl+BM;;IAEE,qBAAA;EJo+BR;EI3+BM;;IAEE,mBAAA;EJ6+BR;EI1+BM;;IAEE,mBAAA;EJ4+BR;AACF;AKpiCQ;EAOI,0BAAA;ALgiCZ;;AKviCQ;EAOI,gCAAA;ALoiCZ;;AK3iCQ;EAOI,yBAAA;ALwiCZ;;AK/iCQ;EAOI,wBAAA;AL4iCZ;;AKnjCQ;EAOI,+BAAA;ALgjCZ;;AKvjCQ;EAOI,yBAAA;ALojCZ;;AK3jCQ;EAOI,6BAAA;ALwjCZ;;AK/jCQ;EAOI,8BAAA;AL4jCZ;;AKnkCQ;EAOI,wBAAA;ALgkCZ;;AKvkCQ;EAOI,+BAAA;ALokCZ;;AK3kCQ;EAOI,wBAAA;ALwkCZ;;AK/kCQ;EAOI,yBAAA;AL4kCZ;;AKnlCQ;EAOI,8BAAA;ALglCZ;;AKvlCQ;EAOI,iCAAA;ALolCZ;;AK3lCQ;EAOI,sCAAA;ALwlCZ;;AK/lCQ;EAOI,yCAAA;AL4lCZ;;AKnmCQ;EAOI,uBAAA;ALgmCZ;;AKvmCQ;EAOI,uBAAA;ALomCZ;;AK3mCQ;EAOI,yBAAA;ALwmCZ;;AK/mCQ;EAOI,yBAAA;AL4mCZ;;AKnnCQ;EAOI,0BAAA;ALgnCZ;;AKvnCQ;EAOI,4BAAA;ALonCZ;;AK3nCQ;EAOI,kCAAA;ALwnCZ;;AK/nCQ;EAOI,sCAAA;AL4nCZ;;AKnoCQ;EAOI,oCAAA;ALgoCZ;;AKvoCQ;EAOI,kCAAA;ALooCZ;;AK3oCQ;EAOI,yCAAA;ALwoCZ;;AK/oCQ;EAOI,wCAAA;AL4oCZ;;AKnpCQ;EAOI,wCAAA;ALgpCZ;;AKvpCQ;EAOI,kCAAA;ALopCZ;;AK3pCQ;EAOI,gCAAA;ALwpCZ;;AK/pCQ;EAOI,8BAAA;AL4pCZ;;AKnqCQ;EAOI,gCAAA;ALgqCZ;;AKvqCQ;EAOI,+BAAA;ALoqCZ;;AK3qCQ;EAOI,oCAAA;ALwqCZ;;AK/qCQ;EAOI,kCAAA;AL4qCZ;;AKnrCQ;EAOI,gCAAA;ALgrCZ;;AKvrCQ;EAOI,uCAAA;ALorCZ;;AK3rCQ;EAOI,sCAAA;ALwrCZ;;AK/rCQ;EAOI,iCAAA;AL4rCZ;;AKnsCQ;EAOI,2BAAA;ALgsCZ;;AKvsCQ;EAOI,iCAAA;ALosCZ;;AK3sCQ;EAOI,+BAAA;ALwsCZ;;AK/sCQ;EAOI,6BAAA;AL4sCZ;;AKntCQ;EAOI,+BAAA;ALgtCZ;;AKvtCQ;EAOI,8BAAA;ALotCZ;;AK3tCQ;EAOI,oBAAA;ALwtCZ;;AK/tCQ;EAOI,mBAAA;AL4tCZ;;AKnuCQ;EAOI,mBAAA;ALguCZ;;AKvuCQ;EAOI,mBAAA;ALouCZ;;AK3uCQ;EAOI,mBAAA;ALwuCZ;;AK/uCQ;EAOI,mBAAA;AL4uCZ;;AKnvCQ;EAOI,mBAAA;ALgvCZ;;AKvvCQ;EAOI,mBAAA;ALovCZ;;AK3vCQ;EAOI,oBAAA;ALwvCZ;;AK/vCQ;EAOI,0BAAA;AL4vCZ;;AKnwCQ;EAOI,yBAAA;ALgwCZ;;AKvwCQ;EAOI,uBAAA;ALowCZ;;AK3wCQ;EAOI,yBAAA;ALwwCZ;;AK/wCQ;EAOI,uBAAA;AL4wCZ;;AKnxCQ;EAOI,uBAAA;ALgxCZ;;AKvxCQ;EAOI,yBAAA;EAAA,0BAAA;ALqxCZ;;AK5xCQ;EAOI,+BAAA;EAAA,gCAAA;AL0xCZ;;AKjyCQ;EAOI,8BAAA;EAAA,+BAAA;AL+xCZ;;AKtyCQ;EAOI,4BAAA;EAAA,6BAAA;ALoyCZ;;AK3yCQ;EAOI,8BAAA;EAAA,+BAAA;ALyyCZ;;AKhzCQ;EAOI,4BAAA;EAAA,6BAAA;AL8yCZ;;AKrzCQ;EAOI,4BAAA;EAAA,6BAAA;ALmzCZ;;AK1zCQ;EAOI,wBAAA;EAAA,2BAAA;ALwzCZ;;AK/zCQ;EAOI,8BAAA;EAAA,iCAAA;AL6zCZ;;AKp0CQ;EAOI,6BAAA;EAAA,gCAAA;ALk0CZ;;AKz0CQ;EAOI,2BAAA;EAAA,8BAAA;ALu0CZ;;AK90CQ;EAOI,6BAAA;EAAA,gCAAA;AL40CZ;;AKn1CQ;EAOI,2BAAA;EAAA,8BAAA;ALi1CZ;;AKx1CQ;EAOI,2BAAA;EAAA,8BAAA;ALs1CZ;;AK71CQ;EAOI,wBAAA;AL01CZ;;AKj2CQ;EAOI,8BAAA;AL81CZ;;AKr2CQ;EAOI,6BAAA;ALk2CZ;;AKz2CQ;EAOI,2BAAA;ALs2CZ;;AK72CQ;EAOI,6BAAA;AL02CZ;;AKj3CQ;EAOI,2BAAA;AL82CZ;;AKr3CQ;EAOI,2BAAA;ALk3CZ;;AKz3CQ;EAOI,yBAAA;ALs3CZ;;AK73CQ;EAOI,+BAAA;AL03CZ;;AKj4CQ;EAOI,8BAAA;AL83CZ;;AKr4CQ;EAOI,4BAAA;ALk4CZ;;AKz4CQ;EAOI,8BAAA;ALs4CZ;;AK74CQ;EAOI,4BAAA;AL04CZ;;AKj5CQ;EAOI,4BAAA;AL84CZ;;AKr5CQ;EAOI,2BAAA;ALk5CZ;;AKz5CQ;EAOI,iCAAA;ALs5CZ;;AK75CQ;EAOI,gCAAA;AL05CZ;;AKj6CQ;EAOI,8BAAA;AL85CZ;;AKr6CQ;EAOI,gCAAA;ALk6CZ;;AKz6CQ;EAOI,8BAAA;ALs6CZ;;AK76CQ;EAOI,8BAAA;AL06CZ;;AKj7CQ;EAOI,0BAAA;AL86CZ;;AKr7CQ;EAOI,gCAAA;ALk7CZ;;AKz7CQ;EAOI,+BAAA;ALs7CZ;;AK77CQ;EAOI,6BAAA;AL07CZ;;AKj8CQ;EAOI,+BAAA;AL87CZ;;AKr8CQ;EAOI,6BAAA;ALk8CZ;;AKz8CQ;EAOI,6BAAA;ALs8CZ;;AK78CQ;EAOI,qBAAA;AL08CZ;;AKj9CQ;EAOI,2BAAA;AL88CZ;;AKr9CQ;EAOI,0BAAA;ALk9CZ;;AKz9CQ;EAOI,wBAAA;ALs9CZ;;AK79CQ;EAOI,0BAAA;AL09CZ;;AKj+CQ;EAOI,wBAAA;AL89CZ;;AKr+CQ;EAOI,0BAAA;EAAA,2BAAA;ALm+CZ;;AK1+CQ;EAOI,gCAAA;EAAA,iCAAA;ALw+CZ;;AK/+CQ;EAOI,+BAAA;EAAA,gCAAA;AL6+CZ;;AKp/CQ;EAOI,6BAAA;EAAA,8BAAA;ALk/CZ;;AKz/CQ;EAOI,+BAAA;EAAA,gCAAA;ALu/CZ;;AK9/CQ;EAOI,6BAAA;EAAA,8BAAA;AL4/CZ;;AKngDQ;EAOI,yBAAA;EAAA,4BAAA;ALigDZ;;AKxgDQ;EAOI,+BAAA;EAAA,kCAAA;ALsgDZ;;AK7gDQ;EAOI,8BAAA;EAAA,iCAAA;AL2gDZ;;AKlhDQ;EAOI,4BAAA;EAAA,+BAAA;ALghDZ;;AKvhDQ;EAOI,8BAAA;EAAA,iCAAA;ALqhDZ;;AK5hDQ;EAOI,4BAAA;EAAA,+BAAA;AL0hDZ;;AKjiDQ;EAOI,yBAAA;AL8hDZ;;AKriDQ;EAOI,+BAAA;ALkiDZ;;AKziDQ;EAOI,8BAAA;ALsiDZ;;AK7iDQ;EAOI,4BAAA;AL0iDZ;;AKjjDQ;EAOI,8BAAA;AL8iDZ;;AKrjDQ;EAOI,4BAAA;ALkjDZ;;AKzjDQ;EAOI,0BAAA;ALsjDZ;;AK7jDQ;EAOI,gCAAA;AL0jDZ;;AKjkDQ;EAOI,+BAAA;AL8jDZ;;AKrkDQ;EAOI,6BAAA;ALkkDZ;;AKzkDQ;EAOI,+BAAA;ALskDZ;;AK7kDQ;EAOI,6BAAA;AL0kDZ;;AKjlDQ;EAOI,4BAAA;AL8kDZ;;AKrlDQ;EAOI,kCAAA;ALklDZ;;AKzlDQ;EAOI,iCAAA;ALslDZ;;AK7lDQ;EAOI,+BAAA;AL0lDZ;;AKjmDQ;EAOI,iCAAA;AL8lDZ;;AKrmDQ;EAOI,+BAAA;ALkmDZ;;AKzmDQ;EAOI,2BAAA;ALsmDZ;;AK7mDQ;EAOI,iCAAA;AL0mDZ;;AKjnDQ;EAOI,gCAAA;AL8mDZ;;AKrnDQ;EAOI,8BAAA;ALknDZ;;AKznDQ;EAOI,gCAAA;ALsnDZ;;AK7nDQ;EAOI,8BAAA;AL0nDZ;;ACpoDI;EIGI;IAOI,0BAAA;EL+nDV;EKtoDM;IAOI,gCAAA;ELkoDV;EKzoDM;IAOI,yBAAA;ELqoDV;EK5oDM;IAOI,wBAAA;ELwoDV;EK/oDM;IAOI,+BAAA;EL2oDV;EKlpDM;IAOI,yBAAA;EL8oDV;EKrpDM;IAOI,6BAAA;ELipDV;EKxpDM;IAOI,8BAAA;ELopDV;EK3pDM;IAOI,wBAAA;ELupDV;EK9pDM;IAOI,+BAAA;EL0pDV;EKjqDM;IAOI,wBAAA;EL6pDV;EKpqDM;IAOI,yBAAA;ELgqDV;EKvqDM;IAOI,8BAAA;ELmqDV;EK1qDM;IAOI,iCAAA;ELsqDV;EK7qDM;IAOI,sCAAA;ELyqDV;EKhrDM;IAOI,yCAAA;EL4qDV;EKnrDM;IAOI,uBAAA;EL+qDV;EKtrDM;IAOI,uBAAA;ELkrDV;EKzrDM;IAOI,yBAAA;ELqrDV;EK5rDM;IAOI,yBAAA;ELwrDV;EK/rDM;IAOI,0BAAA;EL2rDV;EKlsDM;IAOI,4BAAA;EL8rDV;EKrsDM;IAOI,kCAAA;ELisDV;EKxsDM;IAOI,sCAAA;ELosDV;EK3sDM;IAOI,oCAAA;ELusDV;EK9sDM;IAOI,kCAAA;EL0sDV;EKjtDM;IAOI,yCAAA;EL6sDV;EKptDM;IAOI,wCAAA;ELgtDV;EKvtDM;IAOI,wCAAA;ELmtDV;EK1tDM;IAOI,kCAAA;ELstDV;EK7tDM;IAOI,gCAAA;ELytDV;EKhuDM;IAOI,8BAAA;EL4tDV;EKnuDM;IAOI,gCAAA;EL+tDV;EKtuDM;IAOI,+BAAA;ELkuDV;EKzuDM;IAOI,oCAAA;ELquDV;EK5uDM;IAOI,kCAAA;ELwuDV;EK/uDM;IAOI,gCAAA;EL2uDV;EKlvDM;IAOI,uCAAA;EL8uDV;EKrvDM;IAOI,sCAAA;ELivDV;EKxvDM;IAOI,iCAAA;ELovDV;EK3vDM;IAOI,2BAAA;ELuvDV;EK9vDM;IAOI,iCAAA;EL0vDV;EKjwDM;IAOI,+BAAA;EL6vDV;EKpwDM;IAOI,6BAAA;ELgwDV;EKvwDM;IAOI,+BAAA;ELmwDV;EK1wDM;IAOI,8BAAA;ELswDV;EK7wDM;IAOI,oBAAA;ELywDV;EKhxDM;IAOI,mBAAA;EL4wDV;EKnxDM;IAOI,mBAAA;EL+wDV;EKtxDM;IAOI,mBAAA;ELkxDV;EKzxDM;IAOI,mBAAA;ELqxDV;EK5xDM;IAOI,mBAAA;ELwxDV;EK/xDM;IAOI,mBAAA;EL2xDV;EKlyDM;IAOI,mBAAA;EL8xDV;EKryDM;IAOI,oBAAA;ELiyDV;EKxyDM;IAOI,0BAAA;ELoyDV;EK3yDM;IAOI,yBAAA;ELuyDV;EK9yDM;IAOI,uBAAA;EL0yDV;EKjzDM;IAOI,yBAAA;EL6yDV;EKpzDM;IAOI,uBAAA;ELgzDV;EKvzDM;IAOI,uBAAA;ELmzDV;EK1zDM;IAOI,yBAAA;IAAA,0BAAA;ELuzDV;EK9zDM;IAOI,+BAAA;IAAA,gCAAA;EL2zDV;EKl0DM;IAOI,8BAAA;IAAA,+BAAA;EL+zDV;EKt0DM;IAOI,4BAAA;IAAA,6BAAA;ELm0DV;EK10DM;IAOI,8BAAA;IAAA,+BAAA;ELu0DV;EK90DM;IAOI,4BAAA;IAAA,6BAAA;EL20DV;EKl1DM;IAOI,4BAAA;IAAA,6BAAA;EL+0DV;EKt1DM;IAOI,wBAAA;IAAA,2BAAA;ELm1DV;EK11DM;IAOI,8BAAA;IAAA,iCAAA;ELu1DV;EK91DM;IAOI,6BAAA;IAAA,gCAAA;EL21DV;EKl2DM;IAOI,2BAAA;IAAA,8BAAA;EL+1DV;EKt2DM;IAOI,6BAAA;IAAA,gCAAA;ELm2DV;EK12DM;IAOI,2BAAA;IAAA,8BAAA;ELu2DV;EK92DM;IAOI,2BAAA;IAAA,8BAAA;EL22DV;EKl3DM;IAOI,wBAAA;EL82DV;EKr3DM;IAOI,8BAAA;ELi3DV;EKx3DM;IAOI,6BAAA;ELo3DV;EK33DM;IAOI,2BAAA;ELu3DV;EK93DM;IAOI,6BAAA;EL03DV;EKj4DM;IAOI,2BAAA;EL63DV;EKp4DM;IAOI,2BAAA;ELg4DV;EKv4DM;IAOI,yBAAA;ELm4DV;EK14DM;IAOI,+BAAA;ELs4DV;EK74DM;IAOI,8BAAA;ELy4DV;EKh5DM;IAOI,4BAAA;EL44DV;EKn5DM;IAOI,8BAAA;EL+4DV;EKt5DM;IAOI,4BAAA;ELk5DV;EKz5DM;IAOI,4BAAA;ELq5DV;EK55DM;IAOI,2BAAA;ELw5DV;EK/5DM;IAOI,iCAAA;EL25DV;EKl6DM;IAOI,gCAAA;EL85DV;EKr6DM;IAOI,8BAAA;ELi6DV;EKx6DM;IAOI,gCAAA;ELo6DV;EK36DM;IAOI,8BAAA;ELu6DV;EK96DM;IAOI,8BAAA;EL06DV;EKj7DM;IAOI,0BAAA;EL66DV;EKp7DM;IAOI,gCAAA;ELg7DV;EKv7DM;IAOI,+BAAA;ELm7DV;EK17DM;IAOI,6BAAA;ELs7DV;EK77DM;IAOI,+BAAA;ELy7DV;EKh8DM;IAOI,6BAAA;EL47DV;EKn8DM;IAOI,6BAAA;EL+7DV;EKt8DM;IAOI,qBAAA;ELk8DV;EKz8DM;IAOI,2BAAA;ELq8DV;EK58DM;IAOI,0BAAA;ELw8DV;EK/8DM;IAOI,wBAAA;EL28DV;EKl9DM;IAOI,0BAAA;EL88DV;EKr9DM;IAOI,wBAAA;ELi9DV;EKx9DM;IAOI,0BAAA;IAAA,2BAAA;ELq9DV;EK59DM;IAOI,gCAAA;IAAA,iCAAA;ELy9DV;EKh+DM;IAOI,+BAAA;IAAA,gCAAA;EL69DV;EKp+DM;IAOI,6BAAA;IAAA,8BAAA;ELi+DV;EKx+DM;IAOI,+BAAA;IAAA,gCAAA;ELq+DV;EK5+DM;IAOI,6BAAA;IAAA,8BAAA;ELy+DV;EKh/DM;IAOI,yBAAA;IAAA,4BAAA;EL6+DV;EKp/DM;IAOI,+BAAA;IAAA,kCAAA;ELi/DV;EKx/DM;IAOI,8BAAA;IAAA,iCAAA;ELq/DV;EK5/DM;IAOI,4BAAA;IAAA,+BAAA;ELy/DV;EKhgEM;IAOI,8BAAA;IAAA,iCAAA;EL6/DV;EKpgEM;IAOI,4BAAA;IAAA,+BAAA;ELigEV;EKxgEM;IAOI,yBAAA;ELogEV;EK3gEM;IAOI,+BAAA;ELugEV;EK9gEM;IAOI,8BAAA;EL0gEV;EKjhEM;IAOI,4BAAA;EL6gEV;EKphEM;IAOI,8BAAA;ELghEV;EKvhEM;IAOI,4BAAA;ELmhEV;EK1hEM;IAOI,0BAAA;ELshEV;EK7hEM;IAOI,gCAAA;ELyhEV;EKhiEM;IAOI,+BAAA;EL4hEV;EKniEM;IAOI,6BAAA;EL+hEV;EKtiEM;IAOI,+BAAA;ELkiEV;EKziEM;IAOI,6BAAA;ELqiEV;EK5iEM;IAOI,4BAAA;ELwiEV;EK/iEM;IAOI,kCAAA;EL2iEV;EKljEM;IAOI,iCAAA;EL8iEV;EKrjEM;IAOI,+BAAA;ELijEV;EKxjEM;IAOI,iCAAA;ELojEV;EK3jEM;IAOI,+BAAA;ELujEV;EK9jEM;IAOI,2BAAA;EL0jEV;EKjkEM;IAOI,iCAAA;EL6jEV;EKpkEM;IAOI,gCAAA;ELgkEV;EKvkEM;IAOI,8BAAA;ELmkEV;EK1kEM;IAOI,gCAAA;ELskEV;EK7kEM;IAOI,8BAAA;ELykEV;AACF;ACplEI;EIGI;IAOI,0BAAA;EL8kEV;EKrlEM;IAOI,gCAAA;ELilEV;EKxlEM;IAOI,yBAAA;ELolEV;EK3lEM;IAOI,wBAAA;ELulEV;EK9lEM;IAOI,+BAAA;EL0lEV;EKjmEM;IAOI,yBAAA;EL6lEV;EKpmEM;IAOI,6BAAA;ELgmEV;EKvmEM;IAOI,8BAAA;ELmmEV;EK1mEM;IAOI,wBAAA;ELsmEV;EK7mEM;IAOI,+BAAA;ELymEV;EKhnEM;IAOI,wBAAA;EL4mEV;EKnnEM;IAOI,yBAAA;EL+mEV;EKtnEM;IAOI,8BAAA;ELknEV;EKznEM;IAOI,iCAAA;ELqnEV;EK5nEM;IAOI,sCAAA;ELwnEV;EK/nEM;IAOI,yCAAA;EL2nEV;EKloEM;IAOI,uBAAA;EL8nEV;EKroEM;IAOI,uBAAA;ELioEV;EKxoEM;IAOI,yBAAA;ELooEV;EK3oEM;IAOI,yBAAA;ELuoEV;EK9oEM;IAOI,0BAAA;EL0oEV;EKjpEM;IAOI,4BAAA;EL6oEV;EKppEM;IAOI,kCAAA;ELgpEV;EKvpEM;IAOI,sCAAA;ELmpEV;EK1pEM;IAOI,oCAAA;ELspEV;EK7pEM;IAOI,kCAAA;ELypEV;EKhqEM;IAOI,yCAAA;EL4pEV;EKnqEM;IAOI,wCAAA;EL+pEV;EKtqEM;IAOI,wCAAA;ELkqEV;EKzqEM;IAOI,kCAAA;ELqqEV;EK5qEM;IAOI,gCAAA;ELwqEV;EK/qEM;IAOI,8BAAA;EL2qEV;EKlrEM;IAOI,gCAAA;EL8qEV;EKrrEM;IAOI,+BAAA;ELirEV;EKxrEM;IAOI,oCAAA;ELorEV;EK3rEM;IAOI,kCAAA;ELurEV;EK9rEM;IAOI,gCAAA;EL0rEV;EKjsEM;IAOI,uCAAA;EL6rEV;EKpsEM;IAOI,sCAAA;ELgsEV;EKvsEM;IAOI,iCAAA;ELmsEV;EK1sEM;IAOI,2BAAA;ELssEV;EK7sEM;IAOI,iCAAA;ELysEV;EKhtEM;IAOI,+BAAA;EL4sEV;EKntEM;IAOI,6BAAA;EL+sEV;EKttEM;IAOI,+BAAA;ELktEV;EKztEM;IAOI,8BAAA;ELqtEV;EK5tEM;IAOI,oBAAA;ELwtEV;EK/tEM;IAOI,mBAAA;EL2tEV;EKluEM;IAOI,mBAAA;EL8tEV;EKruEM;IAOI,mBAAA;ELiuEV;EKxuEM;IAOI,mBAAA;ELouEV;EK3uEM;IAOI,mBAAA;ELuuEV;EK9uEM;IAOI,mBAAA;EL0uEV;EKjvEM;IAOI,mBAAA;EL6uEV;EKpvEM;IAOI,oBAAA;ELgvEV;EKvvEM;IAOI,0BAAA;ELmvEV;EK1vEM;IAOI,yBAAA;ELsvEV;EK7vEM;IAOI,uBAAA;ELyvEV;EKhwEM;IAOI,yBAAA;EL4vEV;EKnwEM;IAOI,uBAAA;EL+vEV;EKtwEM;IAOI,uBAAA;ELkwEV;EKzwEM;IAOI,yBAAA;IAAA,0BAAA;ELswEV;EK7wEM;IAOI,+BAAA;IAAA,gCAAA;EL0wEV;EKjxEM;IAOI,8BAAA;IAAA,+BAAA;EL8wEV;EKrxEM;IAOI,4BAAA;IAAA,6BAAA;ELkxEV;EKzxEM;IAOI,8BAAA;IAAA,+BAAA;ELsxEV;EK7xEM;IAOI,4BAAA;IAAA,6BAAA;EL0xEV;EKjyEM;IAOI,4BAAA;IAAA,6BAAA;EL8xEV;EKryEM;IAOI,wBAAA;IAAA,2BAAA;ELkyEV;EKzyEM;IAOI,8BAAA;IAAA,iCAAA;ELsyEV;EK7yEM;IAOI,6BAAA;IAAA,gCAAA;EL0yEV;EKjzEM;IAOI,2BAAA;IAAA,8BAAA;EL8yEV;EKrzEM;IAOI,6BAAA;IAAA,gCAAA;ELkzEV;EKzzEM;IAOI,2BAAA;IAAA,8BAAA;ELszEV;EK7zEM;IAOI,2BAAA;IAAA,8BAAA;EL0zEV;EKj0EM;IAOI,wBAAA;EL6zEV;EKp0EM;IAOI,8BAAA;ELg0EV;EKv0EM;IAOI,6BAAA;ELm0EV;EK10EM;IAOI,2BAAA;ELs0EV;EK70EM;IAOI,6BAAA;ELy0EV;EKh1EM;IAOI,2BAAA;EL40EV;EKn1EM;IAOI,2BAAA;EL+0EV;EKt1EM;IAOI,yBAAA;ELk1EV;EKz1EM;IAOI,+BAAA;ELq1EV;EK51EM;IAOI,8BAAA;ELw1EV;EK/1EM;IAOI,4BAAA;EL21EV;EKl2EM;IAOI,8BAAA;EL81EV;EKr2EM;IAOI,4BAAA;ELi2EV;EKx2EM;IAOI,4BAAA;ELo2EV;EK32EM;IAOI,2BAAA;ELu2EV;EK92EM;IAOI,iCAAA;EL02EV;EKj3EM;IAOI,gCAAA;EL62EV;EKp3EM;IAOI,8BAAA;ELg3EV;EKv3EM;IAOI,gCAAA;ELm3EV;EK13EM;IAOI,8BAAA;ELs3EV;EK73EM;IAOI,8BAAA;ELy3EV;EKh4EM;IAOI,0BAAA;EL43EV;EKn4EM;IAOI,gCAAA;EL+3EV;EKt4EM;IAOI,+BAAA;ELk4EV;EKz4EM;IAOI,6BAAA;ELq4EV;EK54EM;IAOI,+BAAA;ELw4EV;EK/4EM;IAOI,6BAAA;EL24EV;EKl5EM;IAOI,6BAAA;EL84EV;EKr5EM;IAOI,qBAAA;ELi5EV;EKx5EM;IAOI,2BAAA;ELo5EV;EK35EM;IAOI,0BAAA;ELu5EV;EK95EM;IAOI,wBAAA;EL05EV;EKj6EM;IAOI,0BAAA;EL65EV;EKp6EM;IAOI,wBAAA;ELg6EV;EKv6EM;IAOI,0BAAA;IAAA,2BAAA;ELo6EV;EK36EM;IAOI,gCAAA;IAAA,iCAAA;ELw6EV;EK/6EM;IAOI,+BAAA;IAAA,gCAAA;EL46EV;EKn7EM;IAOI,6BAAA;IAAA,8BAAA;ELg7EV;EKv7EM;IAOI,+BAAA;IAAA,gCAAA;ELo7EV;EK37EM;IAOI,6BAAA;IAAA,8BAAA;ELw7EV;EK/7EM;IAOI,yBAAA;IAAA,4BAAA;EL47EV;EKn8EM;IAOI,+BAAA;IAAA,kCAAA;ELg8EV;EKv8EM;IAOI,8BAAA;IAAA,iCAAA;ELo8EV;EK38EM;IAOI,4BAAA;IAAA,+BAAA;ELw8EV;EK/8EM;IAOI,8BAAA;IAAA,iCAAA;EL48EV;EKn9EM;IAOI,4BAAA;IAAA,+BAAA;ELg9EV;EKv9EM;IAOI,yBAAA;ELm9EV;EK19EM;IAOI,+BAAA;ELs9EV;EK79EM;IAOI,8BAAA;ELy9EV;EKh+EM;IAOI,4BAAA;EL49EV;EKn+EM;IAOI,8BAAA;EL+9EV;EKt+EM;IAOI,4BAAA;ELk+EV;EKz+EM;IAOI,0BAAA;ELq+EV;EK5+EM;IAOI,gCAAA;ELw+EV;EK/+EM;IAOI,+BAAA;EL2+EV;EKl/EM;IAOI,6BAAA;EL8+EV;EKr/EM;IAOI,+BAAA;ELi/EV;EKx/EM;IAOI,6BAAA;ELo/EV;EK3/EM;IAOI,4BAAA;ELu/EV;EK9/EM;IAOI,kCAAA;EL0/EV;EKjgFM;IAOI,iCAAA;EL6/EV;EKpgFM;IAOI,+BAAA;ELggFV;EKvgFM;IAOI,iCAAA;ELmgFV;EK1gFM;IAOI,+BAAA;ELsgFV;EK7gFM;IAOI,2BAAA;ELygFV;EKhhFM;IAOI,iCAAA;EL4gFV;EKnhFM;IAOI,gCAAA;EL+gFV;EKthFM;IAOI,8BAAA;ELkhFV;EKzhFM;IAOI,gCAAA;ELqhFV;EK5hFM;IAOI,8BAAA;ELwhFV;AACF;ACniFI;EIGI;IAOI,0BAAA;EL6hFV;EKpiFM;IAOI,gCAAA;ELgiFV;EKviFM;IAOI,yBAAA;ELmiFV;EK1iFM;IAOI,wBAAA;ELsiFV;EK7iFM;IAOI,+BAAA;ELyiFV;EKhjFM;IAOI,yBAAA;EL4iFV;EKnjFM;IAOI,6BAAA;EL+iFV;EKtjFM;IAOI,8BAAA;ELkjFV;EKzjFM;IAOI,wBAAA;ELqjFV;EK5jFM;IAOI,+BAAA;ELwjFV;EK/jFM;IAOI,wBAAA;EL2jFV;EKlkFM;IAOI,yBAAA;EL8jFV;EKrkFM;IAOI,8BAAA;ELikFV;EKxkFM;IAOI,iCAAA;ELokFV;EK3kFM;IAOI,sCAAA;ELukFV;EK9kFM;IAOI,yCAAA;EL0kFV;EKjlFM;IAOI,uBAAA;EL6kFV;EKplFM;IAOI,uBAAA;ELglFV;EKvlFM;IAOI,yBAAA;ELmlFV;EK1lFM;IAOI,yBAAA;ELslFV;EK7lFM;IAOI,0BAAA;ELylFV;EKhmFM;IAOI,4BAAA;EL4lFV;EKnmFM;IAOI,kCAAA;EL+lFV;EKtmFM;IAOI,sCAAA;ELkmFV;EKzmFM;IAOI,oCAAA;ELqmFV;EK5mFM;IAOI,kCAAA;ELwmFV;EK/mFM;IAOI,yCAAA;EL2mFV;EKlnFM;IAOI,wCAAA;EL8mFV;EKrnFM;IAOI,wCAAA;ELinFV;EKxnFM;IAOI,kCAAA;ELonFV;EK3nFM;IAOI,gCAAA;ELunFV;EK9nFM;IAOI,8BAAA;EL0nFV;EKjoFM;IAOI,gCAAA;EL6nFV;EKpoFM;IAOI,+BAAA;ELgoFV;EKvoFM;IAOI,oCAAA;ELmoFV;EK1oFM;IAOI,kCAAA;ELsoFV;EK7oFM;IAOI,gCAAA;ELyoFV;EKhpFM;IAOI,uCAAA;EL4oFV;EKnpFM;IAOI,sCAAA;EL+oFV;EKtpFM;IAOI,iCAAA;ELkpFV;EKzpFM;IAOI,2BAAA;ELqpFV;EK5pFM;IAOI,iCAAA;ELwpFV;EK/pFM;IAOI,+BAAA;EL2pFV;EKlqFM;IAOI,6BAAA;EL8pFV;EKrqFM;IAOI,+BAAA;ELiqFV;EKxqFM;IAOI,8BAAA;ELoqFV;EK3qFM;IAOI,oBAAA;ELuqFV;EK9qFM;IAOI,mBAAA;EL0qFV;EKjrFM;IAOI,mBAAA;EL6qFV;EKprFM;IAOI,mBAAA;ELgrFV;EKvrFM;IAOI,mBAAA;ELmrFV;EK1rFM;IAOI,mBAAA;ELsrFV;EK7rFM;IAOI,mBAAA;ELyrFV;EKhsFM;IAOI,mBAAA;EL4rFV;EKnsFM;IAOI,oBAAA;EL+rFV;EKtsFM;IAOI,0BAAA;ELksFV;EKzsFM;IAOI,yBAAA;ELqsFV;EK5sFM;IAOI,uBAAA;ELwsFV;EK/sFM;IAOI,yBAAA;EL2sFV;EKltFM;IAOI,uBAAA;EL8sFV;EKrtFM;IAOI,uBAAA;ELitFV;EKxtFM;IAOI,yBAAA;IAAA,0BAAA;ELqtFV;EK5tFM;IAOI,+BAAA;IAAA,gCAAA;ELytFV;EKhuFM;IAOI,8BAAA;IAAA,+BAAA;EL6tFV;EKpuFM;IAOI,4BAAA;IAAA,6BAAA;ELiuFV;EKxuFM;IAOI,8BAAA;IAAA,+BAAA;ELquFV;EK5uFM;IAOI,4BAAA;IAAA,6BAAA;ELyuFV;EKhvFM;IAOI,4BAAA;IAAA,6BAAA;EL6uFV;EKpvFM;IAOI,wBAAA;IAAA,2BAAA;ELivFV;EKxvFM;IAOI,8BAAA;IAAA,iCAAA;ELqvFV;EK5vFM;IAOI,6BAAA;IAAA,gCAAA;ELyvFV;EKhwFM;IAOI,2BAAA;IAAA,8BAAA;EL6vFV;EKpwFM;IAOI,6BAAA;IAAA,gCAAA;ELiwFV;EKxwFM;IAOI,2BAAA;IAAA,8BAAA;ELqwFV;EK5wFM;IAOI,2BAAA;IAAA,8BAAA;ELywFV;EKhxFM;IAOI,wBAAA;EL4wFV;EKnxFM;IAOI,8BAAA;EL+wFV;EKtxFM;IAOI,6BAAA;ELkxFV;EKzxFM;IAOI,2BAAA;ELqxFV;EK5xFM;IAOI,6BAAA;ELwxFV;EK/xFM;IAOI,2BAAA;EL2xFV;EKlyFM;IAOI,2BAAA;EL8xFV;EKryFM;IAOI,yBAAA;ELiyFV;EKxyFM;IAOI,+BAAA;ELoyFV;EK3yFM;IAOI,8BAAA;ELuyFV;EK9yFM;IAOI,4BAAA;EL0yFV;EKjzFM;IAOI,8BAAA;EL6yFV;EKpzFM;IAOI,4BAAA;ELgzFV;EKvzFM;IAOI,4BAAA;ELmzFV;EK1zFM;IAOI,2BAAA;ELszFV;EK7zFM;IAOI,iCAAA;ELyzFV;EKh0FM;IAOI,gCAAA;EL4zFV;EKn0FM;IAOI,8BAAA;EL+zFV;EKt0FM;IAOI,gCAAA;ELk0FV;EKz0FM;IAOI,8BAAA;ELq0FV;EK50FM;IAOI,8BAAA;ELw0FV;EK/0FM;IAOI,0BAAA;EL20FV;EKl1FM;IAOI,gCAAA;EL80FV;EKr1FM;IAOI,+BAAA;ELi1FV;EKx1FM;IAOI,6BAAA;ELo1FV;EK31FM;IAOI,+BAAA;ELu1FV;EK91FM;IAOI,6BAAA;EL01FV;EKj2FM;IAOI,6BAAA;EL61FV;EKp2FM;IAOI,qBAAA;ELg2FV;EKv2FM;IAOI,2BAAA;ELm2FV;EK12FM;IAOI,0BAAA;ELs2FV;EK72FM;IAOI,wBAAA;ELy2FV;EKh3FM;IAOI,0BAAA;EL42FV;EKn3FM;IAOI,wBAAA;EL+2FV;EKt3FM;IAOI,0BAAA;IAAA,2BAAA;ELm3FV;EK13FM;IAOI,gCAAA;IAAA,iCAAA;ELu3FV;EK93FM;IAOI,+BAAA;IAAA,gCAAA;EL23FV;EKl4FM;IAOI,6BAAA;IAAA,8BAAA;EL+3FV;EKt4FM;IAOI,+BAAA;IAAA,gCAAA;ELm4FV;EK14FM;IAOI,6BAAA;IAAA,8BAAA;ELu4FV;EK94FM;IAOI,yBAAA;IAAA,4BAAA;EL24FV;EKl5FM;IAOI,+BAAA;IAAA,kCAAA;EL+4FV;EKt5FM;IAOI,8BAAA;IAAA,iCAAA;ELm5FV;EK15FM;IAOI,4BAAA;IAAA,+BAAA;ELu5FV;EK95FM;IAOI,8BAAA;IAAA,iCAAA;EL25FV;EKl6FM;IAOI,4BAAA;IAAA,+BAAA;EL+5FV;EKt6FM;IAOI,yBAAA;ELk6FV;EKz6FM;IAOI,+BAAA;ELq6FV;EK56FM;IAOI,8BAAA;ELw6FV;EK/6FM;IAOI,4BAAA;EL26FV;EKl7FM;IAOI,8BAAA;EL86FV;EKr7FM;IAOI,4BAAA;ELi7FV;EKx7FM;IAOI,0BAAA;ELo7FV;EK37FM;IAOI,gCAAA;ELu7FV;EK97FM;IAOI,+BAAA;EL07FV;EKj8FM;IAOI,6BAAA;EL67FV;EKp8FM;IAOI,+BAAA;ELg8FV;EKv8FM;IAOI,6BAAA;ELm8FV;EK18FM;IAOI,4BAAA;ELs8FV;EK78FM;IAOI,kCAAA;ELy8FV;EKh9FM;IAOI,iCAAA;EL48FV;EKn9FM;IAOI,+BAAA;EL+8FV;EKt9FM;IAOI,iCAAA;ELk9FV;EKz9FM;IAOI,+BAAA;ELq9FV;EK59FM;IAOI,2BAAA;ELw9FV;EK/9FM;IAOI,iCAAA;EL29FV;EKl+FM;IAOI,gCAAA;EL89FV;EKr+FM;IAOI,8BAAA;ELi+FV;EKx+FM;IAOI,gCAAA;ELo+FV;EK3+FM;IAOI,8BAAA;ELu+FV;AACF;ACl/FI;EIGI;IAOI,0BAAA;EL4+FV;EKn/FM;IAOI,gCAAA;EL++FV;EKt/FM;IAOI,yBAAA;ELk/FV;EKz/FM;IAOI,wBAAA;ELq/FV;EK5/FM;IAOI,+BAAA;ELw/FV;EK//FM;IAOI,yBAAA;EL2/FV;EKlgGM;IAOI,6BAAA;EL8/FV;EKrgGM;IAOI,8BAAA;ELigGV;EKxgGM;IAOI,wBAAA;ELogGV;EK3gGM;IAOI,+BAAA;ELugGV;EK9gGM;IAOI,wBAAA;EL0gGV;EKjhGM;IAOI,yBAAA;EL6gGV;EKphGM;IAOI,8BAAA;ELghGV;EKvhGM;IAOI,iCAAA;ELmhGV;EK1hGM;IAOI,sCAAA;ELshGV;EK7hGM;IAOI,yCAAA;ELyhGV;EKhiGM;IAOI,uBAAA;EL4hGV;EKniGM;IAOI,uBAAA;EL+hGV;EKtiGM;IAOI,yBAAA;ELkiGV;EKziGM;IAOI,yBAAA;ELqiGV;EK5iGM;IAOI,0BAAA;ELwiGV;EK/iGM;IAOI,4BAAA;EL2iGV;EKljGM;IAOI,kCAAA;EL8iGV;EKrjGM;IAOI,sCAAA;ELijGV;EKxjGM;IAOI,oCAAA;ELojGV;EK3jGM;IAOI,kCAAA;ELujGV;EK9jGM;IAOI,yCAAA;EL0jGV;EKjkGM;IAOI,wCAAA;EL6jGV;EKpkGM;IAOI,wCAAA;ELgkGV;EKvkGM;IAOI,kCAAA;ELmkGV;EK1kGM;IAOI,gCAAA;ELskGV;EK7kGM;IAOI,8BAAA;ELykGV;EKhlGM;IAOI,gCAAA;EL4kGV;EKnlGM;IAOI,+BAAA;EL+kGV;EKtlGM;IAOI,oCAAA;ELklGV;EKzlGM;IAOI,kCAAA;ELqlGV;EK5lGM;IAOI,gCAAA;ELwlGV;EK/lGM;IAOI,uCAAA;EL2lGV;EKlmGM;IAOI,sCAAA;EL8lGV;EKrmGM;IAOI,iCAAA;ELimGV;EKxmGM;IAOI,2BAAA;ELomGV;EK3mGM;IAOI,iCAAA;ELumGV;EK9mGM;IAOI,+BAAA;EL0mGV;EKjnGM;IAOI,6BAAA;EL6mGV;EKpnGM;IAOI,+BAAA;ELgnGV;EKvnGM;IAOI,8BAAA;ELmnGV;EK1nGM;IAOI,oBAAA;ELsnGV;EK7nGM;IAOI,mBAAA;ELynGV;EKhoGM;IAOI,mBAAA;EL4nGV;EKnoGM;IAOI,mBAAA;EL+nGV;EKtoGM;IAOI,mBAAA;ELkoGV;EKzoGM;IAOI,mBAAA;ELqoGV;EK5oGM;IAOI,mBAAA;ELwoGV;EK/oGM;IAOI,mBAAA;EL2oGV;EKlpGM;IAOI,oBAAA;EL8oGV;EKrpGM;IAOI,0BAAA;ELipGV;EKxpGM;IAOI,yBAAA;ELopGV;EK3pGM;IAOI,uBAAA;ELupGV;EK9pGM;IAOI,yBAAA;EL0pGV;EKjqGM;IAOI,uBAAA;EL6pGV;EKpqGM;IAOI,uBAAA;ELgqGV;EKvqGM;IAOI,yBAAA;IAAA,0BAAA;ELoqGV;EK3qGM;IAOI,+BAAA;IAAA,gCAAA;ELwqGV;EK/qGM;IAOI,8BAAA;IAAA,+BAAA;EL4qGV;EKnrGM;IAOI,4BAAA;IAAA,6BAAA;ELgrGV;EKvrGM;IAOI,8BAAA;IAAA,+BAAA;ELorGV;EK3rGM;IAOI,4BAAA;IAAA,6BAAA;ELwrGV;EK/rGM;IAOI,4BAAA;IAAA,6BAAA;EL4rGV;EKnsGM;IAOI,wBAAA;IAAA,2BAAA;ELgsGV;EKvsGM;IAOI,8BAAA;IAAA,iCAAA;ELosGV;EK3sGM;IAOI,6BAAA;IAAA,gCAAA;ELwsGV;EK/sGM;IAOI,2BAAA;IAAA,8BAAA;EL4sGV;EKntGM;IAOI,6BAAA;IAAA,gCAAA;ELgtGV;EKvtGM;IAOI,2BAAA;IAAA,8BAAA;ELotGV;EK3tGM;IAOI,2BAAA;IAAA,8BAAA;ELwtGV;EK/tGM;IAOI,wBAAA;EL2tGV;EKluGM;IAOI,8BAAA;EL8tGV;EKruGM;IAOI,6BAAA;ELiuGV;EKxuGM;IAOI,2BAAA;ELouGV;EK3uGM;IAOI,6BAAA;ELuuGV;EK9uGM;IAOI,2BAAA;EL0uGV;EKjvGM;IAOI,2BAAA;EL6uGV;EKpvGM;IAOI,yBAAA;ELgvGV;EKvvGM;IAOI,+BAAA;ELmvGV;EK1vGM;IAOI,8BAAA;ELsvGV;EK7vGM;IAOI,4BAAA;ELyvGV;EKhwGM;IAOI,8BAAA;EL4vGV;EKnwGM;IAOI,4BAAA;EL+vGV;EKtwGM;IAOI,4BAAA;ELkwGV;EKzwGM;IAOI,2BAAA;ELqwGV;EK5wGM;IAOI,iCAAA;ELwwGV;EK/wGM;IAOI,gCAAA;EL2wGV;EKlxGM;IAOI,8BAAA;EL8wGV;EKrxGM;IAOI,gCAAA;ELixGV;EKxxGM;IAOI,8BAAA;ELoxGV;EK3xGM;IAOI,8BAAA;ELuxGV;EK9xGM;IAOI,0BAAA;EL0xGV;EKjyGM;IAOI,gCAAA;EL6xGV;EKpyGM;IAOI,+BAAA;ELgyGV;EKvyGM;IAOI,6BAAA;ELmyGV;EK1yGM;IAOI,+BAAA;ELsyGV;EK7yGM;IAOI,6BAAA;ELyyGV;EKhzGM;IAOI,6BAAA;EL4yGV;EKnzGM;IAOI,qBAAA;EL+yGV;EKtzGM;IAOI,2BAAA;ELkzGV;EKzzGM;IAOI,0BAAA;ELqzGV;EK5zGM;IAOI,wBAAA;ELwzGV;EK/zGM;IAOI,0BAAA;EL2zGV;EKl0GM;IAOI,wBAAA;EL8zGV;EKr0GM;IAOI,0BAAA;IAAA,2BAAA;ELk0GV;EKz0GM;IAOI,gCAAA;IAAA,iCAAA;ELs0GV;EK70GM;IAOI,+BAAA;IAAA,gCAAA;EL00GV;EKj1GM;IAOI,6BAAA;IAAA,8BAAA;EL80GV;EKr1GM;IAOI,+BAAA;IAAA,gCAAA;ELk1GV;EKz1GM;IAOI,6BAAA;IAAA,8BAAA;ELs1GV;EK71GM;IAOI,yBAAA;IAAA,4BAAA;EL01GV;EKj2GM;IAOI,+BAAA;IAAA,kCAAA;EL81GV;EKr2GM;IAOI,8BAAA;IAAA,iCAAA;ELk2GV;EKz2GM;IAOI,4BAAA;IAAA,+BAAA;ELs2GV;EK72GM;IAOI,8BAAA;IAAA,iCAAA;EL02GV;EKj3GM;IAOI,4BAAA;IAAA,+BAAA;EL82GV;EKr3GM;IAOI,yBAAA;ELi3GV;EKx3GM;IAOI,+BAAA;ELo3GV;EK33GM;IAOI,8BAAA;ELu3GV;EK93GM;IAOI,4BAAA;EL03GV;EKj4GM;IAOI,8BAAA;EL63GV;EKp4GM;IAOI,4BAAA;ELg4GV;EKv4GM;IAOI,0BAAA;ELm4GV;EK14GM;IAOI,gCAAA;ELs4GV;EK74GM;IAOI,+BAAA;ELy4GV;EKh5GM;IAOI,6BAAA;EL44GV;EKn5GM;IAOI,+BAAA;EL+4GV;EKt5GM;IAOI,6BAAA;ELk5GV;EKz5GM;IAOI,4BAAA;ELq5GV;EK55GM;IAOI,kCAAA;ELw5GV;EK/5GM;IAOI,iCAAA;EL25GV;EKl6GM;IAOI,+BAAA;EL85GV;EKr6GM;IAOI,iCAAA;ELi6GV;EKx6GM;IAOI,+BAAA;ELo6GV;EK36GM;IAOI,2BAAA;ELu6GV;EK96GM;IAOI,iCAAA;EL06GV;EKj7GM;IAOI,gCAAA;EL66GV;EKp7GM;IAOI,8BAAA;ELg7GV;EKv7GM;IAOI,gCAAA;ELm7GV;EK17GM;IAOI,8BAAA;ELs7GV;AACF;ACj8GI;EIGI;IAOI,0BAAA;EL27GV;EKl8GM;IAOI,gCAAA;EL87GV;EKr8GM;IAOI,yBAAA;ELi8GV;EKx8GM;IAOI,wBAAA;ELo8GV;EK38GM;IAOI,+BAAA;ELu8GV;EK98GM;IAOI,yBAAA;EL08GV;EKj9GM;IAOI,6BAAA;EL68GV;EKp9GM;IAOI,8BAAA;ELg9GV;EKv9GM;IAOI,wBAAA;ELm9GV;EK19GM;IAOI,+BAAA;ELs9GV;EK79GM;IAOI,wBAAA;ELy9GV;EKh+GM;IAOI,yBAAA;EL49GV;EKn+GM;IAOI,8BAAA;EL+9GV;EKt+GM;IAOI,iCAAA;ELk+GV;EKz+GM;IAOI,sCAAA;ELq+GV;EK5+GM;IAOI,yCAAA;ELw+GV;EK/+GM;IAOI,uBAAA;EL2+GV;EKl/GM;IAOI,uBAAA;EL8+GV;EKr/GM;IAOI,yBAAA;ELi/GV;EKx/GM;IAOI,yBAAA;ELo/GV;EK3/GM;IAOI,0BAAA;ELu/GV;EK9/GM;IAOI,4BAAA;EL0/GV;EKjgHM;IAOI,kCAAA;EL6/GV;EKpgHM;IAOI,sCAAA;ELggHV;EKvgHM;IAOI,oCAAA;ELmgHV;EK1gHM;IAOI,kCAAA;ELsgHV;EK7gHM;IAOI,yCAAA;ELygHV;EKhhHM;IAOI,wCAAA;EL4gHV;EKnhHM;IAOI,wCAAA;EL+gHV;EKthHM;IAOI,kCAAA;ELkhHV;EKzhHM;IAOI,gCAAA;ELqhHV;EK5hHM;IAOI,8BAAA;ELwhHV;EK/hHM;IAOI,gCAAA;EL2hHV;EKliHM;IAOI,+BAAA;EL8hHV;EKriHM;IAOI,oCAAA;ELiiHV;EKxiHM;IAOI,kCAAA;ELoiHV;EK3iHM;IAOI,gCAAA;ELuiHV;EK9iHM;IAOI,uCAAA;EL0iHV;EKjjHM;IAOI,sCAAA;EL6iHV;EKpjHM;IAOI,iCAAA;ELgjHV;EKvjHM;IAOI,2BAAA;ELmjHV;EK1jHM;IAOI,iCAAA;ELsjHV;EK7jHM;IAOI,+BAAA;ELyjHV;EKhkHM;IAOI,6BAAA;EL4jHV;EKnkHM;IAOI,+BAAA;EL+jHV;EKtkHM;IAOI,8BAAA;ELkkHV;EKzkHM;IAOI,oBAAA;ELqkHV;EK5kHM;IAOI,mBAAA;ELwkHV;EK/kHM;IAOI,mBAAA;EL2kHV;EKllHM;IAOI,mBAAA;EL8kHV;EKrlHM;IAOI,mBAAA;ELilHV;EKxlHM;IAOI,mBAAA;ELolHV;EK3lHM;IAOI,mBAAA;ELulHV;EK9lHM;IAOI,mBAAA;EL0lHV;EKjmHM;IAOI,oBAAA;EL6lHV;EKpmHM;IAOI,0BAAA;ELgmHV;EKvmHM;IAOI,yBAAA;ELmmHV;EK1mHM;IAOI,uBAAA;ELsmHV;EK7mHM;IAOI,yBAAA;ELymHV;EKhnHM;IAOI,uBAAA;EL4mHV;EKnnHM;IAOI,uBAAA;EL+mHV;EKtnHM;IAOI,yBAAA;IAAA,0BAAA;ELmnHV;EK1nHM;IAOI,+BAAA;IAAA,gCAAA;ELunHV;EK9nHM;IAOI,8BAAA;IAAA,+BAAA;EL2nHV;EKloHM;IAOI,4BAAA;IAAA,6BAAA;EL+nHV;EKtoHM;IAOI,8BAAA;IAAA,+BAAA;ELmoHV;EK1oHM;IAOI,4BAAA;IAAA,6BAAA;ELuoHV;EK9oHM;IAOI,4BAAA;IAAA,6BAAA;EL2oHV;EKlpHM;IAOI,wBAAA;IAAA,2BAAA;EL+oHV;EKtpHM;IAOI,8BAAA;IAAA,iCAAA;ELmpHV;EK1pHM;IAOI,6BAAA;IAAA,gCAAA;ELupHV;EK9pHM;IAOI,2BAAA;IAAA,8BAAA;EL2pHV;EKlqHM;IAOI,6BAAA;IAAA,gCAAA;EL+pHV;EKtqHM;IAOI,2BAAA;IAAA,8BAAA;ELmqHV;EK1qHM;IAOI,2BAAA;IAAA,8BAAA;ELuqHV;EK9qHM;IAOI,wBAAA;EL0qHV;EKjrHM;IAOI,8BAAA;EL6qHV;EKprHM;IAOI,6BAAA;ELgrHV;EKvrHM;IAOI,2BAAA;ELmrHV;EK1rHM;IAOI,6BAAA;ELsrHV;EK7rHM;IAOI,2BAAA;ELyrHV;EKhsHM;IAOI,2BAAA;EL4rHV;EKnsHM;IAOI,yBAAA;EL+rHV;EKtsHM;IAOI,+BAAA;ELksHV;EKzsHM;IAOI,8BAAA;ELqsHV;EK5sHM;IAOI,4BAAA;ELwsHV;EK/sHM;IAOI,8BAAA;EL2sHV;EKltHM;IAOI,4BAAA;EL8sHV;EKrtHM;IAOI,4BAAA;ELitHV;EKxtHM;IAOI,2BAAA;ELotHV;EK3tHM;IAOI,iCAAA;ELutHV;EK9tHM;IAOI,gCAAA;EL0tHV;EKjuHM;IAOI,8BAAA;EL6tHV;EKpuHM;IAOI,gCAAA;ELguHV;EKvuHM;IAOI,8BAAA;ELmuHV;EK1uHM;IAOI,8BAAA;ELsuHV;EK7uHM;IAOI,0BAAA;ELyuHV;EKhvHM;IAOI,gCAAA;EL4uHV;EKnvHM;IAOI,+BAAA;EL+uHV;EKtvHM;IAOI,6BAAA;ELkvHV;EKzvHM;IAOI,+BAAA;ELqvHV;EK5vHM;IAOI,6BAAA;ELwvHV;EK/vHM;IAOI,6BAAA;EL2vHV;EKlwHM;IAOI,qBAAA;EL8vHV;EKrwHM;IAOI,2BAAA;ELiwHV;EKxwHM;IAOI,0BAAA;ELowHV;EK3wHM;IAOI,wBAAA;ELuwHV;EK9wHM;IAOI,0BAAA;EL0wHV;EKjxHM;IAOI,wBAAA;EL6wHV;EKpxHM;IAOI,0BAAA;IAAA,2BAAA;ELixHV;EKxxHM;IAOI,gCAAA;IAAA,iCAAA;ELqxHV;EK5xHM;IAOI,+BAAA;IAAA,gCAAA;ELyxHV;EKhyHM;IAOI,6BAAA;IAAA,8BAAA;EL6xHV;EKpyHM;IAOI,+BAAA;IAAA,gCAAA;ELiyHV;EKxyHM;IAOI,6BAAA;IAAA,8BAAA;ELqyHV;EK5yHM;IAOI,yBAAA;IAAA,4BAAA;ELyyHV;EKhzHM;IAOI,+BAAA;IAAA,kCAAA;EL6yHV;EKpzHM;IAOI,8BAAA;IAAA,iCAAA;ELizHV;EKxzHM;IAOI,4BAAA;IAAA,+BAAA;ELqzHV;EK5zHM;IAOI,8BAAA;IAAA,iCAAA;ELyzHV;EKh0HM;IAOI,4BAAA;IAAA,+BAAA;EL6zHV;EKp0HM;IAOI,yBAAA;ELg0HV;EKv0HM;IAOI,+BAAA;ELm0HV;EK10HM;IAOI,8BAAA;ELs0HV;EK70HM;IAOI,4BAAA;ELy0HV;EKh1HM;IAOI,8BAAA;EL40HV;EKn1HM;IAOI,4BAAA;EL+0HV;EKt1HM;IAOI,0BAAA;ELk1HV;EKz1HM;IAOI,gCAAA;ELq1HV;EK51HM;IAOI,+BAAA;ELw1HV;EK/1HM;IAOI,6BAAA;EL21HV;EKl2HM;IAOI,+BAAA;EL81HV;EKr2HM;IAOI,6BAAA;ELi2HV;EKx2HM;IAOI,4BAAA;ELo2HV;EK32HM;IAOI,kCAAA;ELu2HV;EK92HM;IAOI,iCAAA;EL02HV;EKj3HM;IAOI,+BAAA;EL62HV;EKp3HM;IAOI,iCAAA;ELg3HV;EKv3HM;IAOI,+BAAA;ELm3HV;EK13HM;IAOI,2BAAA;ELs3HV;EK73HM;IAOI,iCAAA;ELy3HV;EKh4HM;IAOI,gCAAA;EL43HV;EKn4HM;IAOI,8BAAA;EL+3HV;EKt4HM;IAOI,gCAAA;ELk4HV;EKz4HM;IAOI,8BAAA;ELq4HV;AACF;AMz6HA;ED4BQ;IAOI,0BAAA;EL04HV;EKj5HM;IAOI,gCAAA;EL64HV;EKp5HM;IAOI,yBAAA;ELg5HV;EKv5HM;IAOI,wBAAA;ELm5HV;EK15HM;IAOI,+BAAA;ELs5HV;EK75HM;IAOI,yBAAA;ELy5HV;EKh6HM;IAOI,6BAAA;EL45HV;EKn6HM;IAOI,8BAAA;EL+5HV;EKt6HM;IAOI,wBAAA;ELk6HV;EKz6HM;IAOI,+BAAA;ELq6HV;EK56HM;IAOI,wBAAA;ELw6HV;AACF","file":"bootstrap-grid.rtl.css","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.0 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","/*!\n * Bootstrap Grid v5.3.0 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue: #0d6efd !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #d63384 !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #198754 !default;\n$teal: #20c997 !default;\n$cyan: #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"black\": $black,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio: 4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark: $black !default;\n$color-contrast-light: $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n \"blue-100\": $blue-100,\n \"blue-200\": $blue-200,\n \"blue-300\": $blue-300,\n \"blue-400\": $blue-400,\n \"blue-500\": $blue-500,\n \"blue-600\": $blue-600,\n \"blue-700\": $blue-700,\n \"blue-800\": $blue-800,\n \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n \"indigo-100\": $indigo-100,\n \"indigo-200\": $indigo-200,\n \"indigo-300\": $indigo-300,\n \"indigo-400\": $indigo-400,\n \"indigo-500\": $indigo-500,\n \"indigo-600\": $indigo-600,\n \"indigo-700\": $indigo-700,\n \"indigo-800\": $indigo-800,\n \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n \"purple-100\": $purple-100,\n \"purple-200\": $purple-200,\n \"purple-300\": $purple-300,\n \"purple-400\": $purple-400,\n \"purple-500\": $purple-500,\n \"purple-600\": $purple-600,\n \"purple-700\": $purple-700,\n \"purple-800\": $purple-800,\n \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n \"pink-100\": $pink-100,\n \"pink-200\": $pink-200,\n \"pink-300\": $pink-300,\n \"pink-400\": $pink-400,\n \"pink-500\": $pink-500,\n \"pink-600\": $pink-600,\n \"pink-700\": $pink-700,\n \"pink-800\": $pink-800,\n \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n \"red-100\": $red-100,\n \"red-200\": $red-200,\n \"red-300\": $red-300,\n \"red-400\": $red-400,\n \"red-500\": $red-500,\n \"red-600\": $red-600,\n \"red-700\": $red-700,\n \"red-800\": $red-800,\n \"red-900\": $red-900\n) !default;\n\n$oranges: (\n \"orange-100\": $orange-100,\n \"orange-200\": $orange-200,\n \"orange-300\": $orange-300,\n \"orange-400\": $orange-400,\n \"orange-500\": $orange-500,\n \"orange-600\": $orange-600,\n \"orange-700\": $orange-700,\n \"orange-800\": $orange-800,\n \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n \"yellow-100\": $yellow-100,\n \"yellow-200\": $yellow-200,\n \"yellow-300\": $yellow-300,\n \"yellow-400\": $yellow-400,\n \"yellow-500\": $yellow-500,\n \"yellow-600\": $yellow-600,\n \"yellow-700\": $yellow-700,\n \"yellow-800\": $yellow-800,\n \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n \"green-100\": $green-100,\n \"green-200\": $green-200,\n \"green-300\": $green-300,\n \"green-400\": $green-400,\n \"green-500\": $green-500,\n \"green-600\": $green-600,\n \"green-700\": $green-700,\n \"green-800\": $green-800,\n \"green-900\": $green-900\n) !default;\n\n$teals: (\n \"teal-100\": $teal-100,\n \"teal-200\": $teal-200,\n \"teal-300\": $teal-300,\n \"teal-400\": $teal-400,\n \"teal-500\": $teal-500,\n \"teal-600\": $teal-600,\n \"teal-700\": $teal-700,\n \"teal-800\": $teal-800,\n \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n \"cyan-100\": $cyan-100,\n \"cyan-200\": $cyan-200,\n \"cyan-300\": $cyan-300,\n \"cyan-400\": $cyan-400,\n \"cyan-500\": $cyan-500,\n \"cyan-600\": $cyan-600,\n \"cyan-700\": $cyan-700,\n \"cyan-800\": $cyan-800,\n \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// scss-docs-start theme-color-variables\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// scss-docs-start theme-text-variables\n$primary-text-emphasis: shade-color($primary, 60%) !default;\n$secondary-text-emphasis: shade-color($secondary, 60%) !default;\n$success-text-emphasis: shade-color($success, 60%) !default;\n$info-text-emphasis: shade-color($info, 60%) !default;\n$warning-text-emphasis: shade-color($warning, 60%) !default;\n$danger-text-emphasis: shade-color($danger, 60%) !default;\n$light-text-emphasis: $gray-700 !default;\n$dark-text-emphasis: $gray-700 !default;\n// scss-docs-end theme-text-variables\n\n// scss-docs-start theme-bg-subtle-variables\n$primary-bg-subtle: tint-color($primary, 80%) !default;\n$secondary-bg-subtle: tint-color($secondary, 80%) !default;\n$success-bg-subtle: tint-color($success, 80%) !default;\n$info-bg-subtle: tint-color($info, 80%) !default;\n$warning-bg-subtle: tint-color($warning, 80%) !default;\n$danger-bg-subtle: tint-color($danger, 80%) !default;\n$light-bg-subtle: mix($gray-100, $white) !default;\n$dark-bg-subtle: $gray-400 !default;\n// scss-docs-end theme-bg-subtle-variables\n\n// scss-docs-start theme-border-subtle-variables\n$primary-border-subtle: tint-color($primary, 60%) !default;\n$secondary-border-subtle: tint-color($secondary, 60%) !default;\n$success-border-subtle: tint-color($success, 60%) !default;\n$info-border-subtle: tint-color($info, 60%) !default;\n$warning-border-subtle: tint-color($warning, 60%) !default;\n$danger-border-subtle: tint-color($danger, 60%) !default;\n$light-border-subtle: $gray-200 !default;\n$dark-border-subtle: $gray-500 !default;\n// scss-docs-end theme-border-subtle-variables\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n (\"<\", \"%3c\"),\n (\">\", \"%3e\"),\n (\"#\", \"%23\"),\n (\"(\", \"%28\"),\n (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-reduced-motion: true !default;\n$enable-smooth-scroll: true !default;\n$enable-grid-classes: true !default;\n$enable-container-classes: true !default;\n$enable-cssgrid: false !default;\n$enable-button-pointers: true !default;\n$enable-rfs: true !default;\n$enable-validation-icons: true !default;\n$enable-negative-margins: false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities: true !default;\n\n$enable-dark-mode: true !default;\n$color-mode-type: data !default; // `data` or `media-query`\n\n// Prefix for :root CSS variables\n\n$variable-prefix: bs- !default; // Deprecated in v5.2.0 for the shorter `$prefix`\n$prefix: $variable-prefix !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: $spacer * .25,\n 2: $spacer * .5,\n 3: $spacer,\n 4: $spacer * 1.5,\n 5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n 0: 0,\n 50: 50%,\n 100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `` element.\n\n$body-text-align: null !default;\n$body-color: $gray-900 !default;\n$body-bg: $white !default;\n\n$body-secondary-color: rgba($body-color, .75) !default;\n$body-secondary-bg: $gray-200 !default;\n\n$body-tertiary-color: rgba($body-color, .5) !default;\n$body-tertiary-bg: $gray-100 !default;\n\n$body-emphasis-color: $black !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: $primary !default;\n$link-decoration: underline !default;\n$link-shade-percentage: 20% !default;\n$link-hover-color: shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration: null !default;\n\n$stretched-link-pseudo-element: after !default;\n$stretched-link-z-index: 1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap: .375rem !default;\n$icon-link-underline-offset: .25em !default;\n$icon-link-icon-size: 1em !default;\n$icon-link-icon-transition: .2s ease-in-out transform !default;\n$icon-link-icon-transform: translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px,\n xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px,\n xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 1.5rem !default;\n$grid-row-columns: 6 !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width: 1px !default;\n$border-widths: (\n 1: 1px,\n 2: 2px,\n 3: 3px,\n 4: 4px,\n 5: 5px\n) !default;\n$border-style: solid !default;\n$border-color: $gray-300 !default;\n$border-color-translucent: rgba($black, .175) !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius: .375rem !default;\n$border-radius-sm: .25rem !default;\n$border-radius-lg: .5rem !default;\n$border-radius-xl: 1rem !default;\n$border-radius-xxl: 2rem !default;\n$border-radius-pill: 50rem !default;\n// scss-docs-end border-radius-variables\n// fusv-disable\n$border-radius-2xl: $border-radius-xxl !default; // Deprecated in v5.3.0\n// fusv-enable\n\n// scss-docs-start box-shadow-variables\n$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset: inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color: $white !default;\n$component-active-bg: $primary !default;\n\n// scss-docs-start focus-ring-variables\n$focus-ring-width: .25rem !default;\n$focus-ring-opacity: .25 !default;\n$focus-ring-color: rgba($primary, $focus-ring-opacity) !default;\n$focus-ring-blur: 0 !default;\n$focus-ring-box-shadow: 0 0 $focus-ring-blur $focus-ring-width $focus-ring-color !default;\n// scss-docs-end focus-ring-variables\n\n// scss-docs-start caret-variables\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse: height .35s ease !default;\n$transition-collapse-width: width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n \"1x1\": 100%,\n \"4x3\": calc(3 / 4 * 100%),\n \"16x9\": calc(9 / 16 * 100%),\n \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base: var(--#{$prefix}font-sans-serif) !default;\n$font-family-code: var(--#{$prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root: null !default;\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm: $font-size-base * .875 !default;\n$font-size-lg: $font-size-base * 1.25 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-medium: 500 !default;\n$font-weight-semibold: 600 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n\n$line-height-base: 1.5 !default;\n$line-height-sm: 1.25 !default;\n$line-height-lg: 2 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n 1: $h1-font-size,\n 2: $h2-font-size,\n 3: $h3-font-size,\n 4: $h4-font-size,\n 5: $h5-font-size,\n 6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom: $spacer * .5 !default;\n$headings-font-family: null !default;\n$headings-font-style: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n 1: 5rem,\n 2: 4.5rem,\n 3: 4rem,\n 4: 3.5rem,\n 5: 3rem,\n 6: 2.5rem\n) !default;\n\n$display-font-family: null !default;\n$display-font-style: null !default;\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: .875em !default;\n\n$sub-sup-font-size: .75em !default;\n\n// fusv-disable\n$text-muted: var(--#{$prefix}secondary-color) !default; // Deprecated in 5.3.0\n// fusv-enable\n\n$initialism-font-size: $small-font-size !default;\n\n$blockquote-margin-y: $spacer !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n$blockquote-footer-color: $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y: $spacer !default;\n$hr-color: inherit !default;\n\n// fusv-disable\n$hr-bg-color: null !default; // Deprecated in v5.2.0\n$hr-height: null !default; // Deprecated in v5.2.0\n// fusv-enable\n\n$hr-border-color: null !default; // Allows for inherited colors\n$hr-border-width: var(--#{$prefix}border-width) !default;\n$hr-opacity: .25 !default;\n\n$legend-margin-bottom: .5rem !default;\n$legend-font-size: 1.5rem !default;\n$legend-font-weight: null !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-padding: .1875em !default;\n$mark-bg: $yellow-100 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y: .5rem !default;\n$table-cell-padding-x: .5rem !default;\n$table-cell-padding-y-sm: .25rem !default;\n$table-cell-padding-x-sm: .25rem !default;\n\n$table-cell-vertical-align: top !default;\n\n$table-color: var(--#{$prefix}body-color) !default;\n$table-bg: var(--#{$prefix}body-bg) !default;\n$table-accent-bg: transparent !default;\n\n$table-th-font-weight: null !default;\n\n$table-striped-color: $table-color !default;\n$table-striped-bg-factor: .05 !default;\n$table-striped-bg: rgba($black, $table-striped-bg-factor) !default;\n\n$table-active-color: $table-color !default;\n$table-active-bg-factor: .1 !default;\n$table-active-bg: rgba($black, $table-active-bg-factor) !default;\n\n$table-hover-color: $table-color !default;\n$table-hover-bg-factor: .075 !default;\n$table-hover-bg: rgba($black, $table-hover-bg-factor) !default;\n\n$table-border-factor: .1 !default;\n$table-border-width: var(--#{$prefix}border-width) !default;\n$table-border-color: var(--#{$prefix}border-color) !default;\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n$table-group-separator-color: currentcolor !default;\n\n$table-caption-color: var(--#{$prefix}secondary-color) !default;\n\n$table-bg-scale: -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n \"primary\": shift-color($primary, $table-bg-scale),\n \"secondary\": shift-color($secondary, $table-bg-scale),\n \"success\": shift-color($success, $table-bg-scale),\n \"info\": shift-color($info, $table-bg-scale),\n \"warning\": shift-color($warning, $table-bg-scale),\n \"danger\": shift-color($danger, $table-bg-scale),\n \"light\": $light,\n \"dark\": $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: $focus-ring-width !default;\n$input-btn-focus-color-opacity: $focus-ring-opacity !default;\n$input-btn-focus-color: $focus-ring-color !default;\n$input-btn-focus-blur: $focus-ring-blur !default;\n$input-btn-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n\n$input-btn-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-color: var(--#{$prefix}body-color) !default;\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color: var(--#{$prefix}link-color) !default;\n$btn-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$btn-link-disabled-color: $gray-600 !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: var(--#{$prefix}border-radius) !default;\n$btn-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$btn-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount: 15% !default;\n$btn-hover-bg-tint-amount: 15% !default;\n$btn-hover-border-shade-amount: 20% !default;\n$btn-hover-border-tint-amount: 10% !default;\n$btn-active-bg-shade-amount: 20% !default;\n$btn-active-bg-tint-amount: 20% !default;\n$btn-active-border-shade-amount: 25% !default;\n$btn-active-border-tint-amount: 10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top: .25rem !default;\n$form-text-font-size: $small-font-size !default;\n$form-text-font-style: null !default;\n$form-text-font-weight: null !default;\n$form-text-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom: .5rem !default;\n$form-label-font-size: null !default;\n$form-label-font-style: null !default;\n$form-label-font-weight: null !default;\n$form-label-color: null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n\n$input-bg: var(--#{$prefix}body-bg) !default;\n$input-disabled-color: null !default;\n$input-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$input-disabled-border-color: null !default;\n\n$input-color: var(--#{$prefix}body-color) !default;\n$input-border-color: var(--#{$prefix}border-color) !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: $box-shadow-inset !default;\n\n$input-border-radius: var(--#{$prefix}border-radius) !default;\n$input-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$input-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: tint-color($component-active-bg, 50%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: var(--#{$prefix}secondary-color) !default;\n$input-plaintext-color: var(--#{$prefix}body-color) !default;\n\n$input-height-border: calc(#{$input-border-width} * 2) !default; // stylelint-disable-line function-disallowed-list\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width: 3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width: 1em !default;\n$form-check-min-height: $font-size-base * $line-height-base !default;\n$form-check-padding-start: $form-check-input-width + .5em !default;\n$form-check-margin-bottom: .125rem !default;\n$form-check-label-color: null !default;\n$form-check-label-cursor: null !default;\n$form-check-transition: null !default;\n\n$form-check-input-active-filter: brightness(90%) !default;\n\n$form-check-input-bg: $input-bg !default;\n$form-check-input-border: var(--#{$prefix}border-width) solid var(--#{$prefix}border-color) !default;\n$form-check-input-border-radius: .25em !default;\n$form-check-radio-border-radius: 50% !default;\n$form-check-input-focus-border: $input-focus-border-color !default;\n$form-check-input-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$form-check-input-checked-color: $component-active-color !default;\n$form-check-input-checked-bg-color: $component-active-bg !default;\n$form-check-input-checked-border-color: $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-check-radio-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-indeterminate-color: $component-active-color !default;\n$form-check-input-indeterminate-bg-color: $component-active-bg !default;\n$form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-disabled-opacity: .5 !default;\n$form-check-label-disabled-opacity: $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity: $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end: 1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color: rgba($black, .25) !default;\n$form-switch-width: 2em !default;\n$form-switch-padding-start: $form-switch-width + .5em !default;\n$form-switch-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-border-radius: $form-switch-width !default;\n$form-switch-transition: background-position .15s ease-in-out !default;\n\n$form-switch-focus-color: $input-focus-border-color !default;\n$form-switch-focus-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-switch-checked-color: $component-active-color !default;\n$form-switch-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y: $input-padding-y !default;\n$input-group-addon-padding-x: $input-padding-x !default;\n$input-group-addon-font-weight: $input-font-weight !default;\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: var(--#{$prefix}tertiary-bg) !default;\n$input-group-addon-border-color: $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y: $input-padding-y !default;\n$form-select-padding-x: $input-padding-x !default;\n$form-select-font-family: $input-font-family !default;\n$form-select-font-size: $input-font-size !default;\n$form-select-indicator-padding: $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight: $input-font-weight !default;\n$form-select-line-height: $input-line-height !default;\n$form-select-color: $input-color !default;\n$form-select-bg: $input-bg !default;\n$form-select-disabled-color: null !default;\n$form-select-disabled-bg: $input-disabled-bg !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position: right $form-select-padding-x center !default;\n$form-select-bg-size: 16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color: $gray-800 !default;\n$form-select-indicator: url(\"data:image/svg+xml,\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position: center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width: $input-border-width !default;\n$form-select-border-color: $input-border-color !default;\n$form-select-border-radius: $input-border-radius !default;\n$form-select-box-shadow: $box-shadow-inset !default;\n\n$form-select-focus-border-color: $input-focus-border-color !default;\n$form-select-focus-width: $input-focus-width !default;\n$form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm: $input-padding-y-sm !default;\n$form-select-padding-x-sm: $input-padding-x-sm !default;\n$form-select-font-size-sm: $input-font-size-sm !default;\n$form-select-border-radius-sm: $input-border-radius-sm !default;\n\n$form-select-padding-y-lg: $input-padding-y-lg !default;\n$form-select-padding-x-lg: $input-padding-x-lg !default;\n$form-select-font-size-lg: $input-font-size-lg !default;\n$form-select-border-radius-lg: $input-border-radius-lg !default;\n\n$form-select-transition: $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width: 100% !default;\n$form-range-track-height: .5rem !default;\n$form-range-track-cursor: pointer !default;\n$form-range-track-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-range-track-border-radius: 1rem !default;\n$form-range-track-box-shadow: $box-shadow-inset !default;\n\n$form-range-thumb-width: 1rem !default;\n$form-range-thumb-height: $form-range-thumb-width !default;\n$form-range-thumb-bg: $component-active-bg !default;\n$form-range-thumb-border: 0 !default;\n$form-range-thumb-border-radius: 1rem !default;\n$form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg: var(--#{$prefix}secondary-color) !default;\n$form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color: $input-color !default;\n$form-file-button-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-file-button-hover-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height: add(3.5rem, $input-height-border) !default;\n$form-floating-line-height: 1.25 !default;\n$form-floating-padding-x: $input-padding-x !default;\n$form-floating-padding-y: 1rem !default;\n$form-floating-input-padding-t: 1.625rem !default;\n$form-floating-input-padding-b: .625rem !default;\n$form-floating-label-height: 1.5em !default;\n$form-floating-label-opacity: .65 !default;\n$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-label-disabled-color: $gray-600 !default;\n$form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $form-text-font-size !default;\n$form-feedback-font-style: $form-text-font-style !default;\n$form-feedback-valid-color: $success !default;\n$form-feedback-invalid-color: $danger !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url(\"data:image/svg+xml,\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-colors\n$form-valid-color: $form-feedback-valid-color !default;\n$form-valid-border-color: $form-feedback-valid-color !default;\n$form-invalid-color: $form-feedback-invalid-color !default;\n$form-invalid-border-color: $form-feedback-invalid-color !default;\n// scss-docs-end form-validation-colors\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n \"valid\": (\n \"color\": var(--#{$prefix}form-valid-color),\n \"icon\": $form-feedback-icon-valid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}success),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}success-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-valid-border-color),\n ),\n \"invalid\": (\n \"color\": var(--#{$prefix}form-invalid-color),\n \"icon\": $form-feedback-icon-invalid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}danger),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}danger-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-invalid-border-color),\n )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-offcanvas-backdrop: 1040 !default;\n$zindex-offcanvas: 1045 !default;\n$zindex-modal-backdrop: 1050 !default;\n$zindex-modal: 1055 !default;\n$zindex-popover: 1070 !default;\n$zindex-tooltip: 1080 !default;\n$zindex-toast: 1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n n1: -1,\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-font-size: null !default;\n$nav-link-font-weight: null !default;\n$nav-link-color: var(--#{$prefix}link-color) !default;\n$nav-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color: var(--#{$prefix}secondary-color) !default;\n$nav-link-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$nav-tabs-border-color: var(--#{$prefix}border-color) !default;\n$nav-tabs-border-width: var(--#{$prefix}border-width) !default;\n$nav-tabs-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-tabs-link-hover-border-color: var(--#{$prefix}secondary-bg) var(--#{$prefix}secondary-bg) $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: var(--#{$prefix}emphasis-color) !default;\n$nav-tabs-link-active-bg: var(--#{$prefix}body-bg) !default;\n$nav-tabs-link-active-border-color: var(--#{$prefix}border-color) var(--#{$prefix}border-color) $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n$nav-underline-gap: 1rem !default;\n$nav-underline-border-width: .125rem !default;\n$nav-underline-link-active-color: var(--#{$prefix}emphasis-color) !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y: $spacer * .5 !default;\n$navbar-padding-x: null !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end: 1rem !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n$navbar-toggler-focus-width: $btn-focus-width !default;\n$navbar-toggler-transition: box-shadow .15s ease-in-out !default;\n\n$navbar-light-color: rgba(var(--#{$prefix}emphasis-color-rgb), .65) !default;\n$navbar-light-hover-color: rgba(var(--#{$prefix}emphasis-color-rgb), .8) !default;\n$navbar-light-active-color: rgba(var(--#{$prefix}emphasis-color-rgb), 1) !default;\n$navbar-light-disabled-color: rgba(var(--#{$prefix}emphasis-color-rgb), .3) !default;\n$navbar-light-icon-color: rgba($body-color, .75) !default;\n$navbar-light-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-light-toggler-border-color: rgba(var(--#{$prefix}emphasis-color-rgb), .15) !default;\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-dark-variables\n$navbar-dark-color: rgba($white, .55) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n// scss-docs-end navbar-dark-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-x: 0 !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: var(--#{$prefix}body-color) !default;\n$dropdown-bg: var(--#{$prefix}body-bg) !default;\n$dropdown-border-color: var(--#{$prefix}border-color-translucent) !default;\n$dropdown-border-radius: var(--#{$prefix}border-radius) !default;\n$dropdown-border-width: var(--#{$prefix}border-width) !default;\n$dropdown-inner-border-radius: calc(#{$dropdown-border-radius} - #{$dropdown-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$dropdown-divider-bg: $dropdown-border-color !default;\n$dropdown-divider-margin-y: $spacer * .5 !default;\n$dropdown-box-shadow: $box-shadow !default;\n\n$dropdown-link-color: var(--#{$prefix}body-color) !default;\n$dropdown-link-hover-color: $dropdown-link-color !default;\n$dropdown-link-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: var(--#{$prefix}tertiary-color) !default;\n\n$dropdown-item-padding-y: $spacer * .25 !default;\n$dropdown-item-padding-x: $spacer !default;\n\n$dropdown-header-color: $gray-600 !default;\n$dropdown-header-padding-x: $dropdown-item-padding-x !default;\n$dropdown-header-padding-y: $dropdown-padding-y !default;\n// fusv-disable\n$dropdown-header-padding: $dropdown-header-padding-y $dropdown-header-padding-x !default; // Deprecated in v5.2.0\n// fusv-enable\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color: $gray-300 !default;\n$dropdown-dark-bg: $gray-800 !default;\n$dropdown-dark-border-color: $dropdown-border-color !default;\n$dropdown-dark-divider-bg: $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow: null !default;\n$dropdown-dark-link-color: $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color: $white !default;\n$dropdown-dark-link-hover-bg: rgba($white, .15) !default;\n$dropdown-dark-link-active-color: $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg: $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color: $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y: .375rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n\n$pagination-font-size: $font-size-base !default;\n\n$pagination-color: var(--#{$prefix}link-color) !default;\n$pagination-bg: var(--#{$prefix}body-bg) !default;\n$pagination-border-radius: var(--#{$prefix}border-radius) !default;\n$pagination-border-width: var(--#{$prefix}border-width) !default;\n$pagination-margin-start: calc(#{$pagination-border-width} * -1) !default; // stylelint-disable-line function-disallowed-list\n$pagination-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-focus-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-focus-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-focus-box-shadow: $focus-ring-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$pagination-hover-border-color: var(--#{$prefix}border-color) !default; // Todo in v6: remove this?\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $component-active-bg !default;\n\n$pagination-disabled-color: var(--#{$prefix}secondary-color) !default;\n$pagination-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-disabled-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$pagination-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max: .5 !default;\n$placeholder-opacity-min: .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y: $spacer !default;\n$card-spacer-x: $spacer !default;\n$card-title-spacer-y: $spacer * .5 !default;\n$card-title-color: null !default;\n$card-subtitle-color: null !default;\n$card-border-width: var(--#{$prefix}border-width) !default;\n$card-border-color: var(--#{$prefix}border-color-translucent) !default;\n$card-border-radius: var(--#{$prefix}border-radius) !default;\n$card-box-shadow: null !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y: $card-spacer-y * .5 !default;\n$card-cap-padding-x: $card-spacer-x !default;\n$card-cap-bg: rgba(var(--#{$prefix}body-color-rgb), .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: var(--#{$prefix}body-bg) !default;\n$card-img-overlay-padding: $spacer !default;\n$card-group-margin: $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y: 1rem !default;\n$accordion-padding-x: 1.25rem !default;\n$accordion-color: var(--#{$prefix}body-color) !default;\n$accordion-bg: var(--#{$prefix}body-bg) !default;\n$accordion-border-width: var(--#{$prefix}border-width) !default;\n$accordion-border-color: var(--#{$prefix}border-color) !default;\n$accordion-border-radius: var(--#{$prefix}border-radius) !default;\n$accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y: $accordion-padding-y !default;\n$accordion-body-padding-x: $accordion-padding-x !default;\n\n$accordion-button-padding-y: $accordion-padding-y !default;\n$accordion-button-padding-x: $accordion-padding-x !default;\n$accordion-button-color: var(--#{$prefix}body-color) !default;\n$accordion-button-bg: var(--#{$prefix}accordion-bg) !default;\n$accordion-transition: $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg: var(--#{$prefix}primary-bg-subtle) !default;\n$accordion-button-active-color: var(--#{$prefix}primary-text-emphasis) !default;\n\n$accordion-button-focus-border-color: $input-focus-border-color !default;\n$accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;\n\n$accordion-icon-width: 1.25rem !default;\n$accordion-icon-color: $body-color !default;\n$accordion-icon-active-color: $primary-text-emphasis !default;\n$accordion-icon-transition: transform .2s ease-in-out !default;\n$accordion-icon-transform: rotate(-180deg) !default;\n\n$accordion-button-icon: url(\"data:image/svg+xml,\") !default;\n$accordion-button-active-icon: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: var(--#{$prefix}body-bg) !default;\n$tooltip-bg: var(--#{$prefix}emphasis-color) !default;\n$tooltip-border-radius: var(--#{$prefix}border-radius) !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: $spacer * .25 !default;\n$tooltip-padding-x: $spacer * .5 !default;\n$tooltip-margin: null !default; // TODO: remove this in v6\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n// fusv-disable\n$tooltip-arrow-color: null !default; // Deprecated in Bootstrap 5.2.0 for CSS variables\n// fusv-enable\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: null !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size: $font-size-sm !default;\n$popover-bg: var(--#{$prefix}body-bg) !default;\n$popover-max-width: 276px !default;\n$popover-border-width: var(--#{$prefix}border-width) !default;\n$popover-border-color: var(--#{$prefix}border-color-translucent) !default;\n$popover-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$popover-inner-border-radius: calc(#{$popover-border-radius} - #{$popover-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$popover-box-shadow: $box-shadow !default;\n\n$popover-header-font-size: $font-size-base !default;\n$popover-header-bg: var(--#{$prefix}secondary-bg) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: $spacer !default;\n\n$popover-body-color: var(--#{$prefix}body-color) !default;\n$popover-body-padding-y: $spacer !default;\n$popover-body-padding-x: $spacer !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n// scss-docs-end popover-variables\n\n// fusv-disable\n// Deprecated in Bootstrap 5.2.0 for CSS variables\n$popover-arrow-color: $popover-bg !default;\n$popover-arrow-outer-color: var(--#{$prefix}border-color-translucent) !default;\n// fusv-enable\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .5rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-border-width: var(--#{$prefix}border-width) !default;\n$toast-border-color: var(--#{$prefix}border-color-translucent) !default;\n$toast-border-radius: var(--#{$prefix}border-radius) !default;\n$toast-box-shadow: var(--#{$prefix}box-shadow) !default;\n$toast-spacing: $container-padding-x !default;\n\n$toast-header-color: var(--#{$prefix}secondary-color) !default;\n$toast-header-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-header-border-color: $toast-border-color !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size: .75em !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-color: $white !default;\n$badge-padding-y: .35em !default;\n$badge-padding-x: .65em !default;\n$badge-border-radius: var(--#{$prefix}border-radius) !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding: $spacer !default;\n\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: var(--#{$prefix}body-bg) !default;\n$modal-content-border-color: var(--#{$prefix}border-color-translucent) !default;\n$modal-content-border-width: var(--#{$prefix}border-width) !default;\n$modal-content-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: $box-shadow-sm !default;\n$modal-content-box-shadow-sm-up: $box-shadow !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n\n$modal-header-border-color: var(--#{$prefix}border-color) !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-header-padding-y: $modal-inner-padding !default;\n$modal-header-padding-x: $modal-inner-padding !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-footer-bg: null !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n\n$modal-sm: 300px !default;\n$modal-md: 500px !default;\n$modal-lg: 800px !default;\n$modal-xl: 1140px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y: $spacer !default;\n$alert-padding-x: $spacer !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: var(--#{$prefix}border-radius) !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: var(--#{$prefix}border-width) !default;\n$alert-bg-scale: -80% !default;\n$alert-border-scale: -70% !default;\n$alert-color-scale: 40% !default;\n$alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n// fusv-disable\n$alert-bg-scale: -80% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-border-scale: -70% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-color-scale: 40% !default; // Deprecated in v5.2.0, to be removed in v6\n// fusv-enable\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: var(--#{$prefix}secondary-bg) !default;\n$progress-border-radius: var(--#{$prefix}border-radius) !default;\n$progress-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: $primary !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color: var(--#{$prefix}body-color) !default;\n$list-group-bg: var(--#{$prefix}body-bg) !default;\n$list-group-border-color: var(--#{$prefix}border-color) !default;\n$list-group-border-width: var(--#{$prefix}border-width) !default;\n$list-group-border-radius: var(--#{$prefix}border-radius) !default;\n\n$list-group-item-padding-y: $spacer * .5 !default;\n$list-group-item-padding-x: $spacer !default;\n// fusv-disable\n$list-group-item-bg-scale: -80% !default; // Deprecated in v5.3.0\n$list-group-item-color-scale: 40% !default; // Deprecated in v5.3.0\n// fusv-enable\n\n$list-group-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: var(--#{$prefix}secondary-color) !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: var(--#{$prefix}secondary-color) !default;\n$list-group-action-hover-color: var(--#{$prefix}emphasis-color) !default;\n\n$list-group-action-active-color: var(--#{$prefix}body-color) !default;\n$list-group-action-active-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: var(--#{$prefix}body-bg) !default;\n$thumbnail-border-width: var(--#{$prefix}border-width) !default;\n$thumbnail-border-color: var(--#{$prefix}border-color) !default;\n$thumbnail-border-radius: var(--#{$prefix}border-radius) !default;\n$thumbnail-box-shadow: var(--#{$prefix}box-shadow-sm) !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size: $small-font-size !default;\n$figure-caption-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size: null !default;\n$breadcrumb-padding-y: 0 !default;\n$breadcrumb-padding-x: 0 !default;\n$breadcrumb-item-padding-x: .5rem !default;\n$breadcrumb-margin-bottom: 1rem !default;\n$breadcrumb-bg: null !default;\n$breadcrumb-divider-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-active-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-divider: quote(\"/\") !default;\n$breadcrumb-divider-flipped: $breadcrumb-divider !default;\n$breadcrumb-border-radius: null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-opacity: .5 !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-active-opacity: 1 !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n$carousel-caption-padding-y: 1.25rem !default;\n$carousel-caption-spacer: 1.25rem !default;\n\n$carousel-control-icon-width: 2rem !default;\n\n$carousel-control-prev-icon-bg: url(\"data:image/svg+xml,\") !default;\n$carousel-control-next-icon-bg: url(\"data:image/svg+xml,\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n// scss-docs-end carousel-variables\n\n// scss-docs-start carousel-dark-variables\n$carousel-dark-indicator-active-bg: $black !default;\n$carousel-dark-caption-color: $black !default;\n$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;\n// scss-docs-end carousel-dark-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-vertical-align: -.125em !default;\n$spinner-border-width: .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width: 1em !default;\n$btn-close-height: $btn-close-width !default;\n$btn-close-padding-x: .25em !default;\n$btn-close-padding-y: $btn-close-padding-x !default;\n$btn-close-color: $black !default;\n$btn-close-bg: url(\"data:image/svg+xml,\") !default;\n$btn-close-focus-shadow: $focus-ring-box-shadow !default;\n$btn-close-opacity: .5 !default;\n$btn-close-hover-opacity: .75 !default;\n$btn-close-focus-opacity: 1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y: $modal-inner-padding !default;\n$offcanvas-padding-x: $modal-inner-padding !default;\n$offcanvas-horizontal-width: 400px !default;\n$offcanvas-vertical-height: 30vh !default;\n$offcanvas-transition-duration: .3s !default;\n$offcanvas-border-color: $modal-content-border-color !default;\n$offcanvas-border-width: $modal-content-border-width !default;\n$offcanvas-title-line-height: $modal-title-line-height !default;\n$offcanvas-bg-color: var(--#{$prefix}body-bg) !default;\n$offcanvas-color: var(--#{$prefix}body-color) !default;\n$offcanvas-box-shadow: $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg: $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity: $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size: $small-font-size !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .1875rem !default;\n$kbd-padding-x: .375rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: var(--#{$prefix}body-bg) !default;\n$kbd-bg: var(--#{$prefix}body-color) !default;\n$nested-kbd-font-weight: null !default; // Deprecated in v5.2.0, removing in v6\n\n$pre-color: null !default;\n","// Row\n//\n// Rows contain your columns.\n\n:root {\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: divide(100%, $count);\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is and invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix: \"\", $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","bootstrap-grid.css","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"AACE;;;;EAAA;ACKA;;;;;;;ECHA,qBAAA;EACA,gBAAA;EACA,WAAA;EACA,4CAAA;EACA,6CAAA;EACA,iBAAA;EACA,kBAAA;ACUF;;AC4CI;EH5CE;IACE,gBIkee;EF9drB;AACF;ACsCI;EH5CE;IACE,gBIkee;EFzdrB;AACF;ACiCI;EH5CE;IACE,gBIkee;EFpdrB;AACF;AC4BI;EH5CE;IACE,iBIkee;EF/crB;AACF;ACuBI;EH5CE;IACE,iBIkee;EF1crB;AACF;AGzCA;EAEI,qBAAA;EAAA,yBAAA;EAAA,yBAAA;EAAA,yBAAA;EAAA,0BAAA;EAAA,2BAAA;AH+CJ;;AG1CE;ECNA,qBAAA;EACA,gBAAA;EACA,aAAA;EACA,eAAA;EAEA,yCAAA;EACA,4CAAA;EACA,6CAAA;AJmDF;AGjDI;ECGF,sBAAA;EAIA,cAAA;EACA,WAAA;EACA,eAAA;EACA,4CAAA;EACA,6CAAA;EACA,8BAAA;AJ8CF;;AICM;EACE,YAAA;AJER;;AICM;EApCJ,cAAA;EACA,WAAA;AJuCF;;AIzBE;EACE,cAAA;EACA,WAAA;AJ4BJ;;AI9BE;EACE,cAAA;EACA,UAAA;AJiCJ;;AInCE;EACE,cAAA;EACA,mBAAA;AJsCJ;;AIxCE;EACE,cAAA;EACA,UAAA;AJ2CJ;;AI7CE;EACE,cAAA;EACA,UAAA;AJgDJ;;AIlDE;EACE,cAAA;EACA,mBAAA;AJqDJ;;AItBM;EAhDJ,cAAA;EACA,WAAA;AJ0EF;;AIrBU;EAhEN,cAAA;EACA,kBAAA;AJyFJ;;AI1BU;EAhEN,cAAA;EACA,mBAAA;AJ8FJ;;AI/BU;EAhEN,cAAA;EACA,UAAA;AJmGJ;;AIpCU;EAhEN,cAAA;EACA,mBAAA;AJwGJ;;AIzCU;EAhEN,cAAA;EACA,mBAAA;AJ6GJ;;AI9CU;EAhEN,cAAA;EACA,UAAA;AJkHJ;;AInDU;EAhEN,cAAA;EACA,mBAAA;AJuHJ;;AIxDU;EAhEN,cAAA;EACA,mBAAA;AJ4HJ;;AI7DU;EAhEN,cAAA;EACA,UAAA;AJiIJ;;AIlEU;EAhEN,cAAA;EACA,mBAAA;AJsIJ;;AIvEU;EAhEN,cAAA;EACA,mBAAA;AJ2IJ;;AI5EU;EAhEN,cAAA;EACA,WAAA;AJgJJ;;AIzEY;EAxDV,yBAAA;AJqIF;;AI7EY;EAxDV,0BAAA;AJyIF;;AIjFY;EAxDV,iBAAA;AJ6IF;;AIrFY;EAxDV,0BAAA;AJiJF;;AIzFY;EAxDV,0BAAA;AJqJF;;AI7FY;EAxDV,iBAAA;AJyJF;;AIjGY;EAxDV,0BAAA;AJ6JF;;AIrGY;EAxDV,0BAAA;AJiKF;;AIzGY;EAxDV,iBAAA;AJqKF;;AI7GY;EAxDV,0BAAA;AJyKF;;AIjHY;EAxDV,0BAAA;AJ6KF;;AI1GQ;;EAEE,gBAAA;AJ6GV;;AI1GQ;;EAEE,gBAAA;AJ6GV;;AIpHQ;;EAEE,sBAAA;AJuHV;;AIpHQ;;EAEE,sBAAA;AJuHV;;AI9HQ;;EAEE,qBAAA;AJiIV;;AI9HQ;;EAEE,qBAAA;AJiIV;;AIxIQ;;EAEE,mBAAA;AJ2IV;;AIxIQ;;EAEE,mBAAA;AJ2IV;;AIlJQ;;EAEE,qBAAA;AJqJV;;AIlJQ;;EAEE,qBAAA;AJqJV;;AI5JQ;;EAEE,mBAAA;AJ+JV;;AI5JQ;;EAEE,mBAAA;AJ+JV;;ACzNI;EGUE;IACE,YAAA;EJmNN;EIhNI;IApCJ,cAAA;IACA,WAAA;EJuPA;EIzOA;IACE,cAAA;IACA,WAAA;EJ2OF;EI7OA;IACE,cAAA;IACA,UAAA;EJ+OF;EIjPA;IACE,cAAA;IACA,mBAAA;EJmPF;EIrPA;IACE,cAAA;IACA,UAAA;EJuPF;EIzPA;IACE,cAAA;IACA,UAAA;EJ2PF;EI7PA;IACE,cAAA;IACA,mBAAA;EJ+PF;EIhOI;IAhDJ,cAAA;IACA,WAAA;EJmRA;EI9NQ;IAhEN,cAAA;IACA,kBAAA;EJiSF;EIlOQ;IAhEN,cAAA;IACA,mBAAA;EJqSF;EItOQ;IAhEN,cAAA;IACA,UAAA;EJySF;EI1OQ;IAhEN,cAAA;IACA,mBAAA;EJ6SF;EI9OQ;IAhEN,cAAA;IACA,mBAAA;EJiTF;EIlPQ;IAhEN,cAAA;IACA,UAAA;EJqTF;EItPQ;IAhEN,cAAA;IACA,mBAAA;EJyTF;EI1PQ;IAhEN,cAAA;IACA,mBAAA;EJ6TF;EI9PQ;IAhEN,cAAA;IACA,UAAA;EJiUF;EIlQQ;IAhEN,cAAA;IACA,mBAAA;EJqUF;EItQQ;IAhEN,cAAA;IACA,mBAAA;EJyUF;EI1QQ;IAhEN,cAAA;IACA,WAAA;EJ6UF;EItQU;IAxDV,eAAA;EJiUA;EIzQU;IAxDV,yBAAA;EJoUA;EI5QU;IAxDV,0BAAA;EJuUA;EI/QU;IAxDV,iBAAA;EJ0UA;EIlRU;IAxDV,0BAAA;EJ6UA;EIrRU;IAxDV,0BAAA;EJgVA;EIxRU;IAxDV,iBAAA;EJmVA;EI3RU;IAxDV,0BAAA;EJsVA;EI9RU;IAxDV,0BAAA;EJyVA;EIjSU;IAxDV,iBAAA;EJ4VA;EIpSU;IAxDV,0BAAA;EJ+VA;EIvSU;IAxDV,0BAAA;EJkWA;EI/RM;;IAEE,gBAAA;EJiSR;EI9RM;;IAEE,gBAAA;EJgSR;EIvSM;;IAEE,sBAAA;EJySR;EItSM;;IAEE,sBAAA;EJwSR;EI/SM;;IAEE,qBAAA;EJiTR;EI9SM;;IAEE,qBAAA;EJgTR;EIvTM;;IAEE,mBAAA;EJyTR;EItTM;;IAEE,mBAAA;EJwTR;EI/TM;;IAEE,qBAAA;EJiUR;EI9TM;;IAEE,qBAAA;EJgUR;EIvUM;;IAEE,mBAAA;EJyUR;EItUM;;IAEE,mBAAA;EJwUR;AACF;ACnYI;EGUE;IACE,YAAA;EJ4XN;EIzXI;IApCJ,cAAA;IACA,WAAA;EJgaA;EIlZA;IACE,cAAA;IACA,WAAA;EJoZF;EItZA;IACE,cAAA;IACA,UAAA;EJwZF;EI1ZA;IACE,cAAA;IACA,mBAAA;EJ4ZF;EI9ZA;IACE,cAAA;IACA,UAAA;EJgaF;EIlaA;IACE,cAAA;IACA,UAAA;EJoaF;EItaA;IACE,cAAA;IACA,mBAAA;EJwaF;EIzYI;IAhDJ,cAAA;IACA,WAAA;EJ4bA;EIvYQ;IAhEN,cAAA;IACA,kBAAA;EJ0cF;EI3YQ;IAhEN,cAAA;IACA,mBAAA;EJ8cF;EI/YQ;IAhEN,cAAA;IACA,UAAA;EJkdF;EInZQ;IAhEN,cAAA;IACA,mBAAA;EJsdF;EIvZQ;IAhEN,cAAA;IACA,mBAAA;EJ0dF;EI3ZQ;IAhEN,cAAA;IACA,UAAA;EJ8dF;EI/ZQ;IAhEN,cAAA;IACA,mBAAA;EJkeF;EInaQ;IAhEN,cAAA;IACA,mBAAA;EJseF;EIvaQ;IAhEN,cAAA;IACA,UAAA;EJ0eF;EI3aQ;IAhEN,cAAA;IACA,mBAAA;EJ8eF;EI/aQ;IAhEN,cAAA;IACA,mBAAA;EJkfF;EInbQ;IAhEN,cAAA;IACA,WAAA;EJsfF;EI/aU;IAxDV,eAAA;EJ0eA;EIlbU;IAxDV,yBAAA;EJ6eA;EIrbU;IAxDV,0BAAA;EJgfA;EIxbU;IAxDV,iBAAA;EJmfA;EI3bU;IAxDV,0BAAA;EJsfA;EI9bU;IAxDV,0BAAA;EJyfA;EIjcU;IAxDV,iBAAA;EJ4fA;EIpcU;IAxDV,0BAAA;EJ+fA;EIvcU;IAxDV,0BAAA;EJkgBA;EI1cU;IAxDV,iBAAA;EJqgBA;EI7cU;IAxDV,0BAAA;EJwgBA;EIhdU;IAxDV,0BAAA;EJ2gBA;EIxcM;;IAEE,gBAAA;EJ0cR;EIvcM;;IAEE,gBAAA;EJycR;EIhdM;;IAEE,sBAAA;EJkdR;EI/cM;;IAEE,sBAAA;EJidR;EIxdM;;IAEE,qBAAA;EJ0dR;EIvdM;;IAEE,qBAAA;EJydR;EIheM;;IAEE,mBAAA;EJkeR;EI/dM;;IAEE,mBAAA;EJieR;EIxeM;;IAEE,qBAAA;EJ0eR;EIveM;;IAEE,qBAAA;EJyeR;EIhfM;;IAEE,mBAAA;EJkfR;EI/eM;;IAEE,mBAAA;EJifR;AACF;AC5iBI;EGUE;IACE,YAAA;EJqiBN;EIliBI;IApCJ,cAAA;IACA,WAAA;EJykBA;EI3jBA;IACE,cAAA;IACA,WAAA;EJ6jBF;EI/jBA;IACE,cAAA;IACA,UAAA;EJikBF;EInkBA;IACE,cAAA;IACA,mBAAA;EJqkBF;EIvkBA;IACE,cAAA;IACA,UAAA;EJykBF;EI3kBA;IACE,cAAA;IACA,UAAA;EJ6kBF;EI/kBA;IACE,cAAA;IACA,mBAAA;EJilBF;EIljBI;IAhDJ,cAAA;IACA,WAAA;EJqmBA;EIhjBQ;IAhEN,cAAA;IACA,kBAAA;EJmnBF;EIpjBQ;IAhEN,cAAA;IACA,mBAAA;EJunBF;EIxjBQ;IAhEN,cAAA;IACA,UAAA;EJ2nBF;EI5jBQ;IAhEN,cAAA;IACA,mBAAA;EJ+nBF;EIhkBQ;IAhEN,cAAA;IACA,mBAAA;EJmoBF;EIpkBQ;IAhEN,cAAA;IACA,UAAA;EJuoBF;EIxkBQ;IAhEN,cAAA;IACA,mBAAA;EJ2oBF;EI5kBQ;IAhEN,cAAA;IACA,mBAAA;EJ+oBF;EIhlBQ;IAhEN,cAAA;IACA,UAAA;EJmpBF;EIplBQ;IAhEN,cAAA;IACA,mBAAA;EJupBF;EIxlBQ;IAhEN,cAAA;IACA,mBAAA;EJ2pBF;EI5lBQ;IAhEN,cAAA;IACA,WAAA;EJ+pBF;EIxlBU;IAxDV,eAAA;EJmpBA;EI3lBU;IAxDV,yBAAA;EJspBA;EI9lBU;IAxDV,0BAAA;EJypBA;EIjmBU;IAxDV,iBAAA;EJ4pBA;EIpmBU;IAxDV,0BAAA;EJ+pBA;EIvmBU;IAxDV,0BAAA;EJkqBA;EI1mBU;IAxDV,iBAAA;EJqqBA;EI7mBU;IAxDV,0BAAA;EJwqBA;EIhnBU;IAxDV,0BAAA;EJ2qBA;EInnBU;IAxDV,iBAAA;EJ8qBA;EItnBU;IAxDV,0BAAA;EJirBA;EIznBU;IAxDV,0BAAA;EJorBA;EIjnBM;;IAEE,gBAAA;EJmnBR;EIhnBM;;IAEE,gBAAA;EJknBR;EIznBM;;IAEE,sBAAA;EJ2nBR;EIxnBM;;IAEE,sBAAA;EJ0nBR;EIjoBM;;IAEE,qBAAA;EJmoBR;EIhoBM;;IAEE,qBAAA;EJkoBR;EIzoBM;;IAEE,mBAAA;EJ2oBR;EIxoBM;;IAEE,mBAAA;EJ0oBR;EIjpBM;;IAEE,qBAAA;EJmpBR;EIhpBM;;IAEE,qBAAA;EJkpBR;EIzpBM;;IAEE,mBAAA;EJ2pBR;EIxpBM;;IAEE,mBAAA;EJ0pBR;AACF;ACrtBI;EGUE;IACE,YAAA;EJ8sBN;EI3sBI;IApCJ,cAAA;IACA,WAAA;EJkvBA;EIpuBA;IACE,cAAA;IACA,WAAA;EJsuBF;EIxuBA;IACE,cAAA;IACA,UAAA;EJ0uBF;EI5uBA;IACE,cAAA;IACA,mBAAA;EJ8uBF;EIhvBA;IACE,cAAA;IACA,UAAA;EJkvBF;EIpvBA;IACE,cAAA;IACA,UAAA;EJsvBF;EIxvBA;IACE,cAAA;IACA,mBAAA;EJ0vBF;EI3tBI;IAhDJ,cAAA;IACA,WAAA;EJ8wBA;EIztBQ;IAhEN,cAAA;IACA,kBAAA;EJ4xBF;EI7tBQ;IAhEN,cAAA;IACA,mBAAA;EJgyBF;EIjuBQ;IAhEN,cAAA;IACA,UAAA;EJoyBF;EIruBQ;IAhEN,cAAA;IACA,mBAAA;EJwyBF;EIzuBQ;IAhEN,cAAA;IACA,mBAAA;EJ4yBF;EI7uBQ;IAhEN,cAAA;IACA,UAAA;EJgzBF;EIjvBQ;IAhEN,cAAA;IACA,mBAAA;EJozBF;EIrvBQ;IAhEN,cAAA;IACA,mBAAA;EJwzBF;EIzvBQ;IAhEN,cAAA;IACA,UAAA;EJ4zBF;EI7vBQ;IAhEN,cAAA;IACA,mBAAA;EJg0BF;EIjwBQ;IAhEN,cAAA;IACA,mBAAA;EJo0BF;EIrwBQ;IAhEN,cAAA;IACA,WAAA;EJw0BF;EIjwBU;IAxDV,eAAA;EJ4zBA;EIpwBU;IAxDV,yBAAA;EJ+zBA;EIvwBU;IAxDV,0BAAA;EJk0BA;EI1wBU;IAxDV,iBAAA;EJq0BA;EI7wBU;IAxDV,0BAAA;EJw0BA;EIhxBU;IAxDV,0BAAA;EJ20BA;EInxBU;IAxDV,iBAAA;EJ80BA;EItxBU;IAxDV,0BAAA;EJi1BA;EIzxBU;IAxDV,0BAAA;EJo1BA;EI5xBU;IAxDV,iBAAA;EJu1BA;EI/xBU;IAxDV,0BAAA;EJ01BA;EIlyBU;IAxDV,0BAAA;EJ61BA;EI1xBM;;IAEE,gBAAA;EJ4xBR;EIzxBM;;IAEE,gBAAA;EJ2xBR;EIlyBM;;IAEE,sBAAA;EJoyBR;EIjyBM;;IAEE,sBAAA;EJmyBR;EI1yBM;;IAEE,qBAAA;EJ4yBR;EIzyBM;;IAEE,qBAAA;EJ2yBR;EIlzBM;;IAEE,mBAAA;EJozBR;EIjzBM;;IAEE,mBAAA;EJmzBR;EI1zBM;;IAEE,qBAAA;EJ4zBR;EIzzBM;;IAEE,qBAAA;EJ2zBR;EIl0BM;;IAEE,mBAAA;EJo0BR;EIj0BM;;IAEE,mBAAA;EJm0BR;AACF;AC93BI;EGUE;IACE,YAAA;EJu3BN;EIp3BI;IApCJ,cAAA;IACA,WAAA;EJ25BA;EI74BA;IACE,cAAA;IACA,WAAA;EJ+4BF;EIj5BA;IACE,cAAA;IACA,UAAA;EJm5BF;EIr5BA;IACE,cAAA;IACA,mBAAA;EJu5BF;EIz5BA;IACE,cAAA;IACA,UAAA;EJ25BF;EI75BA;IACE,cAAA;IACA,UAAA;EJ+5BF;EIj6BA;IACE,cAAA;IACA,mBAAA;EJm6BF;EIp4BI;IAhDJ,cAAA;IACA,WAAA;EJu7BA;EIl4BQ;IAhEN,cAAA;IACA,kBAAA;EJq8BF;EIt4BQ;IAhEN,cAAA;IACA,mBAAA;EJy8BF;EI14BQ;IAhEN,cAAA;IACA,UAAA;EJ68BF;EI94BQ;IAhEN,cAAA;IACA,mBAAA;EJi9BF;EIl5BQ;IAhEN,cAAA;IACA,mBAAA;EJq9BF;EIt5BQ;IAhEN,cAAA;IACA,UAAA;EJy9BF;EI15BQ;IAhEN,cAAA;IACA,mBAAA;EJ69BF;EI95BQ;IAhEN,cAAA;IACA,mBAAA;EJi+BF;EIl6BQ;IAhEN,cAAA;IACA,UAAA;EJq+BF;EIt6BQ;IAhEN,cAAA;IACA,mBAAA;EJy+BF;EI16BQ;IAhEN,cAAA;IACA,mBAAA;EJ6+BF;EI96BQ;IAhEN,cAAA;IACA,WAAA;EJi/BF;EI16BU;IAxDV,eAAA;EJq+BA;EI76BU;IAxDV,yBAAA;EJw+BA;EIh7BU;IAxDV,0BAAA;EJ2+BA;EIn7BU;IAxDV,iBAAA;EJ8+BA;EIt7BU;IAxDV,0BAAA;EJi/BA;EIz7BU;IAxDV,0BAAA;EJo/BA;EI57BU;IAxDV,iBAAA;EJu/BA;EI/7BU;IAxDV,0BAAA;EJ0/BA;EIl8BU;IAxDV,0BAAA;EJ6/BA;EIr8BU;IAxDV,iBAAA;EJggCA;EIx8BU;IAxDV,0BAAA;EJmgCA;EI38BU;IAxDV,0BAAA;EJsgCA;EIn8BM;;IAEE,gBAAA;EJq8BR;EIl8BM;;IAEE,gBAAA;EJo8BR;EI38BM;;IAEE,sBAAA;EJ68BR;EI18BM;;IAEE,sBAAA;EJ48BR;EIn9BM;;IAEE,qBAAA;EJq9BR;EIl9BM;;IAEE,qBAAA;EJo9BR;EI39BM;;IAEE,mBAAA;EJ69BR;EI19BM;;IAEE,mBAAA;EJ49BR;EIn+BM;;IAEE,qBAAA;EJq+BR;EIl+BM;;IAEE,qBAAA;EJo+BR;EI3+BM;;IAEE,mBAAA;EJ6+BR;EI1+BM;;IAEE,mBAAA;EJ4+BR;AACF;AKpiCQ;EAOI,0BAAA;ALgiCZ;;AKviCQ;EAOI,gCAAA;ALoiCZ;;AK3iCQ;EAOI,yBAAA;ALwiCZ;;AK/iCQ;EAOI,wBAAA;AL4iCZ;;AKnjCQ;EAOI,+BAAA;ALgjCZ;;AKvjCQ;EAOI,yBAAA;ALojCZ;;AK3jCQ;EAOI,6BAAA;ALwjCZ;;AK/jCQ;EAOI,8BAAA;AL4jCZ;;AKnkCQ;EAOI,wBAAA;ALgkCZ;;AKvkCQ;EAOI,+BAAA;ALokCZ;;AK3kCQ;EAOI,wBAAA;ALwkCZ;;AK/kCQ;EAOI,yBAAA;AL4kCZ;;AKnlCQ;EAOI,8BAAA;ALglCZ;;AKvlCQ;EAOI,iCAAA;ALolCZ;;AK3lCQ;EAOI,sCAAA;ALwlCZ;;AK/lCQ;EAOI,yCAAA;AL4lCZ;;AKnmCQ;EAOI,uBAAA;ALgmCZ;;AKvmCQ;EAOI,uBAAA;ALomCZ;;AK3mCQ;EAOI,yBAAA;ALwmCZ;;AK/mCQ;EAOI,yBAAA;AL4mCZ;;AKnnCQ;EAOI,0BAAA;ALgnCZ;;AKvnCQ;EAOI,4BAAA;ALonCZ;;AK3nCQ;EAOI,kCAAA;ALwnCZ;;AK/nCQ;EAOI,sCAAA;AL4nCZ;;AKnoCQ;EAOI,oCAAA;ALgoCZ;;AKvoCQ;EAOI,kCAAA;ALooCZ;;AK3oCQ;EAOI,yCAAA;ALwoCZ;;AK/oCQ;EAOI,wCAAA;AL4oCZ;;AKnpCQ;EAOI,wCAAA;ALgpCZ;;AKvpCQ;EAOI,kCAAA;ALopCZ;;AK3pCQ;EAOI,gCAAA;ALwpCZ;;AK/pCQ;EAOI,8BAAA;AL4pCZ;;AKnqCQ;EAOI,gCAAA;ALgqCZ;;AKvqCQ;EAOI,+BAAA;ALoqCZ;;AK3qCQ;EAOI,oCAAA;ALwqCZ;;AK/qCQ;EAOI,kCAAA;AL4qCZ;;AKnrCQ;EAOI,gCAAA;ALgrCZ;;AKvrCQ;EAOI,uCAAA;ALorCZ;;AK3rCQ;EAOI,sCAAA;ALwrCZ;;AK/rCQ;EAOI,iCAAA;AL4rCZ;;AKnsCQ;EAOI,2BAAA;ALgsCZ;;AKvsCQ;EAOI,iCAAA;ALosCZ;;AK3sCQ;EAOI,+BAAA;ALwsCZ;;AK/sCQ;EAOI,6BAAA;AL4sCZ;;AKntCQ;EAOI,+BAAA;ALgtCZ;;AKvtCQ;EAOI,8BAAA;ALotCZ;;AK3tCQ;EAOI,oBAAA;ALwtCZ;;AK/tCQ;EAOI,mBAAA;AL4tCZ;;AKnuCQ;EAOI,mBAAA;ALguCZ;;AKvuCQ;EAOI,mBAAA;ALouCZ;;AK3uCQ;EAOI,mBAAA;ALwuCZ;;AK/uCQ;EAOI,mBAAA;AL4uCZ;;AKnvCQ;EAOI,mBAAA;ALgvCZ;;AKvvCQ;EAOI,mBAAA;ALovCZ;;AK3vCQ;EAOI,oBAAA;ALwvCZ;;AK/vCQ;EAOI,0BAAA;AL4vCZ;;AKnwCQ;EAOI,yBAAA;ALgwCZ;;AKvwCQ;EAOI,uBAAA;ALowCZ;;AK3wCQ;EAOI,yBAAA;ALwwCZ;;AK/wCQ;EAOI,uBAAA;AL4wCZ;;AKnxCQ;EAOI,uBAAA;ALgxCZ;;AKvxCQ;EAOI,yBAAA;EAAA,0BAAA;ALqxCZ;;AK5xCQ;EAOI,+BAAA;EAAA,gCAAA;AL0xCZ;;AKjyCQ;EAOI,8BAAA;EAAA,+BAAA;AL+xCZ;;AKtyCQ;EAOI,4BAAA;EAAA,6BAAA;ALoyCZ;;AK3yCQ;EAOI,8BAAA;EAAA,+BAAA;ALyyCZ;;AKhzCQ;EAOI,4BAAA;EAAA,6BAAA;AL8yCZ;;AKrzCQ;EAOI,4BAAA;EAAA,6BAAA;ALmzCZ;;AK1zCQ;EAOI,wBAAA;EAAA,2BAAA;ALwzCZ;;AK/zCQ;EAOI,8BAAA;EAAA,iCAAA;AL6zCZ;;AKp0CQ;EAOI,6BAAA;EAAA,gCAAA;ALk0CZ;;AKz0CQ;EAOI,2BAAA;EAAA,8BAAA;ALu0CZ;;AK90CQ;EAOI,6BAAA;EAAA,gCAAA;AL40CZ;;AKn1CQ;EAOI,2BAAA;EAAA,8BAAA;ALi1CZ;;AKx1CQ;EAOI,2BAAA;EAAA,8BAAA;ALs1CZ;;AK71CQ;EAOI,wBAAA;AL01CZ;;AKj2CQ;EAOI,8BAAA;AL81CZ;;AKr2CQ;EAOI,6BAAA;ALk2CZ;;AKz2CQ;EAOI,2BAAA;ALs2CZ;;AK72CQ;EAOI,6BAAA;AL02CZ;;AKj3CQ;EAOI,2BAAA;AL82CZ;;AKr3CQ;EAOI,2BAAA;ALk3CZ;;AKz3CQ;EAOI,yBAAA;ALs3CZ;;AK73CQ;EAOI,+BAAA;AL03CZ;;AKj4CQ;EAOI,8BAAA;AL83CZ;;AKr4CQ;EAOI,4BAAA;ALk4CZ;;AKz4CQ;EAOI,8BAAA;ALs4CZ;;AK74CQ;EAOI,4BAAA;AL04CZ;;AKj5CQ;EAOI,4BAAA;AL84CZ;;AKr5CQ;EAOI,2BAAA;ALk5CZ;;AKz5CQ;EAOI,iCAAA;ALs5CZ;;AK75CQ;EAOI,gCAAA;AL05CZ;;AKj6CQ;EAOI,8BAAA;AL85CZ;;AKr6CQ;EAOI,gCAAA;ALk6CZ;;AKz6CQ;EAOI,8BAAA;ALs6CZ;;AK76CQ;EAOI,8BAAA;AL06CZ;;AKj7CQ;EAOI,0BAAA;AL86CZ;;AKr7CQ;EAOI,gCAAA;ALk7CZ;;AKz7CQ;EAOI,+BAAA;ALs7CZ;;AK77CQ;EAOI,6BAAA;AL07CZ;;AKj8CQ;EAOI,+BAAA;AL87CZ;;AKr8CQ;EAOI,6BAAA;ALk8CZ;;AKz8CQ;EAOI,6BAAA;ALs8CZ;;AK78CQ;EAOI,qBAAA;AL08CZ;;AKj9CQ;EAOI,2BAAA;AL88CZ;;AKr9CQ;EAOI,0BAAA;ALk9CZ;;AKz9CQ;EAOI,wBAAA;ALs9CZ;;AK79CQ;EAOI,0BAAA;AL09CZ;;AKj+CQ;EAOI,wBAAA;AL89CZ;;AKr+CQ;EAOI,0BAAA;EAAA,2BAAA;ALm+CZ;;AK1+CQ;EAOI,gCAAA;EAAA,iCAAA;ALw+CZ;;AK/+CQ;EAOI,+BAAA;EAAA,gCAAA;AL6+CZ;;AKp/CQ;EAOI,6BAAA;EAAA,8BAAA;ALk/CZ;;AKz/CQ;EAOI,+BAAA;EAAA,gCAAA;ALu/CZ;;AK9/CQ;EAOI,6BAAA;EAAA,8BAAA;AL4/CZ;;AKngDQ;EAOI,yBAAA;EAAA,4BAAA;ALigDZ;;AKxgDQ;EAOI,+BAAA;EAAA,kCAAA;ALsgDZ;;AK7gDQ;EAOI,8BAAA;EAAA,iCAAA;AL2gDZ;;AKlhDQ;EAOI,4BAAA;EAAA,+BAAA;ALghDZ;;AKvhDQ;EAOI,8BAAA;EAAA,iCAAA;ALqhDZ;;AK5hDQ;EAOI,4BAAA;EAAA,+BAAA;AL0hDZ;;AKjiDQ;EAOI,yBAAA;AL8hDZ;;AKriDQ;EAOI,+BAAA;ALkiDZ;;AKziDQ;EAOI,8BAAA;ALsiDZ;;AK7iDQ;EAOI,4BAAA;AL0iDZ;;AKjjDQ;EAOI,8BAAA;AL8iDZ;;AKrjDQ;EAOI,4BAAA;ALkjDZ;;AKzjDQ;EAOI,0BAAA;ALsjDZ;;AK7jDQ;EAOI,gCAAA;AL0jDZ;;AKjkDQ;EAOI,+BAAA;AL8jDZ;;AKrkDQ;EAOI,6BAAA;ALkkDZ;;AKzkDQ;EAOI,+BAAA;ALskDZ;;AK7kDQ;EAOI,6BAAA;AL0kDZ;;AKjlDQ;EAOI,4BAAA;AL8kDZ;;AKrlDQ;EAOI,kCAAA;ALklDZ;;AKzlDQ;EAOI,iCAAA;ALslDZ;;AK7lDQ;EAOI,+BAAA;AL0lDZ;;AKjmDQ;EAOI,iCAAA;AL8lDZ;;AKrmDQ;EAOI,+BAAA;ALkmDZ;;AKzmDQ;EAOI,2BAAA;ALsmDZ;;AK7mDQ;EAOI,iCAAA;AL0mDZ;;AKjnDQ;EAOI,gCAAA;AL8mDZ;;AKrnDQ;EAOI,8BAAA;ALknDZ;;AKznDQ;EAOI,gCAAA;ALsnDZ;;AK7nDQ;EAOI,8BAAA;AL0nDZ;;ACpoDI;EIGI;IAOI,0BAAA;EL+nDV;EKtoDM;IAOI,gCAAA;ELkoDV;EKzoDM;IAOI,yBAAA;ELqoDV;EK5oDM;IAOI,wBAAA;ELwoDV;EK/oDM;IAOI,+BAAA;EL2oDV;EKlpDM;IAOI,yBAAA;EL8oDV;EKrpDM;IAOI,6BAAA;ELipDV;EKxpDM;IAOI,8BAAA;ELopDV;EK3pDM;IAOI,wBAAA;ELupDV;EK9pDM;IAOI,+BAAA;EL0pDV;EKjqDM;IAOI,wBAAA;EL6pDV;EKpqDM;IAOI,yBAAA;ELgqDV;EKvqDM;IAOI,8BAAA;ELmqDV;EK1qDM;IAOI,iCAAA;ELsqDV;EK7qDM;IAOI,sCAAA;ELyqDV;EKhrDM;IAOI,yCAAA;EL4qDV;EKnrDM;IAOI,uBAAA;EL+qDV;EKtrDM;IAOI,uBAAA;ELkrDV;EKzrDM;IAOI,yBAAA;ELqrDV;EK5rDM;IAOI,yBAAA;ELwrDV;EK/rDM;IAOI,0BAAA;EL2rDV;EKlsDM;IAOI,4BAAA;EL8rDV;EKrsDM;IAOI,kCAAA;ELisDV;EKxsDM;IAOI,sCAAA;ELosDV;EK3sDM;IAOI,oCAAA;ELusDV;EK9sDM;IAOI,kCAAA;EL0sDV;EKjtDM;IAOI,yCAAA;EL6sDV;EKptDM;IAOI,wCAAA;ELgtDV;EKvtDM;IAOI,wCAAA;ELmtDV;EK1tDM;IAOI,kCAAA;ELstDV;EK7tDM;IAOI,gCAAA;ELytDV;EKhuDM;IAOI,8BAAA;EL4tDV;EKnuDM;IAOI,gCAAA;EL+tDV;EKtuDM;IAOI,+BAAA;ELkuDV;EKzuDM;IAOI,oCAAA;ELquDV;EK5uDM;IAOI,kCAAA;ELwuDV;EK/uDM;IAOI,gCAAA;EL2uDV;EKlvDM;IAOI,uCAAA;EL8uDV;EKrvDM;IAOI,sCAAA;ELivDV;EKxvDM;IAOI,iCAAA;ELovDV;EK3vDM;IAOI,2BAAA;ELuvDV;EK9vDM;IAOI,iCAAA;EL0vDV;EKjwDM;IAOI,+BAAA;EL6vDV;EKpwDM;IAOI,6BAAA;ELgwDV;EKvwDM;IAOI,+BAAA;ELmwDV;EK1wDM;IAOI,8BAAA;ELswDV;EK7wDM;IAOI,oBAAA;ELywDV;EKhxDM;IAOI,mBAAA;EL4wDV;EKnxDM;IAOI,mBAAA;EL+wDV;EKtxDM;IAOI,mBAAA;ELkxDV;EKzxDM;IAOI,mBAAA;ELqxDV;EK5xDM;IAOI,mBAAA;ELwxDV;EK/xDM;IAOI,mBAAA;EL2xDV;EKlyDM;IAOI,mBAAA;EL8xDV;EKryDM;IAOI,oBAAA;ELiyDV;EKxyDM;IAOI,0BAAA;ELoyDV;EK3yDM;IAOI,yBAAA;ELuyDV;EK9yDM;IAOI,uBAAA;EL0yDV;EKjzDM;IAOI,yBAAA;EL6yDV;EKpzDM;IAOI,uBAAA;ELgzDV;EKvzDM;IAOI,uBAAA;ELmzDV;EK1zDM;IAOI,yBAAA;IAAA,0BAAA;ELuzDV;EK9zDM;IAOI,+BAAA;IAAA,gCAAA;EL2zDV;EKl0DM;IAOI,8BAAA;IAAA,+BAAA;EL+zDV;EKt0DM;IAOI,4BAAA;IAAA,6BAAA;ELm0DV;EK10DM;IAOI,8BAAA;IAAA,+BAAA;ELu0DV;EK90DM;IAOI,4BAAA;IAAA,6BAAA;EL20DV;EKl1DM;IAOI,4BAAA;IAAA,6BAAA;EL+0DV;EKt1DM;IAOI,wBAAA;IAAA,2BAAA;ELm1DV;EK11DM;IAOI,8BAAA;IAAA,iCAAA;ELu1DV;EK91DM;IAOI,6BAAA;IAAA,gCAAA;EL21DV;EKl2DM;IAOI,2BAAA;IAAA,8BAAA;EL+1DV;EKt2DM;IAOI,6BAAA;IAAA,gCAAA;ELm2DV;EK12DM;IAOI,2BAAA;IAAA,8BAAA;ELu2DV;EK92DM;IAOI,2BAAA;IAAA,8BAAA;EL22DV;EKl3DM;IAOI,wBAAA;EL82DV;EKr3DM;IAOI,8BAAA;ELi3DV;EKx3DM;IAOI,6BAAA;ELo3DV;EK33DM;IAOI,2BAAA;ELu3DV;EK93DM;IAOI,6BAAA;EL03DV;EKj4DM;IAOI,2BAAA;EL63DV;EKp4DM;IAOI,2BAAA;ELg4DV;EKv4DM;IAOI,yBAAA;ELm4DV;EK14DM;IAOI,+BAAA;ELs4DV;EK74DM;IAOI,8BAAA;ELy4DV;EKh5DM;IAOI,4BAAA;EL44DV;EKn5DM;IAOI,8BAAA;EL+4DV;EKt5DM;IAOI,4BAAA;ELk5DV;EKz5DM;IAOI,4BAAA;ELq5DV;EK55DM;IAOI,2BAAA;ELw5DV;EK/5DM;IAOI,iCAAA;EL25DV;EKl6DM;IAOI,gCAAA;EL85DV;EKr6DM;IAOI,8BAAA;ELi6DV;EKx6DM;IAOI,gCAAA;ELo6DV;EK36DM;IAOI,8BAAA;ELu6DV;EK96DM;IAOI,8BAAA;EL06DV;EKj7DM;IAOI,0BAAA;EL66DV;EKp7DM;IAOI,gCAAA;ELg7DV;EKv7DM;IAOI,+BAAA;ELm7DV;EK17DM;IAOI,6BAAA;ELs7DV;EK77DM;IAOI,+BAAA;ELy7DV;EKh8DM;IAOI,6BAAA;EL47DV;EKn8DM;IAOI,6BAAA;EL+7DV;EKt8DM;IAOI,qBAAA;ELk8DV;EKz8DM;IAOI,2BAAA;ELq8DV;EK58DM;IAOI,0BAAA;ELw8DV;EK/8DM;IAOI,wBAAA;EL28DV;EKl9DM;IAOI,0BAAA;EL88DV;EKr9DM;IAOI,wBAAA;ELi9DV;EKx9DM;IAOI,0BAAA;IAAA,2BAAA;ELq9DV;EK59DM;IAOI,gCAAA;IAAA,iCAAA;ELy9DV;EKh+DM;IAOI,+BAAA;IAAA,gCAAA;EL69DV;EKp+DM;IAOI,6BAAA;IAAA,8BAAA;ELi+DV;EKx+DM;IAOI,+BAAA;IAAA,gCAAA;ELq+DV;EK5+DM;IAOI,6BAAA;IAAA,8BAAA;ELy+DV;EKh/DM;IAOI,yBAAA;IAAA,4BAAA;EL6+DV;EKp/DM;IAOI,+BAAA;IAAA,kCAAA;ELi/DV;EKx/DM;IAOI,8BAAA;IAAA,iCAAA;ELq/DV;EK5/DM;IAOI,4BAAA;IAAA,+BAAA;ELy/DV;EKhgEM;IAOI,8BAAA;IAAA,iCAAA;EL6/DV;EKpgEM;IAOI,4BAAA;IAAA,+BAAA;ELigEV;EKxgEM;IAOI,yBAAA;ELogEV;EK3gEM;IAOI,+BAAA;ELugEV;EK9gEM;IAOI,8BAAA;EL0gEV;EKjhEM;IAOI,4BAAA;EL6gEV;EKphEM;IAOI,8BAAA;ELghEV;EKvhEM;IAOI,4BAAA;ELmhEV;EK1hEM;IAOI,0BAAA;ELshEV;EK7hEM;IAOI,gCAAA;ELyhEV;EKhiEM;IAOI,+BAAA;EL4hEV;EKniEM;IAOI,6BAAA;EL+hEV;EKtiEM;IAOI,+BAAA;ELkiEV;EKziEM;IAOI,6BAAA;ELqiEV;EK5iEM;IAOI,4BAAA;ELwiEV;EK/iEM;IAOI,kCAAA;EL2iEV;EKljEM;IAOI,iCAAA;EL8iEV;EKrjEM;IAOI,+BAAA;ELijEV;EKxjEM;IAOI,iCAAA;ELojEV;EK3jEM;IAOI,+BAAA;ELujEV;EK9jEM;IAOI,2BAAA;EL0jEV;EKjkEM;IAOI,iCAAA;EL6jEV;EKpkEM;IAOI,gCAAA;ELgkEV;EKvkEM;IAOI,8BAAA;ELmkEV;EK1kEM;IAOI,gCAAA;ELskEV;EK7kEM;IAOI,8BAAA;ELykEV;AACF;ACplEI;EIGI;IAOI,0BAAA;EL8kEV;EKrlEM;IAOI,gCAAA;ELilEV;EKxlEM;IAOI,yBAAA;ELolEV;EK3lEM;IAOI,wBAAA;ELulEV;EK9lEM;IAOI,+BAAA;EL0lEV;EKjmEM;IAOI,yBAAA;EL6lEV;EKpmEM;IAOI,6BAAA;ELgmEV;EKvmEM;IAOI,8BAAA;ELmmEV;EK1mEM;IAOI,wBAAA;ELsmEV;EK7mEM;IAOI,+BAAA;ELymEV;EKhnEM;IAOI,wBAAA;EL4mEV;EKnnEM;IAOI,yBAAA;EL+mEV;EKtnEM;IAOI,8BAAA;ELknEV;EKznEM;IAOI,iCAAA;ELqnEV;EK5nEM;IAOI,sCAAA;ELwnEV;EK/nEM;IAOI,yCAAA;EL2nEV;EKloEM;IAOI,uBAAA;EL8nEV;EKroEM;IAOI,uBAAA;ELioEV;EKxoEM;IAOI,yBAAA;ELooEV;EK3oEM;IAOI,yBAAA;ELuoEV;EK9oEM;IAOI,0BAAA;EL0oEV;EKjpEM;IAOI,4BAAA;EL6oEV;EKppEM;IAOI,kCAAA;ELgpEV;EKvpEM;IAOI,sCAAA;ELmpEV;EK1pEM;IAOI,oCAAA;ELspEV;EK7pEM;IAOI,kCAAA;ELypEV;EKhqEM;IAOI,yCAAA;EL4pEV;EKnqEM;IAOI,wCAAA;EL+pEV;EKtqEM;IAOI,wCAAA;ELkqEV;EKzqEM;IAOI,kCAAA;ELqqEV;EK5qEM;IAOI,gCAAA;ELwqEV;EK/qEM;IAOI,8BAAA;EL2qEV;EKlrEM;IAOI,gCAAA;EL8qEV;EKrrEM;IAOI,+BAAA;ELirEV;EKxrEM;IAOI,oCAAA;ELorEV;EK3rEM;IAOI,kCAAA;ELurEV;EK9rEM;IAOI,gCAAA;EL0rEV;EKjsEM;IAOI,uCAAA;EL6rEV;EKpsEM;IAOI,sCAAA;ELgsEV;EKvsEM;IAOI,iCAAA;ELmsEV;EK1sEM;IAOI,2BAAA;ELssEV;EK7sEM;IAOI,iCAAA;ELysEV;EKhtEM;IAOI,+BAAA;EL4sEV;EKntEM;IAOI,6BAAA;EL+sEV;EKttEM;IAOI,+BAAA;ELktEV;EKztEM;IAOI,8BAAA;ELqtEV;EK5tEM;IAOI,oBAAA;ELwtEV;EK/tEM;IAOI,mBAAA;EL2tEV;EKluEM;IAOI,mBAAA;EL8tEV;EKruEM;IAOI,mBAAA;ELiuEV;EKxuEM;IAOI,mBAAA;ELouEV;EK3uEM;IAOI,mBAAA;ELuuEV;EK9uEM;IAOI,mBAAA;EL0uEV;EKjvEM;IAOI,mBAAA;EL6uEV;EKpvEM;IAOI,oBAAA;ELgvEV;EKvvEM;IAOI,0BAAA;ELmvEV;EK1vEM;IAOI,yBAAA;ELsvEV;EK7vEM;IAOI,uBAAA;ELyvEV;EKhwEM;IAOI,yBAAA;EL4vEV;EKnwEM;IAOI,uBAAA;EL+vEV;EKtwEM;IAOI,uBAAA;ELkwEV;EKzwEM;IAOI,yBAAA;IAAA,0BAAA;ELswEV;EK7wEM;IAOI,+BAAA;IAAA,gCAAA;EL0wEV;EKjxEM;IAOI,8BAAA;IAAA,+BAAA;EL8wEV;EKrxEM;IAOI,4BAAA;IAAA,6BAAA;ELkxEV;EKzxEM;IAOI,8BAAA;IAAA,+BAAA;ELsxEV;EK7xEM;IAOI,4BAAA;IAAA,6BAAA;EL0xEV;EKjyEM;IAOI,4BAAA;IAAA,6BAAA;EL8xEV;EKryEM;IAOI,wBAAA;IAAA,2BAAA;ELkyEV;EKzyEM;IAOI,8BAAA;IAAA,iCAAA;ELsyEV;EK7yEM;IAOI,6BAAA;IAAA,gCAAA;EL0yEV;EKjzEM;IAOI,2BAAA;IAAA,8BAAA;EL8yEV;EKrzEM;IAOI,6BAAA;IAAA,gCAAA;ELkzEV;EKzzEM;IAOI,2BAAA;IAAA,8BAAA;ELszEV;EK7zEM;IAOI,2BAAA;IAAA,8BAAA;EL0zEV;EKj0EM;IAOI,wBAAA;EL6zEV;EKp0EM;IAOI,8BAAA;ELg0EV;EKv0EM;IAOI,6BAAA;ELm0EV;EK10EM;IAOI,2BAAA;ELs0EV;EK70EM;IAOI,6BAAA;ELy0EV;EKh1EM;IAOI,2BAAA;EL40EV;EKn1EM;IAOI,2BAAA;EL+0EV;EKt1EM;IAOI,yBAAA;ELk1EV;EKz1EM;IAOI,+BAAA;ELq1EV;EK51EM;IAOI,8BAAA;ELw1EV;EK/1EM;IAOI,4BAAA;EL21EV;EKl2EM;IAOI,8BAAA;EL81EV;EKr2EM;IAOI,4BAAA;ELi2EV;EKx2EM;IAOI,4BAAA;ELo2EV;EK32EM;IAOI,2BAAA;ELu2EV;EK92EM;IAOI,iCAAA;EL02EV;EKj3EM;IAOI,gCAAA;EL62EV;EKp3EM;IAOI,8BAAA;ELg3EV;EKv3EM;IAOI,gCAAA;ELm3EV;EK13EM;IAOI,8BAAA;ELs3EV;EK73EM;IAOI,8BAAA;ELy3EV;EKh4EM;IAOI,0BAAA;EL43EV;EKn4EM;IAOI,gCAAA;EL+3EV;EKt4EM;IAOI,+BAAA;ELk4EV;EKz4EM;IAOI,6BAAA;ELq4EV;EK54EM;IAOI,+BAAA;ELw4EV;EK/4EM;IAOI,6BAAA;EL24EV;EKl5EM;IAOI,6BAAA;EL84EV;EKr5EM;IAOI,qBAAA;ELi5EV;EKx5EM;IAOI,2BAAA;ELo5EV;EK35EM;IAOI,0BAAA;ELu5EV;EK95EM;IAOI,wBAAA;EL05EV;EKj6EM;IAOI,0BAAA;EL65EV;EKp6EM;IAOI,wBAAA;ELg6EV;EKv6EM;IAOI,0BAAA;IAAA,2BAAA;ELo6EV;EK36EM;IAOI,gCAAA;IAAA,iCAAA;ELw6EV;EK/6EM;IAOI,+BAAA;IAAA,gCAAA;EL46EV;EKn7EM;IAOI,6BAAA;IAAA,8BAAA;ELg7EV;EKv7EM;IAOI,+BAAA;IAAA,gCAAA;ELo7EV;EK37EM;IAOI,6BAAA;IAAA,8BAAA;ELw7EV;EK/7EM;IAOI,yBAAA;IAAA,4BAAA;EL47EV;EKn8EM;IAOI,+BAAA;IAAA,kCAAA;ELg8EV;EKv8EM;IAOI,8BAAA;IAAA,iCAAA;ELo8EV;EK38EM;IAOI,4BAAA;IAAA,+BAAA;ELw8EV;EK/8EM;IAOI,8BAAA;IAAA,iCAAA;EL48EV;EKn9EM;IAOI,4BAAA;IAAA,+BAAA;ELg9EV;EKv9EM;IAOI,yBAAA;ELm9EV;EK19EM;IAOI,+BAAA;ELs9EV;EK79EM;IAOI,8BAAA;ELy9EV;EKh+EM;IAOI,4BAAA;EL49EV;EKn+EM;IAOI,8BAAA;EL+9EV;EKt+EM;IAOI,4BAAA;ELk+EV;EKz+EM;IAOI,0BAAA;ELq+EV;EK5+EM;IAOI,gCAAA;ELw+EV;EK/+EM;IAOI,+BAAA;EL2+EV;EKl/EM;IAOI,6BAAA;EL8+EV;EKr/EM;IAOI,+BAAA;ELi/EV;EKx/EM;IAOI,6BAAA;ELo/EV;EK3/EM;IAOI,4BAAA;ELu/EV;EK9/EM;IAOI,kCAAA;EL0/EV;EKjgFM;IAOI,iCAAA;EL6/EV;EKpgFM;IAOI,+BAAA;ELggFV;EKvgFM;IAOI,iCAAA;ELmgFV;EK1gFM;IAOI,+BAAA;ELsgFV;EK7gFM;IAOI,2BAAA;ELygFV;EKhhFM;IAOI,iCAAA;EL4gFV;EKnhFM;IAOI,gCAAA;EL+gFV;EKthFM;IAOI,8BAAA;ELkhFV;EKzhFM;IAOI,gCAAA;ELqhFV;EK5hFM;IAOI,8BAAA;ELwhFV;AACF;ACniFI;EIGI;IAOI,0BAAA;EL6hFV;EKpiFM;IAOI,gCAAA;ELgiFV;EKviFM;IAOI,yBAAA;ELmiFV;EK1iFM;IAOI,wBAAA;ELsiFV;EK7iFM;IAOI,+BAAA;ELyiFV;EKhjFM;IAOI,yBAAA;EL4iFV;EKnjFM;IAOI,6BAAA;EL+iFV;EKtjFM;IAOI,8BAAA;ELkjFV;EKzjFM;IAOI,wBAAA;ELqjFV;EK5jFM;IAOI,+BAAA;ELwjFV;EK/jFM;IAOI,wBAAA;EL2jFV;EKlkFM;IAOI,yBAAA;EL8jFV;EKrkFM;IAOI,8BAAA;ELikFV;EKxkFM;IAOI,iCAAA;ELokFV;EK3kFM;IAOI,sCAAA;ELukFV;EK9kFM;IAOI,yCAAA;EL0kFV;EKjlFM;IAOI,uBAAA;EL6kFV;EKplFM;IAOI,uBAAA;ELglFV;EKvlFM;IAOI,yBAAA;ELmlFV;EK1lFM;IAOI,yBAAA;ELslFV;EK7lFM;IAOI,0BAAA;ELylFV;EKhmFM;IAOI,4BAAA;EL4lFV;EKnmFM;IAOI,kCAAA;EL+lFV;EKtmFM;IAOI,sCAAA;ELkmFV;EKzmFM;IAOI,oCAAA;ELqmFV;EK5mFM;IAOI,kCAAA;ELwmFV;EK/mFM;IAOI,yCAAA;EL2mFV;EKlnFM;IAOI,wCAAA;EL8mFV;EKrnFM;IAOI,wCAAA;ELinFV;EKxnFM;IAOI,kCAAA;ELonFV;EK3nFM;IAOI,gCAAA;ELunFV;EK9nFM;IAOI,8BAAA;EL0nFV;EKjoFM;IAOI,gCAAA;EL6nFV;EKpoFM;IAOI,+BAAA;ELgoFV;EKvoFM;IAOI,oCAAA;ELmoFV;EK1oFM;IAOI,kCAAA;ELsoFV;EK7oFM;IAOI,gCAAA;ELyoFV;EKhpFM;IAOI,uCAAA;EL4oFV;EKnpFM;IAOI,sCAAA;EL+oFV;EKtpFM;IAOI,iCAAA;ELkpFV;EKzpFM;IAOI,2BAAA;ELqpFV;EK5pFM;IAOI,iCAAA;ELwpFV;EK/pFM;IAOI,+BAAA;EL2pFV;EKlqFM;IAOI,6BAAA;EL8pFV;EKrqFM;IAOI,+BAAA;ELiqFV;EKxqFM;IAOI,8BAAA;ELoqFV;EK3qFM;IAOI,oBAAA;ELuqFV;EK9qFM;IAOI,mBAAA;EL0qFV;EKjrFM;IAOI,mBAAA;EL6qFV;EKprFM;IAOI,mBAAA;ELgrFV;EKvrFM;IAOI,mBAAA;ELmrFV;EK1rFM;IAOI,mBAAA;ELsrFV;EK7rFM;IAOI,mBAAA;ELyrFV;EKhsFM;IAOI,mBAAA;EL4rFV;EKnsFM;IAOI,oBAAA;EL+rFV;EKtsFM;IAOI,0BAAA;ELksFV;EKzsFM;IAOI,yBAAA;ELqsFV;EK5sFM;IAOI,uBAAA;ELwsFV;EK/sFM;IAOI,yBAAA;EL2sFV;EKltFM;IAOI,uBAAA;EL8sFV;EKrtFM;IAOI,uBAAA;ELitFV;EKxtFM;IAOI,yBAAA;IAAA,0BAAA;ELqtFV;EK5tFM;IAOI,+BAAA;IAAA,gCAAA;ELytFV;EKhuFM;IAOI,8BAAA;IAAA,+BAAA;EL6tFV;EKpuFM;IAOI,4BAAA;IAAA,6BAAA;ELiuFV;EKxuFM;IAOI,8BAAA;IAAA,+BAAA;ELquFV;EK5uFM;IAOI,4BAAA;IAAA,6BAAA;ELyuFV;EKhvFM;IAOI,4BAAA;IAAA,6BAAA;EL6uFV;EKpvFM;IAOI,wBAAA;IAAA,2BAAA;ELivFV;EKxvFM;IAOI,8BAAA;IAAA,iCAAA;ELqvFV;EK5vFM;IAOI,6BAAA;IAAA,gCAAA;ELyvFV;EKhwFM;IAOI,2BAAA;IAAA,8BAAA;EL6vFV;EKpwFM;IAOI,6BAAA;IAAA,gCAAA;ELiwFV;EKxwFM;IAOI,2BAAA;IAAA,8BAAA;ELqwFV;EK5wFM;IAOI,2BAAA;IAAA,8BAAA;ELywFV;EKhxFM;IAOI,wBAAA;EL4wFV;EKnxFM;IAOI,8BAAA;EL+wFV;EKtxFM;IAOI,6BAAA;ELkxFV;EKzxFM;IAOI,2BAAA;ELqxFV;EK5xFM;IAOI,6BAAA;ELwxFV;EK/xFM;IAOI,2BAAA;EL2xFV;EKlyFM;IAOI,2BAAA;EL8xFV;EKryFM;IAOI,yBAAA;ELiyFV;EKxyFM;IAOI,+BAAA;ELoyFV;EK3yFM;IAOI,8BAAA;ELuyFV;EK9yFM;IAOI,4BAAA;EL0yFV;EKjzFM;IAOI,8BAAA;EL6yFV;EKpzFM;IAOI,4BAAA;ELgzFV;EKvzFM;IAOI,4BAAA;ELmzFV;EK1zFM;IAOI,2BAAA;ELszFV;EK7zFM;IAOI,iCAAA;ELyzFV;EKh0FM;IAOI,gCAAA;EL4zFV;EKn0FM;IAOI,8BAAA;EL+zFV;EKt0FM;IAOI,gCAAA;ELk0FV;EKz0FM;IAOI,8BAAA;ELq0FV;EK50FM;IAOI,8BAAA;ELw0FV;EK/0FM;IAOI,0BAAA;EL20FV;EKl1FM;IAOI,gCAAA;EL80FV;EKr1FM;IAOI,+BAAA;ELi1FV;EKx1FM;IAOI,6BAAA;ELo1FV;EK31FM;IAOI,+BAAA;ELu1FV;EK91FM;IAOI,6BAAA;EL01FV;EKj2FM;IAOI,6BAAA;EL61FV;EKp2FM;IAOI,qBAAA;ELg2FV;EKv2FM;IAOI,2BAAA;ELm2FV;EK12FM;IAOI,0BAAA;ELs2FV;EK72FM;IAOI,wBAAA;ELy2FV;EKh3FM;IAOI,0BAAA;EL42FV;EKn3FM;IAOI,wBAAA;EL+2FV;EKt3FM;IAOI,0BAAA;IAAA,2BAAA;ELm3FV;EK13FM;IAOI,gCAAA;IAAA,iCAAA;ELu3FV;EK93FM;IAOI,+BAAA;IAAA,gCAAA;EL23FV;EKl4FM;IAOI,6BAAA;IAAA,8BAAA;EL+3FV;EKt4FM;IAOI,+BAAA;IAAA,gCAAA;ELm4FV;EK14FM;IAOI,6BAAA;IAAA,8BAAA;ELu4FV;EK94FM;IAOI,yBAAA;IAAA,4BAAA;EL24FV;EKl5FM;IAOI,+BAAA;IAAA,kCAAA;EL+4FV;EKt5FM;IAOI,8BAAA;IAAA,iCAAA;ELm5FV;EK15FM;IAOI,4BAAA;IAAA,+BAAA;ELu5FV;EK95FM;IAOI,8BAAA;IAAA,iCAAA;EL25FV;EKl6FM;IAOI,4BAAA;IAAA,+BAAA;EL+5FV;EKt6FM;IAOI,yBAAA;ELk6FV;EKz6FM;IAOI,+BAAA;ELq6FV;EK56FM;IAOI,8BAAA;ELw6FV;EK/6FM;IAOI,4BAAA;EL26FV;EKl7FM;IAOI,8BAAA;EL86FV;EKr7FM;IAOI,4BAAA;ELi7FV;EKx7FM;IAOI,0BAAA;ELo7FV;EK37FM;IAOI,gCAAA;ELu7FV;EK97FM;IAOI,+BAAA;EL07FV;EKj8FM;IAOI,6BAAA;EL67FV;EKp8FM;IAOI,+BAAA;ELg8FV;EKv8FM;IAOI,6BAAA;ELm8FV;EK18FM;IAOI,4BAAA;ELs8FV;EK78FM;IAOI,kCAAA;ELy8FV;EKh9FM;IAOI,iCAAA;EL48FV;EKn9FM;IAOI,+BAAA;EL+8FV;EKt9FM;IAOI,iCAAA;ELk9FV;EKz9FM;IAOI,+BAAA;ELq9FV;EK59FM;IAOI,2BAAA;ELw9FV;EK/9FM;IAOI,iCAAA;EL29FV;EKl+FM;IAOI,gCAAA;EL89FV;EKr+FM;IAOI,8BAAA;ELi+FV;EKx+FM;IAOI,gCAAA;ELo+FV;EK3+FM;IAOI,8BAAA;ELu+FV;AACF;ACl/FI;EIGI;IAOI,0BAAA;EL4+FV;EKn/FM;IAOI,gCAAA;EL++FV;EKt/FM;IAOI,yBAAA;ELk/FV;EKz/FM;IAOI,wBAAA;ELq/FV;EK5/FM;IAOI,+BAAA;ELw/FV;EK//FM;IAOI,yBAAA;EL2/FV;EKlgGM;IAOI,6BAAA;EL8/FV;EKrgGM;IAOI,8BAAA;ELigGV;EKxgGM;IAOI,wBAAA;ELogGV;EK3gGM;IAOI,+BAAA;ELugGV;EK9gGM;IAOI,wBAAA;EL0gGV;EKjhGM;IAOI,yBAAA;EL6gGV;EKphGM;IAOI,8BAAA;ELghGV;EKvhGM;IAOI,iCAAA;ELmhGV;EK1hGM;IAOI,sCAAA;ELshGV;EK7hGM;IAOI,yCAAA;ELyhGV;EKhiGM;IAOI,uBAAA;EL4hGV;EKniGM;IAOI,uBAAA;EL+hGV;EKtiGM;IAOI,yBAAA;ELkiGV;EKziGM;IAOI,yBAAA;ELqiGV;EK5iGM;IAOI,0BAAA;ELwiGV;EK/iGM;IAOI,4BAAA;EL2iGV;EKljGM;IAOI,kCAAA;EL8iGV;EKrjGM;IAOI,sCAAA;ELijGV;EKxjGM;IAOI,oCAAA;ELojGV;EK3jGM;IAOI,kCAAA;ELujGV;EK9jGM;IAOI,yCAAA;EL0jGV;EKjkGM;IAOI,wCAAA;EL6jGV;EKpkGM;IAOI,wCAAA;ELgkGV;EKvkGM;IAOI,kCAAA;ELmkGV;EK1kGM;IAOI,gCAAA;ELskGV;EK7kGM;IAOI,8BAAA;ELykGV;EKhlGM;IAOI,gCAAA;EL4kGV;EKnlGM;IAOI,+BAAA;EL+kGV;EKtlGM;IAOI,oCAAA;ELklGV;EKzlGM;IAOI,kCAAA;ELqlGV;EK5lGM;IAOI,gCAAA;ELwlGV;EK/lGM;IAOI,uCAAA;EL2lGV;EKlmGM;IAOI,sCAAA;EL8lGV;EKrmGM;IAOI,iCAAA;ELimGV;EKxmGM;IAOI,2BAAA;ELomGV;EK3mGM;IAOI,iCAAA;ELumGV;EK9mGM;IAOI,+BAAA;EL0mGV;EKjnGM;IAOI,6BAAA;EL6mGV;EKpnGM;IAOI,+BAAA;ELgnGV;EKvnGM;IAOI,8BAAA;ELmnGV;EK1nGM;IAOI,oBAAA;ELsnGV;EK7nGM;IAOI,mBAAA;ELynGV;EKhoGM;IAOI,mBAAA;EL4nGV;EKnoGM;IAOI,mBAAA;EL+nGV;EKtoGM;IAOI,mBAAA;ELkoGV;EKzoGM;IAOI,mBAAA;ELqoGV;EK5oGM;IAOI,mBAAA;ELwoGV;EK/oGM;IAOI,mBAAA;EL2oGV;EKlpGM;IAOI,oBAAA;EL8oGV;EKrpGM;IAOI,0BAAA;ELipGV;EKxpGM;IAOI,yBAAA;ELopGV;EK3pGM;IAOI,uBAAA;ELupGV;EK9pGM;IAOI,yBAAA;EL0pGV;EKjqGM;IAOI,uBAAA;EL6pGV;EKpqGM;IAOI,uBAAA;ELgqGV;EKvqGM;IAOI,yBAAA;IAAA,0BAAA;ELoqGV;EK3qGM;IAOI,+BAAA;IAAA,gCAAA;ELwqGV;EK/qGM;IAOI,8BAAA;IAAA,+BAAA;EL4qGV;EKnrGM;IAOI,4BAAA;IAAA,6BAAA;ELgrGV;EKvrGM;IAOI,8BAAA;IAAA,+BAAA;ELorGV;EK3rGM;IAOI,4BAAA;IAAA,6BAAA;ELwrGV;EK/rGM;IAOI,4BAAA;IAAA,6BAAA;EL4rGV;EKnsGM;IAOI,wBAAA;IAAA,2BAAA;ELgsGV;EKvsGM;IAOI,8BAAA;IAAA,iCAAA;ELosGV;EK3sGM;IAOI,6BAAA;IAAA,gCAAA;ELwsGV;EK/sGM;IAOI,2BAAA;IAAA,8BAAA;EL4sGV;EKntGM;IAOI,6BAAA;IAAA,gCAAA;ELgtGV;EKvtGM;IAOI,2BAAA;IAAA,8BAAA;ELotGV;EK3tGM;IAOI,2BAAA;IAAA,8BAAA;ELwtGV;EK/tGM;IAOI,wBAAA;EL2tGV;EKluGM;IAOI,8BAAA;EL8tGV;EKruGM;IAOI,6BAAA;ELiuGV;EKxuGM;IAOI,2BAAA;ELouGV;EK3uGM;IAOI,6BAAA;ELuuGV;EK9uGM;IAOI,2BAAA;EL0uGV;EKjvGM;IAOI,2BAAA;EL6uGV;EKpvGM;IAOI,yBAAA;ELgvGV;EKvvGM;IAOI,+BAAA;ELmvGV;EK1vGM;IAOI,8BAAA;ELsvGV;EK7vGM;IAOI,4BAAA;ELyvGV;EKhwGM;IAOI,8BAAA;EL4vGV;EKnwGM;IAOI,4BAAA;EL+vGV;EKtwGM;IAOI,4BAAA;ELkwGV;EKzwGM;IAOI,2BAAA;ELqwGV;EK5wGM;IAOI,iCAAA;ELwwGV;EK/wGM;IAOI,gCAAA;EL2wGV;EKlxGM;IAOI,8BAAA;EL8wGV;EKrxGM;IAOI,gCAAA;ELixGV;EKxxGM;IAOI,8BAAA;ELoxGV;EK3xGM;IAOI,8BAAA;ELuxGV;EK9xGM;IAOI,0BAAA;EL0xGV;EKjyGM;IAOI,gCAAA;EL6xGV;EKpyGM;IAOI,+BAAA;ELgyGV;EKvyGM;IAOI,6BAAA;ELmyGV;EK1yGM;IAOI,+BAAA;ELsyGV;EK7yGM;IAOI,6BAAA;ELyyGV;EKhzGM;IAOI,6BAAA;EL4yGV;EKnzGM;IAOI,qBAAA;EL+yGV;EKtzGM;IAOI,2BAAA;ELkzGV;EKzzGM;IAOI,0BAAA;ELqzGV;EK5zGM;IAOI,wBAAA;ELwzGV;EK/zGM;IAOI,0BAAA;EL2zGV;EKl0GM;IAOI,wBAAA;EL8zGV;EKr0GM;IAOI,0BAAA;IAAA,2BAAA;ELk0GV;EKz0GM;IAOI,gCAAA;IAAA,iCAAA;ELs0GV;EK70GM;IAOI,+BAAA;IAAA,gCAAA;EL00GV;EKj1GM;IAOI,6BAAA;IAAA,8BAAA;EL80GV;EKr1GM;IAOI,+BAAA;IAAA,gCAAA;ELk1GV;EKz1GM;IAOI,6BAAA;IAAA,8BAAA;ELs1GV;EK71GM;IAOI,yBAAA;IAAA,4BAAA;EL01GV;EKj2GM;IAOI,+BAAA;IAAA,kCAAA;EL81GV;EKr2GM;IAOI,8BAAA;IAAA,iCAAA;ELk2GV;EKz2GM;IAOI,4BAAA;IAAA,+BAAA;ELs2GV;EK72GM;IAOI,8BAAA;IAAA,iCAAA;EL02GV;EKj3GM;IAOI,4BAAA;IAAA,+BAAA;EL82GV;EKr3GM;IAOI,yBAAA;ELi3GV;EKx3GM;IAOI,+BAAA;ELo3GV;EK33GM;IAOI,8BAAA;ELu3GV;EK93GM;IAOI,4BAAA;EL03GV;EKj4GM;IAOI,8BAAA;EL63GV;EKp4GM;IAOI,4BAAA;ELg4GV;EKv4GM;IAOI,0BAAA;ELm4GV;EK14GM;IAOI,gCAAA;ELs4GV;EK74GM;IAOI,+BAAA;ELy4GV;EKh5GM;IAOI,6BAAA;EL44GV;EKn5GM;IAOI,+BAAA;EL+4GV;EKt5GM;IAOI,6BAAA;ELk5GV;EKz5GM;IAOI,4BAAA;ELq5GV;EK55GM;IAOI,kCAAA;ELw5GV;EK/5GM;IAOI,iCAAA;EL25GV;EKl6GM;IAOI,+BAAA;EL85GV;EKr6GM;IAOI,iCAAA;ELi6GV;EKx6GM;IAOI,+BAAA;ELo6GV;EK36GM;IAOI,2BAAA;ELu6GV;EK96GM;IAOI,iCAAA;EL06GV;EKj7GM;IAOI,gCAAA;EL66GV;EKp7GM;IAOI,8BAAA;ELg7GV;EKv7GM;IAOI,gCAAA;ELm7GV;EK17GM;IAOI,8BAAA;ELs7GV;AACF;ACj8GI;EIGI;IAOI,0BAAA;EL27GV;EKl8GM;IAOI,gCAAA;EL87GV;EKr8GM;IAOI,yBAAA;ELi8GV;EKx8GM;IAOI,wBAAA;ELo8GV;EK38GM;IAOI,+BAAA;ELu8GV;EK98GM;IAOI,yBAAA;EL08GV;EKj9GM;IAOI,6BAAA;EL68GV;EKp9GM;IAOI,8BAAA;ELg9GV;EKv9GM;IAOI,wBAAA;ELm9GV;EK19GM;IAOI,+BAAA;ELs9GV;EK79GM;IAOI,wBAAA;ELy9GV;EKh+GM;IAOI,yBAAA;EL49GV;EKn+GM;IAOI,8BAAA;EL+9GV;EKt+GM;IAOI,iCAAA;ELk+GV;EKz+GM;IAOI,sCAAA;ELq+GV;EK5+GM;IAOI,yCAAA;ELw+GV;EK/+GM;IAOI,uBAAA;EL2+GV;EKl/GM;IAOI,uBAAA;EL8+GV;EKr/GM;IAOI,yBAAA;ELi/GV;EKx/GM;IAOI,yBAAA;ELo/GV;EK3/GM;IAOI,0BAAA;ELu/GV;EK9/GM;IAOI,4BAAA;EL0/GV;EKjgHM;IAOI,kCAAA;EL6/GV;EKpgHM;IAOI,sCAAA;ELggHV;EKvgHM;IAOI,oCAAA;ELmgHV;EK1gHM;IAOI,kCAAA;ELsgHV;EK7gHM;IAOI,yCAAA;ELygHV;EKhhHM;IAOI,wCAAA;EL4gHV;EKnhHM;IAOI,wCAAA;EL+gHV;EKthHM;IAOI,kCAAA;ELkhHV;EKzhHM;IAOI,gCAAA;ELqhHV;EK5hHM;IAOI,8BAAA;ELwhHV;EK/hHM;IAOI,gCAAA;EL2hHV;EKliHM;IAOI,+BAAA;EL8hHV;EKriHM;IAOI,oCAAA;ELiiHV;EKxiHM;IAOI,kCAAA;ELoiHV;EK3iHM;IAOI,gCAAA;ELuiHV;EK9iHM;IAOI,uCAAA;EL0iHV;EKjjHM;IAOI,sCAAA;EL6iHV;EKpjHM;IAOI,iCAAA;ELgjHV;EKvjHM;IAOI,2BAAA;ELmjHV;EK1jHM;IAOI,iCAAA;ELsjHV;EK7jHM;IAOI,+BAAA;ELyjHV;EKhkHM;IAOI,6BAAA;EL4jHV;EKnkHM;IAOI,+BAAA;EL+jHV;EKtkHM;IAOI,8BAAA;ELkkHV;EKzkHM;IAOI,oBAAA;ELqkHV;EK5kHM;IAOI,mBAAA;ELwkHV;EK/kHM;IAOI,mBAAA;EL2kHV;EKllHM;IAOI,mBAAA;EL8kHV;EKrlHM;IAOI,mBAAA;ELilHV;EKxlHM;IAOI,mBAAA;ELolHV;EK3lHM;IAOI,mBAAA;ELulHV;EK9lHM;IAOI,mBAAA;EL0lHV;EKjmHM;IAOI,oBAAA;EL6lHV;EKpmHM;IAOI,0BAAA;ELgmHV;EKvmHM;IAOI,yBAAA;ELmmHV;EK1mHM;IAOI,uBAAA;ELsmHV;EK7mHM;IAOI,yBAAA;ELymHV;EKhnHM;IAOI,uBAAA;EL4mHV;EKnnHM;IAOI,uBAAA;EL+mHV;EKtnHM;IAOI,yBAAA;IAAA,0BAAA;ELmnHV;EK1nHM;IAOI,+BAAA;IAAA,gCAAA;ELunHV;EK9nHM;IAOI,8BAAA;IAAA,+BAAA;EL2nHV;EKloHM;IAOI,4BAAA;IAAA,6BAAA;EL+nHV;EKtoHM;IAOI,8BAAA;IAAA,+BAAA;ELmoHV;EK1oHM;IAOI,4BAAA;IAAA,6BAAA;ELuoHV;EK9oHM;IAOI,4BAAA;IAAA,6BAAA;EL2oHV;EKlpHM;IAOI,wBAAA;IAAA,2BAAA;EL+oHV;EKtpHM;IAOI,8BAAA;IAAA,iCAAA;ELmpHV;EK1pHM;IAOI,6BAAA;IAAA,gCAAA;ELupHV;EK9pHM;IAOI,2BAAA;IAAA,8BAAA;EL2pHV;EKlqHM;IAOI,6BAAA;IAAA,gCAAA;EL+pHV;EKtqHM;IAOI,2BAAA;IAAA,8BAAA;ELmqHV;EK1qHM;IAOI,2BAAA;IAAA,8BAAA;ELuqHV;EK9qHM;IAOI,wBAAA;EL0qHV;EKjrHM;IAOI,8BAAA;EL6qHV;EKprHM;IAOI,6BAAA;ELgrHV;EKvrHM;IAOI,2BAAA;ELmrHV;EK1rHM;IAOI,6BAAA;ELsrHV;EK7rHM;IAOI,2BAAA;ELyrHV;EKhsHM;IAOI,2BAAA;EL4rHV;EKnsHM;IAOI,yBAAA;EL+rHV;EKtsHM;IAOI,+BAAA;ELksHV;EKzsHM;IAOI,8BAAA;ELqsHV;EK5sHM;IAOI,4BAAA;ELwsHV;EK/sHM;IAOI,8BAAA;EL2sHV;EKltHM;IAOI,4BAAA;EL8sHV;EKrtHM;IAOI,4BAAA;ELitHV;EKxtHM;IAOI,2BAAA;ELotHV;EK3tHM;IAOI,iCAAA;ELutHV;EK9tHM;IAOI,gCAAA;EL0tHV;EKjuHM;IAOI,8BAAA;EL6tHV;EKpuHM;IAOI,gCAAA;ELguHV;EKvuHM;IAOI,8BAAA;ELmuHV;EK1uHM;IAOI,8BAAA;ELsuHV;EK7uHM;IAOI,0BAAA;ELyuHV;EKhvHM;IAOI,gCAAA;EL4uHV;EKnvHM;IAOI,+BAAA;EL+uHV;EKtvHM;IAOI,6BAAA;ELkvHV;EKzvHM;IAOI,+BAAA;ELqvHV;EK5vHM;IAOI,6BAAA;ELwvHV;EK/vHM;IAOI,6BAAA;EL2vHV;EKlwHM;IAOI,qBAAA;EL8vHV;EKrwHM;IAOI,2BAAA;ELiwHV;EKxwHM;IAOI,0BAAA;ELowHV;EK3wHM;IAOI,wBAAA;ELuwHV;EK9wHM;IAOI,0BAAA;EL0wHV;EKjxHM;IAOI,wBAAA;EL6wHV;EKpxHM;IAOI,0BAAA;IAAA,2BAAA;ELixHV;EKxxHM;IAOI,gCAAA;IAAA,iCAAA;ELqxHV;EK5xHM;IAOI,+BAAA;IAAA,gCAAA;ELyxHV;EKhyHM;IAOI,6BAAA;IAAA,8BAAA;EL6xHV;EKpyHM;IAOI,+BAAA;IAAA,gCAAA;ELiyHV;EKxyHM;IAOI,6BAAA;IAAA,8BAAA;ELqyHV;EK5yHM;IAOI,yBAAA;IAAA,4BAAA;ELyyHV;EKhzHM;IAOI,+BAAA;IAAA,kCAAA;EL6yHV;EKpzHM;IAOI,8BAAA;IAAA,iCAAA;ELizHV;EKxzHM;IAOI,4BAAA;IAAA,+BAAA;ELqzHV;EK5zHM;IAOI,8BAAA;IAAA,iCAAA;ELyzHV;EKh0HM;IAOI,4BAAA;IAAA,+BAAA;EL6zHV;EKp0HM;IAOI,yBAAA;ELg0HV;EKv0HM;IAOI,+BAAA;ELm0HV;EK10HM;IAOI,8BAAA;ELs0HV;EK70HM;IAOI,4BAAA;ELy0HV;EKh1HM;IAOI,8BAAA;EL40HV;EKn1HM;IAOI,4BAAA;EL+0HV;EKt1HM;IAOI,0BAAA;ELk1HV;EKz1HM;IAOI,gCAAA;ELq1HV;EK51HM;IAOI,+BAAA;ELw1HV;EK/1HM;IAOI,6BAAA;EL21HV;EKl2HM;IAOI,+BAAA;EL81HV;EKr2HM;IAOI,6BAAA;ELi2HV;EKx2HM;IAOI,4BAAA;ELo2HV;EK32HM;IAOI,kCAAA;ELu2HV;EK92HM;IAOI,iCAAA;EL02HV;EKj3HM;IAOI,+BAAA;EL62HV;EKp3HM;IAOI,iCAAA;ELg3HV;EKv3HM;IAOI,+BAAA;ELm3HV;EK13HM;IAOI,2BAAA;ELs3HV;EK73HM;IAOI,iCAAA;ELy3HV;EKh4HM;IAOI,gCAAA;EL43HV;EKn4HM;IAOI,8BAAA;EL+3HV;EKt4HM;IAOI,gCAAA;ELk4HV;EKz4HM;IAOI,8BAAA;ELq4HV;AACF;AMz6HA;ED4BQ;IAOI,0BAAA;EL04HV;EKj5HM;IAOI,gCAAA;EL64HV;EKp5HM;IAOI,yBAAA;ELg5HV;EKv5HM;IAOI,wBAAA;ELm5HV;EK15HM;IAOI,+BAAA;ELs5HV;EK75HM;IAOI,yBAAA;ELy5HV;EKh6HM;IAOI,6BAAA;EL45HV;EKn6HM;IAOI,8BAAA;EL+5HV;EKt6HM;IAOI,wBAAA;ELk6HV;EKz6HM;IAOI,+BAAA;ELq6HV;EK56HM;IAOI,wBAAA;ELw6HV;AACF","file":"bootstrap-grid.rtl.css","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","/*!\n * Bootstrap Grid v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue: #0d6efd !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #d63384 !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #198754 !default;\n$teal: #20c997 !default;\n$cyan: #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"black\": $black,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio: 4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark: $black !default;\n$color-contrast-light: $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n \"blue-100\": $blue-100,\n \"blue-200\": $blue-200,\n \"blue-300\": $blue-300,\n \"blue-400\": $blue-400,\n \"blue-500\": $blue-500,\n \"blue-600\": $blue-600,\n \"blue-700\": $blue-700,\n \"blue-800\": $blue-800,\n \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n \"indigo-100\": $indigo-100,\n \"indigo-200\": $indigo-200,\n \"indigo-300\": $indigo-300,\n \"indigo-400\": $indigo-400,\n \"indigo-500\": $indigo-500,\n \"indigo-600\": $indigo-600,\n \"indigo-700\": $indigo-700,\n \"indigo-800\": $indigo-800,\n \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n \"purple-100\": $purple-100,\n \"purple-200\": $purple-200,\n \"purple-300\": $purple-300,\n \"purple-400\": $purple-400,\n \"purple-500\": $purple-500,\n \"purple-600\": $purple-600,\n \"purple-700\": $purple-700,\n \"purple-800\": $purple-800,\n \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n \"pink-100\": $pink-100,\n \"pink-200\": $pink-200,\n \"pink-300\": $pink-300,\n \"pink-400\": $pink-400,\n \"pink-500\": $pink-500,\n \"pink-600\": $pink-600,\n \"pink-700\": $pink-700,\n \"pink-800\": $pink-800,\n \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n \"red-100\": $red-100,\n \"red-200\": $red-200,\n \"red-300\": $red-300,\n \"red-400\": $red-400,\n \"red-500\": $red-500,\n \"red-600\": $red-600,\n \"red-700\": $red-700,\n \"red-800\": $red-800,\n \"red-900\": $red-900\n) !default;\n\n$oranges: (\n \"orange-100\": $orange-100,\n \"orange-200\": $orange-200,\n \"orange-300\": $orange-300,\n \"orange-400\": $orange-400,\n \"orange-500\": $orange-500,\n \"orange-600\": $orange-600,\n \"orange-700\": $orange-700,\n \"orange-800\": $orange-800,\n \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n \"yellow-100\": $yellow-100,\n \"yellow-200\": $yellow-200,\n \"yellow-300\": $yellow-300,\n \"yellow-400\": $yellow-400,\n \"yellow-500\": $yellow-500,\n \"yellow-600\": $yellow-600,\n \"yellow-700\": $yellow-700,\n \"yellow-800\": $yellow-800,\n \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n \"green-100\": $green-100,\n \"green-200\": $green-200,\n \"green-300\": $green-300,\n \"green-400\": $green-400,\n \"green-500\": $green-500,\n \"green-600\": $green-600,\n \"green-700\": $green-700,\n \"green-800\": $green-800,\n \"green-900\": $green-900\n) !default;\n\n$teals: (\n \"teal-100\": $teal-100,\n \"teal-200\": $teal-200,\n \"teal-300\": $teal-300,\n \"teal-400\": $teal-400,\n \"teal-500\": $teal-500,\n \"teal-600\": $teal-600,\n \"teal-700\": $teal-700,\n \"teal-800\": $teal-800,\n \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n \"cyan-100\": $cyan-100,\n \"cyan-200\": $cyan-200,\n \"cyan-300\": $cyan-300,\n \"cyan-400\": $cyan-400,\n \"cyan-500\": $cyan-500,\n \"cyan-600\": $cyan-600,\n \"cyan-700\": $cyan-700,\n \"cyan-800\": $cyan-800,\n \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// scss-docs-start theme-color-variables\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// scss-docs-start theme-text-variables\n$primary-text-emphasis: shade-color($primary, 60%) !default;\n$secondary-text-emphasis: shade-color($secondary, 60%) !default;\n$success-text-emphasis: shade-color($success, 60%) !default;\n$info-text-emphasis: shade-color($info, 60%) !default;\n$warning-text-emphasis: shade-color($warning, 60%) !default;\n$danger-text-emphasis: shade-color($danger, 60%) !default;\n$light-text-emphasis: $gray-700 !default;\n$dark-text-emphasis: $gray-700 !default;\n// scss-docs-end theme-text-variables\n\n// scss-docs-start theme-bg-subtle-variables\n$primary-bg-subtle: tint-color($primary, 80%) !default;\n$secondary-bg-subtle: tint-color($secondary, 80%) !default;\n$success-bg-subtle: tint-color($success, 80%) !default;\n$info-bg-subtle: tint-color($info, 80%) !default;\n$warning-bg-subtle: tint-color($warning, 80%) !default;\n$danger-bg-subtle: tint-color($danger, 80%) !default;\n$light-bg-subtle: mix($gray-100, $white) !default;\n$dark-bg-subtle: $gray-400 !default;\n// scss-docs-end theme-bg-subtle-variables\n\n// scss-docs-start theme-border-subtle-variables\n$primary-border-subtle: tint-color($primary, 60%) !default;\n$secondary-border-subtle: tint-color($secondary, 60%) !default;\n$success-border-subtle: tint-color($success, 60%) !default;\n$info-border-subtle: tint-color($info, 60%) !default;\n$warning-border-subtle: tint-color($warning, 60%) !default;\n$danger-border-subtle: tint-color($danger, 60%) !default;\n$light-border-subtle: $gray-200 !default;\n$dark-border-subtle: $gray-500 !default;\n// scss-docs-end theme-border-subtle-variables\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n (\"<\", \"%3c\"),\n (\">\", \"%3e\"),\n (\"#\", \"%23\"),\n (\"(\", \"%28\"),\n (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-reduced-motion: true !default;\n$enable-smooth-scroll: true !default;\n$enable-grid-classes: true !default;\n$enable-container-classes: true !default;\n$enable-cssgrid: false !default;\n$enable-button-pointers: true !default;\n$enable-rfs: true !default;\n$enable-validation-icons: true !default;\n$enable-negative-margins: false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities: true !default;\n\n$enable-dark-mode: true !default;\n$color-mode-type: data !default; // `data` or `media-query`\n\n// Prefix for :root CSS variables\n\n$variable-prefix: bs- !default; // Deprecated in v5.2.0 for the shorter `$prefix`\n$prefix: $variable-prefix !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: $spacer * .25,\n 2: $spacer * .5,\n 3: $spacer,\n 4: $spacer * 1.5,\n 5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n 0: 0,\n 50: 50%,\n 100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `` element.\n\n$body-text-align: null !default;\n$body-color: $gray-900 !default;\n$body-bg: $white !default;\n\n$body-secondary-color: rgba($body-color, .75) !default;\n$body-secondary-bg: $gray-200 !default;\n\n$body-tertiary-color: rgba($body-color, .5) !default;\n$body-tertiary-bg: $gray-100 !default;\n\n$body-emphasis-color: $black !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: $primary !default;\n$link-decoration: underline !default;\n$link-shade-percentage: 20% !default;\n$link-hover-color: shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration: null !default;\n\n$stretched-link-pseudo-element: after !default;\n$stretched-link-z-index: 1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap: .375rem !default;\n$icon-link-underline-offset: .25em !default;\n$icon-link-icon-size: 1em !default;\n$icon-link-icon-transition: .2s ease-in-out transform !default;\n$icon-link-icon-transform: translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px,\n xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px,\n xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 1.5rem !default;\n$grid-row-columns: 6 !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width: 1px !default;\n$border-widths: (\n 1: 1px,\n 2: 2px,\n 3: 3px,\n 4: 4px,\n 5: 5px\n) !default;\n$border-style: solid !default;\n$border-color: $gray-300 !default;\n$border-color-translucent: rgba($black, .175) !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius: .375rem !default;\n$border-radius-sm: .25rem !default;\n$border-radius-lg: .5rem !default;\n$border-radius-xl: 1rem !default;\n$border-radius-xxl: 2rem !default;\n$border-radius-pill: 50rem !default;\n// scss-docs-end border-radius-variables\n// fusv-disable\n$border-radius-2xl: $border-radius-xxl !default; // Deprecated in v5.3.0\n// fusv-enable\n\n// scss-docs-start box-shadow-variables\n$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset: inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color: $white !default;\n$component-active-bg: $primary !default;\n\n// scss-docs-start focus-ring-variables\n$focus-ring-width: .25rem !default;\n$focus-ring-opacity: .25 !default;\n$focus-ring-color: rgba($primary, $focus-ring-opacity) !default;\n$focus-ring-blur: 0 !default;\n$focus-ring-box-shadow: 0 0 $focus-ring-blur $focus-ring-width $focus-ring-color !default;\n// scss-docs-end focus-ring-variables\n\n// scss-docs-start caret-variables\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse: height .35s ease !default;\n$transition-collapse-width: width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n \"1x1\": 100%,\n \"4x3\": calc(3 / 4 * 100%),\n \"16x9\": calc(9 / 16 * 100%),\n \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base: var(--#{$prefix}font-sans-serif) !default;\n$font-family-code: var(--#{$prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root: null !default;\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm: $font-size-base * .875 !default;\n$font-size-lg: $font-size-base * 1.25 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-medium: 500 !default;\n$font-weight-semibold: 600 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n\n$line-height-base: 1.5 !default;\n$line-height-sm: 1.25 !default;\n$line-height-lg: 2 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n 1: $h1-font-size,\n 2: $h2-font-size,\n 3: $h3-font-size,\n 4: $h4-font-size,\n 5: $h5-font-size,\n 6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom: $spacer * .5 !default;\n$headings-font-family: null !default;\n$headings-font-style: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n 1: 5rem,\n 2: 4.5rem,\n 3: 4rem,\n 4: 3.5rem,\n 5: 3rem,\n 6: 2.5rem\n) !default;\n\n$display-font-family: null !default;\n$display-font-style: null !default;\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: .875em !default;\n\n$sub-sup-font-size: .75em !default;\n\n// fusv-disable\n$text-muted: var(--#{$prefix}secondary-color) !default; // Deprecated in 5.3.0\n// fusv-enable\n\n$initialism-font-size: $small-font-size !default;\n\n$blockquote-margin-y: $spacer !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n$blockquote-footer-color: $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y: $spacer !default;\n$hr-color: inherit !default;\n\n// fusv-disable\n$hr-bg-color: null !default; // Deprecated in v5.2.0\n$hr-height: null !default; // Deprecated in v5.2.0\n// fusv-enable\n\n$hr-border-color: null !default; // Allows for inherited colors\n$hr-border-width: var(--#{$prefix}border-width) !default;\n$hr-opacity: .25 !default;\n\n// scss-docs-start vr-variables\n$vr-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end vr-variables\n\n$legend-margin-bottom: .5rem !default;\n$legend-font-size: 1.5rem !default;\n$legend-font-weight: null !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-padding: .1875em !default;\n$mark-color: $body-color !default;\n$mark-bg: $yellow-100 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y: .5rem !default;\n$table-cell-padding-x: .5rem !default;\n$table-cell-padding-y-sm: .25rem !default;\n$table-cell-padding-x-sm: .25rem !default;\n\n$table-cell-vertical-align: top !default;\n\n$table-color: var(--#{$prefix}emphasis-color) !default;\n$table-bg: var(--#{$prefix}body-bg) !default;\n$table-accent-bg: transparent !default;\n\n$table-th-font-weight: null !default;\n\n$table-striped-color: $table-color !default;\n$table-striped-bg-factor: .05 !default;\n$table-striped-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-striped-bg-factor) !default;\n\n$table-active-color: $table-color !default;\n$table-active-bg-factor: .1 !default;\n$table-active-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-active-bg-factor) !default;\n\n$table-hover-color: $table-color !default;\n$table-hover-bg-factor: .075 !default;\n$table-hover-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-hover-bg-factor) !default;\n\n$table-border-factor: .2 !default;\n$table-border-width: var(--#{$prefix}border-width) !default;\n$table-border-color: var(--#{$prefix}border-color) !default;\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n$table-group-separator-color: currentcolor !default;\n\n$table-caption-color: var(--#{$prefix}secondary-color) !default;\n\n$table-bg-scale: -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n \"primary\": shift-color($primary, $table-bg-scale),\n \"secondary\": shift-color($secondary, $table-bg-scale),\n \"success\": shift-color($success, $table-bg-scale),\n \"info\": shift-color($info, $table-bg-scale),\n \"warning\": shift-color($warning, $table-bg-scale),\n \"danger\": shift-color($danger, $table-bg-scale),\n \"light\": $light,\n \"dark\": $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: $focus-ring-width !default;\n$input-btn-focus-color-opacity: $focus-ring-opacity !default;\n$input-btn-focus-color: $focus-ring-color !default;\n$input-btn-focus-blur: $focus-ring-blur !default;\n$input-btn-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n\n$input-btn-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-color: var(--#{$prefix}body-color) !default;\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color: var(--#{$prefix}link-color) !default;\n$btn-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$btn-link-disabled-color: $gray-600 !default;\n$btn-link-focus-shadow-rgb: to-rgb(mix(color-contrast($link-color), $link-color, 15%)) !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: var(--#{$prefix}border-radius) !default;\n$btn-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$btn-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount: 15% !default;\n$btn-hover-bg-tint-amount: 15% !default;\n$btn-hover-border-shade-amount: 20% !default;\n$btn-hover-border-tint-amount: 10% !default;\n$btn-active-bg-shade-amount: 20% !default;\n$btn-active-bg-tint-amount: 20% !default;\n$btn-active-border-shade-amount: 25% !default;\n$btn-active-border-tint-amount: 10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top: .25rem !default;\n$form-text-font-size: $small-font-size !default;\n$form-text-font-style: null !default;\n$form-text-font-weight: null !default;\n$form-text-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom: .5rem !default;\n$form-label-font-size: null !default;\n$form-label-font-style: null !default;\n$form-label-font-weight: null !default;\n$form-label-color: null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n\n$input-bg: var(--#{$prefix}body-bg) !default;\n$input-disabled-color: null !default;\n$input-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$input-disabled-border-color: null !default;\n\n$input-color: var(--#{$prefix}body-color) !default;\n$input-border-color: var(--#{$prefix}border-color) !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$input-border-radius: var(--#{$prefix}border-radius) !default;\n$input-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$input-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: tint-color($component-active-bg, 50%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: var(--#{$prefix}secondary-color) !default;\n$input-plaintext-color: var(--#{$prefix}body-color) !default;\n\n$input-height-border: calc(#{$input-border-width} * 2) !default; // stylelint-disable-line function-disallowed-list\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width: 3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width: 1em !default;\n$form-check-min-height: $font-size-base * $line-height-base !default;\n$form-check-padding-start: $form-check-input-width + .5em !default;\n$form-check-margin-bottom: .125rem !default;\n$form-check-label-color: null !default;\n$form-check-label-cursor: null !default;\n$form-check-transition: null !default;\n\n$form-check-input-active-filter: brightness(90%) !default;\n\n$form-check-input-bg: $input-bg !default;\n$form-check-input-border: var(--#{$prefix}border-width) solid var(--#{$prefix}border-color) !default;\n$form-check-input-border-radius: .25em !default;\n$form-check-radio-border-radius: 50% !default;\n$form-check-input-focus-border: $input-focus-border-color !default;\n$form-check-input-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$form-check-input-checked-color: $component-active-color !default;\n$form-check-input-checked-bg-color: $component-active-bg !default;\n$form-check-input-checked-border-color: $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-check-radio-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-indeterminate-color: $component-active-color !default;\n$form-check-input-indeterminate-bg-color: $component-active-bg !default;\n$form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-disabled-opacity: .5 !default;\n$form-check-label-disabled-opacity: $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity: $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end: 1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color: rgba($black, .25) !default;\n$form-switch-width: 2em !default;\n$form-switch-padding-start: $form-switch-width + .5em !default;\n$form-switch-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-border-radius: $form-switch-width !default;\n$form-switch-transition: background-position .15s ease-in-out !default;\n\n$form-switch-focus-color: $input-focus-border-color !default;\n$form-switch-focus-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-switch-checked-color: $component-active-color !default;\n$form-switch-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y: $input-padding-y !default;\n$input-group-addon-padding-x: $input-padding-x !default;\n$input-group-addon-font-weight: $input-font-weight !default;\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: var(--#{$prefix}tertiary-bg) !default;\n$input-group-addon-border-color: $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y: $input-padding-y !default;\n$form-select-padding-x: $input-padding-x !default;\n$form-select-font-family: $input-font-family !default;\n$form-select-font-size: $input-font-size !default;\n$form-select-indicator-padding: $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight: $input-font-weight !default;\n$form-select-line-height: $input-line-height !default;\n$form-select-color: $input-color !default;\n$form-select-bg: $input-bg !default;\n$form-select-disabled-color: null !default;\n$form-select-disabled-bg: $input-disabled-bg !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position: right $form-select-padding-x center !default;\n$form-select-bg-size: 16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color: $gray-800 !default;\n$form-select-indicator: url(\"data:image/svg+xml,\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position: center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width: $input-border-width !default;\n$form-select-border-color: $input-border-color !default;\n$form-select-border-radius: $input-border-radius !default;\n$form-select-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$form-select-focus-border-color: $input-focus-border-color !default;\n$form-select-focus-width: $input-focus-width !default;\n$form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm: $input-padding-y-sm !default;\n$form-select-padding-x-sm: $input-padding-x-sm !default;\n$form-select-font-size-sm: $input-font-size-sm !default;\n$form-select-border-radius-sm: $input-border-radius-sm !default;\n\n$form-select-padding-y-lg: $input-padding-y-lg !default;\n$form-select-padding-x-lg: $input-padding-x-lg !default;\n$form-select-font-size-lg: $input-font-size-lg !default;\n$form-select-border-radius-lg: $input-border-radius-lg !default;\n\n$form-select-transition: $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width: 100% !default;\n$form-range-track-height: .5rem !default;\n$form-range-track-cursor: pointer !default;\n$form-range-track-bg: var(--#{$prefix}secondary-bg) !default;\n$form-range-track-border-radius: 1rem !default;\n$form-range-track-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$form-range-thumb-width: 1rem !default;\n$form-range-thumb-height: $form-range-thumb-width !default;\n$form-range-thumb-bg: $component-active-bg !default;\n$form-range-thumb-border: 0 !default;\n$form-range-thumb-border-radius: 1rem !default;\n$form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg: var(--#{$prefix}secondary-color) !default;\n$form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color: $input-color !default;\n$form-file-button-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-file-button-hover-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height: add(3.5rem, $input-height-border) !default;\n$form-floating-line-height: 1.25 !default;\n$form-floating-padding-x: $input-padding-x !default;\n$form-floating-padding-y: 1rem !default;\n$form-floating-input-padding-t: 1.625rem !default;\n$form-floating-input-padding-b: .625rem !default;\n$form-floating-label-height: 1.5em !default;\n$form-floating-label-opacity: .65 !default;\n$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-label-disabled-color: $gray-600 !default;\n$form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $form-text-font-size !default;\n$form-feedback-font-style: $form-text-font-style !default;\n$form-feedback-valid-color: $success !default;\n$form-feedback-invalid-color: $danger !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url(\"data:image/svg+xml,\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-colors\n$form-valid-color: $form-feedback-valid-color !default;\n$form-valid-border-color: $form-feedback-valid-color !default;\n$form-invalid-color: $form-feedback-invalid-color !default;\n$form-invalid-border-color: $form-feedback-invalid-color !default;\n// scss-docs-end form-validation-colors\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n \"valid\": (\n \"color\": var(--#{$prefix}form-valid-color),\n \"icon\": $form-feedback-icon-valid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}success),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}success-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-valid-border-color),\n ),\n \"invalid\": (\n \"color\": var(--#{$prefix}form-invalid-color),\n \"icon\": $form-feedback-icon-invalid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}danger),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}danger-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-invalid-border-color),\n )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-offcanvas-backdrop: 1040 !default;\n$zindex-offcanvas: 1045 !default;\n$zindex-modal-backdrop: 1050 !default;\n$zindex-modal: 1055 !default;\n$zindex-popover: 1070 !default;\n$zindex-tooltip: 1080 !default;\n$zindex-toast: 1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n n1: -1,\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-font-size: null !default;\n$nav-link-font-weight: null !default;\n$nav-link-color: var(--#{$prefix}link-color) !default;\n$nav-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color: var(--#{$prefix}secondary-color) !default;\n$nav-link-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$nav-tabs-border-color: var(--#{$prefix}border-color) !default;\n$nav-tabs-border-width: var(--#{$prefix}border-width) !default;\n$nav-tabs-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-tabs-link-hover-border-color: var(--#{$prefix}secondary-bg) var(--#{$prefix}secondary-bg) $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: var(--#{$prefix}emphasis-color) !default;\n$nav-tabs-link-active-bg: var(--#{$prefix}body-bg) !default;\n$nav-tabs-link-active-border-color: var(--#{$prefix}border-color) var(--#{$prefix}border-color) $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n$nav-underline-gap: 1rem !default;\n$nav-underline-border-width: .125rem !default;\n$nav-underline-link-active-color: var(--#{$prefix}emphasis-color) !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y: $spacer * .5 !default;\n$navbar-padding-x: null !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end: 1rem !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n$navbar-toggler-focus-width: $btn-focus-width !default;\n$navbar-toggler-transition: box-shadow .15s ease-in-out !default;\n\n$navbar-light-color: rgba(var(--#{$prefix}emphasis-color-rgb), .65) !default;\n$navbar-light-hover-color: rgba(var(--#{$prefix}emphasis-color-rgb), .8) !default;\n$navbar-light-active-color: rgba(var(--#{$prefix}emphasis-color-rgb), 1) !default;\n$navbar-light-disabled-color: rgba(var(--#{$prefix}emphasis-color-rgb), .3) !default;\n$navbar-light-icon-color: rgba($body-color, .75) !default;\n$navbar-light-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-light-toggler-border-color: rgba(var(--#{$prefix}emphasis-color-rgb), .15) !default;\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-dark-variables\n$navbar-dark-color: rgba($white, .55) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-icon-color: $navbar-dark-color !default;\n$navbar-dark-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n// scss-docs-end navbar-dark-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-x: 0 !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: var(--#{$prefix}body-color) !default;\n$dropdown-bg: var(--#{$prefix}body-bg) !default;\n$dropdown-border-color: var(--#{$prefix}border-color-translucent) !default;\n$dropdown-border-radius: var(--#{$prefix}border-radius) !default;\n$dropdown-border-width: var(--#{$prefix}border-width) !default;\n$dropdown-inner-border-radius: calc(#{$dropdown-border-radius} - #{$dropdown-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$dropdown-divider-bg: $dropdown-border-color !default;\n$dropdown-divider-margin-y: $spacer * .5 !default;\n$dropdown-box-shadow: var(--#{$prefix}box-shadow) !default;\n\n$dropdown-link-color: var(--#{$prefix}body-color) !default;\n$dropdown-link-hover-color: $dropdown-link-color !default;\n$dropdown-link-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: var(--#{$prefix}tertiary-color) !default;\n\n$dropdown-item-padding-y: $spacer * .25 !default;\n$dropdown-item-padding-x: $spacer !default;\n\n$dropdown-header-color: $gray-600 !default;\n$dropdown-header-padding-x: $dropdown-item-padding-x !default;\n$dropdown-header-padding-y: $dropdown-padding-y !default;\n// fusv-disable\n$dropdown-header-padding: $dropdown-header-padding-y $dropdown-header-padding-x !default; // Deprecated in v5.2.0\n// fusv-enable\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color: $gray-300 !default;\n$dropdown-dark-bg: $gray-800 !default;\n$dropdown-dark-border-color: $dropdown-border-color !default;\n$dropdown-dark-divider-bg: $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow: null !default;\n$dropdown-dark-link-color: $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color: $white !default;\n$dropdown-dark-link-hover-bg: rgba($white, .15) !default;\n$dropdown-dark-link-active-color: $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg: $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color: $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y: .375rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n\n$pagination-font-size: $font-size-base !default;\n\n$pagination-color: var(--#{$prefix}link-color) !default;\n$pagination-bg: var(--#{$prefix}body-bg) !default;\n$pagination-border-radius: var(--#{$prefix}border-radius) !default;\n$pagination-border-width: var(--#{$prefix}border-width) !default;\n$pagination-margin-start: calc(#{$pagination-border-width} * -1) !default; // stylelint-disable-line function-disallowed-list\n$pagination-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-focus-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-focus-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-focus-box-shadow: $focus-ring-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$pagination-hover-border-color: var(--#{$prefix}border-color) !default; // Todo in v6: remove this?\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $component-active-bg !default;\n\n$pagination-disabled-color: var(--#{$prefix}secondary-color) !default;\n$pagination-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-disabled-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$pagination-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max: .5 !default;\n$placeholder-opacity-min: .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y: $spacer !default;\n$card-spacer-x: $spacer !default;\n$card-title-spacer-y: $spacer * .5 !default;\n$card-title-color: null !default;\n$card-subtitle-color: null !default;\n$card-border-width: var(--#{$prefix}border-width) !default;\n$card-border-color: var(--#{$prefix}border-color-translucent) !default;\n$card-border-radius: var(--#{$prefix}border-radius) !default;\n$card-box-shadow: null !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y: $card-spacer-y * .5 !default;\n$card-cap-padding-x: $card-spacer-x !default;\n$card-cap-bg: rgba(var(--#{$prefix}body-color-rgb), .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: var(--#{$prefix}body-bg) !default;\n$card-img-overlay-padding: $spacer !default;\n$card-group-margin: $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y: 1rem !default;\n$accordion-padding-x: 1.25rem !default;\n$accordion-color: var(--#{$prefix}body-color) !default;\n$accordion-bg: var(--#{$prefix}body-bg) !default;\n$accordion-border-width: var(--#{$prefix}border-width) !default;\n$accordion-border-color: var(--#{$prefix}border-color) !default;\n$accordion-border-radius: var(--#{$prefix}border-radius) !default;\n$accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y: $accordion-padding-y !default;\n$accordion-body-padding-x: $accordion-padding-x !default;\n\n$accordion-button-padding-y: $accordion-padding-y !default;\n$accordion-button-padding-x: $accordion-padding-x !default;\n$accordion-button-color: var(--#{$prefix}body-color) !default;\n$accordion-button-bg: var(--#{$prefix}accordion-bg) !default;\n$accordion-transition: $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg: var(--#{$prefix}primary-bg-subtle) !default;\n$accordion-button-active-color: var(--#{$prefix}primary-text-emphasis) !default;\n\n// fusv-disable\n$accordion-button-focus-border-color: $input-focus-border-color !default; // Deprecated in v5.3.3\n// fusv-enable\n$accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;\n\n$accordion-icon-width: 1.25rem !default;\n$accordion-icon-color: $body-color !default;\n$accordion-icon-active-color: $primary-text-emphasis !default;\n$accordion-icon-transition: transform .2s ease-in-out !default;\n$accordion-icon-transform: rotate(-180deg) !default;\n\n$accordion-button-icon: url(\"data:image/svg+xml,\") !default;\n$accordion-button-active-icon: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: var(--#{$prefix}body-bg) !default;\n$tooltip-bg: var(--#{$prefix}emphasis-color) !default;\n$tooltip-border-radius: var(--#{$prefix}border-radius) !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: $spacer * .25 !default;\n$tooltip-padding-x: $spacer * .5 !default;\n$tooltip-margin: null !default; // TODO: remove this in v6\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n// fusv-disable\n$tooltip-arrow-color: null !default; // Deprecated in Bootstrap 5.2.0 for CSS variables\n// fusv-enable\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: null !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size: $font-size-sm !default;\n$popover-bg: var(--#{$prefix}body-bg) !default;\n$popover-max-width: 276px !default;\n$popover-border-width: var(--#{$prefix}border-width) !default;\n$popover-border-color: var(--#{$prefix}border-color-translucent) !default;\n$popover-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$popover-inner-border-radius: calc(#{$popover-border-radius} - #{$popover-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$popover-box-shadow: var(--#{$prefix}box-shadow) !default;\n\n$popover-header-font-size: $font-size-base !default;\n$popover-header-bg: var(--#{$prefix}secondary-bg) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: $spacer !default;\n\n$popover-body-color: var(--#{$prefix}body-color) !default;\n$popover-body-padding-y: $spacer !default;\n$popover-body-padding-x: $spacer !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n// scss-docs-end popover-variables\n\n// fusv-disable\n// Deprecated in Bootstrap 5.2.0 for CSS variables\n$popover-arrow-color: $popover-bg !default;\n$popover-arrow-outer-color: var(--#{$prefix}border-color-translucent) !default;\n// fusv-enable\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .5rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-border-width: var(--#{$prefix}border-width) !default;\n$toast-border-color: var(--#{$prefix}border-color-translucent) !default;\n$toast-border-radius: var(--#{$prefix}border-radius) !default;\n$toast-box-shadow: var(--#{$prefix}box-shadow) !default;\n$toast-spacing: $container-padding-x !default;\n\n$toast-header-color: var(--#{$prefix}secondary-color) !default;\n$toast-header-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-header-border-color: $toast-border-color !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size: .75em !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-color: $white !default;\n$badge-padding-y: .35em !default;\n$badge-padding-x: .65em !default;\n$badge-border-radius: var(--#{$prefix}border-radius) !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding: $spacer !default;\n\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: var(--#{$prefix}body-bg) !default;\n$modal-content-border-color: var(--#{$prefix}border-color-translucent) !default;\n$modal-content-border-width: var(--#{$prefix}border-width) !default;\n$modal-content-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: var(--#{$prefix}box-shadow-sm) !default;\n$modal-content-box-shadow-sm-up: var(--#{$prefix}box-shadow) !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n\n$modal-header-border-color: var(--#{$prefix}border-color) !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-header-padding-y: $modal-inner-padding !default;\n$modal-header-padding-x: $modal-inner-padding !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-footer-bg: null !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n\n$modal-sm: 300px !default;\n$modal-md: 500px !default;\n$modal-lg: 800px !default;\n$modal-xl: 1140px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y: $spacer !default;\n$alert-padding-x: $spacer !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: var(--#{$prefix}border-radius) !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: var(--#{$prefix}border-width) !default;\n$alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n// fusv-disable\n$alert-bg-scale: -80% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-border-scale: -70% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-color-scale: 40% !default; // Deprecated in v5.2.0, to be removed in v6\n// fusv-enable\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: var(--#{$prefix}secondary-bg) !default;\n$progress-border-radius: var(--#{$prefix}border-radius) !default;\n$progress-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: $primary !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color: var(--#{$prefix}body-color) !default;\n$list-group-bg: var(--#{$prefix}body-bg) !default;\n$list-group-border-color: var(--#{$prefix}border-color) !default;\n$list-group-border-width: var(--#{$prefix}border-width) !default;\n$list-group-border-radius: var(--#{$prefix}border-radius) !default;\n\n$list-group-item-padding-y: $spacer * .5 !default;\n$list-group-item-padding-x: $spacer !default;\n// fusv-disable\n$list-group-item-bg-scale: -80% !default; // Deprecated in v5.3.0\n$list-group-item-color-scale: 40% !default; // Deprecated in v5.3.0\n// fusv-enable\n\n$list-group-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: var(--#{$prefix}secondary-color) !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: var(--#{$prefix}secondary-color) !default;\n$list-group-action-hover-color: var(--#{$prefix}emphasis-color) !default;\n\n$list-group-action-active-color: var(--#{$prefix}body-color) !default;\n$list-group-action-active-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: var(--#{$prefix}body-bg) !default;\n$thumbnail-border-width: var(--#{$prefix}border-width) !default;\n$thumbnail-border-color: var(--#{$prefix}border-color) !default;\n$thumbnail-border-radius: var(--#{$prefix}border-radius) !default;\n$thumbnail-box-shadow: var(--#{$prefix}box-shadow-sm) !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size: $small-font-size !default;\n$figure-caption-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size: null !default;\n$breadcrumb-padding-y: 0 !default;\n$breadcrumb-padding-x: 0 !default;\n$breadcrumb-item-padding-x: .5rem !default;\n$breadcrumb-margin-bottom: 1rem !default;\n$breadcrumb-bg: null !default;\n$breadcrumb-divider-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-active-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-divider: quote(\"/\") !default;\n$breadcrumb-divider-flipped: $breadcrumb-divider !default;\n$breadcrumb-border-radius: null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-opacity: .5 !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-active-opacity: 1 !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n$carousel-caption-padding-y: 1.25rem !default;\n$carousel-caption-spacer: 1.25rem !default;\n\n$carousel-control-icon-width: 2rem !default;\n\n$carousel-control-prev-icon-bg: url(\"data:image/svg+xml,\") !default;\n$carousel-control-next-icon-bg: url(\"data:image/svg+xml,\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n// scss-docs-end carousel-variables\n\n// scss-docs-start carousel-dark-variables\n$carousel-dark-indicator-active-bg: $black !default;\n$carousel-dark-caption-color: $black !default;\n$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;\n// scss-docs-end carousel-dark-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-vertical-align: -.125em !default;\n$spinner-border-width: .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width: 1em !default;\n$btn-close-height: $btn-close-width !default;\n$btn-close-padding-x: .25em !default;\n$btn-close-padding-y: $btn-close-padding-x !default;\n$btn-close-color: $black !default;\n$btn-close-bg: url(\"data:image/svg+xml,\") !default;\n$btn-close-focus-shadow: $focus-ring-box-shadow !default;\n$btn-close-opacity: .5 !default;\n$btn-close-hover-opacity: .75 !default;\n$btn-close-focus-opacity: 1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y: $modal-inner-padding !default;\n$offcanvas-padding-x: $modal-inner-padding !default;\n$offcanvas-horizontal-width: 400px !default;\n$offcanvas-vertical-height: 30vh !default;\n$offcanvas-transition-duration: .3s !default;\n$offcanvas-border-color: $modal-content-border-color !default;\n$offcanvas-border-width: $modal-content-border-width !default;\n$offcanvas-title-line-height: $modal-title-line-height !default;\n$offcanvas-bg-color: var(--#{$prefix}body-bg) !default;\n$offcanvas-color: var(--#{$prefix}body-color) !default;\n$offcanvas-box-shadow: $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg: $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity: $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size: $small-font-size !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .1875rem !default;\n$kbd-padding-x: .375rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: var(--#{$prefix}body-bg) !default;\n$kbd-bg: var(--#{$prefix}body-color) !default;\n$nested-kbd-font-weight: null !default; // Deprecated in v5.2.0, removing in v6\n\n$pre-color: null !default;\n\n@import \"variables-dark\"; // TODO: can be removed safely in v6, only here to avoid breaking changes in v5.3\n","// Row\n//\n// Rows contain your columns.\n\n:root {\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: percentage(divide(1, $count));\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is an invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix: \"\", $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.min.css b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.min.css index 07ebd269f..672cbc2e6 100644 --- a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.min.css +++ b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.min.css @@ -1,6 +1,6 @@ /*! - * Bootstrap Grid v5.3.0 (https://getbootstrap.com/) - * Copyright 2011-2023 The Bootstrap Authors + * Bootstrap Grid v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-left:calc(var(--bs-gutter-x) * .5);padding-right:calc(var(--bs-gutter-x) * .5);margin-left:auto;margin-right:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-left:calc(-.5 * var(--bs-gutter-x));margin-right:calc(-.5 * var(--bs-gutter-x))}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-left:calc(var(--bs-gutter-x) * .5);padding-right:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-right:8.33333333%}.offset-2{margin-right:16.66666667%}.offset-3{margin-right:25%}.offset-4{margin-right:33.33333333%}.offset-5{margin-right:41.66666667%}.offset-6{margin-right:50%}.offset-7{margin-right:58.33333333%}.offset-8{margin-right:66.66666667%}.offset-9{margin-right:75%}.offset-10{margin-right:83.33333333%}.offset-11{margin-right:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-right:0}.offset-sm-1{margin-right:8.33333333%}.offset-sm-2{margin-right:16.66666667%}.offset-sm-3{margin-right:25%}.offset-sm-4{margin-right:33.33333333%}.offset-sm-5{margin-right:41.66666667%}.offset-sm-6{margin-right:50%}.offset-sm-7{margin-right:58.33333333%}.offset-sm-8{margin-right:66.66666667%}.offset-sm-9{margin-right:75%}.offset-sm-10{margin-right:83.33333333%}.offset-sm-11{margin-right:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-right:0}.offset-md-1{margin-right:8.33333333%}.offset-md-2{margin-right:16.66666667%}.offset-md-3{margin-right:25%}.offset-md-4{margin-right:33.33333333%}.offset-md-5{margin-right:41.66666667%}.offset-md-6{margin-right:50%}.offset-md-7{margin-right:58.33333333%}.offset-md-8{margin-right:66.66666667%}.offset-md-9{margin-right:75%}.offset-md-10{margin-right:83.33333333%}.offset-md-11{margin-right:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-right:0}.offset-lg-1{margin-right:8.33333333%}.offset-lg-2{margin-right:16.66666667%}.offset-lg-3{margin-right:25%}.offset-lg-4{margin-right:33.33333333%}.offset-lg-5{margin-right:41.66666667%}.offset-lg-6{margin-right:50%}.offset-lg-7{margin-right:58.33333333%}.offset-lg-8{margin-right:66.66666667%}.offset-lg-9{margin-right:75%}.offset-lg-10{margin-right:83.33333333%}.offset-lg-11{margin-right:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-right:0}.offset-xl-1{margin-right:8.33333333%}.offset-xl-2{margin-right:16.66666667%}.offset-xl-3{margin-right:25%}.offset-xl-4{margin-right:33.33333333%}.offset-xl-5{margin-right:41.66666667%}.offset-xl-6{margin-right:50%}.offset-xl-7{margin-right:58.33333333%}.offset-xl-8{margin-right:66.66666667%}.offset-xl-9{margin-right:75%}.offset-xl-10{margin-right:83.33333333%}.offset-xl-11{margin-right:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-right:0}.offset-xxl-1{margin-right:8.33333333%}.offset-xxl-2{margin-right:16.66666667%}.offset-xxl-3{margin-right:25%}.offset-xxl-4{margin-right:33.33333333%}.offset-xxl-5{margin-right:41.66666667%}.offset-xxl-6{margin-right:50%}.offset-xxl-7{margin-right:58.33333333%}.offset-xxl-8{margin-right:66.66666667%}.offset-xxl-9{margin-right:75%}.offset-xxl-10{margin-right:83.33333333%}.offset-xxl-11{margin-right:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:3rem!important;margin-right:3rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-left:0!important}.me-1{margin-left:.25rem!important}.me-2{margin-left:.5rem!important}.me-3{margin-left:1rem!important}.me-4{margin-left:1.5rem!important}.me-5{margin-left:3rem!important}.me-auto{margin-left:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-right:0!important}.ms-1{margin-right:.25rem!important}.ms-2{margin-right:.5rem!important}.ms-3{margin-right:1rem!important}.ms-4{margin-right:1.5rem!important}.ms-5{margin-right:3rem!important}.ms-auto{margin-right:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:3rem!important;padding-right:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-left:0!important}.pe-1{padding-left:.25rem!important}.pe-2{padding-left:.5rem!important}.pe-3{padding-left:1rem!important}.pe-4{padding-left:1.5rem!important}.pe-5{padding-left:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-right:0!important}.ps-1{padding-right:.25rem!important}.ps-2{padding-right:.5rem!important}.ps-3{padding-right:1rem!important}.ps-4{padding-right:1.5rem!important}.ps-5{padding-right:3rem!important}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-left:0!important}.me-sm-1{margin-left:.25rem!important}.me-sm-2{margin-left:.5rem!important}.me-sm-3{margin-left:1rem!important}.me-sm-4{margin-left:1.5rem!important}.me-sm-5{margin-left:3rem!important}.me-sm-auto{margin-left:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-right:0!important}.ms-sm-1{margin-right:.25rem!important}.ms-sm-2{margin-right:.5rem!important}.ms-sm-3{margin-right:1rem!important}.ms-sm-4{margin-right:1.5rem!important}.ms-sm-5{margin-right:3rem!important}.ms-sm-auto{margin-right:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:3rem!important;padding-right:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-left:0!important}.pe-sm-1{padding-left:.25rem!important}.pe-sm-2{padding-left:.5rem!important}.pe-sm-3{padding-left:1rem!important}.pe-sm-4{padding-left:1.5rem!important}.pe-sm-5{padding-left:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-right:0!important}.ps-sm-1{padding-right:.25rem!important}.ps-sm-2{padding-right:.5rem!important}.ps-sm-3{padding-right:1rem!important}.ps-sm-4{padding-right:1.5rem!important}.ps-sm-5{padding-right:3rem!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:3rem!important;margin-right:3rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-left:0!important}.me-md-1{margin-left:.25rem!important}.me-md-2{margin-left:.5rem!important}.me-md-3{margin-left:1rem!important}.me-md-4{margin-left:1.5rem!important}.me-md-5{margin-left:3rem!important}.me-md-auto{margin-left:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-right:0!important}.ms-md-1{margin-right:.25rem!important}.ms-md-2{margin-right:.5rem!important}.ms-md-3{margin-right:1rem!important}.ms-md-4{margin-right:1.5rem!important}.ms-md-5{margin-right:3rem!important}.ms-md-auto{margin-right:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:3rem!important;padding-right:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-left:0!important}.pe-md-1{padding-left:.25rem!important}.pe-md-2{padding-left:.5rem!important}.pe-md-3{padding-left:1rem!important}.pe-md-4{padding-left:1.5rem!important}.pe-md-5{padding-left:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-right:0!important}.ps-md-1{padding-right:.25rem!important}.ps-md-2{padding-right:.5rem!important}.ps-md-3{padding-right:1rem!important}.ps-md-4{padding-right:1.5rem!important}.ps-md-5{padding-right:3rem!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-left:0!important}.me-lg-1{margin-left:.25rem!important}.me-lg-2{margin-left:.5rem!important}.me-lg-3{margin-left:1rem!important}.me-lg-4{margin-left:1.5rem!important}.me-lg-5{margin-left:3rem!important}.me-lg-auto{margin-left:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-right:0!important}.ms-lg-1{margin-right:.25rem!important}.ms-lg-2{margin-right:.5rem!important}.ms-lg-3{margin-right:1rem!important}.ms-lg-4{margin-right:1.5rem!important}.ms-lg-5{margin-right:3rem!important}.ms-lg-auto{margin-right:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:3rem!important;padding-right:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-left:0!important}.pe-lg-1{padding-left:.25rem!important}.pe-lg-2{padding-left:.5rem!important}.pe-lg-3{padding-left:1rem!important}.pe-lg-4{padding-left:1.5rem!important}.pe-lg-5{padding-left:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-right:0!important}.ps-lg-1{padding-right:.25rem!important}.ps-lg-2{padding-right:.5rem!important}.ps-lg-3{padding-right:1rem!important}.ps-lg-4{padding-right:1.5rem!important}.ps-lg-5{padding-right:3rem!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-left:0!important}.me-xl-1{margin-left:.25rem!important}.me-xl-2{margin-left:.5rem!important}.me-xl-3{margin-left:1rem!important}.me-xl-4{margin-left:1.5rem!important}.me-xl-5{margin-left:3rem!important}.me-xl-auto{margin-left:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-right:0!important}.ms-xl-1{margin-right:.25rem!important}.ms-xl-2{margin-right:.5rem!important}.ms-xl-3{margin-right:1rem!important}.ms-xl-4{margin-right:1.5rem!important}.ms-xl-5{margin-right:3rem!important}.ms-xl-auto{margin-right:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-left:0!important}.pe-xl-1{padding-left:.25rem!important}.pe-xl-2{padding-left:.5rem!important}.pe-xl-3{padding-left:1rem!important}.pe-xl-4{padding-left:1.5rem!important}.pe-xl-5{padding-left:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-right:0!important}.ps-xl-1{padding-right:.25rem!important}.ps-xl-2{padding-right:.5rem!important}.ps-xl-3{padding-right:1rem!important}.ps-xl-4{padding-right:1.5rem!important}.ps-xl-5{padding-right:3rem!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-left:0!important;margin-right:0!important}.mx-xxl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xxl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xxl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xxl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xxl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xxl-auto{margin-left:auto!important;margin-right:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-left:0!important}.me-xxl-1{margin-left:.25rem!important}.me-xxl-2{margin-left:.5rem!important}.me-xxl-3{margin-left:1rem!important}.me-xxl-4{margin-left:1.5rem!important}.me-xxl-5{margin-left:3rem!important}.me-xxl-auto{margin-left:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-right:0!important}.ms-xxl-1{margin-right:.25rem!important}.ms-xxl-2{margin-right:.5rem!important}.ms-xxl-3{margin-right:1rem!important}.ms-xxl-4{margin-right:1.5rem!important}.ms-xxl-5{margin-right:3rem!important}.ms-xxl-auto{margin-right:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-left:0!important;padding-right:0!important}.px-xxl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xxl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xxl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xxl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xxl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-left:0!important}.pe-xxl-1{padding-left:.25rem!important}.pe-xxl-2{padding-left:.5rem!important}.pe-xxl-3{padding-left:1rem!important}.pe-xxl-4{padding-left:1.5rem!important}.pe-xxl-5{padding-left:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-right:0!important}.ps-xxl-1{padding-right:.25rem!important}.ps-xxl-2{padding-right:.5rem!important}.ps-xxl-3{padding-right:1rem!important}.ps-xxl-4{padding-right:1.5rem!important}.ps-xxl-5{padding-right:3rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} + */.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-left:calc(var(--bs-gutter-x) * .5);padding-right:calc(var(--bs-gutter-x) * .5);margin-left:auto;margin-right:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-left:calc(-.5 * var(--bs-gutter-x));margin-right:calc(-.5 * var(--bs-gutter-x))}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-left:calc(var(--bs-gutter-x) * .5);padding-right:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-right:8.33333333%}.offset-2{margin-right:16.66666667%}.offset-3{margin-right:25%}.offset-4{margin-right:33.33333333%}.offset-5{margin-right:41.66666667%}.offset-6{margin-right:50%}.offset-7{margin-right:58.33333333%}.offset-8{margin-right:66.66666667%}.offset-9{margin-right:75%}.offset-10{margin-right:83.33333333%}.offset-11{margin-right:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-right:0}.offset-sm-1{margin-right:8.33333333%}.offset-sm-2{margin-right:16.66666667%}.offset-sm-3{margin-right:25%}.offset-sm-4{margin-right:33.33333333%}.offset-sm-5{margin-right:41.66666667%}.offset-sm-6{margin-right:50%}.offset-sm-7{margin-right:58.33333333%}.offset-sm-8{margin-right:66.66666667%}.offset-sm-9{margin-right:75%}.offset-sm-10{margin-right:83.33333333%}.offset-sm-11{margin-right:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-right:0}.offset-md-1{margin-right:8.33333333%}.offset-md-2{margin-right:16.66666667%}.offset-md-3{margin-right:25%}.offset-md-4{margin-right:33.33333333%}.offset-md-5{margin-right:41.66666667%}.offset-md-6{margin-right:50%}.offset-md-7{margin-right:58.33333333%}.offset-md-8{margin-right:66.66666667%}.offset-md-9{margin-right:75%}.offset-md-10{margin-right:83.33333333%}.offset-md-11{margin-right:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-right:0}.offset-lg-1{margin-right:8.33333333%}.offset-lg-2{margin-right:16.66666667%}.offset-lg-3{margin-right:25%}.offset-lg-4{margin-right:33.33333333%}.offset-lg-5{margin-right:41.66666667%}.offset-lg-6{margin-right:50%}.offset-lg-7{margin-right:58.33333333%}.offset-lg-8{margin-right:66.66666667%}.offset-lg-9{margin-right:75%}.offset-lg-10{margin-right:83.33333333%}.offset-lg-11{margin-right:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-right:0}.offset-xl-1{margin-right:8.33333333%}.offset-xl-2{margin-right:16.66666667%}.offset-xl-3{margin-right:25%}.offset-xl-4{margin-right:33.33333333%}.offset-xl-5{margin-right:41.66666667%}.offset-xl-6{margin-right:50%}.offset-xl-7{margin-right:58.33333333%}.offset-xl-8{margin-right:66.66666667%}.offset-xl-9{margin-right:75%}.offset-xl-10{margin-right:83.33333333%}.offset-xl-11{margin-right:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-right:0}.offset-xxl-1{margin-right:8.33333333%}.offset-xxl-2{margin-right:16.66666667%}.offset-xxl-3{margin-right:25%}.offset-xxl-4{margin-right:33.33333333%}.offset-xxl-5{margin-right:41.66666667%}.offset-xxl-6{margin-right:50%}.offset-xxl-7{margin-right:58.33333333%}.offset-xxl-8{margin-right:66.66666667%}.offset-xxl-9{margin-right:75%}.offset-xxl-10{margin-right:83.33333333%}.offset-xxl-11{margin-right:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:3rem!important;margin-right:3rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-left:0!important}.me-1{margin-left:.25rem!important}.me-2{margin-left:.5rem!important}.me-3{margin-left:1rem!important}.me-4{margin-left:1.5rem!important}.me-5{margin-left:3rem!important}.me-auto{margin-left:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-right:0!important}.ms-1{margin-right:.25rem!important}.ms-2{margin-right:.5rem!important}.ms-3{margin-right:1rem!important}.ms-4{margin-right:1.5rem!important}.ms-5{margin-right:3rem!important}.ms-auto{margin-right:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:3rem!important;padding-right:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-left:0!important}.pe-1{padding-left:.25rem!important}.pe-2{padding-left:.5rem!important}.pe-3{padding-left:1rem!important}.pe-4{padding-left:1.5rem!important}.pe-5{padding-left:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-right:0!important}.ps-1{padding-right:.25rem!important}.ps-2{padding-right:.5rem!important}.ps-3{padding-right:1rem!important}.ps-4{padding-right:1.5rem!important}.ps-5{padding-right:3rem!important}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-left:0!important}.me-sm-1{margin-left:.25rem!important}.me-sm-2{margin-left:.5rem!important}.me-sm-3{margin-left:1rem!important}.me-sm-4{margin-left:1.5rem!important}.me-sm-5{margin-left:3rem!important}.me-sm-auto{margin-left:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-right:0!important}.ms-sm-1{margin-right:.25rem!important}.ms-sm-2{margin-right:.5rem!important}.ms-sm-3{margin-right:1rem!important}.ms-sm-4{margin-right:1.5rem!important}.ms-sm-5{margin-right:3rem!important}.ms-sm-auto{margin-right:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:3rem!important;padding-right:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-left:0!important}.pe-sm-1{padding-left:.25rem!important}.pe-sm-2{padding-left:.5rem!important}.pe-sm-3{padding-left:1rem!important}.pe-sm-4{padding-left:1.5rem!important}.pe-sm-5{padding-left:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-right:0!important}.ps-sm-1{padding-right:.25rem!important}.ps-sm-2{padding-right:.5rem!important}.ps-sm-3{padding-right:1rem!important}.ps-sm-4{padding-right:1.5rem!important}.ps-sm-5{padding-right:3rem!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:3rem!important;margin-right:3rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-left:0!important}.me-md-1{margin-left:.25rem!important}.me-md-2{margin-left:.5rem!important}.me-md-3{margin-left:1rem!important}.me-md-4{margin-left:1.5rem!important}.me-md-5{margin-left:3rem!important}.me-md-auto{margin-left:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-right:0!important}.ms-md-1{margin-right:.25rem!important}.ms-md-2{margin-right:.5rem!important}.ms-md-3{margin-right:1rem!important}.ms-md-4{margin-right:1.5rem!important}.ms-md-5{margin-right:3rem!important}.ms-md-auto{margin-right:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:3rem!important;padding-right:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-left:0!important}.pe-md-1{padding-left:.25rem!important}.pe-md-2{padding-left:.5rem!important}.pe-md-3{padding-left:1rem!important}.pe-md-4{padding-left:1.5rem!important}.pe-md-5{padding-left:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-right:0!important}.ps-md-1{padding-right:.25rem!important}.ps-md-2{padding-right:.5rem!important}.ps-md-3{padding-right:1rem!important}.ps-md-4{padding-right:1.5rem!important}.ps-md-5{padding-right:3rem!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-left:0!important}.me-lg-1{margin-left:.25rem!important}.me-lg-2{margin-left:.5rem!important}.me-lg-3{margin-left:1rem!important}.me-lg-4{margin-left:1.5rem!important}.me-lg-5{margin-left:3rem!important}.me-lg-auto{margin-left:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-right:0!important}.ms-lg-1{margin-right:.25rem!important}.ms-lg-2{margin-right:.5rem!important}.ms-lg-3{margin-right:1rem!important}.ms-lg-4{margin-right:1.5rem!important}.ms-lg-5{margin-right:3rem!important}.ms-lg-auto{margin-right:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:3rem!important;padding-right:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-left:0!important}.pe-lg-1{padding-left:.25rem!important}.pe-lg-2{padding-left:.5rem!important}.pe-lg-3{padding-left:1rem!important}.pe-lg-4{padding-left:1.5rem!important}.pe-lg-5{padding-left:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-right:0!important}.ps-lg-1{padding-right:.25rem!important}.ps-lg-2{padding-right:.5rem!important}.ps-lg-3{padding-right:1rem!important}.ps-lg-4{padding-right:1.5rem!important}.ps-lg-5{padding-right:3rem!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-left:0!important}.me-xl-1{margin-left:.25rem!important}.me-xl-2{margin-left:.5rem!important}.me-xl-3{margin-left:1rem!important}.me-xl-4{margin-left:1.5rem!important}.me-xl-5{margin-left:3rem!important}.me-xl-auto{margin-left:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-right:0!important}.ms-xl-1{margin-right:.25rem!important}.ms-xl-2{margin-right:.5rem!important}.ms-xl-3{margin-right:1rem!important}.ms-xl-4{margin-right:1.5rem!important}.ms-xl-5{margin-right:3rem!important}.ms-xl-auto{margin-right:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-left:0!important}.pe-xl-1{padding-left:.25rem!important}.pe-xl-2{padding-left:.5rem!important}.pe-xl-3{padding-left:1rem!important}.pe-xl-4{padding-left:1.5rem!important}.pe-xl-5{padding-left:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-right:0!important}.ps-xl-1{padding-right:.25rem!important}.ps-xl-2{padding-right:.5rem!important}.ps-xl-3{padding-right:1rem!important}.ps-xl-4{padding-right:1.5rem!important}.ps-xl-5{padding-right:3rem!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-left:0!important;margin-right:0!important}.mx-xxl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xxl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xxl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xxl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xxl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xxl-auto{margin-left:auto!important;margin-right:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-left:0!important}.me-xxl-1{margin-left:.25rem!important}.me-xxl-2{margin-left:.5rem!important}.me-xxl-3{margin-left:1rem!important}.me-xxl-4{margin-left:1.5rem!important}.me-xxl-5{margin-left:3rem!important}.me-xxl-auto{margin-left:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-right:0!important}.ms-xxl-1{margin-right:.25rem!important}.ms-xxl-2{margin-right:.5rem!important}.ms-xxl-3{margin-right:1rem!important}.ms-xxl-4{margin-right:1.5rem!important}.ms-xxl-5{margin-right:3rem!important}.ms-xxl-auto{margin-right:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-left:0!important;padding-right:0!important}.px-xxl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xxl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xxl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xxl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xxl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-left:0!important}.pe-xxl-1{padding-left:.25rem!important}.pe-xxl-2{padding-left:.5rem!important}.pe-xxl-3{padding-left:1rem!important}.pe-xxl-4{padding-left:1.5rem!important}.pe-xxl-5{padding-left:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-right:0!important}.ps-xxl-1{padding-right:.25rem!important}.ps-xxl-2{padding-right:.5rem!important}.ps-xxl-3{padding-right:1rem!important}.ps-xxl-4{padding-right:1.5rem!important}.ps-xxl-5{padding-right:3rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} /*# sourceMappingURL=bootstrap-grid.rtl.min.css.map */ \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.min.css.map b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.min.css.map index a0b721a01..1c926af57 100644 --- a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.min.css.map +++ b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_containers.scss","dist/css/bootstrap-grid.rtl.css","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"AACE;;;;ACKA,WCAF,iBAGA,cACA,cACA,cAHA,cADA,eCJE,cAAA,OACA,cAAA,EACA,MAAA,KACA,aAAA,8BACA,cAAA,8BACA,YAAA,KACA,aAAA,KCsDE,yBH5CE,WAAA,cACE,UAAA,OG2CJ,yBH5CE,WAAA,cAAA,cACE,UAAA,OG2CJ,yBH5CE,WAAA,cAAA,cAAA,cACE,UAAA,OG2CJ,0BH5CE,WAAA,cAAA,cAAA,cAAA,cACE,UAAA,QG2CJ,0BH5CE,WAAA,cAAA,cAAA,cAAA,cAAA,eACE,UAAA,QIhBR,MAEI,mBAAA,EAAA,mBAAA,MAAA,mBAAA,MAAA,mBAAA,MAAA,mBAAA,OAAA,oBAAA,OAKF,KCNA,cAAA,OACA,cAAA,EACA,QAAA,KACA,UAAA,KAEA,WAAA,8BACA,YAAA,+BACA,aAAA,+BDEE,OCGF,WAAA,WAIA,YAAA,EACA,MAAA,KACA,UAAA,KACA,aAAA,8BACA,cAAA,8BACA,WAAA,mBA+CI,KACE,KAAA,EAAA,EAAA,GAGF,iBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,cACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,UAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,UAxDV,aAAA,YAwDU,UAxDV,aAAA,aAwDU,UAxDV,aAAA,IAwDU,UAxDV,aAAA,aAwDU,UAxDV,aAAA,aAwDU,UAxDV,aAAA,IAwDU,UAxDV,aAAA,aAwDU,UAxDV,aAAA,aAwDU,UAxDV,aAAA,IAwDU,WAxDV,aAAA,aAwDU,WAxDV,aAAA,aAmEM,KJ6GR,MI3GU,cAAA,EAGF,KJ6GR,MI3GU,cAAA,EAPF,KJuHR,MIrHU,cAAA,QAGF,KJuHR,MIrHU,cAAA,QAPF,KJiIR,MI/HU,cAAA,OAGF,KJiIR,MI/HU,cAAA,OAPF,KJ2IR,MIzIU,cAAA,KAGF,KJ2IR,MIzIU,cAAA,KAPF,KJqJR,MInJU,cAAA,OAGF,KJqJR,MInJU,cAAA,OAPF,KJ+JR,MI7JU,cAAA,KAGF,KJ+JR,MI7JU,cAAA,KF1DN,yBEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,aAAA,EAwDU,aAxDV,aAAA,YAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAmEM,QJiSN,SI/RQ,cAAA,EAGF,QJgSN,SI9RQ,cAAA,EAPF,QJySN,SIvSQ,cAAA,QAGF,QJwSN,SItSQ,cAAA,QAPF,QJiTN,SI/SQ,cAAA,OAGF,QJgTN,SI9SQ,cAAA,OAPF,QJyTN,SIvTQ,cAAA,KAGF,QJwTN,SItTQ,cAAA,KAPF,QJiUN,SI/TQ,cAAA,OAGF,QJgUN,SI9TQ,cAAA,OAPF,QJyUN,SIvUQ,cAAA,KAGF,QJwUN,SItUQ,cAAA,MF1DN,yBEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,aAAA,EAwDU,aAxDV,aAAA,YAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAmEM,QJ0cN,SIxcQ,cAAA,EAGF,QJycN,SIvcQ,cAAA,EAPF,QJkdN,SIhdQ,cAAA,QAGF,QJidN,SI/cQ,cAAA,QAPF,QJ0dN,SIxdQ,cAAA,OAGF,QJydN,SIvdQ,cAAA,OAPF,QJkeN,SIheQ,cAAA,KAGF,QJieN,SI/dQ,cAAA,KAPF,QJ0eN,SIxeQ,cAAA,OAGF,QJyeN,SIveQ,cAAA,OAPF,QJkfN,SIhfQ,cAAA,KAGF,QJifN,SI/eQ,cAAA,MF1DN,yBEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,aAAA,EAwDU,aAxDV,aAAA,YAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAmEM,QJmnBN,SIjnBQ,cAAA,EAGF,QJknBN,SIhnBQ,cAAA,EAPF,QJ2nBN,SIznBQ,cAAA,QAGF,QJ0nBN,SIxnBQ,cAAA,QAPF,QJmoBN,SIjoBQ,cAAA,OAGF,QJkoBN,SIhoBQ,cAAA,OAPF,QJ2oBN,SIzoBQ,cAAA,KAGF,QJ0oBN,SIxoBQ,cAAA,KAPF,QJmpBN,SIjpBQ,cAAA,OAGF,QJkpBN,SIhpBQ,cAAA,OAPF,QJ2pBN,SIzpBQ,cAAA,KAGF,QJ0pBN,SIxpBQ,cAAA,MF1DN,0BEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,aAAA,EAwDU,aAxDV,aAAA,YAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAmEM,QJ4xBN,SI1xBQ,cAAA,EAGF,QJ2xBN,SIzxBQ,cAAA,EAPF,QJoyBN,SIlyBQ,cAAA,QAGF,QJmyBN,SIjyBQ,cAAA,QAPF,QJ4yBN,SI1yBQ,cAAA,OAGF,QJ2yBN,SIzyBQ,cAAA,OAPF,QJozBN,SIlzBQ,cAAA,KAGF,QJmzBN,SIjzBQ,cAAA,KAPF,QJ4zBN,SI1zBQ,cAAA,OAGF,QJ2zBN,SIzzBQ,cAAA,OAPF,QJo0BN,SIl0BQ,cAAA,KAGF,QJm0BN,SIj0BQ,cAAA,MF1DN,0BEUE,SACE,KAAA,EAAA,EAAA,GAGF,qBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,cAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,cAxDV,aAAA,EAwDU,cAxDV,aAAA,YAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,IAwDU,eAxDV,aAAA,aAwDU,eAxDV,aAAA,aAmEM,SJq8BN,UIn8BQ,cAAA,EAGF,SJo8BN,UIl8BQ,cAAA,EAPF,SJ68BN,UI38BQ,cAAA,QAGF,SJ48BN,UI18BQ,cAAA,QAPF,SJq9BN,UIn9BQ,cAAA,OAGF,SJo9BN,UIl9BQ,cAAA,OAPF,SJ69BN,UI39BQ,cAAA,KAGF,SJ49BN,UI19BQ,cAAA,KAPF,SJq+BN,UIn+BQ,cAAA,OAGF,SJo+BN,UIl+BQ,cAAA,OAPF,SJ6+BN,UI3+BQ,cAAA,KAGF,SJ4+BN,UI1+BQ,cAAA,MCvDF,UAOI,QAAA,iBAPJ,gBAOI,QAAA,uBAPJ,SAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,eAOI,QAAA,sBAPJ,SAOI,QAAA,gBAPJ,aAOI,QAAA,oBAPJ,cAOI,QAAA,qBAPJ,QAOI,QAAA,eAPJ,eAOI,QAAA,sBAPJ,QAOI,QAAA,eAPJ,WAOI,KAAA,EAAA,EAAA,eAPJ,UAOI,eAAA,cAPJ,aAOI,eAAA,iBAPJ,kBAOI,eAAA,sBAPJ,qBAOI,eAAA,yBAPJ,aAOI,UAAA,YAPJ,aAOI,UAAA,YAPJ,eAOI,YAAA,YAPJ,eAOI,YAAA,YAPJ,WAOI,UAAA,eAPJ,aAOI,UAAA,iBAPJ,mBAOI,UAAA,uBAPJ,uBAOI,gBAAA,qBAPJ,qBAOI,gBAAA,mBAPJ,wBAOI,gBAAA,iBAPJ,yBAOI,gBAAA,wBAPJ,wBAOI,gBAAA,uBAPJ,wBAOI,gBAAA,uBAPJ,mBAOI,YAAA,qBAPJ,iBAOI,YAAA,mBAPJ,oBAOI,YAAA,iBAPJ,sBAOI,YAAA,mBAPJ,qBAOI,YAAA,kBAPJ,qBAOI,cAAA,qBAPJ,mBAOI,cAAA,mBAPJ,sBAOI,cAAA,iBAPJ,uBAOI,cAAA,wBAPJ,sBAOI,cAAA,uBAPJ,uBAOI,cAAA,kBAPJ,iBAOI,WAAA,eAPJ,kBAOI,WAAA,qBAPJ,gBAOI,WAAA,mBAPJ,mBAOI,WAAA,iBAPJ,qBAOI,WAAA,mBAPJ,oBAOI,WAAA,kBAPJ,aAOI,MAAA,aAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,KAOI,OAAA,YAPJ,KAOI,OAAA,iBAPJ,KAOI,OAAA,gBAPJ,KAOI,OAAA,eAPJ,KAOI,OAAA,iBAPJ,KAOI,OAAA,eAPJ,QAOI,OAAA,eAPJ,MAOI,YAAA,YAAA,aAAA,YAPJ,MAOI,YAAA,iBAAA,aAAA,iBAPJ,MAOI,YAAA,gBAAA,aAAA,gBAPJ,MAOI,YAAA,eAAA,aAAA,eAPJ,MAOI,YAAA,iBAAA,aAAA,iBAPJ,MAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,MAOI,WAAA,YAAA,cAAA,YAPJ,MAOI,WAAA,iBAAA,cAAA,iBAPJ,MAOI,WAAA,gBAAA,cAAA,gBAPJ,MAOI,WAAA,eAAA,cAAA,eAPJ,MAOI,WAAA,iBAAA,cAAA,iBAPJ,MAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,MAOI,WAAA,YAPJ,MAOI,WAAA,iBAPJ,MAOI,WAAA,gBAPJ,MAOI,WAAA,eAPJ,MAOI,WAAA,iBAPJ,MAOI,WAAA,eAPJ,SAOI,WAAA,eAPJ,MAOI,YAAA,YAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,gBAPJ,MAOI,YAAA,eAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,eAPJ,SAOI,YAAA,eAPJ,MAOI,cAAA,YAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,gBAPJ,MAOI,cAAA,eAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,eAPJ,SAOI,cAAA,eAPJ,MAOI,aAAA,YAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,gBAPJ,MAOI,aAAA,eAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,eAPJ,SAOI,aAAA,eAPJ,KAOI,QAAA,YAPJ,KAOI,QAAA,iBAPJ,KAOI,QAAA,gBAPJ,KAOI,QAAA,eAPJ,KAOI,QAAA,iBAPJ,KAOI,QAAA,eAPJ,MAOI,aAAA,YAAA,cAAA,YAPJ,MAOI,aAAA,iBAAA,cAAA,iBAPJ,MAOI,aAAA,gBAAA,cAAA,gBAPJ,MAOI,aAAA,eAAA,cAAA,eAPJ,MAOI,aAAA,iBAAA,cAAA,iBAPJ,MAOI,aAAA,eAAA,cAAA,eAPJ,MAOI,YAAA,YAAA,eAAA,YAPJ,MAOI,YAAA,iBAAA,eAAA,iBAPJ,MAOI,YAAA,gBAAA,eAAA,gBAPJ,MAOI,YAAA,eAAA,eAAA,eAPJ,MAOI,YAAA,iBAAA,eAAA,iBAPJ,MAOI,YAAA,eAAA,eAAA,eAPJ,MAOI,YAAA,YAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,gBAPJ,MAOI,YAAA,eAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,eAPJ,MAOI,aAAA,YAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,gBAPJ,MAOI,aAAA,eAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,eAPJ,MAOI,eAAA,YAPJ,MAOI,eAAA,iBAPJ,MAOI,eAAA,gBAPJ,MAOI,eAAA,eAPJ,MAOI,eAAA,iBAPJ,MAOI,eAAA,eAPJ,MAOI,cAAA,YAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,gBAPJ,MAOI,cAAA,eAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,eHVR,yBGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,YAAA,YAAA,aAAA,YAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,gBAAA,aAAA,gBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,YAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,aAAA,YAAA,cAAA,YAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,gBAAA,cAAA,gBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBHVR,yBGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,YAAA,YAAA,aAAA,YAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,gBAAA,aAAA,gBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,YAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,aAAA,YAAA,cAAA,YAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,gBAAA,cAAA,gBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBHVR,yBGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,YAAA,YAAA,aAAA,YAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,gBAAA,aAAA,gBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,YAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,aAAA,YAAA,cAAA,YAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,gBAAA,cAAA,gBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBHVR,0BGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,YAAA,YAAA,aAAA,YAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,gBAAA,aAAA,gBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,YAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,aAAA,YAAA,cAAA,YAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,gBAAA,cAAA,gBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBHVR,0BGGI,cAOI,QAAA,iBAPJ,oBAOI,QAAA,uBAPJ,aAOI,QAAA,gBAPJ,YAOI,QAAA,eAPJ,mBAOI,QAAA,sBAPJ,aAOI,QAAA,gBAPJ,iBAOI,QAAA,oBAPJ,kBAOI,QAAA,qBAPJ,YAOI,QAAA,eAPJ,mBAOI,QAAA,sBAPJ,YAOI,QAAA,eAPJ,eAOI,KAAA,EAAA,EAAA,eAPJ,cAOI,eAAA,cAPJ,iBAOI,eAAA,iBAPJ,sBAOI,eAAA,sBAPJ,yBAOI,eAAA,yBAPJ,iBAOI,UAAA,YAPJ,iBAOI,UAAA,YAPJ,mBAOI,YAAA,YAPJ,mBAOI,YAAA,YAPJ,eAOI,UAAA,eAPJ,iBAOI,UAAA,iBAPJ,uBAOI,UAAA,uBAPJ,2BAOI,gBAAA,qBAPJ,yBAOI,gBAAA,mBAPJ,4BAOI,gBAAA,iBAPJ,6BAOI,gBAAA,wBAPJ,4BAOI,gBAAA,uBAPJ,4BAOI,gBAAA,uBAPJ,uBAOI,YAAA,qBAPJ,qBAOI,YAAA,mBAPJ,wBAOI,YAAA,iBAPJ,0BAOI,YAAA,mBAPJ,yBAOI,YAAA,kBAPJ,yBAOI,cAAA,qBAPJ,uBAOI,cAAA,mBAPJ,0BAOI,cAAA,iBAPJ,2BAOI,cAAA,wBAPJ,0BAOI,cAAA,uBAPJ,2BAOI,cAAA,kBAPJ,qBAOI,WAAA,eAPJ,sBAOI,WAAA,qBAPJ,oBAOI,WAAA,mBAPJ,uBAOI,WAAA,iBAPJ,yBAOI,WAAA,mBAPJ,wBAOI,WAAA,kBAPJ,iBAOI,MAAA,aAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,gBAOI,MAAA,YAPJ,SAOI,OAAA,YAPJ,SAOI,OAAA,iBAPJ,SAOI,OAAA,gBAPJ,SAOI,OAAA,eAPJ,SAOI,OAAA,iBAPJ,SAOI,OAAA,eAPJ,YAOI,OAAA,eAPJ,UAOI,YAAA,YAAA,aAAA,YAPJ,UAOI,YAAA,iBAAA,aAAA,iBAPJ,UAOI,YAAA,gBAAA,aAAA,gBAPJ,UAOI,YAAA,eAAA,aAAA,eAPJ,UAOI,YAAA,iBAAA,aAAA,iBAPJ,UAOI,YAAA,eAAA,aAAA,eAPJ,aAOI,YAAA,eAAA,aAAA,eAPJ,UAOI,WAAA,YAAA,cAAA,YAPJ,UAOI,WAAA,iBAAA,cAAA,iBAPJ,UAOI,WAAA,gBAAA,cAAA,gBAPJ,UAOI,WAAA,eAAA,cAAA,eAPJ,UAOI,WAAA,iBAAA,cAAA,iBAPJ,UAOI,WAAA,eAAA,cAAA,eAPJ,aAOI,WAAA,eAAA,cAAA,eAPJ,UAOI,WAAA,YAPJ,UAOI,WAAA,iBAPJ,UAOI,WAAA,gBAPJ,UAOI,WAAA,eAPJ,UAOI,WAAA,iBAPJ,UAOI,WAAA,eAPJ,aAOI,WAAA,eAPJ,UAOI,YAAA,YAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,gBAPJ,UAOI,YAAA,eAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,eAPJ,aAOI,YAAA,eAPJ,UAOI,cAAA,YAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBAPJ,UAOI,cAAA,eAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,eAPJ,aAOI,cAAA,eAPJ,UAOI,aAAA,YAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,gBAPJ,UAOI,aAAA,eAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,eAPJ,aAOI,aAAA,eAPJ,SAOI,QAAA,YAPJ,SAOI,QAAA,iBAPJ,SAOI,QAAA,gBAPJ,SAOI,QAAA,eAPJ,SAOI,QAAA,iBAPJ,SAOI,QAAA,eAPJ,UAOI,aAAA,YAAA,cAAA,YAPJ,UAOI,aAAA,iBAAA,cAAA,iBAPJ,UAOI,aAAA,gBAAA,cAAA,gBAPJ,UAOI,aAAA,eAAA,cAAA,eAPJ,UAOI,aAAA,iBAAA,cAAA,iBAPJ,UAOI,aAAA,eAAA,cAAA,eAPJ,UAOI,YAAA,YAAA,eAAA,YAPJ,UAOI,YAAA,iBAAA,eAAA,iBAPJ,UAOI,YAAA,gBAAA,eAAA,gBAPJ,UAOI,YAAA,eAAA,eAAA,eAPJ,UAOI,YAAA,iBAAA,eAAA,iBAPJ,UAOI,YAAA,eAAA,eAAA,eAPJ,UAOI,YAAA,YAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,gBAPJ,UAOI,YAAA,eAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,eAPJ,UAOI,aAAA,YAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,gBAPJ,UAOI,aAAA,eAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,eAPJ,UAOI,eAAA,YAPJ,UAOI,eAAA,iBAPJ,UAOI,eAAA,gBAPJ,UAOI,eAAA,eAPJ,UAOI,eAAA,iBAPJ,UAOI,eAAA,eAPJ,UAOI,cAAA,YAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBAPJ,UAOI,cAAA,eAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBCnCZ,aD4BQ,gBAOI,QAAA,iBAPJ,sBAOI,QAAA,uBAPJ,eAOI,QAAA,gBAPJ,cAOI,QAAA,eAPJ,qBAOI,QAAA,sBAPJ,eAOI,QAAA,gBAPJ,mBAOI,QAAA,oBAPJ,oBAOI,QAAA,qBAPJ,cAOI,QAAA,eAPJ,qBAOI,QAAA,sBAPJ,cAOI,QAAA","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.0 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","/*!\n * Bootstrap Grid v5.3.0 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n margin-left: auto;\n margin-right: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-right: 8.33333333%;\n}\n\n.offset-2 {\n margin-right: 16.66666667%;\n}\n\n.offset-3 {\n margin-right: 25%;\n}\n\n.offset-4 {\n margin-right: 33.33333333%;\n}\n\n.offset-5 {\n margin-right: 41.66666667%;\n}\n\n.offset-6 {\n margin-right: 50%;\n}\n\n.offset-7 {\n margin-right: 58.33333333%;\n}\n\n.offset-8 {\n margin-right: 66.66666667%;\n}\n\n.offset-9 {\n margin-right: 75%;\n}\n\n.offset-10 {\n margin-right: 83.33333333%;\n}\n\n.offset-11 {\n margin-right: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-right: 0;\n }\n .offset-sm-1 {\n margin-right: 8.33333333%;\n }\n .offset-sm-2 {\n margin-right: 16.66666667%;\n }\n .offset-sm-3 {\n margin-right: 25%;\n }\n .offset-sm-4 {\n margin-right: 33.33333333%;\n }\n .offset-sm-5 {\n margin-right: 41.66666667%;\n }\n .offset-sm-6 {\n margin-right: 50%;\n }\n .offset-sm-7 {\n margin-right: 58.33333333%;\n }\n .offset-sm-8 {\n margin-right: 66.66666667%;\n }\n .offset-sm-9 {\n margin-right: 75%;\n }\n .offset-sm-10 {\n margin-right: 83.33333333%;\n }\n .offset-sm-11 {\n margin-right: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-right: 0;\n }\n .offset-md-1 {\n margin-right: 8.33333333%;\n }\n .offset-md-2 {\n margin-right: 16.66666667%;\n }\n .offset-md-3 {\n margin-right: 25%;\n }\n .offset-md-4 {\n margin-right: 33.33333333%;\n }\n .offset-md-5 {\n margin-right: 41.66666667%;\n }\n .offset-md-6 {\n margin-right: 50%;\n }\n .offset-md-7 {\n margin-right: 58.33333333%;\n }\n .offset-md-8 {\n margin-right: 66.66666667%;\n }\n .offset-md-9 {\n margin-right: 75%;\n }\n .offset-md-10 {\n margin-right: 83.33333333%;\n }\n .offset-md-11 {\n margin-right: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-right: 0;\n }\n .offset-lg-1 {\n margin-right: 8.33333333%;\n }\n .offset-lg-2 {\n margin-right: 16.66666667%;\n }\n .offset-lg-3 {\n margin-right: 25%;\n }\n .offset-lg-4 {\n margin-right: 33.33333333%;\n }\n .offset-lg-5 {\n margin-right: 41.66666667%;\n }\n .offset-lg-6 {\n margin-right: 50%;\n }\n .offset-lg-7 {\n margin-right: 58.33333333%;\n }\n .offset-lg-8 {\n margin-right: 66.66666667%;\n }\n .offset-lg-9 {\n margin-right: 75%;\n }\n .offset-lg-10 {\n margin-right: 83.33333333%;\n }\n .offset-lg-11 {\n margin-right: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-right: 0;\n }\n .offset-xl-1 {\n margin-right: 8.33333333%;\n }\n .offset-xl-2 {\n margin-right: 16.66666667%;\n }\n .offset-xl-3 {\n margin-right: 25%;\n }\n .offset-xl-4 {\n margin-right: 33.33333333%;\n }\n .offset-xl-5 {\n margin-right: 41.66666667%;\n }\n .offset-xl-6 {\n margin-right: 50%;\n }\n .offset-xl-7 {\n margin-right: 58.33333333%;\n }\n .offset-xl-8 {\n margin-right: 66.66666667%;\n }\n .offset-xl-9 {\n margin-right: 75%;\n }\n .offset-xl-10 {\n margin-right: 83.33333333%;\n }\n .offset-xl-11 {\n margin-right: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-right: 0;\n }\n .offset-xxl-1 {\n margin-right: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-right: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-right: 25%;\n }\n .offset-xxl-4 {\n margin-right: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-right: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-right: 50%;\n }\n .offset-xxl-7 {\n margin-right: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-right: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-right: 75%;\n }\n .offset-xxl-10 {\n margin-right: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-right: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.mx-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n}\n\n.mx-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n}\n\n.mx-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n}\n\n.mx-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n}\n\n.mx-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n}\n\n.mx-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-left: 0 !important;\n}\n\n.me-1 {\n margin-left: 0.25rem !important;\n}\n\n.me-2 {\n margin-left: 0.5rem !important;\n}\n\n.me-3 {\n margin-left: 1rem !important;\n}\n\n.me-4 {\n margin-left: 1.5rem !important;\n}\n\n.me-5 {\n margin-left: 3rem !important;\n}\n\n.me-auto {\n margin-left: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-right: 0 !important;\n}\n\n.ms-1 {\n margin-right: 0.25rem !important;\n}\n\n.ms-2 {\n margin-right: 0.5rem !important;\n}\n\n.ms-3 {\n margin-right: 1rem !important;\n}\n\n.ms-4 {\n margin-right: 1.5rem !important;\n}\n\n.ms-5 {\n margin-right: 3rem !important;\n}\n\n.ms-auto {\n margin-right: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n\n.px-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n}\n\n.px-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n}\n\n.px-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n}\n\n.px-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n}\n\n.px-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-left: 0 !important;\n}\n\n.pe-1 {\n padding-left: 0.25rem !important;\n}\n\n.pe-2 {\n padding-left: 0.5rem !important;\n}\n\n.pe-3 {\n padding-left: 1rem !important;\n}\n\n.pe-4 {\n padding-left: 1.5rem !important;\n}\n\n.pe-5 {\n padding-left: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-right: 0 !important;\n}\n\n.ps-1 {\n padding-right: 0.25rem !important;\n}\n\n.ps-2 {\n padding-right: 0.5rem !important;\n}\n\n.ps-3 {\n padding-right: 1rem !important;\n}\n\n.ps-4 {\n padding-right: 1.5rem !important;\n}\n\n.ps-5 {\n padding-right: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-sm-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-sm-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-left: 0 !important;\n }\n .me-sm-1 {\n margin-left: 0.25rem !important;\n }\n .me-sm-2 {\n margin-left: 0.5rem !important;\n }\n .me-sm-3 {\n margin-left: 1rem !important;\n }\n .me-sm-4 {\n margin-left: 1.5rem !important;\n }\n .me-sm-5 {\n margin-left: 3rem !important;\n }\n .me-sm-auto {\n margin-left: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-right: 0 !important;\n }\n .ms-sm-1 {\n margin-right: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-right: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-right: 1rem !important;\n }\n .ms-sm-4 {\n margin-right: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-right: 3rem !important;\n }\n .ms-sm-auto {\n margin-right: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-sm-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-sm-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-sm-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-sm-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-sm-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-left: 0 !important;\n }\n .pe-sm-1 {\n padding-left: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-left: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-left: 1rem !important;\n }\n .pe-sm-4 {\n padding-left: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-left: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-right: 0 !important;\n }\n .ps-sm-1 {\n padding-right: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-right: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-right: 1rem !important;\n }\n .ps-sm-4 {\n padding-right: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-md-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-md-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-md-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-md-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-md-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-md-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-left: 0 !important;\n }\n .me-md-1 {\n margin-left: 0.25rem !important;\n }\n .me-md-2 {\n margin-left: 0.5rem !important;\n }\n .me-md-3 {\n margin-left: 1rem !important;\n }\n .me-md-4 {\n margin-left: 1.5rem !important;\n }\n .me-md-5 {\n margin-left: 3rem !important;\n }\n .me-md-auto {\n margin-left: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-right: 0 !important;\n }\n .ms-md-1 {\n margin-right: 0.25rem !important;\n }\n .ms-md-2 {\n margin-right: 0.5rem !important;\n }\n .ms-md-3 {\n margin-right: 1rem !important;\n }\n .ms-md-4 {\n margin-right: 1.5rem !important;\n }\n .ms-md-5 {\n margin-right: 3rem !important;\n }\n .ms-md-auto {\n margin-right: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-md-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-md-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-md-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-md-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-md-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-left: 0 !important;\n }\n .pe-md-1 {\n padding-left: 0.25rem !important;\n }\n .pe-md-2 {\n padding-left: 0.5rem !important;\n }\n .pe-md-3 {\n padding-left: 1rem !important;\n }\n .pe-md-4 {\n padding-left: 1.5rem !important;\n }\n .pe-md-5 {\n padding-left: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-right: 0 !important;\n }\n .ps-md-1 {\n padding-right: 0.25rem !important;\n }\n .ps-md-2 {\n padding-right: 0.5rem !important;\n }\n .ps-md-3 {\n padding-right: 1rem !important;\n }\n .ps-md-4 {\n padding-right: 1.5rem !important;\n }\n .ps-md-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-lg-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-lg-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-left: 0 !important;\n }\n .me-lg-1 {\n margin-left: 0.25rem !important;\n }\n .me-lg-2 {\n margin-left: 0.5rem !important;\n }\n .me-lg-3 {\n margin-left: 1rem !important;\n }\n .me-lg-4 {\n margin-left: 1.5rem !important;\n }\n .me-lg-5 {\n margin-left: 3rem !important;\n }\n .me-lg-auto {\n margin-left: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-right: 0 !important;\n }\n .ms-lg-1 {\n margin-right: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-right: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-right: 1rem !important;\n }\n .ms-lg-4 {\n margin-right: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-right: 3rem !important;\n }\n .ms-lg-auto {\n margin-right: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-lg-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-lg-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-lg-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-lg-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-lg-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-left: 0 !important;\n }\n .pe-lg-1 {\n padding-left: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-left: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-left: 1rem !important;\n }\n .pe-lg-4 {\n padding-left: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-left: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-right: 0 !important;\n }\n .ps-lg-1 {\n padding-right: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-right: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-right: 1rem !important;\n }\n .ps-lg-4 {\n padding-right: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-xl-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-xl-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-left: 0 !important;\n }\n .me-xl-1 {\n margin-left: 0.25rem !important;\n }\n .me-xl-2 {\n margin-left: 0.5rem !important;\n }\n .me-xl-3 {\n margin-left: 1rem !important;\n }\n .me-xl-4 {\n margin-left: 1.5rem !important;\n }\n .me-xl-5 {\n margin-left: 3rem !important;\n }\n .me-xl-auto {\n margin-left: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-right: 0 !important;\n }\n .ms-xl-1 {\n margin-right: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-right: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-right: 1rem !important;\n }\n .ms-xl-4 {\n margin-right: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-right: 3rem !important;\n }\n .ms-xl-auto {\n margin-right: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-xl-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-xl-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-xl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-xl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-xl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-left: 0 !important;\n }\n .pe-xl-1 {\n padding-left: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-left: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-left: 1rem !important;\n }\n .pe-xl-4 {\n padding-left: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-left: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-right: 0 !important;\n }\n .ps-xl-1 {\n padding-right: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-right: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-right: 1rem !important;\n }\n .ps-xl-4 {\n padding-right: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-xxl-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-xxl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-xxl-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-left: 0 !important;\n }\n .me-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-left: 1rem !important;\n }\n .me-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-left: 3rem !important;\n }\n .me-xxl-auto {\n margin-left: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-right: 0 !important;\n }\n .ms-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-right: 1rem !important;\n }\n .ms-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-right: 3rem !important;\n }\n .ms-xxl-auto {\n margin-right: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-xxl-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-xxl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-left: 0 !important;\n }\n .pe-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-left: 1rem !important;\n }\n .pe-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-left: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-right: 0 !important;\n }\n .ps-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-right: 1rem !important;\n }\n .ps-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-right: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap-grid.rtl.css.map */","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Row\n//\n// Rows contain your columns.\n\n:root {\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: divide(100%, $count);\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is and invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix: \"\", $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_containers.scss","dist/css/bootstrap-grid.rtl.css","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"AACE;;;;ACKA,WCAF,iBAGA,cACA,cACA,cAHA,cADA,eCJE,cAAA,OACA,cAAA,EACA,MAAA,KACA,aAAA,8BACA,cAAA,8BACA,YAAA,KACA,aAAA,KCsDE,yBH5CE,WAAA,cACE,UAAA,OG2CJ,yBH5CE,WAAA,cAAA,cACE,UAAA,OG2CJ,yBH5CE,WAAA,cAAA,cAAA,cACE,UAAA,OG2CJ,0BH5CE,WAAA,cAAA,cAAA,cAAA,cACE,UAAA,QG2CJ,0BH5CE,WAAA,cAAA,cAAA,cAAA,cAAA,eACE,UAAA,QIhBR,MAEI,mBAAA,EAAA,mBAAA,MAAA,mBAAA,MAAA,mBAAA,MAAA,mBAAA,OAAA,oBAAA,OAKF,KCNA,cAAA,OACA,cAAA,EACA,QAAA,KACA,UAAA,KAEA,WAAA,8BACA,YAAA,+BACA,aAAA,+BDEE,OCGF,WAAA,WAIA,YAAA,EACA,MAAA,KACA,UAAA,KACA,aAAA,8BACA,cAAA,8BACA,WAAA,mBA+CI,KACE,KAAA,EAAA,EAAA,GAGF,iBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,cACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,aAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,aA+BE,UAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,UAxDV,aAAA,YAwDU,UAxDV,aAAA,aAwDU,UAxDV,aAAA,IAwDU,UAxDV,aAAA,aAwDU,UAxDV,aAAA,aAwDU,UAxDV,aAAA,IAwDU,UAxDV,aAAA,aAwDU,UAxDV,aAAA,aAwDU,UAxDV,aAAA,IAwDU,WAxDV,aAAA,aAwDU,WAxDV,aAAA,aAmEM,KJ6GR,MI3GU,cAAA,EAGF,KJ6GR,MI3GU,cAAA,EAPF,KJuHR,MIrHU,cAAA,QAGF,KJuHR,MIrHU,cAAA,QAPF,KJiIR,MI/HU,cAAA,OAGF,KJiIR,MI/HU,cAAA,OAPF,KJ2IR,MIzIU,cAAA,KAGF,KJ2IR,MIzIU,cAAA,KAPF,KJqJR,MInJU,cAAA,OAGF,KJqJR,MInJU,cAAA,OAPF,KJ+JR,MI7JU,cAAA,KAGF,KJ+JR,MI7JU,cAAA,KF1DN,yBEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,aAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,aA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,aAAA,EAwDU,aAxDV,aAAA,YAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAmEM,QJiSN,SI/RQ,cAAA,EAGF,QJgSN,SI9RQ,cAAA,EAPF,QJySN,SIvSQ,cAAA,QAGF,QJwSN,SItSQ,cAAA,QAPF,QJiTN,SI/SQ,cAAA,OAGF,QJgTN,SI9SQ,cAAA,OAPF,QJyTN,SIvTQ,cAAA,KAGF,QJwTN,SItTQ,cAAA,KAPF,QJiUN,SI/TQ,cAAA,OAGF,QJgUN,SI9TQ,cAAA,OAPF,QJyUN,SIvUQ,cAAA,KAGF,QJwUN,SItUQ,cAAA,MF1DN,yBEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,aAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,aA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,aAAA,EAwDU,aAxDV,aAAA,YAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAmEM,QJ0cN,SIxcQ,cAAA,EAGF,QJycN,SIvcQ,cAAA,EAPF,QJkdN,SIhdQ,cAAA,QAGF,QJidN,SI/cQ,cAAA,QAPF,QJ0dN,SIxdQ,cAAA,OAGF,QJydN,SIvdQ,cAAA,OAPF,QJkeN,SIheQ,cAAA,KAGF,QJieN,SI/dQ,cAAA,KAPF,QJ0eN,SIxeQ,cAAA,OAGF,QJyeN,SIveQ,cAAA,OAPF,QJkfN,SIhfQ,cAAA,KAGF,QJifN,SI/eQ,cAAA,MF1DN,yBEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,aAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,aA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,aAAA,EAwDU,aAxDV,aAAA,YAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAmEM,QJmnBN,SIjnBQ,cAAA,EAGF,QJknBN,SIhnBQ,cAAA,EAPF,QJ2nBN,SIznBQ,cAAA,QAGF,QJ0nBN,SIxnBQ,cAAA,QAPF,QJmoBN,SIjoBQ,cAAA,OAGF,QJkoBN,SIhoBQ,cAAA,OAPF,QJ2oBN,SIzoBQ,cAAA,KAGF,QJ0oBN,SIxoBQ,cAAA,KAPF,QJmpBN,SIjpBQ,cAAA,OAGF,QJkpBN,SIhpBQ,cAAA,OAPF,QJ2pBN,SIzpBQ,cAAA,KAGF,QJ0pBN,SIxpBQ,cAAA,MF1DN,0BEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,aAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,aA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,aAAA,EAwDU,aAxDV,aAAA,YAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAmEM,QJ4xBN,SI1xBQ,cAAA,EAGF,QJ2xBN,SIzxBQ,cAAA,EAPF,QJoyBN,SIlyBQ,cAAA,QAGF,QJmyBN,SIjyBQ,cAAA,QAPF,QJ4yBN,SI1yBQ,cAAA,OAGF,QJ2yBN,SIzyBQ,cAAA,OAPF,QJozBN,SIlzBQ,cAAA,KAGF,QJmzBN,SIjzBQ,cAAA,KAPF,QJ4zBN,SI1zBQ,cAAA,OAGF,QJ2zBN,SIzzBQ,cAAA,OAPF,QJo0BN,SIl0BQ,cAAA,KAGF,QJm0BN,SIj0BQ,cAAA,MF1DN,0BEUE,SACE,KAAA,EAAA,EAAA,GAGF,qBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,aAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,aA+BE,cAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,cAxDV,aAAA,EAwDU,cAxDV,aAAA,YAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,IAwDU,eAxDV,aAAA,aAwDU,eAxDV,aAAA,aAmEM,SJq8BN,UIn8BQ,cAAA,EAGF,SJo8BN,UIl8BQ,cAAA,EAPF,SJ68BN,UI38BQ,cAAA,QAGF,SJ48BN,UI18BQ,cAAA,QAPF,SJq9BN,UIn9BQ,cAAA,OAGF,SJo9BN,UIl9BQ,cAAA,OAPF,SJ69BN,UI39BQ,cAAA,KAGF,SJ49BN,UI19BQ,cAAA,KAPF,SJq+BN,UIn+BQ,cAAA,OAGF,SJo+BN,UIl+BQ,cAAA,OAPF,SJ6+BN,UI3+BQ,cAAA,KAGF,SJ4+BN,UI1+BQ,cAAA,MCvDF,UAOI,QAAA,iBAPJ,gBAOI,QAAA,uBAPJ,SAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,eAOI,QAAA,sBAPJ,SAOI,QAAA,gBAPJ,aAOI,QAAA,oBAPJ,cAOI,QAAA,qBAPJ,QAOI,QAAA,eAPJ,eAOI,QAAA,sBAPJ,QAOI,QAAA,eAPJ,WAOI,KAAA,EAAA,EAAA,eAPJ,UAOI,eAAA,cAPJ,aAOI,eAAA,iBAPJ,kBAOI,eAAA,sBAPJ,qBAOI,eAAA,yBAPJ,aAOI,UAAA,YAPJ,aAOI,UAAA,YAPJ,eAOI,YAAA,YAPJ,eAOI,YAAA,YAPJ,WAOI,UAAA,eAPJ,aAOI,UAAA,iBAPJ,mBAOI,UAAA,uBAPJ,uBAOI,gBAAA,qBAPJ,qBAOI,gBAAA,mBAPJ,wBAOI,gBAAA,iBAPJ,yBAOI,gBAAA,wBAPJ,wBAOI,gBAAA,uBAPJ,wBAOI,gBAAA,uBAPJ,mBAOI,YAAA,qBAPJ,iBAOI,YAAA,mBAPJ,oBAOI,YAAA,iBAPJ,sBAOI,YAAA,mBAPJ,qBAOI,YAAA,kBAPJ,qBAOI,cAAA,qBAPJ,mBAOI,cAAA,mBAPJ,sBAOI,cAAA,iBAPJ,uBAOI,cAAA,wBAPJ,sBAOI,cAAA,uBAPJ,uBAOI,cAAA,kBAPJ,iBAOI,WAAA,eAPJ,kBAOI,WAAA,qBAPJ,gBAOI,WAAA,mBAPJ,mBAOI,WAAA,iBAPJ,qBAOI,WAAA,mBAPJ,oBAOI,WAAA,kBAPJ,aAOI,MAAA,aAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,KAOI,OAAA,YAPJ,KAOI,OAAA,iBAPJ,KAOI,OAAA,gBAPJ,KAOI,OAAA,eAPJ,KAOI,OAAA,iBAPJ,KAOI,OAAA,eAPJ,QAOI,OAAA,eAPJ,MAOI,YAAA,YAAA,aAAA,YAPJ,MAOI,YAAA,iBAAA,aAAA,iBAPJ,MAOI,YAAA,gBAAA,aAAA,gBAPJ,MAOI,YAAA,eAAA,aAAA,eAPJ,MAOI,YAAA,iBAAA,aAAA,iBAPJ,MAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,MAOI,WAAA,YAAA,cAAA,YAPJ,MAOI,WAAA,iBAAA,cAAA,iBAPJ,MAOI,WAAA,gBAAA,cAAA,gBAPJ,MAOI,WAAA,eAAA,cAAA,eAPJ,MAOI,WAAA,iBAAA,cAAA,iBAPJ,MAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,MAOI,WAAA,YAPJ,MAOI,WAAA,iBAPJ,MAOI,WAAA,gBAPJ,MAOI,WAAA,eAPJ,MAOI,WAAA,iBAPJ,MAOI,WAAA,eAPJ,SAOI,WAAA,eAPJ,MAOI,YAAA,YAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,gBAPJ,MAOI,YAAA,eAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,eAPJ,SAOI,YAAA,eAPJ,MAOI,cAAA,YAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,gBAPJ,MAOI,cAAA,eAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,eAPJ,SAOI,cAAA,eAPJ,MAOI,aAAA,YAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,gBAPJ,MAOI,aAAA,eAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,eAPJ,SAOI,aAAA,eAPJ,KAOI,QAAA,YAPJ,KAOI,QAAA,iBAPJ,KAOI,QAAA,gBAPJ,KAOI,QAAA,eAPJ,KAOI,QAAA,iBAPJ,KAOI,QAAA,eAPJ,MAOI,aAAA,YAAA,cAAA,YAPJ,MAOI,aAAA,iBAAA,cAAA,iBAPJ,MAOI,aAAA,gBAAA,cAAA,gBAPJ,MAOI,aAAA,eAAA,cAAA,eAPJ,MAOI,aAAA,iBAAA,cAAA,iBAPJ,MAOI,aAAA,eAAA,cAAA,eAPJ,MAOI,YAAA,YAAA,eAAA,YAPJ,MAOI,YAAA,iBAAA,eAAA,iBAPJ,MAOI,YAAA,gBAAA,eAAA,gBAPJ,MAOI,YAAA,eAAA,eAAA,eAPJ,MAOI,YAAA,iBAAA,eAAA,iBAPJ,MAOI,YAAA,eAAA,eAAA,eAPJ,MAOI,YAAA,YAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,gBAPJ,MAOI,YAAA,eAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,eAPJ,MAOI,aAAA,YAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,gBAPJ,MAOI,aAAA,eAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,eAPJ,MAOI,eAAA,YAPJ,MAOI,eAAA,iBAPJ,MAOI,eAAA,gBAPJ,MAOI,eAAA,eAPJ,MAOI,eAAA,iBAPJ,MAOI,eAAA,eAPJ,MAOI,cAAA,YAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,gBAPJ,MAOI,cAAA,eAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,eHVR,yBGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,YAAA,YAAA,aAAA,YAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,gBAAA,aAAA,gBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,YAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,aAAA,YAAA,cAAA,YAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,gBAAA,cAAA,gBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBHVR,yBGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,YAAA,YAAA,aAAA,YAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,gBAAA,aAAA,gBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,YAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,aAAA,YAAA,cAAA,YAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,gBAAA,cAAA,gBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBHVR,yBGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,YAAA,YAAA,aAAA,YAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,gBAAA,aAAA,gBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,YAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,aAAA,YAAA,cAAA,YAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,gBAAA,cAAA,gBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBHVR,0BGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,YAAA,YAAA,aAAA,YAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,gBAAA,aAAA,gBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,YAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,aAAA,YAAA,cAAA,YAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,gBAAA,cAAA,gBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBHVR,0BGGI,cAOI,QAAA,iBAPJ,oBAOI,QAAA,uBAPJ,aAOI,QAAA,gBAPJ,YAOI,QAAA,eAPJ,mBAOI,QAAA,sBAPJ,aAOI,QAAA,gBAPJ,iBAOI,QAAA,oBAPJ,kBAOI,QAAA,qBAPJ,YAOI,QAAA,eAPJ,mBAOI,QAAA,sBAPJ,YAOI,QAAA,eAPJ,eAOI,KAAA,EAAA,EAAA,eAPJ,cAOI,eAAA,cAPJ,iBAOI,eAAA,iBAPJ,sBAOI,eAAA,sBAPJ,yBAOI,eAAA,yBAPJ,iBAOI,UAAA,YAPJ,iBAOI,UAAA,YAPJ,mBAOI,YAAA,YAPJ,mBAOI,YAAA,YAPJ,eAOI,UAAA,eAPJ,iBAOI,UAAA,iBAPJ,uBAOI,UAAA,uBAPJ,2BAOI,gBAAA,qBAPJ,yBAOI,gBAAA,mBAPJ,4BAOI,gBAAA,iBAPJ,6BAOI,gBAAA,wBAPJ,4BAOI,gBAAA,uBAPJ,4BAOI,gBAAA,uBAPJ,uBAOI,YAAA,qBAPJ,qBAOI,YAAA,mBAPJ,wBAOI,YAAA,iBAPJ,0BAOI,YAAA,mBAPJ,yBAOI,YAAA,kBAPJ,yBAOI,cAAA,qBAPJ,uBAOI,cAAA,mBAPJ,0BAOI,cAAA,iBAPJ,2BAOI,cAAA,wBAPJ,0BAOI,cAAA,uBAPJ,2BAOI,cAAA,kBAPJ,qBAOI,WAAA,eAPJ,sBAOI,WAAA,qBAPJ,oBAOI,WAAA,mBAPJ,uBAOI,WAAA,iBAPJ,yBAOI,WAAA,mBAPJ,wBAOI,WAAA,kBAPJ,iBAOI,MAAA,aAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,gBAOI,MAAA,YAPJ,SAOI,OAAA,YAPJ,SAOI,OAAA,iBAPJ,SAOI,OAAA,gBAPJ,SAOI,OAAA,eAPJ,SAOI,OAAA,iBAPJ,SAOI,OAAA,eAPJ,YAOI,OAAA,eAPJ,UAOI,YAAA,YAAA,aAAA,YAPJ,UAOI,YAAA,iBAAA,aAAA,iBAPJ,UAOI,YAAA,gBAAA,aAAA,gBAPJ,UAOI,YAAA,eAAA,aAAA,eAPJ,UAOI,YAAA,iBAAA,aAAA,iBAPJ,UAOI,YAAA,eAAA,aAAA,eAPJ,aAOI,YAAA,eAAA,aAAA,eAPJ,UAOI,WAAA,YAAA,cAAA,YAPJ,UAOI,WAAA,iBAAA,cAAA,iBAPJ,UAOI,WAAA,gBAAA,cAAA,gBAPJ,UAOI,WAAA,eAAA,cAAA,eAPJ,UAOI,WAAA,iBAAA,cAAA,iBAPJ,UAOI,WAAA,eAAA,cAAA,eAPJ,aAOI,WAAA,eAAA,cAAA,eAPJ,UAOI,WAAA,YAPJ,UAOI,WAAA,iBAPJ,UAOI,WAAA,gBAPJ,UAOI,WAAA,eAPJ,UAOI,WAAA,iBAPJ,UAOI,WAAA,eAPJ,aAOI,WAAA,eAPJ,UAOI,YAAA,YAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,gBAPJ,UAOI,YAAA,eAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,eAPJ,aAOI,YAAA,eAPJ,UAOI,cAAA,YAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBAPJ,UAOI,cAAA,eAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,eAPJ,aAOI,cAAA,eAPJ,UAOI,aAAA,YAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,gBAPJ,UAOI,aAAA,eAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,eAPJ,aAOI,aAAA,eAPJ,SAOI,QAAA,YAPJ,SAOI,QAAA,iBAPJ,SAOI,QAAA,gBAPJ,SAOI,QAAA,eAPJ,SAOI,QAAA,iBAPJ,SAOI,QAAA,eAPJ,UAOI,aAAA,YAAA,cAAA,YAPJ,UAOI,aAAA,iBAAA,cAAA,iBAPJ,UAOI,aAAA,gBAAA,cAAA,gBAPJ,UAOI,aAAA,eAAA,cAAA,eAPJ,UAOI,aAAA,iBAAA,cAAA,iBAPJ,UAOI,aAAA,eAAA,cAAA,eAPJ,UAOI,YAAA,YAAA,eAAA,YAPJ,UAOI,YAAA,iBAAA,eAAA,iBAPJ,UAOI,YAAA,gBAAA,eAAA,gBAPJ,UAOI,YAAA,eAAA,eAAA,eAPJ,UAOI,YAAA,iBAAA,eAAA,iBAPJ,UAOI,YAAA,eAAA,eAAA,eAPJ,UAOI,YAAA,YAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,gBAPJ,UAOI,YAAA,eAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,eAPJ,UAOI,aAAA,YAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,gBAPJ,UAOI,aAAA,eAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,eAPJ,UAOI,eAAA,YAPJ,UAOI,eAAA,iBAPJ,UAOI,eAAA,gBAPJ,UAOI,eAAA,eAPJ,UAOI,eAAA,iBAPJ,UAOI,eAAA,eAPJ,UAOI,cAAA,YAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBAPJ,UAOI,cAAA,eAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBCnCZ,aD4BQ,gBAOI,QAAA,iBAPJ,sBAOI,QAAA,uBAPJ,eAOI,QAAA,gBAPJ,cAOI,QAAA,eAPJ,qBAOI,QAAA,sBAPJ,eAOI,QAAA,gBAPJ,mBAOI,QAAA,oBAPJ,oBAOI,QAAA,qBAPJ,cAOI,QAAA,eAPJ,qBAOI,QAAA,sBAPJ,cAOI,QAAA","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","/*!\n * Bootstrap Grid v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n margin-left: auto;\n margin-right: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-right: 8.33333333%;\n}\n\n.offset-2 {\n margin-right: 16.66666667%;\n}\n\n.offset-3 {\n margin-right: 25%;\n}\n\n.offset-4 {\n margin-right: 33.33333333%;\n}\n\n.offset-5 {\n margin-right: 41.66666667%;\n}\n\n.offset-6 {\n margin-right: 50%;\n}\n\n.offset-7 {\n margin-right: 58.33333333%;\n}\n\n.offset-8 {\n margin-right: 66.66666667%;\n}\n\n.offset-9 {\n margin-right: 75%;\n}\n\n.offset-10 {\n margin-right: 83.33333333%;\n}\n\n.offset-11 {\n margin-right: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-right: 0;\n }\n .offset-sm-1 {\n margin-right: 8.33333333%;\n }\n .offset-sm-2 {\n margin-right: 16.66666667%;\n }\n .offset-sm-3 {\n margin-right: 25%;\n }\n .offset-sm-4 {\n margin-right: 33.33333333%;\n }\n .offset-sm-5 {\n margin-right: 41.66666667%;\n }\n .offset-sm-6 {\n margin-right: 50%;\n }\n .offset-sm-7 {\n margin-right: 58.33333333%;\n }\n .offset-sm-8 {\n margin-right: 66.66666667%;\n }\n .offset-sm-9 {\n margin-right: 75%;\n }\n .offset-sm-10 {\n margin-right: 83.33333333%;\n }\n .offset-sm-11 {\n margin-right: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-right: 0;\n }\n .offset-md-1 {\n margin-right: 8.33333333%;\n }\n .offset-md-2 {\n margin-right: 16.66666667%;\n }\n .offset-md-3 {\n margin-right: 25%;\n }\n .offset-md-4 {\n margin-right: 33.33333333%;\n }\n .offset-md-5 {\n margin-right: 41.66666667%;\n }\n .offset-md-6 {\n margin-right: 50%;\n }\n .offset-md-7 {\n margin-right: 58.33333333%;\n }\n .offset-md-8 {\n margin-right: 66.66666667%;\n }\n .offset-md-9 {\n margin-right: 75%;\n }\n .offset-md-10 {\n margin-right: 83.33333333%;\n }\n .offset-md-11 {\n margin-right: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-right: 0;\n }\n .offset-lg-1 {\n margin-right: 8.33333333%;\n }\n .offset-lg-2 {\n margin-right: 16.66666667%;\n }\n .offset-lg-3 {\n margin-right: 25%;\n }\n .offset-lg-4 {\n margin-right: 33.33333333%;\n }\n .offset-lg-5 {\n margin-right: 41.66666667%;\n }\n .offset-lg-6 {\n margin-right: 50%;\n }\n .offset-lg-7 {\n margin-right: 58.33333333%;\n }\n .offset-lg-8 {\n margin-right: 66.66666667%;\n }\n .offset-lg-9 {\n margin-right: 75%;\n }\n .offset-lg-10 {\n margin-right: 83.33333333%;\n }\n .offset-lg-11 {\n margin-right: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-right: 0;\n }\n .offset-xl-1 {\n margin-right: 8.33333333%;\n }\n .offset-xl-2 {\n margin-right: 16.66666667%;\n }\n .offset-xl-3 {\n margin-right: 25%;\n }\n .offset-xl-4 {\n margin-right: 33.33333333%;\n }\n .offset-xl-5 {\n margin-right: 41.66666667%;\n }\n .offset-xl-6 {\n margin-right: 50%;\n }\n .offset-xl-7 {\n margin-right: 58.33333333%;\n }\n .offset-xl-8 {\n margin-right: 66.66666667%;\n }\n .offset-xl-9 {\n margin-right: 75%;\n }\n .offset-xl-10 {\n margin-right: 83.33333333%;\n }\n .offset-xl-11 {\n margin-right: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-right: 0;\n }\n .offset-xxl-1 {\n margin-right: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-right: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-right: 25%;\n }\n .offset-xxl-4 {\n margin-right: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-right: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-right: 50%;\n }\n .offset-xxl-7 {\n margin-right: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-right: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-right: 75%;\n }\n .offset-xxl-10 {\n margin-right: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-right: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.mx-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n}\n\n.mx-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n}\n\n.mx-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n}\n\n.mx-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n}\n\n.mx-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n}\n\n.mx-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-left: 0 !important;\n}\n\n.me-1 {\n margin-left: 0.25rem !important;\n}\n\n.me-2 {\n margin-left: 0.5rem !important;\n}\n\n.me-3 {\n margin-left: 1rem !important;\n}\n\n.me-4 {\n margin-left: 1.5rem !important;\n}\n\n.me-5 {\n margin-left: 3rem !important;\n}\n\n.me-auto {\n margin-left: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-right: 0 !important;\n}\n\n.ms-1 {\n margin-right: 0.25rem !important;\n}\n\n.ms-2 {\n margin-right: 0.5rem !important;\n}\n\n.ms-3 {\n margin-right: 1rem !important;\n}\n\n.ms-4 {\n margin-right: 1.5rem !important;\n}\n\n.ms-5 {\n margin-right: 3rem !important;\n}\n\n.ms-auto {\n margin-right: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n\n.px-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n}\n\n.px-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n}\n\n.px-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n}\n\n.px-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n}\n\n.px-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-left: 0 !important;\n}\n\n.pe-1 {\n padding-left: 0.25rem !important;\n}\n\n.pe-2 {\n padding-left: 0.5rem !important;\n}\n\n.pe-3 {\n padding-left: 1rem !important;\n}\n\n.pe-4 {\n padding-left: 1.5rem !important;\n}\n\n.pe-5 {\n padding-left: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-right: 0 !important;\n}\n\n.ps-1 {\n padding-right: 0.25rem !important;\n}\n\n.ps-2 {\n padding-right: 0.5rem !important;\n}\n\n.ps-3 {\n padding-right: 1rem !important;\n}\n\n.ps-4 {\n padding-right: 1.5rem !important;\n}\n\n.ps-5 {\n padding-right: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-sm-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-sm-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-left: 0 !important;\n }\n .me-sm-1 {\n margin-left: 0.25rem !important;\n }\n .me-sm-2 {\n margin-left: 0.5rem !important;\n }\n .me-sm-3 {\n margin-left: 1rem !important;\n }\n .me-sm-4 {\n margin-left: 1.5rem !important;\n }\n .me-sm-5 {\n margin-left: 3rem !important;\n }\n .me-sm-auto {\n margin-left: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-right: 0 !important;\n }\n .ms-sm-1 {\n margin-right: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-right: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-right: 1rem !important;\n }\n .ms-sm-4 {\n margin-right: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-right: 3rem !important;\n }\n .ms-sm-auto {\n margin-right: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-sm-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-sm-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-sm-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-sm-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-sm-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-left: 0 !important;\n }\n .pe-sm-1 {\n padding-left: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-left: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-left: 1rem !important;\n }\n .pe-sm-4 {\n padding-left: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-left: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-right: 0 !important;\n }\n .ps-sm-1 {\n padding-right: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-right: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-right: 1rem !important;\n }\n .ps-sm-4 {\n padding-right: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-md-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-md-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-md-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-md-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-md-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-md-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-left: 0 !important;\n }\n .me-md-1 {\n margin-left: 0.25rem !important;\n }\n .me-md-2 {\n margin-left: 0.5rem !important;\n }\n .me-md-3 {\n margin-left: 1rem !important;\n }\n .me-md-4 {\n margin-left: 1.5rem !important;\n }\n .me-md-5 {\n margin-left: 3rem !important;\n }\n .me-md-auto {\n margin-left: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-right: 0 !important;\n }\n .ms-md-1 {\n margin-right: 0.25rem !important;\n }\n .ms-md-2 {\n margin-right: 0.5rem !important;\n }\n .ms-md-3 {\n margin-right: 1rem !important;\n }\n .ms-md-4 {\n margin-right: 1.5rem !important;\n }\n .ms-md-5 {\n margin-right: 3rem !important;\n }\n .ms-md-auto {\n margin-right: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-md-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-md-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-md-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-md-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-md-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-left: 0 !important;\n }\n .pe-md-1 {\n padding-left: 0.25rem !important;\n }\n .pe-md-2 {\n padding-left: 0.5rem !important;\n }\n .pe-md-3 {\n padding-left: 1rem !important;\n }\n .pe-md-4 {\n padding-left: 1.5rem !important;\n }\n .pe-md-5 {\n padding-left: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-right: 0 !important;\n }\n .ps-md-1 {\n padding-right: 0.25rem !important;\n }\n .ps-md-2 {\n padding-right: 0.5rem !important;\n }\n .ps-md-3 {\n padding-right: 1rem !important;\n }\n .ps-md-4 {\n padding-right: 1.5rem !important;\n }\n .ps-md-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-lg-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-lg-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-left: 0 !important;\n }\n .me-lg-1 {\n margin-left: 0.25rem !important;\n }\n .me-lg-2 {\n margin-left: 0.5rem !important;\n }\n .me-lg-3 {\n margin-left: 1rem !important;\n }\n .me-lg-4 {\n margin-left: 1.5rem !important;\n }\n .me-lg-5 {\n margin-left: 3rem !important;\n }\n .me-lg-auto {\n margin-left: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-right: 0 !important;\n }\n .ms-lg-1 {\n margin-right: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-right: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-right: 1rem !important;\n }\n .ms-lg-4 {\n margin-right: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-right: 3rem !important;\n }\n .ms-lg-auto {\n margin-right: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-lg-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-lg-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-lg-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-lg-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-lg-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-left: 0 !important;\n }\n .pe-lg-1 {\n padding-left: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-left: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-left: 1rem !important;\n }\n .pe-lg-4 {\n padding-left: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-left: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-right: 0 !important;\n }\n .ps-lg-1 {\n padding-right: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-right: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-right: 1rem !important;\n }\n .ps-lg-4 {\n padding-right: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-xl-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-xl-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-left: 0 !important;\n }\n .me-xl-1 {\n margin-left: 0.25rem !important;\n }\n .me-xl-2 {\n margin-left: 0.5rem !important;\n }\n .me-xl-3 {\n margin-left: 1rem !important;\n }\n .me-xl-4 {\n margin-left: 1.5rem !important;\n }\n .me-xl-5 {\n margin-left: 3rem !important;\n }\n .me-xl-auto {\n margin-left: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-right: 0 !important;\n }\n .ms-xl-1 {\n margin-right: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-right: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-right: 1rem !important;\n }\n .ms-xl-4 {\n margin-right: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-right: 3rem !important;\n }\n .ms-xl-auto {\n margin-right: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-xl-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-xl-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-xl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-xl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-xl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-left: 0 !important;\n }\n .pe-xl-1 {\n padding-left: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-left: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-left: 1rem !important;\n }\n .pe-xl-4 {\n padding-left: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-left: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-right: 0 !important;\n }\n .ps-xl-1 {\n padding-right: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-right: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-right: 1rem !important;\n }\n .ps-xl-4 {\n padding-right: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-xxl-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-xxl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-xxl-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-left: 0 !important;\n }\n .me-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-left: 1rem !important;\n }\n .me-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-left: 3rem !important;\n }\n .me-xxl-auto {\n margin-left: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-right: 0 !important;\n }\n .ms-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-right: 1rem !important;\n }\n .ms-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-right: 3rem !important;\n }\n .ms-xxl-auto {\n margin-right: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-xxl-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-xxl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-left: 0 !important;\n }\n .pe-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-left: 1rem !important;\n }\n .pe-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-left: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-right: 0 !important;\n }\n .ps-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-right: 1rem !important;\n }\n .ps-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-right: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap-grid.rtl.css.map */","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Row\n//\n// Rows contain your columns.\n\n:root {\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: percentage(divide(1, $count));\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is an invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix: \"\", $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-reboot.css b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-reboot.css index f3f1d0516..630541092 100644 --- a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-reboot.css +++ b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-reboot.css @@ -1,6 +1,6 @@ /*! - * Bootstrap Reboot v5.3.0 (https://getbootstrap.com/) - * Copyright 2011-2023 The Bootstrap Authors + * Bootstrap Reboot v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ :root, @@ -98,6 +98,7 @@ --bs-link-hover-color: #0a58ca; --bs-link-hover-color-rgb: 10, 88, 202; --bs-code-color: #d63384; + --bs-highlight-color: #212529; --bs-highlight-bg: #fff3cd; --bs-border-width: 1px; --bs-border-style: solid; @@ -125,18 +126,18 @@ [data-bs-theme=dark] { color-scheme: dark; - --bs-body-color: #adb5bd; - --bs-body-color-rgb: 173, 181, 189; + --bs-body-color: #dee2e6; + --bs-body-color-rgb: 222, 226, 230; --bs-body-bg: #212529; --bs-body-bg-rgb: 33, 37, 41; --bs-emphasis-color: #fff; --bs-emphasis-color-rgb: 255, 255, 255; - --bs-secondary-color: rgba(173, 181, 189, 0.75); - --bs-secondary-color-rgb: 173, 181, 189; + --bs-secondary-color: rgba(222, 226, 230, 0.75); + --bs-secondary-color-rgb: 222, 226, 230; --bs-secondary-bg: #343a40; --bs-secondary-bg-rgb: 52, 58, 64; - --bs-tertiary-color: rgba(173, 181, 189, 0.5); - --bs-tertiary-color-rgb: 173, 181, 189; + --bs-tertiary-color: rgba(222, 226, 230, 0.5); + --bs-tertiary-color-rgb: 222, 226, 230; --bs-tertiary-bg: #2b3035; --bs-tertiary-bg-rgb: 43, 48, 53; --bs-primary-text-emphasis: #6ea8fe; @@ -169,6 +170,8 @@ --bs-link-color-rgb: 110, 168, 254; --bs-link-hover-color-rgb: 139, 185, 254; --bs-code-color: #e685b5; + --bs-highlight-color: #dee2e6; + --bs-highlight-bg: #664d03; --bs-border-color: #495057; --bs-border-color-translucent: rgba(255, 255, 255, 0.15); --bs-form-valid-color: #75b798; @@ -324,6 +327,7 @@ small { mark { padding: 0.1875em; + color: var(--bs-highlight-color); background-color: var(--bs-highlight-bg); } @@ -539,8 +543,8 @@ legend + * { } [type=search] { - outline-offset: -2px; -webkit-appearance: textfield; + outline-offset: -2px; } /* rtl:raw: diff --git a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-reboot.css.map b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-reboot.css.map index cce4e6ce5..5fe522b6d 100644 --- a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-reboot.css.map +++ b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-reboot.css.map @@ -1 +1 @@ -{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","bootstrap-reboot.css","../../scss/mixins/_color-mode.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_border-radius.scss"],"names":[],"mappings":"AACE;;;;EAAA;ACDF;;EASI,kBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,kBAAA;EAAA,iBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,mBAAA;EAAA,kBAAA;EAAA,kBAAA;EAAA,gBAAA;EAAA,gBAAA;EAAA,kBAAA;EAAA,uBAAA;EAIA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAIA,qBAAA;EAAA,uBAAA;EAAA,qBAAA;EAAA,kBAAA;EAAA,qBAAA;EAAA,oBAAA;EAAA,mBAAA;EAAA,kBAAA;EAIA,8BAAA;EAAA,iCAAA;EAAA,6BAAA;EAAA,2BAAA;EAAA,6BAAA;EAAA,4BAAA;EAAA,6BAAA;EAAA,yBAAA;EAIA,mCAAA;EAAA,qCAAA;EAAA,mCAAA;EAAA,gCAAA;EAAA,mCAAA;EAAA,kCAAA;EAAA,iCAAA;EAAA,gCAAA;EAIA,+BAAA;EAAA,iCAAA;EAAA,+BAAA;EAAA,4BAAA;EAAA,+BAAA;EAAA,8BAAA;EAAA,6BAAA;EAAA,4BAAA;EAIA,mCAAA;EAAA,qCAAA;EAAA,mCAAA;EAAA,gCAAA;EAAA,mCAAA;EAAA,kCAAA;EAAA,iCAAA;EAAA,gCAAA;EAGF,6BAAA;EACA,uBAAA;EAMA,qNAAA;EACA,yGAAA;EACA,yFAAA;EAOA,gDAAA;EC2OI,yBALI;EDpOR,0BAAA;EACA,0BAAA;EAKA,wBAAA;EACA,+BAAA;EACA,kBAAA;EACA,+BAAA;EAEA,yBAAA;EACA,gCAAA;EAEA,4CAAA;EACA,oCAAA;EACA,0BAAA;EACA,oCAAA;EAEA,0CAAA;EACA,mCAAA;EACA,yBAAA;EACA,mCAAA;EAGA,2BAAA;EAEA,wBAAA;EACA,iCAAA;EACA,+BAAA;EAEA,8BAAA;EACA,sCAAA;EAMA,wBAAA;EACA,0BAAA;EAGA,sBAAA;EACA,wBAAA;EACA,0BAAA;EACA,mDAAA;EAEA,4BAAA;EACA,8BAAA;EACA,6BAAA;EACA,2BAAA;EACA,4BAAA;EACA,mDAAA;EACA,8BAAA;EAGA,kDAAA;EACA,2DAAA;EACA,oDAAA;EACA,2DAAA;EAIA,8BAAA;EACA,6BAAA;EACA,+CAAA;EAIA,8BAAA;EACA,qCAAA;EACA,gCAAA;EACA,uCAAA;AEHF;;AC5GI;EHqHA,kBAAA;EAGA,wBAAA;EACA,kCAAA;EACA,qBAAA;EACA,4BAAA;EAEA,yBAAA;EACA,sCAAA;EAEA,+CAAA;EACA,uCAAA;EACA,0BAAA;EACA,iCAAA;EAEA,6CAAA;EACA,sCAAA;EACA,yBAAA;EACA,gCAAA;EAGE,mCAAA;EAAA,qCAAA;EAAA,mCAAA;EAAA,gCAAA;EAAA,mCAAA;EAAA,kCAAA;EAAA,iCAAA;EAAA,gCAAA;EAIA,+BAAA;EAAA,iCAAA;EAAA,+BAAA;EAAA,4BAAA;EAAA,+BAAA;EAAA,8BAAA;EAAA,6BAAA;EAAA,4BAAA;EAIA,mCAAA;EAAA,qCAAA;EAAA,mCAAA;EAAA,gCAAA;EAAA,mCAAA;EAAA,kCAAA;EAAA,iCAAA;EAAA,gCAAA;EAGF,2BAAA;EAEA,wBAAA;EACA,8BAAA;EACA,kCAAA;EACA,wCAAA;EAEA,wBAAA;EAEA,0BAAA;EACA,wDAAA;EAEA,8BAAA;EACA,qCAAA;EACA,gCAAA;EACA,uCAAA;AEHJ;;AElKA;;;EAGE,sBAAA;AFqKF;;AEtJI;EANJ;IAOM,uBAAA;EF0JJ;AACF;;AE7IA;EACE,SAAA;EACA,uCAAA;EH6OI,mCALI;EGtOR,uCAAA;EACA,uCAAA;EACA,2BAAA;EACA,qCAAA;EACA,mCAAA;EACA,8BAAA;EACA,6CAAA;AFgJF;;AEvIA;EACE,cAAA;EACA,cCmnB4B;EDlnB5B,SAAA;EACA,wCAAA;EACA,aCynB4B;AH/e9B;;AEhIA;EACE,aAAA;EACA,qBCwjB4B;EDrjB5B,gBCwjB4B;EDvjB5B,gBCwjB4B;EDvjB5B,8BAAA;AFiIF;;AE9HA;EHuMQ,iCAAA;ACrER;ADvFI;EG3CJ;IH8MQ,iBAAA;ECxEN;AACF;;AElIA;EHkMQ,iCAAA;AC5DR;ADhGI;EGtCJ;IHyMQ,eAAA;EC/DN;AACF;;AEtIA;EH6LQ,+BAAA;ACnDR;ADzGI;EGjCJ;IHoMQ,kBAAA;ECtDN;AACF;;AE1IA;EHwLQ,iCAAA;AC1CR;ADlHI;EG5BJ;IH+LQ,iBAAA;EC7CN;AACF;;AE9IA;EH+KM,kBALI;ACxBV;;AE7IA;EH0KM,eALI;ACpBV;;AEtIA;EACE,aAAA;EACA,mBCwV0B;AH/M5B;;AE/HA;EACE,yCAAA;EAAA,iCAAA;EACA,YAAA;EACA,sCAAA;EAAA,8BAAA;AFkIF;;AE5HA;EACE,mBAAA;EACA,kBAAA;EACA,oBAAA;AF+HF;;AEzHA;;EAEE,kBAAA;AF4HF;;AEzHA;;;EAGE,aAAA;EACA,mBAAA;AF4HF;;AEzHA;;;;EAIE,gBAAA;AF4HF;;AEzHA;EACE,gBC6b4B;AHjU9B;;AEvHA;EACE,qBAAA;EACA,cAAA;AF0HF;;AEpHA;EACE,gBAAA;AFuHF;;AE/GA;;EAEE,mBCsa4B;AHpT9B;;AE1GA;EH6EM,kBALI;ACsCV;;AEvGA;EACE,iBCif4B;EDhf5B,wCAAA;AF0GF;;AEjGA;;EAEE,kBAAA;EHyDI,iBALI;EGlDR,cAAA;EACA,wBAAA;AFoGF;;AEjGA;EAAM,eAAA;AFqGN;;AEpGA;EAAM,WAAA;AFwGN;;AEnGA;EACE,gEAAA;EACA,0BCiNwC;AH3G1C;AEpGE;EACE,mDAAA;AFsGJ;;AE3FE;EAEE,cAAA;EACA,qBAAA;AF6FJ;;AEtFA;;;;EAIE,qCCiV4B;EJlUxB,cALI;ACgFV;;AElFA;EACE,cAAA;EACA,aAAA;EACA,mBAAA;EACA,cAAA;EHGI,kBALI;ACwFV;AEjFE;EHFI,kBALI;EGSN,cAAA;EACA,kBAAA;AFmFJ;;AE/EA;EHTM,kBALI;EGgBR,2BAAA;EACA,qBAAA;AFkFF;AE/EE;EACE,cAAA;AFiFJ;;AE7EA;EACE,2BAAA;EHrBI,kBALI;EG4BR,wBCo5CkC;EDn5ClC,sCCo5CkC;ECxrDhC,sBAAA;AJqXJ;AE9EE;EACE,UAAA;EH5BE,cALI;ACkHV;;AEtEA;EACE,gBAAA;AFyEF;;AEnEA;;EAEE,sBAAA;AFsEF;;AE9DA;EACE,oBAAA;EACA,yBAAA;AFiEF;;AE9DA;EACE,mBCwX4B;EDvX5B,sBCuX4B;EDtX5B,gCCwZ4B;EDvZ5B,gBAAA;AFiEF;;AE1DA;EAEE,mBAAA;EACA,gCAAA;AF4DF;;AEzDA;;;;;;EAME,qBAAA;EACA,mBAAA;EACA,eAAA;AF4DF;;AEpDA;EACE,qBAAA;AFuDF;;AEjDA;EAEE,gBAAA;AFmDF;;AE3CA;EACE,UAAA;AF8CF;;AEzCA;;;;;EAKE,SAAA;EACA,oBAAA;EH3HI,kBALI;EGkIR,oBAAA;AF4CF;;AExCA;;EAEE,oBAAA;AF2CF;;AEtCA;EACE,eAAA;AFyCF;;AEtCA;EAGE,iBAAA;AFuCF;AEpCE;EACE,UAAA;AFsCJ;;AE/BA;EACE,wBAAA;AFkCF;;AE1BA;;;;EAIE,0BAAA;AF6BF;AE1BI;;;;EACE,eAAA;AF+BN;;AExBA;EACE,UAAA;EACA,kBAAA;AF2BF;;AEtBA;EACE,gBAAA;AFyBF;;AEfA;EACE,YAAA;EACA,UAAA;EACA,SAAA;EACA,SAAA;AFkBF;;AEVA;EACE,WAAA;EACA,WAAA;EACA,UAAA;EACA,qBCgN4B;EJhatB,iCAAA;EGmNN,oBAAA;AFYF;AD3XI;EGwWJ;IHrMQ,iBAAA;EC4NN;AACF;AEfE;EACE,WAAA;AFiBJ;;AEVA;;;;;;;EAOE,UAAA;AFaF;;AEVA;EACE,YAAA;AFaF;;AEJA;EACE,oBAAA;EACA,6BAAA;AFOF;;AECA;;;;;;;CAAA;AAWA;EACE,wBAAA;AFDF;;AEMA;EACE,UAAA;AFHF;;AEUA;EACE,aAAA;EACA,0BAAA;AFPF;;AEKA;EACE,aAAA;EACA,0BAAA;AFPF;;AEYA;EACE,qBAAA;AFTF;;AEcA;EACE,SAAA;AFXF;;AEkBA;EACE,kBAAA;EACA,eAAA;AFfF;;AEuBA;EACE,wBAAA;AFpBF;;AE4BA;EACE,wBAAA;AFzBF","file":"bootstrap-reboot.css","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.0 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n",":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n\n --#{$prefix}body-color: #{$body-color};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n // scss-docs-end root-body-variables\n\n --#{$prefix}heading-color: #{$headings-color};\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-xxl: #{$border-radius-xxl};\n --#{$prefix}border-radius-2xl: var(--#{$prefix}border-radius-xxl); // Deprecated in v5.3.0 for consistency\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n // Focus styles\n // scss-docs-start root-focus-variables\n --#{$prefix}focus-ring-width: #{$focus-ring-width};\n --#{$prefix}focus-ring-opacity: #{$focus-ring-opacity};\n --#{$prefix}focus-ring-color: #{$focus-ring-color};\n // scss-docs-end root-focus-variables\n\n // scss-docs-start root-form-validation-variables\n --#{$prefix}form-valid-color: #{$form-valid-color};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color};\n --#{$prefix}form-invalid-color: #{$form-invalid-color};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color};\n // scss-docs-end root-form-validation-variables\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n color-scheme: dark;\n\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n @each $color, $value in $theme-colors-text-dark {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle-dark {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle-dark {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}heading-color: #{$headings-color-dark};\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n\n --#{$prefix}form-valid-color: #{$form-valid-color-dark};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color-dark};\n --#{$prefix}form-invalid-color: #{$form-invalid-color-dark};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n","// stylelint-disable scss/dimension-no-non-numeric-values\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query () {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query () {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + \" \" + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n } @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + \" \" + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n } @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + \" \" + $value;\n } @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + \" calc(\" + $min-width + if($value < 0, \" - \", \" + \") + $variable-width + \")\";\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluid-val: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluid-val {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule () {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluid-val);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule () {\n #{$property}: if($rfs-mode == max-media-query, $fluid-val, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n","/*!\n * Bootstrap Reboot v5.3.0 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root,\n[data-bs-theme=light] {\n --bs-blue: #0d6efd;\n --bs-indigo: #6610f2;\n --bs-purple: #6f42c1;\n --bs-pink: #d63384;\n --bs-red: #dc3545;\n --bs-orange: #fd7e14;\n --bs-yellow: #ffc107;\n --bs-green: #198754;\n --bs-teal: #20c997;\n --bs-cyan: #0dcaf0;\n --bs-black: #000;\n --bs-white: #fff;\n --bs-gray: #6c757d;\n --bs-gray-dark: #343a40;\n --bs-gray-100: #f8f9fa;\n --bs-gray-200: #e9ecef;\n --bs-gray-300: #dee2e6;\n --bs-gray-400: #ced4da;\n --bs-gray-500: #adb5bd;\n --bs-gray-600: #6c757d;\n --bs-gray-700: #495057;\n --bs-gray-800: #343a40;\n --bs-gray-900: #212529;\n --bs-primary: #0d6efd;\n --bs-secondary: #6c757d;\n --bs-success: #198754;\n --bs-info: #0dcaf0;\n --bs-warning: #ffc107;\n --bs-danger: #dc3545;\n --bs-light: #f8f9fa;\n --bs-dark: #212529;\n --bs-primary-rgb: 13, 110, 253;\n --bs-secondary-rgb: 108, 117, 125;\n --bs-success-rgb: 25, 135, 84;\n --bs-info-rgb: 13, 202, 240;\n --bs-warning-rgb: 255, 193, 7;\n --bs-danger-rgb: 220, 53, 69;\n --bs-light-rgb: 248, 249, 250;\n --bs-dark-rgb: 33, 37, 41;\n --bs-primary-text-emphasis: #052c65;\n --bs-secondary-text-emphasis: #2b2f32;\n --bs-success-text-emphasis: #0a3622;\n --bs-info-text-emphasis: #055160;\n --bs-warning-text-emphasis: #664d03;\n --bs-danger-text-emphasis: #58151c;\n --bs-light-text-emphasis: #495057;\n --bs-dark-text-emphasis: #495057;\n --bs-primary-bg-subtle: #cfe2ff;\n --bs-secondary-bg-subtle: #e2e3e5;\n --bs-success-bg-subtle: #d1e7dd;\n --bs-info-bg-subtle: #cff4fc;\n --bs-warning-bg-subtle: #fff3cd;\n --bs-danger-bg-subtle: #f8d7da;\n --bs-light-bg-subtle: #fcfcfd;\n --bs-dark-bg-subtle: #ced4da;\n --bs-primary-border-subtle: #9ec5fe;\n --bs-secondary-border-subtle: #c4c8cb;\n --bs-success-border-subtle: #a3cfbb;\n --bs-info-border-subtle: #9eeaf9;\n --bs-warning-border-subtle: #ffe69c;\n --bs-danger-border-subtle: #f1aeb5;\n --bs-light-border-subtle: #e9ecef;\n --bs-dark-border-subtle: #adb5bd;\n --bs-white-rgb: 255, 255, 255;\n --bs-black-rgb: 0, 0, 0;\n --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n --bs-body-font-family: var(--bs-font-sans-serif);\n --bs-body-font-size: 1rem;\n --bs-body-font-weight: 400;\n --bs-body-line-height: 1.5;\n --bs-body-color: #212529;\n --bs-body-color-rgb: 33, 37, 41;\n --bs-body-bg: #fff;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-emphasis-color: #000;\n --bs-emphasis-color-rgb: 0, 0, 0;\n --bs-secondary-color: rgba(33, 37, 41, 0.75);\n --bs-secondary-color-rgb: 33, 37, 41;\n --bs-secondary-bg: #e9ecef;\n --bs-secondary-bg-rgb: 233, 236, 239;\n --bs-tertiary-color: rgba(33, 37, 41, 0.5);\n --bs-tertiary-color-rgb: 33, 37, 41;\n --bs-tertiary-bg: #f8f9fa;\n --bs-tertiary-bg-rgb: 248, 249, 250;\n --bs-heading-color: inherit;\n --bs-link-color: #0d6efd;\n --bs-link-color-rgb: 13, 110, 253;\n --bs-link-decoration: underline;\n --bs-link-hover-color: #0a58ca;\n --bs-link-hover-color-rgb: 10, 88, 202;\n --bs-code-color: #d63384;\n --bs-highlight-bg: #fff3cd;\n --bs-border-width: 1px;\n --bs-border-style: solid;\n --bs-border-color: #dee2e6;\n --bs-border-color-translucent: rgba(0, 0, 0, 0.175);\n --bs-border-radius: 0.375rem;\n --bs-border-radius-sm: 0.25rem;\n --bs-border-radius-lg: 0.5rem;\n --bs-border-radius-xl: 1rem;\n --bs-border-radius-xxl: 2rem;\n --bs-border-radius-2xl: var(--bs-border-radius-xxl);\n --bs-border-radius-pill: 50rem;\n --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n --bs-focus-ring-width: 0.25rem;\n --bs-focus-ring-opacity: 0.25;\n --bs-focus-ring-color: rgba(13, 110, 253, 0.25);\n --bs-form-valid-color: #198754;\n --bs-form-valid-border-color: #198754;\n --bs-form-invalid-color: #dc3545;\n --bs-form-invalid-border-color: #dc3545;\n}\n\n[data-bs-theme=dark] {\n color-scheme: dark;\n --bs-body-color: #adb5bd;\n --bs-body-color-rgb: 173, 181, 189;\n --bs-body-bg: #212529;\n --bs-body-bg-rgb: 33, 37, 41;\n --bs-emphasis-color: #fff;\n --bs-emphasis-color-rgb: 255, 255, 255;\n --bs-secondary-color: rgba(173, 181, 189, 0.75);\n --bs-secondary-color-rgb: 173, 181, 189;\n --bs-secondary-bg: #343a40;\n --bs-secondary-bg-rgb: 52, 58, 64;\n --bs-tertiary-color: rgba(173, 181, 189, 0.5);\n --bs-tertiary-color-rgb: 173, 181, 189;\n --bs-tertiary-bg: #2b3035;\n --bs-tertiary-bg-rgb: 43, 48, 53;\n --bs-primary-text-emphasis: #6ea8fe;\n --bs-secondary-text-emphasis: #a7acb1;\n --bs-success-text-emphasis: #75b798;\n --bs-info-text-emphasis: #6edff6;\n --bs-warning-text-emphasis: #ffda6a;\n --bs-danger-text-emphasis: #ea868f;\n --bs-light-text-emphasis: #f8f9fa;\n --bs-dark-text-emphasis: #dee2e6;\n --bs-primary-bg-subtle: #031633;\n --bs-secondary-bg-subtle: #161719;\n --bs-success-bg-subtle: #051b11;\n --bs-info-bg-subtle: #032830;\n --bs-warning-bg-subtle: #332701;\n --bs-danger-bg-subtle: #2c0b0e;\n --bs-light-bg-subtle: #343a40;\n --bs-dark-bg-subtle: #1a1d20;\n --bs-primary-border-subtle: #084298;\n --bs-secondary-border-subtle: #41464b;\n --bs-success-border-subtle: #0f5132;\n --bs-info-border-subtle: #087990;\n --bs-warning-border-subtle: #997404;\n --bs-danger-border-subtle: #842029;\n --bs-light-border-subtle: #495057;\n --bs-dark-border-subtle: #343a40;\n --bs-heading-color: inherit;\n --bs-link-color: #6ea8fe;\n --bs-link-hover-color: #8bb9fe;\n --bs-link-color-rgb: 110, 168, 254;\n --bs-link-hover-color-rgb: 139, 185, 254;\n --bs-code-color: #e685b5;\n --bs-border-color: #495057;\n --bs-border-color-translucent: rgba(255, 255, 255, 0.15);\n --bs-form-valid-color: #75b798;\n --bs-form-valid-border-color: #75b798;\n --bs-form-invalid-color: #ea868f;\n --bs-form-invalid-border-color: #ea868f;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n :root {\n scroll-behavior: smooth;\n }\n}\n\nbody {\n margin: 0;\n font-family: var(--bs-body-font-family);\n font-size: var(--bs-body-font-size);\n font-weight: var(--bs-body-font-weight);\n line-height: var(--bs-body-line-height);\n color: var(--bs-body-color);\n text-align: var(--bs-body-text-align);\n background-color: var(--bs-body-bg);\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n margin: 1rem 0;\n color: inherit;\n border: 0;\n border-top: var(--bs-border-width) solid;\n opacity: 0.25;\n}\n\nh6, h5, h4, h3, h2, h1 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n font-weight: 500;\n line-height: 1.2;\n color: var(--bs-heading-color);\n}\n\nh1 {\n font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n h1 {\n font-size: 2.5rem;\n }\n}\n\nh2 {\n font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n h2 {\n font-size: 2rem;\n }\n}\n\nh3 {\n font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n h3 {\n font-size: 1.75rem;\n }\n}\n\nh4 {\n font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n h4 {\n font-size: 1.5rem;\n }\n}\n\nh5 {\n font-size: 1.25rem;\n}\n\nh6 {\n font-size: 1rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title] {\n text-decoration: underline dotted;\n cursor: help;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: 0.5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 0.875em;\n}\n\nmark {\n padding: 0.1875em;\n background-color: var(--bs-highlight-bg);\n}\n\nsub,\nsup {\n position: relative;\n font-size: 0.75em;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\na {\n color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));\n text-decoration: underline;\n}\na:hover {\n --bs-link-color-rgb: var(--bs-link-hover-color-rgb);\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n color: inherit;\n text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: var(--bs-font-monospace);\n font-size: 1em;\n}\n\npre {\n display: block;\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n font-size: 0.875em;\n}\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\ncode {\n font-size: 0.875em;\n color: var(--bs-code-color);\n word-wrap: break-word;\n}\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.1875rem 0.375rem;\n font-size: 0.875em;\n color: var(--bs-body-bg);\n background-color: var(--bs-body-color);\n border-radius: 0.25rem;\n}\nkbd kbd {\n padding: 0;\n font-size: 1em;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n color: var(--bs-secondary-color);\n text-align: left;\n}\n\nth {\n text-align: inherit;\n text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\nlabel {\n display: inline-block;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\n[role=button] {\n cursor: pointer;\n}\n\nselect {\n word-wrap: normal;\n}\nselect:disabled {\n opacity: 1;\n}\n\n[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {\n display: none !important;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n cursor: pointer;\n}\n\n::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ntextarea {\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n float: left;\n width: 100%;\n padding: 0;\n margin-bottom: 0.5rem;\n font-size: calc(1.275rem + 0.3vw);\n line-height: inherit;\n}\n@media (min-width: 1200px) {\n legend {\n font-size: 1.5rem;\n }\n}\nlegend + * {\n clear: left;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n padding: 0;\n}\n\n::-webkit-inner-spin-button {\n height: auto;\n}\n\n[type=search] {\n outline-offset: -2px;\n -webkit-appearance: textfield;\n}\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n direction: ltr;\n}\n*/\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n padding: 0;\n}\n\n::file-selector-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\niframe {\n border: 0;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[hidden] {\n display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */\n","// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n @include font-size(var(--#{$prefix}root-font-size));\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$prefix}body-font-family);\n @include font-size(var(--#{$prefix}body-font-size));\n font-weight: var(--#{$prefix}body-font-weight);\n line-height: var(--#{$prefix}body-line-height);\n color: var(--#{$prefix}body-color);\n text-align: var(--#{$prefix}body-text-align);\n background-color: var(--#{$prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n opacity: $hr-opacity;\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: var(--#{$prefix}heading-color);\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 2. Add explicit cursor to indicate changed behavior.\n// 3. Prevent the text-decoration to be skipped.\n\nabbr[title] {\n text-decoration: underline dotted; // 1\n cursor: help; // 2\n text-decoration-skip-ink: none; // 3\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: var(--#{$prefix}highlight-bg);\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, 1));\n text-decoration: $link-decoration;\n\n &:hover {\n --#{$prefix}link-color-rgb: var(--#{$prefix}link-hover-color-rgb);\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: var(--#{$prefix}code-color);\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`